1 Shader "Hidden/HDRP/TerrainLit_BasemapGen"
5 [HideInInspector] _DstBlend("DstBlend", Float) = 0.0
10 Tags { "SplatCount" = "8" }
15 #pragma only_renderers d3d11 ps4 xboxone vulkan metal switch
17 #define SURFACE_GRADIENT // Must use Surface Gradient as the normal map texture format is now RG floating point
18 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
19 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
20 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
21 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl"
22 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLitSurfaceData.hlsl"
24 // Terrain builtin keywords
25 #pragma shader_feature_local _TERRAIN_8_LAYERS
26 #pragma shader_feature_local _NORMALMAP
27 #pragma shader_feature_local _MASKMAP
29 #pragma shader_feature_local _TERRAIN_BLEND_HEIGHT
31 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Splatmap_Includes.hlsl"
33 CBUFFER_START(UnityTerrain)
36 float4 _Control0_TexelSize;
41 float4 positionCS : SV_POSITION;
42 float4 texcoord : TEXCOORD0;
48 float2 ComputeControlUV(float2 uv)
50 // adjust splatUVs so the edges of the terrain tile lie on pixel centers
51 return (uv * (_Control0_TexelSize.zw - 1.0f) + 0.5f) * _Control0_TexelSize.xy;
54 Varyings Vert(uint vertexID : SV_VertexID)
57 output.positionCS = GetFullScreenTriangleVertexPosition(vertexID);
58 output.texcoord.xy = TRANSFORM_TEX(GetFullScreenTriangleTexCoord(vertexID), _Control0);
59 output.texcoord.zw = ComputeControlUV(output.texcoord.xy);
74 ZTest Always Cull Off ZWrite Off
79 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Splatmap.hlsl"
81 float4 Frag(Varyings input) : SV_Target
83 TerrainLitSurfaceData surfaceData;
84 InitializeTerrainLitSurfaceData(surfaceData);
85 TerrainSplatBlend(input.texcoord.zw, input.texcoord.xy, surfaceData);
86 return float4(surfaceData.albedo, surfaceData.smoothness);
96 "Name" = "_MetallicTex"
101 ZTest Always Cull Off ZWrite Off
102 Blend One [_DstBlend]
106 #define OVERRIDE_SPLAT_SAMPLER_NAME sampler_Mask0
107 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/TerrainLit/TerrainLit_Splatmap.hlsl"
109 float2 Frag(Varyings input) : SV_Target
111 TerrainLitSurfaceData surfaceData;
112 InitializeTerrainLitSurfaceData(surfaceData);
113 TerrainSplatBlend(input.texcoord.zw, input.texcoord.xy, surfaceData);
114 return float2(surfaceData.metallic, surfaceData.ao);