File: grid.fs

package info (click to toggle)
wings3d 2.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 14,404 kB
  • sloc: erlang: 132,169; ansic: 3,779; lisp: 1,434; sh: 805; makefile: 794; cpp: 244; xml: 50
file content (30 lines) | stat: -rw-r--r-- 770 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//
// Fragment shader for grid
//
// Author: Dan Gudmundsson
//

#version 120

uniform vec4 scale;
uniform vec3 color;

varying vec3 pos3d;
varying vec2 pos2d;

float grid(vec3 fragPos3D, float scale) {
  vec2 coord = fragPos3D.xz * scale; // use the scale variable to set the distance between the lines
  vec2 derivative = fwidth(coord);
  vec2 grid = abs(fract(coord - 0.5) - 0.5) / derivative;
  float line = min(grid.x, grid.y);
  return 1.0 - min(line, 1.0);
}

void main(void)
{
  // fade with radius from center
  float fade = 1.0-min(1.0,length(pos2d));
  // calc and with scale.x & y and multiply with respective alpha scale.z & w
  float alpha = grid(pos3d, scale.x)*scale.z + grid(pos3d, scale.y)*scale.w;
  gl_FragColor = vec4(color, alpha * fade * fade);
}