--- /dev/null
+varying vec3 pos, vpos;
+
+float grid(vec2 p, float duty)
+{
+ float w = duty * 0.5;
+ p = fract(p);
+ return smoothstep(1.0 - w, 1.0, p.x) + (1.0 - smoothstep(0.0, w, p.x)) +
+ smoothstep(1.0 - w, 1.0, p.y) + (1.0 - smoothstep(0.0, w, p.y));
+}
+
+void main()
+{
+ vec3 p = pos * 500.0;
+
+ const vec3 grid_color = vec3(1.0, 0.2, 0.8);
+ const vec3 bg_color = vec3(0.5, 0.1, 1.0);
+ vec3 color = grid_color * grid(p.xz, 0.2);
+
+ float fog = min(abs(vpos.z) * 0.05, 1.0);
+
+ gl_FragColor.xyz = mix(color, bg_color, fog);
+ gl_FragColor.a = 1.0;
+}