44 lines
		
	
	
		
			750 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			750 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 420 core
 | |
| 
 | |
| layout(triangles) in;
 | |
| 
 | |
| in gl_PerVertex {
 | |
|     float gl_PointSize;
 | |
| } gl_in[];
 | |
| 
 | |
| out gl_PerVertex {
 | |
|     float gl_PointSize;
 | |
| };
 | |
| 
 | |
| layout(line_strip) out;
 | |
| layout(max_vertices = 127) out;
 | |
| layout(invocations = 4) in;
 | |
| 
 | |
| uniform sampler2D s2D;
 | |
| in vec2 coord[];
 | |
| 
 | |
| int i;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     float p = gl_in[1].gl_PointSize;
 | |
|     gl_PointSize = p;
 | |
|     gl_ViewportIndex = 7;
 | |
| 
 | |
|     EmitStreamVertex(1);
 | |
|     EndStreamPrimitive(0);
 | |
|     EmitVertex();
 | |
|     EndPrimitive();
 | |
|     int id = gl_InvocationID;
 | |
| 
 | |
|     const ivec2 offsets[5] =
 | |
|     {
 | |
|         ivec2(0,1),
 | |
|         ivec2(1,-2),
 | |
|         ivec2(0,3),
 | |
|         ivec2(-3,0),
 | |
|         ivec2(2,1)
 | |
|     };
 | |
|     vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy);
 | |
| }
 | 
