#version 330 core in vec3 vNormal; in vec3 vWorldPos; in vec3 vUV; out vec4 FragColor; uniform vec3 uCameraPos; uniform vec3 uLightDir; uniform sampler2D uHeightTex; uniform float uMinV; uniform float uMaxV; uniform vec2 uTexelSize; uniform vec3 uColorZero; uniform vec3 uColorLow; uniform vec3 uColorMid; uniform vec3 uColorHeigh; float saturate(float x) { return clamp(x, 0.0, 1.0); } float value01(float v) { return saturate((v - uMinV) / max(uMaxV - uMinV, 1e-6)); } vec3 colorRamp(float t) { if (t < 0.5) { return mix(uColorLow, uColorMid, t / 0.5); } return mix(uColorHeigh, uColorMid, (t - 0.5) / 0.5); } float maxNeighborValue(vec2 uv) { }