Solvespace
33 строки · 1.0 Кб
1//-----------------------------------------------------------------------------
2// Point rendering shader
3//
4// Copyright 2016 Aleksey Egorov
5//-----------------------------------------------------------------------------
6const float feather = 0.5;
7
8attribute vec3 pos;
9attribute vec2 loc;
10
11uniform mat4 modelview;
12uniform mat4 projection;
13uniform float width;
14uniform float pixel;
15
16void main() {
17// get camera vectors from modelview matrix
18vec3 u = vec3(modelview[0].x, modelview[1].x, modelview[2].x);
19vec3 v = vec3(modelview[0].y, modelview[1].y, modelview[2].y);
20
21// calculate point contour extension basis for constant width and caps
22
23// calculate point extension width considering antialiasing
24float ext = width + feather * pixel;
25
26// extend point contour
27vec3 vertex = pos;
28vertex += ext * loc.x * normalize(u);
29vertex += ext * loc.y * normalize(v);
30
31// transform resulting vertex with modelview and projection matrices
32gl_Position = projection * modelview * vec4(vertex, 1.0);
33}
34