View difference between Paste ID: R2kexnYJ and R8t1K7Dg
SHOW: | | - or go back to the newest paste.
1
GEOMETRY SHADER
2
------------------------------------------------------------------
3
#version 120
4
5
//in values from vert shader...
6
varying in vec2 vSpriteTransform[];
7
varying in vec4 vSpriteColor[];
8
varying in vec4 vSpriteTexCoords[];
9
10
//out values to frag shader...
11
varying out vec2 TexCoord;
12
varying out vec4 Color;
13
14
void main() {
15
	mat4 gVP = gl_ModelViewProjectionMatrix;
16
	
17
	vec2 pos = gl_PositionIn[0].xy;
18
	vec2 size = vSpriteTransform[0].xy;
19
	vec4 tex = vSpriteTexCoords[0]; 
20
		
21
	//out to frag...
22
	Color = vSpriteColor[0];
23
	
24
	gl_Position = gVP * vec4(pos.x, pos.y, 0, 1); //top left
25
	TexCoord = vec2(tex.x, tex.y);
26
	EmitVertex();
27
	
28
	gl_Position = gVP * vec4(pos.x+size.x, pos.y, 0, 1); //top right
29
	TexCoord = vec2(tex.x+tex.z, tex.y);
30
	EmitVertex();
31
	
32
	gl_Position = gVP * vec4(pos.x, pos.y+size.y, 0, 1); //bottom left
33
	TexCoord = vec2(tex.x, tex.y+tex.w);
34
	EmitVertex();
35
	
36
	gl_Position = gVP * vec4(pos.x+size.x, pos.y+size.y, 0, 1); //bottom right
37
	TexCoord = vec2(tex.x+tex.z, tex.y+tex.w);
38
	EmitVertex();
39
	
40
	EndPrimitive();
41
} 
42
43
44
45
46
47
VERTEX SHADER
48
------------------------------------------------------------------
49
#version 120
50
51
//in values...
52
attribute vec2 SpriteTransform;
53
attribute vec4 SpriteTexCoords;
54
attribute vec4 SpriteColor;
55
56
//out values...
57
varying vec2 vSpriteTransform;
58
varying vec4 vSpriteColor;
59
varying vec4 vSpriteTexCoords;
60
61
void main() {
62
	vSpriteTransform = SpriteTransform;
63
	vSpriteTexCoords = SpriteTexCoords;
64
	vSpriteColor = SpriteColor;
65
	gl_Position = gl_Vertex;
66
} 
67
68
69
70
71
72
FRAGMENT SHADER
73
------------------------------------------------------------------
74
#version 120
75
76
uniform sampler2D tex0;
77
78
varying vec2 TexCoord;
79
varying vec4 Color;
80
81
void main(void) {
82
	vec4 c = texture2D(tex0, TexCoord);
83
	gl_FragColor = Color * c;
84
}