1
uniform sampler2D modelHeight;
5
float readValue(float dx,float dy) {
6
return texture2D(modelHeight, vUv + vec2(dx, dy) / gridSize).r;
10
vec2 clr = vec2(readValue(-1.0, +0.0), readValue(+1.0, +0.0));
11
vec2 ctb = vec2(readValue(+0.0, -1.0), readValue(+0.0, +1.0));
13
vec2 diag1 = vec2(readValue(-1.0, -1.0), readValue(+1.0, +1.0));
14
vec2 diag2 = vec2(readValue(+1.0, -1.0), readValue(-1.0, +1.0));
16
float height = readValue(0.0, 0.0);
18
vec2 h2 = vec2(height, height);
19
bool aligned = all(greaterThan(h2, clr)) || all(greaterThan(h2, ctb));
20
bool diagonal = all(greaterThan(h2, diag1)) || all(greaterThan(h2, diag2));
21
bool isFlat = all(equal(vec4(h2, h2), vec4(clr, ctb)));
22
if (aligned || diagonal || isFlat)
26
vec2 diff2 = min(min(clr, ctb), min(diag1, diag2));
27
float diff = height - min(diff2.x, diff2.y);
29
gl_FragColor = vec4(height, 0.0, 0.0, 1.0);