
This is primarily done to lower the GTK version dependency below GTK 3.22, since GTK 3.22 is unlikely to be widely availale any time soon.
39 lines
1.1 KiB
GLSL
39 lines
1.1 KiB
GLSL
//-----------------------------------------------------------------------------
|
|
// Point rendering shader
|
|
//
|
|
// Copyright 2016 Aleksey Egorov
|
|
//-----------------------------------------------------------------------------
|
|
const float feather = 0.5;
|
|
|
|
attribute vec3 pos;
|
|
attribute vec2 loc;
|
|
|
|
uniform mat4 modelview;
|
|
uniform mat4 projection;
|
|
uniform float width;
|
|
uniform float pixel;
|
|
|
|
varying vec2 fragLoc;
|
|
|
|
void main() {
|
|
// get camera vectors from modelview matrix
|
|
vec3 u = vec3(modelview[0].x, modelview[1].x, modelview[2].x);
|
|
vec3 v = vec3(modelview[0].y, modelview[1].y, modelview[2].y);
|
|
|
|
// calculate point contour extension basis for constant width and caps
|
|
|
|
// calculate point extension width considering antialiasing
|
|
float ext = width + feather * pixel;
|
|
|
|
// extend point contour
|
|
vec3 vertex = pos;
|
|
vertex += ext * loc.x * normalize(u);
|
|
vertex += ext * loc.y * normalize(v);
|
|
|
|
// write fragment location for calculating caps and antialiasing
|
|
fragLoc = loc;
|
|
|
|
// transform resulting vertex with modelview and projection matrices
|
|
gl_Position = projection * modelview * vec4(vertex, 1.0);
|
|
}
|