123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #ifndef COMBINED_SHAPE_LIGHT_PASS
- #define COMBINED_SHAPE_LIGHT_PASS
-
- #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl"
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl"
-
- #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/ShapeLightVariables.hlsl"
-
-
- half4 CombinedShapeLightShared(in SurfaceData2D surfaceData, in InputData2D inputData)
- {
- #if defined(DEBUG_DISPLAY)
- half4 debugColor = 0;
-
- if (CanDebugOverrideOutputColor(surfaceData, inputData, debugColor))
- {
- return debugColor;
- }
- #endif
-
- half alpha = surfaceData.alpha;
- half4 color = half4(surfaceData.albedo, alpha);
- const half4 mask = surfaceData.mask;
- const half2 lightingUV = inputData.lightingUV;
-
- if (alpha == 0.0)
- discard;
-
- #if USE_SHAPE_LIGHT_TYPE_0
- half4 shapeLight0 = SAMPLE_TEXTURE2D(_ShapeLightTexture0, sampler_ShapeLightTexture0, lightingUV);
-
- if (any(_ShapeLightMaskFilter0))
- {
- half4 processedMask = (1 - _ShapeLightInvertedFilter0) * mask + _ShapeLightInvertedFilter0 * (1 - mask);
- shapeLight0 *= dot(processedMask, _ShapeLightMaskFilter0);
- }
-
- half4 shapeLight0Modulate = shapeLight0 * _ShapeLightBlendFactors0.x;
- half4 shapeLight0Additive = shapeLight0 * _ShapeLightBlendFactors0.y;
- #else
- half4 shapeLight0Modulate = 0;
- half4 shapeLight0Additive = 0;
- #endif
-
- #if USE_SHAPE_LIGHT_TYPE_1
- half4 shapeLight1 = SAMPLE_TEXTURE2D(_ShapeLightTexture1, sampler_ShapeLightTexture1, lightingUV);
-
- if (any(_ShapeLightMaskFilter1))
- {
- half4 processedMask = (1 - _ShapeLightInvertedFilter1) * mask + _ShapeLightInvertedFilter1 * (1 - mask);
- shapeLight1 *= dot(processedMask, _ShapeLightMaskFilter1);
- }
-
- half4 shapeLight1Modulate = shapeLight1 * _ShapeLightBlendFactors1.x;
- half4 shapeLight1Additive = shapeLight1 * _ShapeLightBlendFactors1.y;
- #else
- half4 shapeLight1Modulate = 0;
- half4 shapeLight1Additive = 0;
- #endif
-
- #if USE_SHAPE_LIGHT_TYPE_2
- half4 shapeLight2 = SAMPLE_TEXTURE2D(_ShapeLightTexture2, sampler_ShapeLightTexture2, lightingUV);
-
- if (any(_ShapeLightMaskFilter2))
- {
- half4 processedMask = (1 - _ShapeLightInvertedFilter2) * mask + _ShapeLightInvertedFilter2 * (1 - mask);
- shapeLight2 *= dot(processedMask, _ShapeLightMaskFilter2);
- }
-
- half4 shapeLight2Modulate = shapeLight2 * _ShapeLightBlendFactors2.x;
- half4 shapeLight2Additive = shapeLight2 * _ShapeLightBlendFactors2.y;
- #else
- half4 shapeLight2Modulate = 0;
- half4 shapeLight2Additive = 0;
- #endif
-
- #if USE_SHAPE_LIGHT_TYPE_3
- half4 shapeLight3 = SAMPLE_TEXTURE2D(_ShapeLightTexture3, sampler_ShapeLightTexture3, lightingUV);
-
- if (any(_ShapeLightMaskFilter3))
- {
- half4 processedMask = (1 - _ShapeLightInvertedFilter3) * mask + _ShapeLightInvertedFilter3 * (1 - mask);
- shapeLight3 *= dot(processedMask, _ShapeLightMaskFilter3);
- }
-
- half4 shapeLight3Modulate = shapeLight3 * _ShapeLightBlendFactors3.x;
- half4 shapeLight3Additive = shapeLight3 * _ShapeLightBlendFactors3.y;
- #else
- half4 shapeLight3Modulate = 0;
- half4 shapeLight3Additive = 0;
- #endif
-
- half4 finalOutput;
- #if !USE_SHAPE_LIGHT_TYPE_0 && !USE_SHAPE_LIGHT_TYPE_1 && !USE_SHAPE_LIGHT_TYPE_2 && ! USE_SHAPE_LIGHT_TYPE_3
- finalOutput = color;
- #else
- half4 finalModulate = shapeLight0Modulate + shapeLight1Modulate + shapeLight2Modulate + shapeLight3Modulate;
- half4 finalAdditve = shapeLight0Additive + shapeLight1Additive + shapeLight2Additive + shapeLight3Additive;
- finalOutput = _HDREmulationScale * (color * finalModulate + finalAdditve);
- #endif
-
- finalOutput.a = alpha;
-
- return max(0, finalOutput);
- }
- #endif
|