webgcode
1// expected #define: int gridX, gridY
2const vec2 gridSize = vec2(gridX, gridY);
3
4uniform sampler2D modelHeight;
5varying vec2 vUv;
6
7float myDist(vec2 p1, vec2 p2) {
8vec2 diff = p1 - p2;
9return dot(diff, diff);
10}
11
12void main() {
13for(int i = 0; i < gridX; i++)
14for(int j = 0; j < gridY; j++) {
15vec2 pos = vec2(float(i) + 0.5, float(j) + 0.5) / gridSize;
16float sqRadius = texture2D(modelHeight, pos).r;
17float radius = sqrt(sqRadius);
18radius -= 0.05;
19if(radius <= 0.0)
20continue;
21radius = max(radius, 0.01);
22sqRadius = radius * radius;
23float sqDist = myDist(pos, vUv);
24if (sqDist <= sqRadius && sqRadius > 0.0) {
25gl_FragColor = vec4(0.0, 1.0, 1.0, 1.0);
26return;
27}
28}
29discard;
30}