diff --git a/shaders/simple.frag b/shaders/simple.frag index daab36e..e50fcfc 100644 --- a/shaders/simple.frag +++ b/shaders/simple.frag @@ -10,11 +10,13 @@ void main() { // ambient component float ambientStrength = 0.1; vec3 ambient = ambientStrength * vColor.rgb; + // terrain bump mapping with multi‐octave noise based on world position float bumpStrength = 0.4; float n1 = fract(sin(dot(vPosition.xz, vec2(12.9898, 78.233))) * 43758.5453); float n2 = fract(sin(dot(vPosition.xz * 0.5, vec2(93.9898, 67.345))) * 24634.6345); float noiseVal = mix(n1, n2, 0.5); + vec3 bumpNormal = normalize(vNormal + bumpStrength * (noiseVal - 0.5) * vec3(1.0)); // diffuse component (Lambert) with bump float lambert = max(0.0, dot(normalize(bumpNormal), -lightDirection));