Vulkan: Render graph textures #120821
|
@ -24,7 +24,7 @@ class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
|
|||
bl_label = "Freestyle"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_order = 10
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
|
|
|
@ -179,28 +179,6 @@ class RENDER_PT_eevee_ambient_occlusion(RenderButtonsPanel, Panel):
|
|||
col.prop(props, "use_gtao_bounce")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_horizon_scan(RenderButtonsPanel, Panel):
|
||||
bl_label = "Horizon Scan"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "horizon_quality", text="Precision")
|
||||
col.prop(props, "horizon_thickness", text="Thickness")
|
||||
col.prop(props, "horizon_bias", text="Bias")
|
||||
col.prop(props, "horizon_resolution", text="Resolution")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_motion_blur(RenderButtonsPanel, Panel):
|
||||
bl_label = "Motion Blur"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
@ -332,6 +310,7 @@ class RENDER_PT_eevee_next_depth_of_field(RenderButtonsPanel, Panel):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
|
@ -339,11 +318,14 @@ class RENDER_PT_eevee_next_depth_of_field(RenderButtonsPanel, Panel):
|
|||
col.prop(props, "bokeh_max_size")
|
||||
col.prop(props, "bokeh_threshold")
|
||||
col.prop(props, "bokeh_neighbor_max")
|
||||
col.prop(props, "use_bokeh_jittered")
|
||||
|
||||
col = layout.column()
|
||||
col.active = props.use_bokeh_jittered
|
||||
col.prop(props, "bokeh_overblur")
|
||||
col = layout.column(align=False, heading="Jitter Camera")
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(props, "use_bokeh_jittered", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = props.use_bokeh_jittered
|
||||
sub.prop(props, "bokeh_overblur")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_bloom(RenderButtonsPanel, Panel):
|
||||
|
@ -457,6 +439,34 @@ class RENDER_PT_eevee_next_volumes(RenderButtonsPanel, Panel):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.prop(props, "volumetric_tile_size", text="Resolution")
|
||||
col.prop(props, "volumetric_samples", text="Steps")
|
||||
col.prop(props, "volumetric_sample_distribution", text="Distribution")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "volumetric_ray_depth", text="Max Depth")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_volumes_range(RenderButtonsPanel, Panel):
|
||||
bl_label = "Custom Range"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "RENDER_PT_eevee_next_volumes"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
@ -465,48 +475,6 @@ class RENDER_PT_eevee_next_volumes(RenderButtonsPanel, Panel):
|
|||
col.prop(props, "volumetric_start")
|
||||
col.prop(props, "volumetric_end")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "volumetric_tile_size")
|
||||
col.prop(props, "volumetric_samples")
|
||||
col.prop(props, "volumetric_sample_distribution", text="Distribution")
|
||||
col.prop(props, "volumetric_ray_depth", text="Max Depth")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_volumes_lighting(RenderButtonsPanel, Panel):
|
||||
bl_label = "Volume Lighting"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_volumes"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout.prop(props, "volumetric_light_clamp", text="Light Clamping")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_volumes_shadows(RenderButtonsPanel, Panel):
|
||||
bl_label = "Volume Shadows"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_volumes"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
self.layout.prop(props, "use_volumetric_shadows", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout.active = props.use_volumetric_shadows
|
||||
layout.prop(props, "volumetric_shadow_samples", text="Samples")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_subsurface_scattering(RenderButtonsPanel, Panel):
|
||||
bl_label = "Subsurface Scattering"
|
||||
|
@ -585,18 +553,23 @@ class RENDER_PT_eevee_next_raytracing(RenderButtonsPanel, Panel):
|
|||
RENDER_PT_eevee_next_raytracing_presets.draw_panel_header(self.layout)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout.prop(props, "ray_tracing_method", text="Method")
|
||||
layout = self.layout
|
||||
layout.active = props.use_raytracing
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "ray_tracing_method", text="Method")
|
||||
|
||||
options = context.scene.eevee.ray_tracing_options
|
||||
|
||||
layout.prop(options, "resolution_scale")
|
||||
layout.prop(options, "sample_clamp")
|
||||
col.prop(options, "resolution_scale")
|
||||
col.prop(options, "screen_trace_max_roughness", text="Max Roughness")
|
||||
# TODO Move it to raytracing options
|
||||
col.prop(props, "horizon_bias", text="Bias")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_screen_trace(RenderButtonsPanel, Panel):
|
||||
|
@ -611,13 +584,44 @@ class RENDER_PT_eevee_next_screen_trace(RenderButtonsPanel, Panel):
|
|||
return (context.engine in cls.COMPAT_ENGINES) and use_screen_trace
|
||||
|
||||
def draw(self, context):
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout = self.layout
|
||||
layout.active = props.use_raytracing
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
props = context.scene.eevee.ray_tracing_options
|
||||
|
||||
layout.prop(props, "screen_trace_quality", text="Precision")
|
||||
layout.prop(props, "screen_trace_thickness", text="Thickness")
|
||||
layout.prop(props, "screen_trace_max_roughness", text="Max Roughness")
|
||||
col = layout.column()
|
||||
col.prop(props, "screen_trace_quality", text="Precision")
|
||||
col.prop(props, "screen_trace_thickness", text="Thickness")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_horizon_scan(RenderButtonsPanel, Panel):
|
||||
bl_label = "Horizon Scan"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "RENDER_PT_eevee_next_raytracing"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout = self.layout
|
||||
layout.active = props.use_raytracing
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "horizon_quality", text="Precision")
|
||||
col.prop(props, "horizon_thickness", text="Thickness")
|
||||
col.prop(props, "horizon_resolution", text="Resolution")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_denoise(RenderButtonsPanel, Panel):
|
||||
|
@ -631,12 +635,18 @@ class RENDER_PT_eevee_next_denoise(RenderButtonsPanel, Panel):
|
|||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw_header(self, context):
|
||||
self.layout.active = context.scene.eevee.use_raytracing
|
||||
props = context.scene.eevee.ray_tracing_options
|
||||
self.layout.prop(props, "use_denoise", text="")
|
||||
|
||||
def draw(self, context):
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout = self.layout
|
||||
layout.active = props.use_raytracing
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
props = context.scene.eevee.ray_tracing_options
|
||||
|
||||
col = layout.column()
|
||||
|
@ -676,11 +686,24 @@ class RENDER_PT_eevee_shadows(RenderButtonsPanel, Panel):
|
|||
col.prop(props, "light_threshold")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_lights(RenderButtonsPanel, Panel):
|
||||
bl_label = "Lights"
|
||||
class RENDER_PT_eevee_next_clamping(RenderButtonsPanel, Panel):
|
||||
bl_label = "Clamping"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
pass
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_clamping_surface(RenderButtonsPanel, Panel):
|
||||
bl_label = "Surface"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_clamping"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
@ -688,16 +711,40 @@ class RENDER_PT_eevee_next_lights(RenderButtonsPanel, Panel):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
layout.use_property_decorate = False
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "light_threshold")
|
||||
# TODO(fclem): Add clamp properties
|
||||
options = props.ray_tracing_options
|
||||
layout.prop(options, "sample_clamp", text="Indirect Light")
|
||||
# layout.prop(props, "clamp_surface_direct", text="Direct Light")
|
||||
# layout.prop(props, "clamp_surface_indirect", text="Indirect Light")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_shadows(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_eevee_next_clamping_volume(RenderButtonsPanel, Panel):
|
||||
bl_label = "Volume"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_clamping"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
layout.prop(props, "volumetric_light_clamp", text="Direct Light")
|
||||
# layout.prop(props, "clamp_volumetric_direct", text="Direct Light")
|
||||
# layout.prop(props, "clamp_volumetric_indirect", text="Indirect Light")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_sampling_shadows(RenderButtonsPanel, Panel):
|
||||
bl_label = "Shadows"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_sampling"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
|
@ -711,14 +758,13 @@ class RENDER_PT_eevee_next_shadows(RenderButtonsPanel, Panel):
|
|||
self.layout.prop(props, "use_shadows", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "shadow_pool_size", text="Pool Size")
|
||||
layout = self.layout
|
||||
layout.active = props.use_shadows
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
col = layout.column(heading="Tracing", align=True)
|
||||
col.prop(props, "shadow_ray_count", text="Rays")
|
||||
|
@ -727,8 +773,13 @@ class RENDER_PT_eevee_next_shadows(RenderButtonsPanel, Panel):
|
|||
col = layout.column()
|
||||
col.prop(props, "shadow_normal_bias", text="Normal Bias")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "use_shadow_jittered_viewport", text="Jittered Transparency (Viewport)")
|
||||
col = layout.column(align=False, heading="Volume Shadows")
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(props, "use_volumetric_shadows", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = props.use_volumetric_shadows
|
||||
sub.prop(props, "volumetric_shadow_samples", text="Steps")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_sampling(RenderButtonsPanel, Panel):
|
||||
|
@ -779,7 +830,7 @@ class RENDER_PT_eevee_next_sampling_viewport(RenderButtonsPanel, Panel):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
@ -787,6 +838,7 @@ class RENDER_PT_eevee_next_sampling_viewport(RenderButtonsPanel, Panel):
|
|||
col = layout.column()
|
||||
col.prop(props, "taa_samples", text="Samples")
|
||||
col.prop(props, "use_taa_reprojection", text="Temporal Reprojection")
|
||||
col.prop(props, "use_shadow_jittered_viewport", text="Jittered Shadows")
|
||||
|
||||
# Add SSS sample count here.
|
||||
|
||||
|
@ -803,7 +855,7 @@ class RENDER_PT_eevee_next_sampling_render(RenderButtonsPanel, Panel):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
@ -814,6 +866,28 @@ class RENDER_PT_eevee_next_sampling_render(RenderButtonsPanel, Panel):
|
|||
# Add SSS sample count here.
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_sampling_advanced(RenderButtonsPanel, Panel):
|
||||
bl_label = "Advanced"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_sampling"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "light_threshold")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_indirect_lighting(RenderButtonsPanel, Panel):
|
||||
bl_label = "Indirect Lighting"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
@ -850,65 +924,6 @@ class RENDER_PT_eevee_indirect_lighting(RenderButtonsPanel, Panel):
|
|||
col.prop(props, "gi_filter_quality")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_light_probes(RenderButtonsPanel, Panel):
|
||||
bl_label = "Light Probes"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
pass
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_light_probes_sphere(RenderButtonsPanel, Panel):
|
||||
bl_label = "Sphere"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_light_probes"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "gi_cubemap_resolution", text="Resolution")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_next_light_probes_volume(RenderButtonsPanel, Panel):
|
||||
bl_label = "Volume"
|
||||
bl_parent_id = "RENDER_PT_eevee_next_light_probes"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(props, "gi_irradiance_pool_size", text="Pool Size")
|
||||
|
||||
row = col.row(align=True)
|
||||
row.operator("object.lightprobe_cache_bake", text="Bake Volumes").subset = 'ALL'
|
||||
row.operator("object.lightprobe_cache_free", text="", icon='TRASH').subset = 'ALL'
|
||||
|
||||
|
||||
class RENDER_PT_eevee_indirect_lighting_display(RenderButtonsPanel, Panel):
|
||||
bl_label = "Display"
|
||||
bl_parent_id = "RENDER_PT_eevee_indirect_lighting"
|
||||
|
@ -1040,6 +1055,28 @@ class RENDER_PT_eevee_performance(RenderButtonsPanel, Panel):
|
|||
layout.prop(rd, "use_high_quality_normals")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_performance_memory(RenderButtonsPanel, Panel):
|
||||
bl_label = "Memory"
|
||||
bl_parent_id = "RENDER_PT_eevee_performance"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout.prop(props, "shadow_pool_size", text="Shadow Pool")
|
||||
layout.prop(props, "gi_irradiance_pool_size", text="Light Probes Volume Pool")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_performance_viewport(RenderButtonsPanel, Panel):
|
||||
bl_label = "Viewport"
|
||||
bl_parent_id = "RENDER_PT_eevee_performance"
|
||||
|
@ -1281,39 +1318,43 @@ classes = (
|
|||
RENDER_PT_eevee_next_sampling,
|
||||
RENDER_PT_eevee_next_sampling_viewport,
|
||||
RENDER_PT_eevee_next_sampling_render,
|
||||
RENDER_PT_eevee_next_sampling_shadows,
|
||||
RENDER_PT_eevee_next_sampling_advanced,
|
||||
RENDER_PT_eevee_next_clamping,
|
||||
RENDER_PT_eevee_next_clamping_surface,
|
||||
RENDER_PT_eevee_next_clamping_volume,
|
||||
RENDER_PT_eevee_ambient_occlusion,
|
||||
RENDER_PT_eevee_bloom,
|
||||
RENDER_PT_eevee_depth_of_field,
|
||||
RENDER_PT_eevee_next_depth_of_field,
|
||||
RENDER_PT_eevee_subsurface_scattering,
|
||||
RENDER_PT_eevee_screen_space_reflections,
|
||||
RENDER_PT_eevee_next_horizon_scan,
|
||||
RENDER_PT_eevee_next_raytracing_presets,
|
||||
RENDER_PT_eevee_next_raytracing,
|
||||
RENDER_PT_eevee_next_screen_trace,
|
||||
RENDER_PT_eevee_next_horizon_scan,
|
||||
RENDER_PT_eevee_next_denoise,
|
||||
RENDER_PT_simplify,
|
||||
RENDER_PT_simplify_viewport,
|
||||
RENDER_PT_simplify_render,
|
||||
RENDER_PT_simplify_greasepencil,
|
||||
RENDER_PT_eevee_motion_blur,
|
||||
RENDER_PT_eevee_volumetric,
|
||||
RENDER_PT_eevee_volumetric_lighting,
|
||||
RENDER_PT_eevee_volumetric_shadows,
|
||||
RENDER_PT_eevee_next_volumes,
|
||||
RENDER_PT_eevee_next_volumes_lighting,
|
||||
RENDER_PT_eevee_next_volumes_shadows,
|
||||
RENDER_PT_eevee_performance,
|
||||
RENDER_PT_eevee_performance_viewport,
|
||||
RENDER_PT_eevee_next_volumes_range,
|
||||
RENDER_PT_eevee_hair,
|
||||
RENDER_PT_eevee_shadows,
|
||||
RENDER_PT_eevee_next_lights,
|
||||
RENDER_PT_eevee_next_shadows,
|
||||
RENDER_PT_eevee_indirect_lighting,
|
||||
RENDER_PT_eevee_indirect_lighting_display,
|
||||
RENDER_PT_eevee_next_light_probes,
|
||||
RENDER_PT_eevee_next_light_probes_sphere,
|
||||
RENDER_PT_eevee_next_light_probes_volume,
|
||||
RENDER_PT_eevee_film,
|
||||
RENDER_PT_eevee_depth_of_field,
|
||||
RENDER_PT_eevee_next_depth_of_field,
|
||||
RENDER_PT_eevee_next_motion_blur,
|
||||
RENDER_PT_eevee_next_motion_blur_curve,
|
||||
RENDER_PT_eevee_film,
|
||||
RENDER_PT_eevee_next_film,
|
||||
RENDER_PT_eevee_performance,
|
||||
RENDER_PT_eevee_performance_memory,
|
||||
RENDER_PT_eevee_performance_viewport,
|
||||
|
||||
|
||||
RENDER_PT_gpencil,
|
||||
|
@ -1326,10 +1367,6 @@ classes = (
|
|||
RENDER_PT_color_management,
|
||||
RENDER_PT_color_management_display_settings,
|
||||
RENDER_PT_color_management_curves,
|
||||
RENDER_PT_simplify,
|
||||
RENDER_PT_simplify_viewport,
|
||||
RENDER_PT_simplify_render,
|
||||
RENDER_PT_simplify_greasepencil,
|
||||
)
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
|
|
|
@ -413,6 +413,33 @@ class SCENE_PT_rigid_body_field_weights(RigidBodySubPanel, Panel):
|
|||
effector_weights_ui(self, rbw.effector_weights, 'RIGID_BODY')
|
||||
|
||||
|
||||
class SCENE_PT_eevee_next_light_probes(SceneButtonsPanel, Panel):
|
||||
bl_label = "Light Probes"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
|
||||
# TODO(fclem): Move to probe
|
||||
col.prop(props, "gi_cubemap_resolution", text="Spheres Resolution")
|
||||
|
||||
row = col.row(align=True)
|
||||
row.operator("object.lightprobe_cache_bake", text="Bake All Light Probe Volumes").subset = 'ALL'
|
||||
row.operator("object.lightprobe_cache_free", text="", icon='TRASH').subset = 'ALL'
|
||||
|
||||
|
||||
class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
|
||||
_context_path = "scene"
|
||||
_property_type = bpy.types.Scene
|
||||
|
@ -432,6 +459,7 @@ classes = (
|
|||
SCENE_PT_rigid_body_world_settings,
|
||||
SCENE_PT_rigid_body_cache,
|
||||
SCENE_PT_rigid_body_field_weights,
|
||||
SCENE_PT_eevee_next_light_probes,
|
||||
SCENE_PT_custom_props,
|
||||
)
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@ class RayTraceModule {
|
|||
/** Copy of the scene options to avoid changing parameters during motion blur. */
|
||||
RaytraceEEVEE ray_tracing_options_;
|
||||
|
||||
RaytraceEEVEE_Method tracing_method_ = RAYTRACE_EEVEE_METHOD_NONE;
|
||||
RaytraceEEVEE_Method tracing_method_ = RAYTRACE_EEVEE_METHOD_PROBE;
|
||||
|
||||
RayTraceData &data_;
|
||||
|
||||
|
|
|
@ -2857,7 +2857,8 @@ typedef enum RaytraceEEVEE_DenoiseStages {
|
|||
} RaytraceEEVEE_DenoiseStages;
|
||||
|
||||
typedef enum RaytraceEEVEE_Method {
|
||||
RAYTRACE_EEVEE_METHOD_NONE = 0,
|
||||
/* NOTE: Each method contains the previos one. */
|
||||
RAYTRACE_EEVEE_METHOD_PROBE = 0,
|
||||
RAYTRACE_EEVEE_METHOD_SCREEN = 1,
|
||||
/* TODO(fclem): Hardware ray-tracing. */
|
||||
// RAYTRACE_EEVEE_METHOD_HARDWARE = 2,
|
||||
|
|
|
@ -250,9 +250,13 @@ const EnumPropertyItem rna_enum_property_string_search_flag_items[] = {
|
|||
# include "BKE_idprop.hh"
|
||||
# include "BKE_lib_override.hh"
|
||||
|
||||
# include "RNA_path.hh"
|
||||
|
||||
# include <optional>
|
||||
# include <string>
|
||||
|
||||
# include <fmt/format.h>
|
||||
|
||||
static CLG_LogRef LOG_COMPARE_OVERRIDE = {"rna.rna_compare_override"};
|
||||
|
||||
/* Struct */
|
||||
|
@ -2550,15 +2554,21 @@ bool rna_property_override_apply_default(Main *bmain,
|
|||
if (prop_src_type != prop_dst_type ||
|
||||
(prop_storage && prop_src_type != RNA_property_type(prop_storage)))
|
||||
{
|
||||
std::optional<std::string> prop_rna_path = rnaapply_ctx.liboverride_property ?
|
||||
rnaapply_ctx.liboverride_property->rna_path :
|
||||
RNA_path_from_ID_to_property(ptr_dst, prop_dst);
|
||||
CLOG_WARN(&LOG_COMPARE_OVERRIDE,
|
||||
"%s.%s: Inconsistency between stored property type (%d) and linked reference one "
|
||||
"(%d), skipping liboverride apply",
|
||||
ptr_dst->owner_id->name,
|
||||
rnaapply_ctx.liboverride_property->rna_path,
|
||||
prop_rna_path ? prop_rna_path->c_str() :
|
||||
fmt::format(" ... .{}", prop_dst->name).c_str(),
|
||||
prop_src_type,
|
||||
prop_dst_type);
|
||||
/* Keep the liboverride property, update its type to the new actual one. */
|
||||
rnaapply_ctx.liboverride_property->rna_prop_type = prop_dst_type;
|
||||
if (rnaapply_ctx.liboverride_property) {
|
||||
rnaapply_ctx.liboverride_property->rna_prop_type = prop_dst_type;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -697,6 +697,15 @@ const EnumPropertyItem rna_enum_grease_pencil_selectmode_items[] = {
|
|||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
static const EnumPropertyItem eevee_resolution_scale_items[] = {
|
||||
{1, "1", 0, "1:1", "Full resolution"},
|
||||
{2, "2", 0, "1:2", "Render this effect at 50% render resolution"},
|
||||
{4, "4", 0, "1:4", "Render this effect at 25% render resolution"},
|
||||
{8, "8", 0, "1:8", "Render this effect at 12.5% render resolution"},
|
||||
{16, "16", 0, "1:16", "Render this effect at 6.25% render resolution"},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
#ifdef RNA_RUNTIME
|
||||
|
||||
# include <algorithm>
|
||||
|
@ -7692,21 +7701,17 @@ static void rna_def_raytrace_eevee(BlenderRNA *brna)
|
|||
StructRNA *srna;
|
||||
PropertyRNA *prop;
|
||||
|
||||
static const EnumPropertyItem pixel_rate_items[] = {
|
||||
{1, "1", 0, "1 rpp", "1 ray per pixel"},
|
||||
{2, "2", 0, "1/4 rpp", "1 ray for every 4 pixels"},
|
||||
{4, "4", 0, "1/16 rpp", "1 ray for every 16 pixels"},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
srna = RNA_def_struct(brna, "RaytraceEEVEE", nullptr);
|
||||
RNA_def_struct_path_func(srna, "rna_RaytraceEEVEE_path");
|
||||
RNA_def_struct_ui_text(
|
||||
srna, "EEVEE Raytrace Options", "Quality options for the raytracing pipeline");
|
||||
|
||||
prop = RNA_def_property(srna, "resolution_scale", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, pixel_rate_items);
|
||||
RNA_def_property_ui_text(prop, "Resolution", "Number of rays per pixel");
|
||||
RNA_def_property_enum_items(prop, eevee_resolution_scale_items);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Resolution",
|
||||
"Determines the number of rays per pixel. "
|
||||
"Higher resolution uses more memory");
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
||||
|
@ -7806,28 +7811,17 @@ static void rna_def_scene_eevee(BlenderRNA *brna)
|
|||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
static const EnumPropertyItem eevee_volumetric_tile_size_items[] = {
|
||||
{2, "2", 0, "2 px", ""},
|
||||
{4, "4", 0, "4 px", ""},
|
||||
{8, "8", 0, "8 px", ""},
|
||||
{16, "16", 0, "16 px", ""},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
static const EnumPropertyItem eevee_horizon_pixel_rate_items[] = {
|
||||
{1, "1", 0, "1 px", ""},
|
||||
{2, "2", 0, "4 px", ""},
|
||||
{4, "4", 0, "16 px", ""},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
static const EnumPropertyItem ray_tracing_method_items[] = {
|
||||
{RAYTRACE_EEVEE_METHOD_NONE, "NONE", 0, "None", "No intersection with scene geometry"},
|
||||
{RAYTRACE_EEVEE_METHOD_PROBE,
|
||||
"PROBE",
|
||||
0,
|
||||
"Light Probe",
|
||||
"Use light probes to find scene intersection"},
|
||||
{RAYTRACE_EEVEE_METHOD_SCREEN,
|
||||
"SCREEN",
|
||||
0,
|
||||
"Screen-Trace",
|
||||
"Raytrace against the depth buffer"},
|
||||
"Raytrace against the depth buffer. Fallback to light probes for invalid rays"},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
|
@ -8054,16 +8048,19 @@ static void rna_def_scene_eevee(BlenderRNA *brna)
|
|||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
||||
prop = RNA_def_property(srna, "volumetric_tile_size", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, eevee_volumetric_tile_size_items);
|
||||
RNA_def_property_enum_items(prop, eevee_resolution_scale_items);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Tile Size",
|
||||
"Control the quality of the volumetric effects "
|
||||
"(lower size increase vram usage and quality)");
|
||||
"Resolution",
|
||||
"Control the quality of the volumetric effects. "
|
||||
"Higher resolution uses more memory");
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
||||
prop = RNA_def_property(srna, "volumetric_samples", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Samples", "Number of samples to compute volumetric effects");
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Steps",
|
||||
"Number of steps to compute volumetric effects. "
|
||||
"Higher step count increase VRAM usage and quality");
|
||||
RNA_def_property_range(prop, 1, 256);
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
@ -8078,7 +8075,8 @@ static void rna_def_scene_eevee(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop,
|
||||
"Volume Max Ray Depth",
|
||||
"Maximum surface intersection count used by the accurate volume "
|
||||
"intersection method. Will create artifact if it is exceeded");
|
||||
"intersection method. Will create artifact if it is exceeded. "
|
||||
"Higher count increases VRAM usage");
|
||||
RNA_def_property_range(prop, 1, 16);
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
@ -8186,11 +8184,11 @@ static void rna_def_scene_eevee(BlenderRNA *brna)
|
|||
|
||||
prop = RNA_def_property(srna, "horizon_resolution", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, nullptr, "gtao_resolution");
|
||||
RNA_def_property_enum_items(prop, eevee_horizon_pixel_rate_items);
|
||||
RNA_def_property_enum_items(prop, eevee_resolution_scale_items);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Resolution",
|
||||
"Control the quality of the horizon scan lighting "
|
||||
"(lower size increase vram usage and quality)");
|
||||
"Control the quality of the horizon scan lighting. "
|
||||
"Higher resolution uses more memory");
|
||||
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, nullptr);
|
||||
|
||||
|
@ -8306,7 +8304,7 @@ static void rna_def_scene_eevee(BlenderRNA *brna)
|
|||
/* Motion blur */
|
||||
prop = RNA_def_property(srna, "motion_blur_depth_scale", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Background Separation",
|
||||
"Bleeding Bias",
|
||||
"Lower values will reduce background"
|
||||
" bleeding onto foreground elements");
|
||||
RNA_def_property_range(prop, 0.0f, FLT_MAX);
|
||||
|
|
Loading…
Reference in New Issue