54 lines
1.4 KiB
HLSL
54 lines
1.4 KiB
HLSL
#ifndef TERRAIN_LIT_META_PASS_INCLUDED
|
||
#define TERRAIN_LIT_META_PASS_INCLUDED
|
||
|
||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/MetaInput.hlsl"
|
||
|
||
// Not needed in LWRP – but URP
|
||
|
||
struct Attributes
|
||
{
|
||
float4 positionOS : POSITION;
|
||
float3 normalOS : NORMAL;
|
||
float2 uv0 : TEXCOORD0;
|
||
float2 uv1 : TEXCOORD1;
|
||
float2 uv2 : TEXCOORD2;
|
||
};
|
||
|
||
struct Varyings
|
||
{
|
||
float4 positionCS : SV_POSITION;
|
||
float2 uv : TEXCOORD0;
|
||
};
|
||
|
||
|
||
Varyings TerrainVertexMeta(Attributes input)
|
||
{
|
||
Varyings output;
|
||
output.positionCS = MetaVertexPosition(input.positionOS, input.uv1, input.uv2,
|
||
unity_LightmapST, unity_DynamicLightmapST);
|
||
output.uv = TRANSFORM_TEX(input.uv0, _MainTex);
|
||
|
||
// Fix UVs (Unity 2019.3.0b6)
|
||
output.uv = ( (output.positionCS.xy) + 1 ) * 0.5;
|
||
|
||
return output;
|
||
}
|
||
|
||
half4 TerrainFragmentMeta(Varyings input) : SV_Target
|
||
{
|
||
SurfaceData surfaceData;
|
||
InitializeStandardLitSurfaceData(input.uv, surfaceData);
|
||
|
||
BRDFData brdfData;
|
||
InitializeBRDFData(surfaceData.albedo, surfaceData.metallic, surfaceData.specular, surfaceData.smoothness, surfaceData.alpha, brdfData);
|
||
|
||
MetaInput metaInput;
|
||
metaInput.Albedo = brdfData.diffuse + brdfData.specular * brdfData.roughness * 0.5;
|
||
metaInput.SpecularColor = surfaceData.specular;
|
||
metaInput.Emission = surfaceData.emission;
|
||
|
||
return MetaFragment(metaInput);
|
||
}
|
||
|
||
#endif
|