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
|
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ModelMatrix;
uniform mat4 ModelMatrixInverse;
#ifdef CLIP_PLANES
/* keep in sync with DRWManager.view_data */
layout(std140) uniform clip_block {
vec4 ClipPlanes[1];
};
#endif
#ifndef HAIR_SHADER
in vec3 pos;
#endif
void main()
{
#ifdef HAIR_SHADER
float time, thick_time, thickness;
vec3 pos, tan, binor;
hair_get_pos_tan_binor_time(
(ProjectionMatrix[3][3] == 0.0),
ModelMatrixInverse,
ViewMatrixInverse[3].xyz, ViewMatrixInverse[2].xyz,
pos, tan, binor, time, thickness, thick_time);
gl_Position = ViewProjectionMatrix * vec4(pos, 1.0);
vec4 worldPosition = vec4(pos, 1.0);
#else
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
vec4 worldPosition = (ModelMatrix * vec4(pos, 1.0));
#endif
#ifdef CLIP_PLANES
gl_ClipDistance[0] = dot(vec4(worldPosition.xyz, 1.0), ClipPlanes[0]);
#endif
/* TODO motion vectors */
}
|