Rasagar/Library/PackageCache/com.unity.terrain-tools/Shaders/MeshUtility.shader
2024-08-26 23:07:20 +03:00

96 lines
2.1 KiB
Plaintext

Shader "Hidden/TerrainTools/MeshUtility"
{
Properties
{
_MainTex ( "Texture", any ) = "" {}
}
SubShader
{
ZTest LEQUAL Cull OFF ZWrite ON
HLSLINCLUDE
#include "UnityCG.cginc"
sampler2D _MainTex;
struct appdata_t
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
float4x4 _Matrix_M;
float4x4 _Matrix_MV;
float4x4 _Matrix_MVP;
ENDHLSL
Pass // render mesh depth to rendertexture
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
struct v2f
{
float4 vertex : SV_POSITION;
float4 worldPos : TEXCOORD1;
// float4 viewPos : TEXCOORD2;
};
v2f vert( appdata_t v )
{
v2f o;
float2 b = float2( 0, 1 );
o.worldPos = mul( _Matrix_M, float4( v.vertex.xyz, 1 ) ); // world space position
// o.viewPos = mul( _Matrix_MV, float4( v.vertex.xyz, 1 ) ); // view ( camera ) space position
o.vertex = mul( _Matrix_MVP, float4( v.vertex.xyz, 1 ) ); // clip space position
return o;
}
float4 frag( v2f i ) : SV_Target
{
return i.worldPos.y;
// return PackHeightmap( i.viewPos.z );
// return PackHeightmap( i.vertex.z ); // depth
}
ENDHLSL
}
Pass // render mask
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
struct v2f
{
float4 vertex : SV_POSITION;
};
v2f vert( appdata_t v )
{
v2f o;
o.vertex = mul( _Matrix_MVP, float4( v.vertex.xyz, 1 ) ); // clip space position
return o;
}
float4 frag( v2f i ) : SV_Target
{
return 1;
}
ENDHLSL
}
}
}