Files
ZHGD_Web/Assets/Art/Art Plugins/GPUInstancer/Resources/Compute/Include/Terrain.hlsl
2025-07-13 23:16:20 +08:00

25 lines
789 B
HLSL

#ifndef __terrain_hlsl_
#define __terrain_hlsl_
// Bilinear Interpolation
float Blerp(float c00, float c10, float c01, float c11, float tx, float ty)
{
return lerp(lerp(c00, c10, tx), lerp(c01, c11, tx), ty);
}
// Get height for specified coordinates
float SampleHeight(float2 p, float leftBottomH, float leftTopH, float rightBottomH, float rightTopH)
{
return Blerp(leftBottomH, rightBottomH, leftTopH, rightTopH, p.x, p.y);
}
// Get normal vector from specified heighmap data
float3 ComputeNormals(float leftBottomH, float leftTopH, float rightBottomH, float scale)
{
float3 P = float3(0, leftBottomH * scale, 0);
float3 Q = float3(0, leftTopH * scale, 1);
float3 R = float3(1, rightBottomH * scale, 0);
return normalize(cross(Q - R, R - P));
}
#endif