summaryrefslogtreecommitdiff
path: root/data/simple.vert
blob: 6fdb13bc83310df127712e863d59d7edad83e346 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#version 130
#extension GL_ARB_explicit_attrib_location: require

uniform mat4 mvp;
uniform mat3 mv_normal;
uniform mat4x3 k_uniform[4];

layout(location = 0) in vec2 uv;

out vec4 color;
out vec2 frag_uv;

// Direction of the normal in camera-space.
out vec3 normal_cs;

void main(void)
{
	vec4 uhat = vec4((1 - uv.x) * (1 - uv.x) * (1 - uv.x),
			 3. * uv.x * (1 - uv.x) * (1 - uv.x),
			 3. * uv.x * uv.x * (1 - uv.x),
			 uv.x * uv.x * uv.x);
	vec4 vhat = vec4((1 - uv.y) * (1 - uv.y) * (1 - uv.y),
			 3. * uv.y * (1 - uv.y) * (1 - uv.y),
			 3. * uv.y * uv.y * (1 - uv.y),
			 uv.y * uv.y * uv.y);
	mat4x3 m;
	m[0] = k_uniform[0] * uhat;
	m[1] = k_uniform[1] * uhat;
	m[2] = k_uniform[2] * uhat;
	m[3] = k_uniform[3] * uhat;

	gl_Position = mvp * vec4(m * vhat, 1.0);

	/* Transform the normal by the inverse-transpose of the model-view
	 * matrix.
	 */
	normal_cs = mv_normal * vec3(0., 1., 0.);

	frag_uv = uv;
}