fix: add terrain bump mapping noise calculation in fragment shader
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user