-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tesse
More file actions
39 lines (32 loc) · 1.53 KB
/
Copy pathmain.tesse
File metadata and controls
39 lines (32 loc) · 1.53 KB
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
#version 430 core
uniform mat4 model_mat;
uniform mat4 view_mat;
uniform mat4 proj_mat;
uniform sampler2D height;
layout (triangles, equal_spacing, ccw) in;
in vec2 TexCoord_ES_in[];
in float factor_ES_in[];
out vec2 TexCoord_FS_in;
out float factor_FS_in;
out vec3 interp_pos;
out vec4 interpc_pos;
vec2 interpolate2D(vec2 v0, vec2 v1, vec2 v2)
{
return vec2(gl_TessCoord.x) * v0 + vec2(gl_TessCoord.y) * v1 + vec2(gl_TessCoord.z) * v2;
}
float interpolate(float v0, float v1, float v2)
{
return gl_TessCoord.x * v0 + gl_TessCoord.y * v1 + gl_TessCoord.z * v2;
}
void main(void)
{
vec4 pos = (gl_TessCoord.x * gl_in[0].gl_Position) +
(gl_TessCoord.y * gl_in[1].gl_Position) +
(gl_TessCoord.z * gl_in[2].gl_Position);
interp_pos = pos.xyz;
float offset = texture2D(height, interpolate2D(TexCoord_ES_in[0], TexCoord_ES_in[1], TexCoord_ES_in[2])).r;
interpc_pos = proj_mat * view_mat * model_mat * vec4(pos.x, pos.y+offset, pos.z, 1.0);
gl_Position = interpc_pos;
TexCoord_FS_in = interpolate2D(TexCoord_ES_in[0], TexCoord_ES_in[1], TexCoord_ES_in[2]);
factor_FS_in = factor_ES_in[0];//interpolate(factor_ES_in[0],factor_ES_in[1],factor_ES_in[2]);
}