TerrainLitInput.hlsl 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef UNIVERSAL_TERRAIN_LIT_INPUT_INCLUDED
  2. #define UNIVERSAL_TERRAIN_LIT_INPUT_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  4. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
  5. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"
  6. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"
  7. CBUFFER_START(_Terrain)
  8. half _NormalScale0, _NormalScale1, _NormalScale2, _NormalScale3;
  9. half _Metallic0, _Metallic1, _Metallic2, _Metallic3;
  10. half _Smoothness0, _Smoothness1, _Smoothness2, _Smoothness3;
  11. half4 _DiffuseRemapScale0, _DiffuseRemapScale1, _DiffuseRemapScale2, _DiffuseRemapScale3;
  12. half4 _MaskMapRemapOffset0, _MaskMapRemapOffset1, _MaskMapRemapOffset2, _MaskMapRemapOffset3;
  13. half4 _MaskMapRemapScale0, _MaskMapRemapScale1, _MaskMapRemapScale2, _MaskMapRemapScale3;
  14. float4 _Control_ST;
  15. float4 _Control_TexelSize;
  16. half _DiffuseHasAlpha0, _DiffuseHasAlpha1, _DiffuseHasAlpha2, _DiffuseHasAlpha3;
  17. half _LayerHasMask0, _LayerHasMask1, _LayerHasMask2, _LayerHasMask3;
  18. half4 _Splat0_ST, _Splat1_ST, _Splat2_ST, _Splat3_ST;
  19. half _HeightTransition;
  20. half _Parallax;
  21. half _ProceduralBlend;
  22. half _ProceduralScale;
  23. float _ProceduralTiling;
  24. CBUFFER_END
  25. TEXTURE2D(_Control); SAMPLER(sampler_Control);
  26. TEXTURE2D(_Splat0); SAMPLER(sampler_Splat0);
  27. TEXTURE2D(_Splat1);
  28. TEXTURE2D(_Splat2);
  29. TEXTURE2D(_Splat3);
  30. #ifdef _NORMALMAP
  31. TEXTURE2D(_Normal0); SAMPLER(sampler_Normal0);
  32. TEXTURE2D(_Normal1);
  33. TEXTURE2D(_Normal2);
  34. TEXTURE2D(_Normal3);
  35. #endif
  36. #ifdef _MASKMAP
  37. TEXTURE2D(_Mask0); SAMPLER(sampler_Mask0);
  38. TEXTURE2D(_Mask1);
  39. TEXTURE2D(_Mask2);
  40. TEXTURE2D(_Mask3);
  41. #endif
  42. TEXTURE2D(_HeightMaps); // we use SAMPLER(sampler_Splat0);
  43. #ifdef _ALPHATEST_ON
  44. TEXTURE2D(_TerrainHolesTexture); SAMPLER(sampler_TerrainHolesTexture);
  45. #endif
  46. TEXTURE2D(_MainTex); SAMPLER(sampler_MainTex);
  47. TEXTURE2D(_SpecGlossMap); SAMPLER(sampler_SpecGlossMap);
  48. CBUFFER_START(UnityPerMaterial)
  49. float4 _MainTex_ST;
  50. half4 _BaseColor;
  51. half _Cutoff;
  52. CBUFFER_END
  53. TEXTURE2D(_MetallicTex); SAMPLER(sampler_MetallicTex);
  54. half4 SampleMetallicSpecGloss(float2 uv, half albedoAlpha)
  55. {
  56. half4 specGloss;
  57. specGloss = SAMPLE_TEXTURE2D(_MetallicTex, sampler_MetallicTex, uv);
  58. specGloss.a = albedoAlpha;
  59. return specGloss;
  60. }
  61. inline void InitializeStandardLitSurfaceData(float2 uv, out SurfaceData outSurfaceData)
  62. {
  63. half4 albedoSmoothness = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, uv);
  64. outSurfaceData.alpha = 1;
  65. half4 specGloss = SampleMetallicSpecGloss(uv, albedoSmoothness.a);
  66. outSurfaceData.albedo = albedoSmoothness.rgb;
  67. outSurfaceData.metallic = specGloss.r;
  68. outSurfaceData.specular = half3(0.0h, 0.0h, 0.0h);
  69. outSurfaceData.smoothness = specGloss.a;
  70. outSurfaceData.normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap));
  71. outSurfaceData.occlusion = 1;
  72. outSurfaceData.emission = 0;
  73. outSurfaceData.clearCoatMask = 0;
  74. outSurfaceData.clearCoatSmoothness = 0;
  75. }
  76. #endif