From e0085bfd24da3dcfb30498ad8c579620042aa6c5 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 14 Feb 2020 12:20:12 +0100 Subject: [PATCH] Cycles: move sss and diffuse transmission into diffuse pass This simplifies compositors setups and will be consistent with Eevee render passes from D6331. There's a continuum between these passes and it's not clear there is much advantage to having them available separately. Differential Revision: https://developer.blender.org/D6848 --- intern/cycles/blender/addon/engine.py | 6 +- intern/cycles/blender/addon/properties.py | 15 ---- intern/cycles/blender/addon/ui.py | 21 +----- intern/cycles/blender/addon/version_update.py | 5 +- intern/cycles/blender/blender_session.cpp | 6 -- intern/cycles/blender/blender_sync.cpp | 5 -- intern/cycles/kernel/kernel_accumulate.h | 75 +++++++------------ intern/cycles/kernel/kernel_bake.h | 20 +---- intern/cycles/kernel/kernel_emission.h | 6 +- intern/cycles/kernel/kernel_passes.h | 14 +--- intern/cycles/kernel/kernel_shader.h | 17 +---- intern/cycles/kernel/kernel_types.h | 37 +++------ intern/cycles/kernel/svm/svm_types.h | 6 +- intern/cycles/render/bake.cpp | 2 - intern/cycles/render/film.cpp | 18 +---- source/blender/makesrna/intern/rna_render.c | 3 +- source/blender/makesrna/intern/rna_scene.c | 6 -- 17 files changed, 52 insertions(+), 210 deletions(-) diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index ee7ac7737c0..7917edf8c88 100644 --- a/intern/cycles/blender/addon/engine.py +++ b/intern/cycles/blender/addon/engine.py @@ -245,9 +245,6 @@ def list_render_passes(srl): if srl.use_pass_transmission_direct: yield ("TransDir", "RGB", 'COLOR') if srl.use_pass_transmission_indirect: yield ("TransInd", "RGB", 'COLOR') if srl.use_pass_transmission_color: yield ("TransCol", "RGB", 'COLOR') - if srl.use_pass_subsurface_direct: yield ("SubsurfaceDir", "RGB", 'COLOR') - if srl.use_pass_subsurface_indirect: yield ("SubsurfaceInd", "RGB", 'COLOR') - if srl.use_pass_subsurface_color: yield ("SubsurfaceCol", "RGB", 'COLOR') if srl.use_pass_emit: yield ("Emit", "RGB", 'COLOR') if srl.use_pass_environment: yield ("Env", "RGB", 'COLOR') @@ -284,8 +281,7 @@ def list_render_passes(srl): yield ("Denoising Intensity", "X", 'VALUE') clean_options = ("denoising_diffuse_direct", "denoising_diffuse_indirect", "denoising_glossy_direct", "denoising_glossy_indirect", - "denoising_transmission_direct", "denoising_transmission_indirect", - "denoising_subsurface_direct", "denoising_subsurface_indirect") + "denoising_transmission_direct", "denoising_transmission_indirect") if any(getattr(crl, option) for option in clean_options): yield ("Denoising Clean", "RGB", 'COLOR') diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index 23ff1771995..c60881f9351 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -178,10 +178,6 @@ enum_view3d_shading_render_pass= ( ('TRANSMISSION_INDIRECT', "Transmission Indirect", "Show the Transmission Indirect render pass", 45), ('TRANSMISSION_COLOR', "Transmission Color", "Show the Transmission Color render pass", 46), - ('SUBSURFACE_DIRECT', "Subsurface Direct", "Show the Subsurface Direct render pass", 47), - ('SUBSURFACE_INDIRECT', "Subsurface Indirect", "Show the Subsurface Indirect render pass", 48), - ('SUBSURFACE_COLOR', "Subsurface Color", "Show the Subsurface Color render pass", 49), - ('VOLUME_DIRECT', "Volume Direct", "Show the Volume Direct render pass", 50), ('VOLUME_INDIRECT', "Volume Indirect", "Show the Volume Indirect render pass", 51), @@ -652,7 +648,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): ('DIFFUSE', "Diffuse", ""), ('GLOSSY', "Glossy", ""), ('TRANSMISSION', "Transmission", ""), - ('SUBSURFACE', "Subsurface", ""), ), ) @@ -1346,16 +1341,6 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup): description="Denoise the indirect transmission lighting", default=True, ) - denoising_subsurface_direct: BoolProperty( - name="Subsurface Direct", - description="Denoise the direct subsurface lighting", - default=True, - ) - denoising_subsurface_indirect: BoolProperty( - name="Subsurface Indirect", - description="Denoise the indirect subsurface lighting", - default=True, - ) denoising_strength: FloatProperty( name="Denoising Strength", description="Controls neighbor pixel weighting for the denoising filter (lower values preserve more detail, but aren't as smooth)", diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index f23d141e3da..3efd2a0c209 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -851,14 +851,6 @@ class CYCLES_RENDER_PT_passes_light(CyclesButtonsPanel, Panel): row.prop(view_layer, "use_pass_transmission_indirect", text="Indirect", toggle=True) row.prop(view_layer, "use_pass_transmission_color", text="Color", toggle=True) - split = layout.split(factor=0.35) - split.use_property_split = False - split.label(text="Subsurface") - row = split.row(align=True) - row.prop(view_layer, "use_pass_subsurface_direct", text="Direct", toggle=True) - row.prop(view_layer, "use_pass_subsurface_indirect", text="Indirect", toggle=True) - row.prop(view_layer, "use_pass_subsurface_color", text="Color", toggle=True) - split = layout.split(factor=0.35) split.use_property_split = False split.label(text="Volume") @@ -1040,15 +1032,6 @@ class CYCLES_RENDER_PT_denoising(CyclesButtonsPanel, Panel): split = layout.split(factor=0.5) split.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes - col = split.column() - col.alignment = 'RIGHT' - col.label(text="Subsurface") - - row = split.row(align=True) - row.use_property_split = False - row.prop(cycles_view_layer, "denoising_subsurface_direct", text="Direct", toggle=True) - row.prop(cycles_view_layer, "denoising_subsurface_indirect", text="Indirect", toggle=True) - class CYCLES_PT_post_processing(CyclesButtonsPanel, Panel): bl_label = "Post Processing" @@ -1856,7 +1839,7 @@ class CYCLES_RENDER_PT_bake_influence(CyclesButtonsPanel, Panel): cscene = scene.cycles rd = scene.render if rd.use_bake_multires == False and cscene.bake_type in { - 'NORMAL', 'COMBINED', 'DIFFUSE', 'GLOSSY', 'TRANSMISSION', 'SUBSURFACE'}: + 'NORMAL', 'COMBINED', 'DIFFUSE', 'GLOSSY', 'TRANSMISSION'}: return True def draw(self, context): @@ -1895,7 +1878,7 @@ class CYCLES_RENDER_PT_bake_influence(CyclesButtonsPanel, Panel): flow.prop(cbk, "use_pass_ambient_occlusion") flow.prop(cbk, "use_pass_emit") - elif cscene.bake_type in {'DIFFUSE', 'GLOSSY', 'TRANSMISSION', 'SUBSURFACE'}: + elif cscene.bake_type in {'DIFFUSE', 'GLOSSY', 'TRANSMISSION'}: row = col.row(align=True) row.use_property_split = False row.prop(cbk, "use_pass_direct", toggle=True) diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py index 899245db03e..49f23f4ba30 100644 --- a/intern/cycles/blender/addon/version_update.py +++ b/intern/cycles/blender/addon/version_update.py @@ -42,10 +42,7 @@ def custom_bake_remap(scene): 'GLOSSY_COLOR', 'TRANSMISSION_DIRECT', 'TRANSMISSION_INDIRECT', - 'TRANSMISSION_COLOR', - 'SUBSURFACE_DIRECT', - 'SUBSURFACE_INDIRECT', - 'SUBSURFACE_COLOR') + 'TRANSMISSION_COLOR') diffuse_direct_idx = bake_lookup.index('DIFFUSE_DIRECT') diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 2e7a72d8072..388af80a79a 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -278,8 +278,6 @@ static ShaderEvalType get_shader_type(const string &pass_type) return SHADER_EVAL_GLOSSY_COLOR; else if (strcmp(shader_type, "TRANSMISSION_COLOR") == 0) return SHADER_EVAL_TRANSMISSION_COLOR; - else if (strcmp(shader_type, "SUBSURFACE_COLOR") == 0) - return SHADER_EVAL_SUBSURFACE_COLOR; else if (strcmp(shader_type, "EMIT") == 0) return SHADER_EVAL_EMISSION; @@ -296,8 +294,6 @@ static ShaderEvalType get_shader_type(const string &pass_type) return SHADER_EVAL_GLOSSY; else if (strcmp(shader_type, "TRANSMISSION") == 0) return SHADER_EVAL_TRANSMISSION; - else if (strcmp(shader_type, "SUBSURFACE") == 0) - return SHADER_EVAL_SUBSURFACE; /* extra */ else if (strcmp(shader_type, "ENVIRONMENT") == 0) @@ -640,8 +636,6 @@ static int bake_pass_filter_get(const int pass_filter) flag |= BAKE_FILTER_GLOSSY; if ((pass_filter & BL::BakeSettings::pass_filter_TRANSMISSION) != 0) flag |= BAKE_FILTER_TRANSMISSION; - if ((pass_filter & BL::BakeSettings::pass_filter_SUBSURFACE) != 0) - flag |= BAKE_FILTER_SUBSURFACE; if ((pass_filter & BL::BakeSettings::pass_filter_EMIT) != 0) flag |= BAKE_FILTER_EMISSION; diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 0412654d3bd..bfa3df1b295 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -461,19 +461,16 @@ PassType BlenderSync::get_pass_type(BL::RenderPass &b_pass) MAP_PASS("DiffDir", PASS_DIFFUSE_DIRECT); MAP_PASS("GlossDir", PASS_GLOSSY_DIRECT); MAP_PASS("TransDir", PASS_TRANSMISSION_DIRECT); - MAP_PASS("SubsurfaceDir", PASS_SUBSURFACE_DIRECT); MAP_PASS("VolumeDir", PASS_VOLUME_DIRECT); MAP_PASS("DiffInd", PASS_DIFFUSE_INDIRECT); MAP_PASS("GlossInd", PASS_GLOSSY_INDIRECT); MAP_PASS("TransInd", PASS_TRANSMISSION_INDIRECT); - MAP_PASS("SubsurfaceInd", PASS_SUBSURFACE_INDIRECT); MAP_PASS("VolumeInd", PASS_VOLUME_INDIRECT); MAP_PASS("DiffCol", PASS_DIFFUSE_COLOR); MAP_PASS("GlossCol", PASS_GLOSSY_COLOR); MAP_PASS("TransCol", PASS_TRANSMISSION_COLOR); - MAP_PASS("SubsurfaceCol", PASS_SUBSURFACE_COLOR); MAP_PASS("Emit", PASS_EMISSION); MAP_PASS("Env", PASS_BACKGROUND); @@ -556,8 +553,6 @@ vector BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLa MAP_OPTION("denoising_glossy_indirect", DENOISING_CLEAN_GLOSSY_IND); MAP_OPTION("denoising_transmission_direct", DENOISING_CLEAN_TRANSMISSION_DIR); MAP_OPTION("denoising_transmission_indirect", DENOISING_CLEAN_TRANSMISSION_IND); - MAP_OPTION("denoising_subsurface_direct", DENOISING_CLEAN_SUBSURFACE_DIR); - MAP_OPTION("denoising_subsurface_indirect", DENOISING_CLEAN_SUBSURFACE_IND); #undef MAP_OPTION } b_engine.add_pass("Noisy Image", 4, "RGBA", b_view_layer.name().c_str()); diff --git a/intern/cycles/kernel/kernel_accumulate.h b/intern/cycles/kernel/kernel_accumulate.h index 9ea75d54c5d..79ea03f4f6f 100644 --- a/intern/cycles/kernel/kernel_accumulate.h +++ b/intern/cycles/kernel/kernel_accumulate.h @@ -36,21 +36,18 @@ ccl_device_inline void bsdf_eval_init(BsdfEval *eval, eval->glossy = make_float3(0.0f, 0.0f, 0.0f); eval->transmission = make_float3(0.0f, 0.0f, 0.0f); eval->transparent = make_float3(0.0f, 0.0f, 0.0f); - eval->subsurface = make_float3(0.0f, 0.0f, 0.0f); - eval->scatter = make_float3(0.0f, 0.0f, 0.0f); + eval->volume = make_float3(0.0f, 0.0f, 0.0f); if (type == CLOSURE_BSDF_TRANSPARENT_ID) eval->transparent = value; - else if (CLOSURE_IS_BSDF_DIFFUSE(type)) + else if (CLOSURE_IS_BSDF_DIFFUSE(type) || CLOSURE_IS_BSDF_BSSRDF(type)) eval->diffuse = value; else if (CLOSURE_IS_BSDF_GLOSSY(type)) eval->glossy = value; else if (CLOSURE_IS_BSDF_TRANSMISSION(type)) eval->transmission = value; - else if (CLOSURE_IS_BSDF_BSSRDF(type)) - eval->subsurface = value; else if (CLOSURE_IS_PHASE(type)) - eval->scatter = value; + eval->volume = value; } else #endif @@ -73,16 +70,14 @@ ccl_device_inline void bsdf_eval_accum(BsdfEval *eval, value *= mis_weight; #ifdef __PASSES__ if (eval->use_light_pass) { - if (CLOSURE_IS_BSDF_DIFFUSE(type)) + if (CLOSURE_IS_BSDF_DIFFUSE(type) || CLOSURE_IS_BSDF_BSSRDF(type)) eval->diffuse += value; else if (CLOSURE_IS_BSDF_GLOSSY(type)) eval->glossy += value; else if (CLOSURE_IS_BSDF_TRANSMISSION(type)) eval->transmission += value; - else if (CLOSURE_IS_BSDF_BSSRDF(type)) - eval->subsurface += value; else if (CLOSURE_IS_PHASE(type)) - eval->scatter += value; + eval->volume += value; /* skipping transparent, this function is used by for eval(), will be zero then */ } @@ -98,7 +93,7 @@ ccl_device_inline bool bsdf_eval_is_zero(BsdfEval *eval) #ifdef __PASSES__ if (eval->use_light_pass) { return is_zero(eval->diffuse) && is_zero(eval->glossy) && is_zero(eval->transmission) && - is_zero(eval->transparent) && is_zero(eval->subsurface) && is_zero(eval->scatter); + is_zero(eval->transparent) && is_zero(eval->volume); } else #endif @@ -114,8 +109,7 @@ ccl_device_inline void bsdf_eval_mis(BsdfEval *eval, float value) eval->diffuse *= value; eval->glossy *= value; eval->transmission *= value; - eval->subsurface *= value; - eval->scatter *= value; + eval->volume *= value; /* skipping transparent, this function is used by for eval(), will be zero then */ } @@ -144,8 +138,7 @@ ccl_device_inline void bsdf_eval_mul3(BsdfEval *eval, float3 value) eval->diffuse *= value; eval->glossy *= value; eval->transmission *= value; - eval->subsurface *= value; - eval->scatter *= value; + eval->volume *= value; /* skipping transparent, this function is used by for eval(), will be zero then */ } @@ -160,7 +153,7 @@ ccl_device_inline float3 bsdf_eval_sum(const BsdfEval *eval) { #ifdef __PASSES__ if (eval->use_light_pass) { - return eval->diffuse + eval->glossy + eval->transmission + eval->subsurface + eval->scatter; + return eval->diffuse + eval->glossy + eval->transmission + eval->volume; } else #endif @@ -187,19 +180,16 @@ ccl_device_inline void path_radiance_init(KernelGlobals *kg, PathRadiance *L) L->color_diffuse = make_float3(0.0f, 0.0f, 0.0f); L->color_glossy = make_float3(0.0f, 0.0f, 0.0f); L->color_transmission = make_float3(0.0f, 0.0f, 0.0f); - L->color_subsurface = make_float3(0.0f, 0.0f, 0.0f); L->direct_diffuse = make_float3(0.0f, 0.0f, 0.0f); L->direct_glossy = make_float3(0.0f, 0.0f, 0.0f); L->direct_transmission = make_float3(0.0f, 0.0f, 0.0f); - L->direct_subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->direct_scatter = make_float3(0.0f, 0.0f, 0.0f); + L->direct_volume = make_float3(0.0f, 0.0f, 0.0f); L->indirect_diffuse = make_float3(0.0f, 0.0f, 0.0f); L->indirect_glossy = make_float3(0.0f, 0.0f, 0.0f); L->indirect_transmission = make_float3(0.0f, 0.0f, 0.0f); - L->indirect_subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->indirect_scatter = make_float3(0.0f, 0.0f, 0.0f); + L->indirect_volume = make_float3(0.0f, 0.0f, 0.0f); L->transparent = 0.0f; L->emission = make_float3(0.0f, 0.0f, 0.0f); @@ -211,8 +201,7 @@ ccl_device_inline void path_radiance_init(KernelGlobals *kg, PathRadiance *L) L->state.diffuse = make_float3(0.0f, 0.0f, 0.0f); L->state.glossy = make_float3(0.0f, 0.0f, 0.0f); L->state.transmission = make_float3(0.0f, 0.0f, 0.0f); - L->state.subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->state.scatter = make_float3(0.0f, 0.0f, 0.0f); + L->state.volume = make_float3(0.0f, 0.0f, 0.0f); L->state.direct = make_float3(0.0f, 0.0f, 0.0f); } else @@ -264,11 +253,9 @@ ccl_device_inline void path_radiance_bsdf_bounce(KernelGlobals *kg, L_state->diffuse = bsdf_eval->diffuse * value; L_state->glossy = bsdf_eval->glossy * value; L_state->transmission = bsdf_eval->transmission * value; - L_state->subsurface = bsdf_eval->subsurface * value; - L_state->scatter = bsdf_eval->scatter * value; + L_state->volume = bsdf_eval->volume * value; - *throughput = L_state->diffuse + L_state->glossy + L_state->transmission + - L_state->subsurface + L_state->scatter; + *throughput = L_state->diffuse + L_state->glossy + L_state->transmission + L_state->volume; L_state->direct = *throughput; } @@ -449,8 +436,7 @@ ccl_device_inline void path_radiance_accum_light(KernelGlobals *kg, L->direct_diffuse += shaded_throughput * bsdf_eval->diffuse; L->direct_glossy += shaded_throughput * bsdf_eval->glossy; L->direct_transmission += shaded_throughput * bsdf_eval->transmission; - L->direct_subsurface += shaded_throughput * bsdf_eval->subsurface; - L->direct_scatter += shaded_throughput * bsdf_eval->scatter; + L->direct_volume += shaded_throughput * bsdf_eval->volume; if (is_lamp) { L->shadow.x += shadow.x * shadow_fac; @@ -562,15 +548,13 @@ ccl_device_inline void path_radiance_sum_indirect(PathRadiance *L) L->direct_diffuse += L->state.diffuse * L->direct_emission; L->direct_glossy += L->state.glossy * L->direct_emission; L->direct_transmission += L->state.transmission * L->direct_emission; - L->direct_subsurface += L->state.subsurface * L->direct_emission; - L->direct_scatter += L->state.scatter * L->direct_emission; + L->direct_volume += L->state.volume * L->direct_emission; L->indirect = safe_divide_color(L->indirect, L->state.direct); L->indirect_diffuse += L->state.diffuse * L->indirect; L->indirect_glossy += L->state.glossy * L->indirect; L->indirect_transmission += L->state.transmission * L->indirect; - L->indirect_subsurface += L->state.subsurface * L->indirect; - L->indirect_scatter += L->state.scatter * L->indirect; + L->indirect_volume += L->state.volume * L->indirect; } #endif } @@ -582,8 +566,7 @@ ccl_device_inline void path_radiance_reset_indirect(PathRadiance *L) L->state.diffuse = make_float3(0.0f, 0.0f, 0.0f); L->state.glossy = make_float3(0.0f, 0.0f, 0.0f); L->state.transmission = make_float3(0.0f, 0.0f, 0.0f); - L->state.subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->state.scatter = make_float3(0.0f, 0.0f, 0.0f); + L->state.volume = make_float3(0.0f, 0.0f, 0.0f); L->direct_emission = make_float3(0.0f, 0.0f, 0.0f); L->indirect = make_float3(0.0f, 0.0f, 0.0f); @@ -647,10 +630,10 @@ ccl_device_inline float3 path_radiance_clamp_and_sum(KernelGlobals *kg, if (L->use_light_pass) { path_radiance_sum_indirect(L); - L_direct = L->direct_diffuse + L->direct_glossy + L->direct_transmission + - L->direct_subsurface + L->direct_scatter + L->emission; + L_direct = L->direct_diffuse + L->direct_glossy + L->direct_transmission + L->direct_volume + + L->emission; L_indirect = L->indirect_diffuse + L->indirect_glossy + L->indirect_transmission + - L->indirect_subsurface + L->indirect_scatter; + L->indirect_volume; if (!kernel_data.background.transparent) L_direct += L->background; @@ -666,14 +649,12 @@ ccl_device_inline float3 path_radiance_clamp_and_sum(KernelGlobals *kg, L->direct_diffuse = make_float3(0.0f, 0.0f, 0.0f); L->direct_glossy = make_float3(0.0f, 0.0f, 0.0f); L->direct_transmission = make_float3(0.0f, 0.0f, 0.0f); - L->direct_subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->direct_scatter = make_float3(0.0f, 0.0f, 0.0f); + L->direct_volume = make_float3(0.0f, 0.0f, 0.0f); L->indirect_diffuse = make_float3(0.0f, 0.0f, 0.0f); L->indirect_glossy = make_float3(0.0f, 0.0f, 0.0f); L->indirect_transmission = make_float3(0.0f, 0.0f, 0.0f); - L->indirect_subsurface = make_float3(0.0f, 0.0f, 0.0f); - L->indirect_scatter = make_float3(0.0f, 0.0f, 0.0f); + L->indirect_volume = make_float3(0.0f, 0.0f, 0.0f); L->emission = make_float3(0.0f, 0.0f, 0.0f); } @@ -715,7 +696,7 @@ ccl_device_inline void path_radiance_split_denoising(KernelGlobals *kg, kernel_assert(L->use_light_pass); *clean = L->emission + L->background; - *noisy = L->direct_scatter + L->indirect_scatter; + *noisy = L->direct_volume + L->indirect_volume; # define ADD_COMPONENT(flag, component) \ if (kernel_data.film.denoising_flags & flag) \ @@ -729,8 +710,6 @@ ccl_device_inline void path_radiance_split_denoising(KernelGlobals *kg, ADD_COMPONENT(DENOISING_CLEAN_GLOSSY_IND, L->indirect_glossy); ADD_COMPONENT(DENOISING_CLEAN_TRANSMISSION_DIR, L->direct_transmission); ADD_COMPONENT(DENOISING_CLEAN_TRANSMISSION_IND, L->indirect_transmission); - ADD_COMPONENT(DENOISING_CLEAN_SUBSURFACE_DIR, L->direct_subsurface); - ADD_COMPONENT(DENOISING_CLEAN_SUBSURFACE_IND, L->indirect_subsurface); # undef ADD_COMPONENT #else *noisy = L->emission; @@ -767,14 +746,12 @@ ccl_device_inline void path_radiance_accum_sample(PathRadiance *L, PathRadiance safe_float3_add(L->direct_diffuse, L_sample->direct_diffuse); safe_float3_add(L->direct_glossy, L_sample->direct_glossy); safe_float3_add(L->direct_transmission, L_sample->direct_transmission); - safe_float3_add(L->direct_subsurface, L_sample->direct_subsurface); - safe_float3_add(L->direct_scatter, L_sample->direct_scatter); + safe_float3_add(L->direct_volume, L_sample->direct_volume); safe_float3_add(L->indirect_diffuse, L_sample->indirect_diffuse); safe_float3_add(L->indirect_glossy, L_sample->indirect_glossy); safe_float3_add(L->indirect_transmission, L_sample->indirect_transmission); - safe_float3_add(L->indirect_subsurface, L_sample->indirect_subsurface); - safe_float3_add(L->indirect_scatter, L_sample->indirect_scatter); + safe_float3_add(L->indirect_volume, L_sample->indirect_volume); safe_float3_add(L->background, L_sample->background); safe_float3_add(L->ao, L_sample->ao); diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h index a349b225abb..f1fc697553a 100644 --- a/intern/cycles/kernel/kernel_bake.h +++ b/intern/cycles/kernel/kernel_bake.h @@ -71,7 +71,7 @@ ccl_device_inline void compute_light_pass( # ifdef __SUBSURFACE__ /* sample subsurface scattering */ - if ((pass_filter & BAKE_FILTER_SUBSURFACE) && (sd->flag & SD_BSSRDF)) { + if ((pass_filter & BAKE_FILTER_DIFFUSE) && (sd->flag & SD_BSSRDF)) { /* When mixing BSSRDF and BSDF closures we should skip BSDF lighting * if scattering was successful. */ SubsurfaceIndirectRays ss_indirect; @@ -123,7 +123,7 @@ ccl_device_inline void compute_light_pass( # ifdef __SUBSURFACE__ /* sample subsurface scattering */ - if ((pass_filter & BAKE_FILTER_SUBSURFACE) && (sd->flag & SD_BSSRDF)) { + if ((pass_filter & BAKE_FILTER_DIFFUSE) && (sd->flag & SD_BSSRDF)) { /* When mixing BSSRDF and BSDF closures we should skip BSDF lighting * if scattering was successful. */ kernel_branched_path_subsurface_scatter( @@ -178,10 +178,6 @@ ccl_device_inline float3 kernel_bake_shader_bsdf(KernelGlobals *kg, return shader_bsdf_glossy(kg, sd); case SHADER_EVAL_TRANSMISSION: return shader_bsdf_transmission(kg, sd); -# ifdef __SUBSURFACE__ - case SHADER_EVAL_SUBSURFACE: - return shader_bsdf_subsurface(kg, sd); -# endif default: kernel_assert(!"Unknown bake type passed to BSDF evaluate"); return make_float3(0.0f, 0.0f, 0.0f); @@ -385,11 +381,6 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, if ((pass_filter & BAKE_FILTER_TRANSMISSION_INDIRECT) == BAKE_FILTER_TRANSMISSION_INDIRECT) out += L.indirect_transmission; - if ((pass_filter & BAKE_FILTER_SUBSURFACE_DIRECT) == BAKE_FILTER_SUBSURFACE_DIRECT) - out += L.direct_subsurface; - if ((pass_filter & BAKE_FILTER_SUBSURFACE_INDIRECT) == BAKE_FILTER_SUBSURFACE_INDIRECT) - out += L.indirect_subsurface; - if ((pass_filter & BAKE_FILTER_EMISSION) != 0) out += L.emission; @@ -414,13 +405,6 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, kg, &sd, &state, L.direct_transmission, L.indirect_transmission, type, pass_filter); break; } - case SHADER_EVAL_SUBSURFACE: { -# ifdef __SUBSURFACE__ - out = kernel_bake_evaluate_direct_indirect( - kg, &sd, &state, L.direct_subsurface, L.indirect_subsurface, type, pass_filter); -# endif - break; - } # endif /* extra */ diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h index c63d1149d03..71b176a0a8f 100644 --- a/intern/cycles/kernel/kernel_emission.h +++ b/intern/cycles/kernel/kernel_emission.h @@ -145,16 +145,14 @@ ccl_device_noinline_cpu bool direct_emission(KernelGlobals *kg, #ifdef __PASSES__ /* use visibility flag to skip lights */ if (ls->shader & SHADER_EXCLUDE_ANY) { - if (ls->shader & SHADER_EXCLUDE_DIFFUSE) { + if (ls->shader & SHADER_EXCLUDE_DIFFUSE) eval->diffuse = make_float3(0.0f, 0.0f, 0.0f); - eval->subsurface = make_float3(0.0f, 0.0f, 0.0f); - } if (ls->shader & SHADER_EXCLUDE_GLOSSY) eval->glossy = make_float3(0.0f, 0.0f, 0.0f); if (ls->shader & SHADER_EXCLUDE_TRANSMIT) eval->transmission = make_float3(0.0f, 0.0f, 0.0f); if (ls->shader & SHADER_EXCLUDE_SCATTER) - eval->scatter = make_float3(0.0f, 0.0f, 0.0f); + eval->volume = make_float3(0.0f, 0.0f, 0.0f); } #endif diff --git a/intern/cycles/kernel/kernel_passes.h b/intern/cycles/kernel/kernel_passes.h index e50fa07a885..187e8340c82 100644 --- a/intern/cycles/kernel/kernel_passes.h +++ b/intern/cycles/kernel/kernel_passes.h @@ -249,8 +249,6 @@ ccl_device_inline void kernel_write_data_passes(KernelGlobals *kg, L->color_glossy += shader_bsdf_glossy(kg, sd) * throughput; if (light_flag & PASSMASK_COMPONENT(TRANSMISSION)) L->color_transmission += shader_bsdf_transmission(kg, sd) * throughput; - if (light_flag & PASSMASK_COMPONENT(SUBSURFACE)) - L->color_subsurface += shader_bsdf_subsurface(kg, sd) * throughput; if (light_flag & PASSMASK(MIST)) { /* bring depth into 0..1 range */ @@ -296,11 +294,8 @@ ccl_device_inline void kernel_write_light_passes(KernelGlobals *kg, if (light_flag & PASSMASK(TRANSMISSION_INDIRECT)) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_indirect, L->indirect_transmission); - if (light_flag & PASSMASK(SUBSURFACE_INDIRECT)) - kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_indirect, - L->indirect_subsurface); if (light_flag & PASSMASK(VOLUME_INDIRECT)) - kernel_write_pass_float3(buffer + kernel_data.film.pass_volume_indirect, L->indirect_scatter); + kernel_write_pass_float3(buffer + kernel_data.film.pass_volume_indirect, L->indirect_volume); if (light_flag & PASSMASK(DIFFUSE_DIRECT)) kernel_write_pass_float3(buffer + kernel_data.film.pass_diffuse_direct, L->direct_diffuse); if (light_flag & PASSMASK(GLOSSY_DIRECT)) @@ -308,11 +303,8 @@ ccl_device_inline void kernel_write_light_passes(KernelGlobals *kg, if (light_flag & PASSMASK(TRANSMISSION_DIRECT)) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_direct, L->direct_transmission); - if (light_flag & PASSMASK(SUBSURFACE_DIRECT)) - kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_direct, - L->direct_subsurface); if (light_flag & PASSMASK(VOLUME_DIRECT)) - kernel_write_pass_float3(buffer + kernel_data.film.pass_volume_direct, L->direct_scatter); + kernel_write_pass_float3(buffer + kernel_data.film.pass_volume_direct, L->direct_volume); if (light_flag & PASSMASK(EMISSION)) kernel_write_pass_float3(buffer + kernel_data.film.pass_emission, L->emission); @@ -328,8 +320,6 @@ ccl_device_inline void kernel_write_light_passes(KernelGlobals *kg, if (light_flag & PASSMASK(TRANSMISSION_COLOR)) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_color, L->color_transmission); - if (light_flag & PASSMASK(SUBSURFACE_COLOR)) - kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_color, L->color_subsurface); if (light_flag & PASSMASK(SHADOW)) { float4 shadow = L->shadow; shadow.w = kernel_data.film.pass_shadow_scale; diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index d03faff4242..9120fa7c3f3 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -901,7 +901,8 @@ ccl_device float3 shader_bsdf_diffuse(KernelGlobals *kg, ShaderData *sd) for (int i = 0; i < sd->num_closure; i++) { ShaderClosure *sc = &sd->closure[i]; - if (CLOSURE_IS_BSDF_DIFFUSE(sc->type)) + if (CLOSURE_IS_BSDF_DIFFUSE(sc->type) || CLOSURE_IS_BSSRDF(sc->type) || + CLOSURE_IS_BSDF_BSSRDF(sc->type)) eval += sc->weight; } @@ -936,20 +937,6 @@ ccl_device float3 shader_bsdf_transmission(KernelGlobals *kg, ShaderData *sd) return eval; } -ccl_device float3 shader_bsdf_subsurface(KernelGlobals *kg, ShaderData *sd) -{ - float3 eval = make_float3(0.0f, 0.0f, 0.0f); - - for (int i = 0; i < sd->num_closure; i++) { - ShaderClosure *sc = &sd->closure[i]; - - if (CLOSURE_IS_BSSRDF(sc->type) || CLOSURE_IS_BSDF_BSSRDF(sc->type)) - eval += sc->weight; - } - - return eval; -} - ccl_device float3 shader_bsdf_average_normal(KernelGlobals *kg, ShaderData *sd) { float3 N = make_float3(0.0f, 0.0f, 0.0f); diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 68cb1e974f0..75187ad1bd2 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -220,7 +220,6 @@ typedef enum ShaderEvalType { SHADER_EVAL_DIFFUSE_COLOR, SHADER_EVAL_GLOSSY_COLOR, SHADER_EVAL_TRANSMISSION_COLOR, - SHADER_EVAL_SUBSURFACE_COLOR, SHADER_EVAL_EMISSION, SHADER_EVAL_AOV_COLOR, SHADER_EVAL_AOV_VALUE, @@ -232,7 +231,6 @@ typedef enum ShaderEvalType { SHADER_EVAL_DIFFUSE, SHADER_EVAL_GLOSSY, SHADER_EVAL_TRANSMISSION, - SHADER_EVAL_SUBSURFACE, /* extra */ SHADER_EVAL_ENVIRONMENT, @@ -392,9 +390,6 @@ typedef enum PassType { PASS_TRANSMISSION_DIRECT, PASS_TRANSMISSION_INDIRECT, PASS_TRANSMISSION_COLOR, - PASS_SUBSURFACE_DIRECT, - PASS_SUBSURFACE_INDIRECT, - PASS_SUBSURFACE_COLOR, PASS_VOLUME_DIRECT, PASS_VOLUME_INDIRECT, /* No Scatter color since it's tricky to define what it would even mean. */ @@ -445,23 +440,20 @@ typedef enum eBakePassFilter { BAKE_FILTER_DIFFUSE = (1 << 3), BAKE_FILTER_GLOSSY = (1 << 4), BAKE_FILTER_TRANSMISSION = (1 << 5), - BAKE_FILTER_SUBSURFACE = (1 << 6), - BAKE_FILTER_EMISSION = (1 << 7), - BAKE_FILTER_AO = (1 << 8), + BAKE_FILTER_EMISSION = (1 << 6), + BAKE_FILTER_AO = (1 << 7), } eBakePassFilter; typedef enum BakePassFilterCombos { BAKE_FILTER_COMBINED = (BAKE_FILTER_DIRECT | BAKE_FILTER_INDIRECT | BAKE_FILTER_DIFFUSE | - BAKE_FILTER_GLOSSY | BAKE_FILTER_TRANSMISSION | BAKE_FILTER_SUBSURFACE | - BAKE_FILTER_EMISSION | BAKE_FILTER_AO), + BAKE_FILTER_GLOSSY | BAKE_FILTER_TRANSMISSION | BAKE_FILTER_EMISSION | + BAKE_FILTER_AO), BAKE_FILTER_DIFFUSE_DIRECT = (BAKE_FILTER_DIRECT | BAKE_FILTER_DIFFUSE), BAKE_FILTER_GLOSSY_DIRECT = (BAKE_FILTER_DIRECT | BAKE_FILTER_GLOSSY), BAKE_FILTER_TRANSMISSION_DIRECT = (BAKE_FILTER_DIRECT | BAKE_FILTER_TRANSMISSION), - BAKE_FILTER_SUBSURFACE_DIRECT = (BAKE_FILTER_DIRECT | BAKE_FILTER_SUBSURFACE), BAKE_FILTER_DIFFUSE_INDIRECT = (BAKE_FILTER_INDIRECT | BAKE_FILTER_DIFFUSE), BAKE_FILTER_GLOSSY_INDIRECT = (BAKE_FILTER_INDIRECT | BAKE_FILTER_GLOSSY), BAKE_FILTER_TRANSMISSION_INDIRECT = (BAKE_FILTER_INDIRECT | BAKE_FILTER_TRANSMISSION), - BAKE_FILTER_SUBSURFACE_INDIRECT = (BAKE_FILTER_INDIRECT | BAKE_FILTER_SUBSURFACE), } BakePassFilterCombos; typedef enum DenoiseFlag { @@ -471,9 +463,7 @@ typedef enum DenoiseFlag { DENOISING_CLEAN_GLOSSY_IND = (1 << 3), DENOISING_CLEAN_TRANSMISSION_DIR = (1 << 4), DENOISING_CLEAN_TRANSMISSION_IND = (1 << 5), - DENOISING_CLEAN_SUBSURFACE_DIR = (1 << 6), - DENOISING_CLEAN_SUBSURFACE_IND = (1 << 7), - DENOISING_CLEAN_ALL_PASSES = (1 << 8) - 1, + DENOISING_CLEAN_ALL_PASSES = (1 << 6) - 1, } DenoiseFlag; #ifdef __KERNEL_DEBUG__ @@ -493,8 +483,7 @@ typedef ccl_addr_space struct PathRadianceState { float3 diffuse; float3 glossy; float3 transmission; - float3 subsurface; - float3 scatter; + float3 volume; float3 direct; #endif @@ -517,19 +506,16 @@ typedef ccl_addr_space struct PathRadiance { float3 color_diffuse; float3 color_glossy; float3 color_transmission; - float3 color_subsurface; float3 direct_diffuse; float3 direct_glossy; float3 direct_transmission; - float3 direct_subsurface; - float3 direct_scatter; + float3 direct_volume; float3 indirect_diffuse; float3 indirect_glossy; float3 indirect_transmission; - float3 indirect_subsurface; - float3 indirect_scatter; + float3 indirect_volume; float4 shadow; float mist; @@ -583,8 +569,7 @@ typedef struct BsdfEval { float3 glossy; float3 transmission; float3 transparent; - float3 subsurface; - float3 scatter; + float3 volume; #endif #ifdef __SHADOW_TRICKS__ float3 sum_no_mis; @@ -1214,18 +1199,15 @@ typedef struct KernelFilm { int pass_diffuse_color; int pass_glossy_color; int pass_transmission_color; - int pass_subsurface_color; int pass_diffuse_indirect; int pass_glossy_indirect; int pass_transmission_indirect; - int pass_subsurface_indirect; int pass_volume_indirect; int pass_diffuse_direct; int pass_glossy_direct; int pass_transmission_direct; - int pass_subsurface_direct; int pass_volume_direct; int pass_emission; @@ -1252,7 +1234,6 @@ typedef struct KernelFilm { int pass_aov_color; int pass_aov_value; int pad1; - int pad2; /* XYZ to rendering color space transform. float4 instead of float3 to * ensure consistent padding/alignment across devices. */ diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h index 9877b75fab8..38f12ebdf48 100644 --- a/intern/cycles/kernel/svm/svm_types.h +++ b/intern/cycles/kernel/svm/svm_types.h @@ -527,6 +527,7 @@ typedef enum ClosureType { CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID, CLOSURE_BSDF_PRINCIPLED_SHEEN_ID, CLOSURE_BSDF_DIFFUSE_TOON_ID, + CLOSURE_BSDF_TRANSLUCENT_ID, /* Glossy */ CLOSURE_BSDF_REFLECTION_ID, @@ -549,7 +550,6 @@ typedef enum ClosureType { CLOSURE_BSDF_HAIR_REFLECTION_ID, /* Transmission */ - CLOSURE_BSDF_TRANSLUCENT_ID, CLOSURE_BSDF_REFRACTION_ID, CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID, CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID, @@ -590,12 +590,12 @@ typedef enum ClosureType { /* watch this, being lazy with memory usage */ #define CLOSURE_IS_BSDF(type) (type <= CLOSURE_BSDF_TRANSPARENT_ID) #define CLOSURE_IS_BSDF_DIFFUSE(type) \ - (type >= CLOSURE_BSDF_DIFFUSE_ID && type <= CLOSURE_BSDF_DIFFUSE_TOON_ID) + (type >= CLOSURE_BSDF_DIFFUSE_ID && type <= CLOSURE_BSDF_TRANSLUCENT_ID) #define CLOSURE_IS_BSDF_GLOSSY(type) \ ((type >= CLOSURE_BSDF_REFLECTION_ID && type <= CLOSURE_BSDF_HAIR_REFLECTION_ID) || \ (type == CLOSURE_BSDF_HAIR_PRINCIPLED_ID)) #define CLOSURE_IS_BSDF_TRANSMISSION(type) \ - (type >= CLOSURE_BSDF_TRANSLUCENT_ID && type <= CLOSURE_BSDF_HAIR_TRANSMISSION_ID) + (type >= CLOSURE_BSDF_REFRACTION_ID && type <= CLOSURE_BSDF_HAIR_TRANSMISSION_ID) #define CLOSURE_IS_BSDF_BSSRDF(type) \ (type == CLOSURE_BSDF_BSSRDF_ID || type == CLOSURE_BSDF_BSSRDF_PRINCIPLED_ID) #define CLOSURE_IS_BSDF_SINGULAR(type) \ diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp index 9613da7c152..11ccfc95293 100644 --- a/intern/cycles/render/bake.cpp +++ b/intern/cycles/render/bake.cpp @@ -285,8 +285,6 @@ int BakeManager::shader_type_to_pass_filter(ShaderEvalType type, const int pass_ return BAKE_FILTER_GLOSSY | component_flags; case SHADER_EVAL_TRANSMISSION: return BAKE_FILTER_TRANSMISSION | component_flags; - case SHADER_EVAL_SUBSURFACE: - return BAKE_FILTER_SUBSURFACE | component_flags; case SHADER_EVAL_COMBINED: return pass_filter; default: diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp index 00356790261..172ea3dd31b 100644 --- a/intern/cycles/render/film.cpp +++ b/intern/cycles/render/film.cpp @@ -155,7 +155,6 @@ void Pass::add(PassType type, vector &passes, const char *name) case PASS_DIFFUSE_COLOR: case PASS_GLOSSY_COLOR: case PASS_TRANSMISSION_COLOR: - case PASS_SUBSURFACE_COLOR: pass.components = 4; break; case PASS_DIFFUSE_DIRECT: @@ -176,12 +175,6 @@ void Pass::add(PassType type, vector &passes, const char *name) pass.exposure = true; pass.divide_type = PASS_TRANSMISSION_COLOR; break; - case PASS_SUBSURFACE_DIRECT: - case PASS_SUBSURFACE_INDIRECT: - pass.components = 4; - pass.exposure = true; - pass.divide_type = PASS_SUBSURFACE_COLOR; - break; case PASS_VOLUME_DIRECT: case PASS_VOLUME_INDIRECT: pass.components = 4; @@ -442,9 +435,6 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) case PASS_TRANSMISSION_COLOR: kfilm->pass_transmission_color = kfilm->pass_stride; break; - case PASS_SUBSURFACE_COLOR: - kfilm->pass_subsurface_color = kfilm->pass_stride; - break; case PASS_DIFFUSE_INDIRECT: kfilm->pass_diffuse_indirect = kfilm->pass_stride; break; @@ -454,9 +444,6 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) case PASS_TRANSMISSION_INDIRECT: kfilm->pass_transmission_indirect = kfilm->pass_stride; break; - case PASS_SUBSURFACE_INDIRECT: - kfilm->pass_subsurface_indirect = kfilm->pass_stride; - break; case PASS_VOLUME_INDIRECT: kfilm->pass_volume_indirect = kfilm->pass_stride; break; @@ -469,9 +456,6 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) case PASS_TRANSMISSION_DIRECT: kfilm->pass_transmission_direct = kfilm->pass_stride; break; - case PASS_SUBSURFACE_DIRECT: - kfilm->pass_subsurface_direct = kfilm->pass_stride; - break; case PASS_VOLUME_DIRECT: kfilm->pass_volume_direct = kfilm->pass_stride; break; @@ -521,7 +505,7 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) kfilm->use_display_exposure = pass.exposure && (kfilm->exposure != 1.0f); } else if (pass.type == PASS_DIFFUSE_COLOR || pass.type == PASS_TRANSMISSION_COLOR || - pass.type == PASS_GLOSSY_COLOR || pass.type == PASS_SUBSURFACE_COLOR) { + pass.type == PASS_GLOSSY_COLOR) { kfilm->display_divide_pass_stride = kfilm->pass_stride; } diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index c0daedba95c..a3cf6fcd0b7 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -86,7 +86,6 @@ const EnumPropertyItem rna_enum_bake_pass_type_items[] = { {SCE_PASS_DIFFUSE_COLOR, "DIFFUSE", 0, "Diffuse", ""}, {SCE_PASS_GLOSSY_COLOR, "GLOSSY", 0, "Glossy", ""}, {SCE_PASS_TRANSM_COLOR, "TRANSMISSION", 0, "Transmission", ""}, - {SCE_PASS_SUBSURFACE_COLOR, "SUBSURFACE", 0, "Subsurface", ""}, {0, NULL, 0, NULL, NULL}, }; @@ -533,7 +532,7 @@ static void rna_def_render_engine(BlenderRNA *brna) 0, INT_MAX, "Pass Filter", - "Filter to combined, diffuse, glossy, transmission and subsurface passes", + "Filter to combined, diffuse, glossy and transmission passes", 0, INT_MAX); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 32c6239da5a..599b8fd91c8 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -526,7 +526,6 @@ const EnumPropertyItem rna_enum_bake_pass_filter_type_items[] = { {R_BAKE_PASS_FILTER_DIFFUSE, "DIFFUSE", 0, "Diffuse", ""}, {R_BAKE_PASS_FILTER_GLOSSY, "GLOSSY", 0, "Glossy", ""}, {R_BAKE_PASS_FILTER_TRANSM, "TRANSMISSION", 0, "Transmission", ""}, - {R_BAKE_PASS_FILTER_SUBSURFACE, "SUBSURFACE", 0, "Subsurface", ""}, {0, NULL, 0, NULL, NULL}, }; @@ -4870,11 +4869,6 @@ static void rna_def_bake_data(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Transmission", "Add transmission contribution"); RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); - prop = RNA_def_property(srna, "use_pass_subsurface", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "pass_filter", R_BAKE_PASS_FILTER_SUBSURFACE); - RNA_def_property_ui_text(prop, "Subsurface", "Add subsurface contribution"); - RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); - prop = RNA_def_property(srna, "pass_filter", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "pass_filter"); RNA_def_property_enum_items(prop, rna_enum_bake_pass_filter_type_items);