CTI URP Leaves SurfaceData.hlsl 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. // Surface function
  2. inline void InitializeLeavesLitSurfaceData(half colorVariation, float2 uv, out SurfaceData outSurfaceData, out AdditionalSurfaceData outAdditionalSurfaceData)
  3. {
  4. outSurfaceData = (SurfaceData)0;
  5. half4 albedoAlpha = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap));
  6. outSurfaceData.alpha = Alpha(albedoAlpha.a, 1, _Cutoff);
  7. // Add Color Variation
  8. albedoAlpha.rgb = lerp(albedoAlpha.rgb, (albedoAlpha.rgb + _HueVariation.rgb) * 0.5, colorVariation * _HueVariation.a);
  9. outSurfaceData.albedo = albedoAlpha.rgb;
  10. outSurfaceData.metallic = 0;
  11. outSurfaceData.specular = _SpecColor.rgb;
  12. #if defined (_NORMALMAP)
  13. half4 sampleNormal = SAMPLE_TEXTURE2D(_BumpSpecMap, sampler_BumpSpecMap, uv);
  14. half3 normalTS;
  15. normalTS.xy = sampleNormal.ag * 2 - 1;
  16. normalTS.z = max(1.0e-16, sqrt(1.0h - saturate(dot(normalTS.xy, normalTS.xy))));
  17. outSurfaceData.normalTS = normalTS;
  18. outSurfaceData.smoothness = sampleNormal.b * _Smoothness;
  19. outAdditionalSurfaceData.translucency = sampleNormal.r;
  20. #else
  21. outSurfaceData.normalTS = half3(0, 0, 1);
  22. outSurfaceData.smoothness = _Smoothness;
  23. outAdditionalSurfaceData.translucency = 1;
  24. #endif
  25. outSurfaceData.occlusion = 1;
  26. outSurfaceData.emission = 0;
  27. }