Lux URP Transparent Lighting.hlsl 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef LIGHTWEIGHT_TRANSPARENTLIGHTING_INCLUDED
  2. #define LIGHTWEIGHT_TRANSPARENTLIGHTING_INCLUDED
  3. half4 LuxLWRPTransparentFragmentPBR(InputData inputData, half3 albedo, half metallic, half3 specular,
  4. half smoothness, half occlusion, half3 emission, half alpha
  5. )
  6. {
  7. BRDFData brdfData;
  8. InitializeBRDFData(albedo, metallic, specular, smoothness, alpha, brdfData);
  9. Light mainLight = GetMainLight(inputData.shadowCoord);
  10. MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, half4(0, 0, 0, 0));
  11. // GetMainLight will return screen space shadows.
  12. #if defined(_MAIN_LIGHT_SHADOWS)
  13. ShadowSamplingData shadowSamplingData = GetMainLightShadowSamplingData();
  14. half shadowStrength = GetMainLightShadowStrength();
  15. mainLight.shadowAttenuation = SampleShadowmap(inputData.shadowCoord, TEXTURE2D_ARGS(_MainLightShadowmapTexture, sampler_MainLightShadowmapTexture), shadowSamplingData, shadowStrength, false);
  16. #endif
  17. half3 color = GlobalIllumination(brdfData, inputData.bakedGI, occlusion, inputData.normalWS, inputData.viewDirectionWS);
  18. color += LightingPhysicallyBased(brdfData, mainLight, inputData.normalWS, inputData.viewDirectionWS);
  19. #ifdef _ADDITIONAL_LIGHTS
  20. int pixelLightCount = GetAdditionalLightsCount();
  21. for (int i = 0; i < pixelLightCount; ++i)
  22. {
  23. Light light = GetAdditionalLight(i, inputData.positionWS);
  24. color += LightingPhysicallyBased(brdfData, light, inputData.normalWS, inputData.viewDirectionWS);
  25. }
  26. #endif
  27. #ifdef _ADDITIONAL_LIGHTS_VERTEX
  28. color += inputData.vertexLighting * brdfData.diffuse;
  29. #endif
  30. color += emission;
  31. return half4(color, alpha);
  32. }
  33. #endif