import bpy class SceneRendererSettings(bpy.types.PropertyGroup): test_mode: bpy.props.BoolProperty( name="Test Mode", description="Render only the first scene at 10% resolution with 1 sample", default=False, ) skip_existing: bpy.props.BoolProperty( name="Skip Existing", description="Skip scenes whose render file already exists", default=True, ) use_cpu: bpy.props.BoolProperty( name="CPU Only", description="Force CPU rendering instead of GPU", default=False, ) samples: bpy.props.IntProperty( name="Samples", description="Cycles render samples", default=4096, min=1, max=65536, ) use_noise_threshold: bpy.props.BoolProperty( name="Use Noise Threshold", description="Stop sampling when the noise is below this threshold", default=True, ) noise_threshold: bpy.props.FloatProperty( name="Noise Threshold", description="Noise threshold for adaptive sampling", default=0.01, min=0.0001, max=1.0, precision=4, ) use_denoising: bpy.props.BoolProperty( name="Use Denoising", description="Enable denoising for final render", default=True, ) max_bounces: bpy.props.IntProperty( name="Max Bounces", description="Total maximum number of light bounces", default=12, min=0, max=1024, ) exposure: bpy.props.FloatProperty( name="Exposure", description="Exposure boost in stops", default=0.0, soft_min=-3.0, soft_max=3.0, ) look: bpy.props.EnumProperty( name="Color Look", items=[ ('None', "None", ""), ('Very Low Contrast', "Very Low Contrast", ""), ('Low Contrast', "Low Contrast", ""), ('Medium Low Contrast', "Medium Low Contrast", ""), ('Medium Contrast', "Medium Contrast", ""), ('Medium High Contrast', "Medium High Contrast", ""), ('High Contrast', "High Contrast", ""), ('Very High Contrast', "Very High Contrast", ""), ], default='None', )