diff options
Diffstat (limited to 'source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl')
-rw-r--r-- | source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl index fc81f3c4674..241228c0d4c 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl @@ -8,33 +8,18 @@ void node_subsurface_scattering(vec4 color, float sss_id, out Closure result) { -# if defined(USE_SSS) N = normalize(N); - vec3 out_diff, out_trans; + vec3 out_diff; vec3 vN = mat3(ViewMatrix) * N; result = CLOSURE_DEFAULT; closure_load_ssr_data(vec3(0.0), 0.0, N, viewCameraVec, -1, result); - eevee_closure_subsurface(N, color.rgb, 1.0, scale, out_diff, out_trans); + eevee_closure_subsurface(N, color.rgb, 1.0, scale, true, out_diff); - vec3 sss_radiance = out_diff + out_trans; -# ifdef USE_SSS_ALBEDO /* Not perfect for texture_blur not exactly equal to 0.0 or 1.0. */ vec3 sss_albedo = mix(color.rgb, vec3(1.0), texture_blur); - sss_radiance *= mix(vec3(1.0), color.rgb, texture_blur); -# else - sss_radiance *= color.rgb; -# endif - closure_load_sss_data(scale, - sss_radiance, -# ifdef USE_SSS_ALBEDO - sss_albedo, -# endif - int(sss_id), - result); -# else - node_bsdf_diffuse(color, 0.0, N, result); -# endif + out_diff *= mix(vec3(1.0), color.rgb, texture_blur); + closure_load_sss_data(scale, out_diff, sss_albedo, int(sss_id), result); } #else /* Stub subsurface scattering because it is not compatible with volumetrics. */ |