Blame | Last modification | View Log | RSS feed
#version 120
#extension GL_EXT_gpu_shader4 : enable
uniform sampler2DRect mesh_tex;
uniform vec2 WIN_SCALE;
noperspective varying float n;
varying in vec4 diffuseIn[1];
varying vec4 diffuse;
noperspective varying float dist[20];
float distance(vec2 p, vec2 p0, vec2 p1)
{
vec2 v0 = p1-p0;
vec2 v1 = p0-p;
vec2 v2 = p1-p;
return abs(v1.x*v2.y - v1.y * v2.x)/length(v0);
}
void main(void)
{
int N = int(gl_PositionIn[0].z);
n=gl_PositionIn[0].z;
diffuse = diffuseIn[0];
vec2 v_idx = gl_PositionIn[0].xy;
vec4 p3d[20];
vec2 p[20];
for(int i=0;i<N;++i)
{
p3d[i] = gl_ModelViewProjectionMatrix*texture2DRect(mesh_tex, v_idx);
p[i] = WIN_SCALE * p3d[i].xy/p3d[i].w;
v_idx.x++;
}
for(int l=0;l<N;++l)
{
int i = (l%2==0) ? l/2 : N-(l+1)/2;
for(int j=0;j<N;++j)
dist[j] = distance(p[i],p[j],p[(j+1)%N]);
gl_Position = p3d[i];
EmitVertex();
}
EndPrimitive();
}