Subversion Repositories gelsvn

Rev

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();
}