CTI URP Billboard SurfaceData.hlsl 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Surface function
  2. inline void InitializeBillboardLitSurfaceData(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.0h - 1.0h;
  16. normalTS.z = max(1.0e-16, sqrt(1.0 - saturate(dot(normalTS.xy, normalTS.xy))));
  17. // URP 11 needs reversed order here or goes crazy
  18. normalTS.xy *= _BumpScale;
  19. outSurfaceData.normalTS = normalTS;
  20. outSurfaceData.smoothness = sampleNormal.b * _Smoothness;
  21. outAdditionalSurfaceData.translucency = sampleNormal.r;
  22. #else
  23. outSurfaceData.normalTS = half3(0, 0, 1);
  24. outSurfaceData.smoothness = _Smoothness;
  25. outAdditionalSurfaceData.translucency = 0;
  26. #endif
  27. outSurfaceData.occlusion = albedoAlpha.a;
  28. outSurfaceData.emission = 0;
  29. }