skin.chunk 1.1 KB

123456789101112131415161718192021222324
  1. #include <surfaces/data-structures/standard>
  2. #include <lighting-models/includes/standard>
  3. #define CC_SURFACES_LIGHTING_MODIFY_FINAL_RESULT
  4. void SurfacesLightingModifyFinalResult(inout LightingResult result, in LightingIntermediateData lightingData, in SurfacesMaterialData surfaceData, in LightingMiscData miscData)
  5. {
  6. #if CC_SURFACES_LIGHTING_SSS && !CC_SURFACES_LIGHTING_DISABLE_DIFFUSE
  7. float sssIntensity = surfaceData.sssParams.x;
  8. // update lighting data for diffuse calculations
  9. LightingIntermediateData lightingData3S = lightingData;
  10. lightingData3S.N = normalize(FSInput_worldNormal);
  11. lightingData3S.NoL = dot(lightingData3S.N, lightingData.L);
  12. lightingData3S.NoL = mix(lightingData.NoL, lightingData3S.NoL, sssIntensity);
  13. lightingData3S.NoLSat = saturate(lightingData3S.NoL);
  14. float multiplier = lightingData.distAttenuation * lightingData.angleAttenuation;
  15. result.directDiffuse = CalculateDirectDiffuse(lightingData3S, miscData.lightColorAndIntensity) * multiplier;
  16. #if !CC_FORWARD_ADD
  17. result.environmentDiffuse = CalculateEnvironmentDiffuse(lightingData3S, cc_ambientSky.w);
  18. #endif
  19. #endif
  20. }