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 vec2 WIN_SCALE;
5
 
6
varying in float n[6];
7
varying in vec4 diffuseIn[1];
8
varying vec4 diffuse;
9
noperspective varying float dist[6];
10
noperspective varying float n_frag;
11
 
12
 
13
float distance(vec2 p, vec2 p0, vec2 p1)
14
{
15
	vec2 v0 = p1-p0;
16
	vec2 v1 = p0-p;
17
	vec2 v2 = p1-p;
18
	float l = length(v0);
19
	return abs(v1.x*v2.y - v1.y * v2.x)/l;
20
}
21
 
22
vec2 p[6];
23
void compute_dist(int i, int N)
24
{
25
		for(int k=1;k<N-1;++k) {
26
			int j = (i+k)%N;
27
			dist[j] = distance(p[i],p[j],p[(j+1)%N]);
28
		}
29
		dist[i] = 0;
30
		dist[(i+N-1)%N] = 0;
31
}
32
 
33
void main(void)
34
{
35
	n_frag = n[0];
36
	int N = int(n[0]);
37
	for(int i=0;i<N;++i) {
38
		p[i] = WIN_SCALE * gl_PositionIn[i].xy/gl_PositionIn[i].w;
39
		dist[i] = 0;
40
	}
41
	for(int l=0;l<N;++l)
42
	{
43
		int i = (l%2==0) ? l/2 : N-(l+1)/2;
44
		compute_dist(i,N);
45
		diffuse = diffuseIn[i];
46
		gl_Position = gl_PositionIn[i];
47
		EmitVertex();
48
	}
49
	EndPrimitive();
50
}