Files
tactileipc3d/test/onlygl/shaders/heatmap.vert
2026-01-20 23:41:46 +08:00

28 lines
594 B
GLSL

#version 330 core
layout(location = 0) in vec3 aPos;
layout(location = 1) in vec2 aUV;
out vec2 vUV;
out vec3 vWorldPos;
uniform mat4 uMVP;
uniform sampler2D uHeightTex;
uniform float uMinV;
uniform float uMaxV;
uniform float uHeightScale;
uniform float uBaseZ;
float value01(float v) {
return clamp((v - uMinV) / max(uMaxV - uMinV, 1e-6), 0.0, 1.0);
}
void main() {
vUV = aUV;
float v = texture(uHeightTex, aUV).r;
float h = value01(v) * uHeightScale;
vec3 world = aPos + vec3(0.0, 0.0, uBaseZ + h);
vWorldPos = world;
gl_Position = uMVP * vec4(world, 1.0);
}