From 84829dd8eed1322cb6cc2570709af1e7d1b140b6 Mon Sep 17 00:00:00 2001 From: Santi Paprika Date: Mon, 13 Dec 2021 10:47:03 +0100 Subject: [PATCH] Make scale parameter influence output instead of transmission distance Signed-off-by: Santi Paprika --- .../Assets/ShaderLib/Atom/Features/PBR/BackLighting.azsli | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/BackLighting.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/BackLighting.azsli index a550180f9c..e729fcb363 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/BackLighting.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/PBR/BackLighting.azsli @@ -69,15 +69,17 @@ float3 GetBackLighting(Surface surface, LightingData lightingData, float3 lightI float3 E = surface.albedo * max(lightingData.angleOffset + dot(-surface.normal, dirToLight),0.0); // Transmission distance modulated by editor-exposed scale parameter - float s = transmissionDistance / (transmissionParams.w * transmissionParams.w); + float s = transmissionDistance * 100.0; // Use scattering color to weight thin object transmission color const float3 invScattering = rcp(transmissionParams.xyz); // Albedo at front (surface point) is used to approximate irradiance at the back of the object // See observation 4 in [Jimenez J. et al, 2010] - result = TransmissionKernel(s, invScattering) * lightIntensity * E; - // result = T(s) * lightIntensity * surface.albedo * E; + result = TransmissionKernel(s, invScattering) * lightIntensity * E * transmissionParams.w; + + // Alternative specific to skin translucency + // result = T(s) * lightIntensity * surface.albedo * E * transmissionParams.w; } break; }