CTI URP Bark SurfaceData.hlsl 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Surface function
  2. inline void InitializeStandardLitSurfaceData(
  3. #if !defined(BARKMETA)
  4. #if defined(CTIBARKARRAY)
  5. half2 colorVariation,
  6. #else
  7. half colorVariation,
  8. #endif
  9. #endif
  10. float2 uv, out SurfaceData outSurfaceData)
  11. {
  12. // Zero initialize outSurfaceData as URP 12 might expect clear coat here.
  13. outSurfaceData = (SurfaceData)0;
  14. #if defined(CTIBARKARRAY)
  15. half4 albedoAlpha = SAMPLE_TEXTURE2D_ARRAY(_BaseMapArray, sampler_BaseMapArray, uv, colorVariation.y);
  16. #else
  17. half4 albedoAlpha = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap));
  18. #endif
  19. outSurfaceData.alpha = 1;
  20. // Add Color Variation
  21. #if !defined(BARKMETA)
  22. albedoAlpha.rgb = lerp(albedoAlpha.rgb, (albedoAlpha.rgb + _HueVariation.rgb) * 0.5h, colorVariation.x * _HueVariation.a);
  23. #endif
  24. outSurfaceData.albedo = albedoAlpha.rgb;
  25. outSurfaceData.metallic = 0;
  26. outSurfaceData.specular = _SpecColor.rgb;
  27. outSurfaceData.smoothness = albedoAlpha.a * _Smoothness;
  28. //outSurfaceData.normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap));
  29. #if defined (_NORMALMAP)
  30. #if defined(CTIBARKARRAY)
  31. half4 sampleNormal = SAMPLE_TEXTURE2D_ARRAY(_BumpOcclusionMapArray, sampler_BumpOcclusionMapArray, uv, colorVariation.y);
  32. #else
  33. half4 sampleNormal = SAMPLE_TEXTURE2D(_BumpOcclusionMap, sampler_BumpOcclusionMap, uv);
  34. #endif
  35. half3 normalTS;
  36. normalTS.xy = sampleNormal.ag * 2.0h - 1.0h;
  37. normalTS.z = max(1.0e-16, sqrt(1.0h - saturate(dot(normalTS.xy, normalTS.xy))));
  38. outSurfaceData.normalTS = normalTS;
  39. outSurfaceData.occlusion = sampleNormal.b;
  40. #else
  41. outSurfaceData.normalTS = half3(0, 0, 1);
  42. outSurfaceData.occlusion = 1;
  43. #endif
  44. outSurfaceData.emission = 0;
  45. }