2025-10-21 14:18:31 +09:00

98 lines
3.0 KiB
Plaintext

Shader "Hidden/StylizedWater3/TerrainHeight"
{
Properties
{
[MainTexture] _BaseMap("Texture", 2D) = "black" {}
[MainColor] _BaseColor("Color", Color) = (1, 1, 1, 1)
}
SubShader
{
Tags
{
"RenderType" = "Opaque"
"IgnoreProjector" = "True"
"UniversalMaterialType" = "Unlit"
"RenderPipeline" = "UniversalPipeline"
}
LOD 100
ZWrite Off
Cull Off
Pass
{
Name "Output terrain height"
HLSLPROGRAM
#pragma target 2.0
#pragma vertex UnlitPassVertex
#pragma fragment UnlitPassFragment
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
#include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" //UnpackHeightmap
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" //UnpackHeightmap
struct Attributes
{
float4 positionOS : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Varyings
{
float2 uv : TEXCOORD0;
float4 positionCS : SV_POSITION;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
Varyings UnlitPassVertex(Attributes input)
{
Varyings output = (Varyings)0;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
output.uv = input.uv;
return output;
}
TEXTURE2D_FLOAT(_TerrainHeightmap);
float4 _TerrainHeightRange;
//X: Bottom y-position
//Y: Max height (heightmap scale)
void UnlitPassFragment(Varyings input, out half4 outColor : SV_Target0)
{
UNITY_SETUP_INSTANCE_ID(input);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
half2 uv = input.uv;
float scale = (_TerrainHeightRange.y);
float heightMap = UnpackHeightmap(SAMPLE_TEXTURE2D(_TerrainHeightmap, sampler_LinearRepeat, uv).r);
heightMap *= scale * 1;
float worldHeight = (_TerrainHeightRange.x + heightMap);
//worldHeight = PackHeightmap(worldHeight);
outColor = float4(worldHeight.xxx, 1.0);
}
ENDHLSL
}
}
FallBack "Hidden/Universal Render Pipeline/FallbackError"
}