Subversion Repositories gelsvn

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
395 jab 1
#version 120
2
#extension GL_EXT_gpu_shader4 : enable
3
 
4
uniform sampler2DRect mesh_tex;
5
uniform vec2 WIN_SCALE;
6
noperspective varying float n;
7
varying in vec4 diffuseIn[1];
8
varying vec4 diffuse;
9
noperspective varying float dist[20];
10
 
11
 
12
float distance(vec2 p, vec2 p0, vec2 p1)
13
{
14
	vec2 v0 = p1-p0;
15
	vec2 v1 = p0-p;
16
	vec2 v2 = p1-p;
17
	return abs(v1.x*v2.y - v1.y * v2.x)/length(v0);
18
}
19
 
20
void main(void)
21
{
22
	int N = int(gl_PositionIn[0].z);
23
	n=gl_PositionIn[0].z;
24
 
25
	diffuse = diffuseIn[0];
26
	vec2 v_idx = gl_PositionIn[0].xy;
27
	vec4 p3d[20];
28
	vec2 p[20];
29
	for(int i=0;i<N;++i)
30
		{
31
			p3d[i] = gl_ModelViewProjectionMatrix*texture2DRect(mesh_tex, v_idx);
32
			p[i] = WIN_SCALE * p3d[i].xy/p3d[i].w;
33
			v_idx.x++;
34
		}
35
 
36
	for(int l=0;l<N;++l)
37
	{
38
		int i = (l%2==0) ? l/2 : N-(l+1)/2;
39
		for(int j=0;j<N;++j)
40
			dist[j] = distance(p[i],p[j],p[(j+1)%N]);
41
		gl_Position = p3d[i];
42
		EmitVertex();
43
	}
44
	EndPrimitive();
45
}