diff -r 000000000000 -r 1918ee327afb src/opengl/util/conical_brush.glsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/opengl/util/conical_brush.glsl Mon Jan 11 14:00:40 2010 +0000 @@ -0,0 +1,27 @@ +// conical gradient shader +#define M_PI 3.14159265358979323846 +uniform sampler1D palette; +uniform float angle; +uniform vec3 inv_matrix_m0; +uniform vec3 inv_matrix_m1; +uniform vec3 inv_matrix_m2; + +vec4 brush() +{ + mat3 mat; + + mat[0] = inv_matrix_m0; + mat[1] = inv_matrix_m1; + mat[2] = inv_matrix_m2; + + vec3 hcoords = mat * vec3(gl_FragCoord.xy, 1); + vec2 A = hcoords.xy / hcoords.z; + +/* float val = fmod((atan2(-A.y, A.x) + angle) / (2.0 * M_PI), 1); */ + if (abs(A.y) == abs(A.x)) + A.y += 0.002; + float t = (atan(-A.y, A.x) + angle) / (2.0 * M_PI); + float val = t - floor(t); + return texture1D(palette, val); +} +