diff --git a/leenkx/blender/lnx/props.py b/leenkx/blender/lnx/props.py index d981ea9..7eca246 100644 --- a/leenkx/blender/lnx/props.py +++ b/leenkx/blender/lnx/props.py @@ -283,6 +283,21 @@ def init_properties(): ) bpy.types.World.lnx_texture_quality = FloatProperty(name="Texture Quality", default=1.0, min=0.0, max=1.0, subtype='FACTOR', update=assets.invalidate_compiler_cache) bpy.types.World.lnx_sound_quality = FloatProperty(name="Sound Quality", default=0.9, min=0.0, max=1.0, subtype='FACTOR', update=assets.invalidate_compiler_cache) + bpy.types.World.lnx_max_texture_size = EnumProperty( + name="Max Texture Size", + description="Maximum texture resolution for runtime. Larger textures will be automatically downscaled.", + items=[ + ('0', 'Unlimited', 'No size limit (may cause WebGL texture unit errors with many textures)'), + ('256', '0.25K (256px)', 'Maximum 0.25K resolution - Best for mobile'), + ('512', '0.5K (512px)', 'Maximum 0.5K resolution - Best for mobile'), + ('1024', '1K (1024px)', 'Maximum 1K resolution - Best for mobile'), + ('2048', '2K (2048px)', 'Maximum 2K resolution - Recommended for WebGL'), + ('4096', '4K (4096px)', 'Maximum 4K resolution - Desktop only'), + ('8192', '8K (8192px)', 'Maximum 8K resolution - High-end desktop only'), + ], + default='2048', + update=assets.invalidate_compiler_cache + ) bpy.types.World.lnx_copy_override = BoolProperty(name="Copy Override", description="Overrides any existing files when copying", default=False, update=assets.invalidate_compiled_data) bpy.types.World.lnx_minimize = BoolProperty(name="Binary Scene Data", description="Export scene data in binary", default=True, update=assets.invalidate_compiled_data) bpy.types.World.lnx_minify_js = BoolProperty(name="Minify JS", description="Minimize JavaScript output when publishing", default=True)