gedeng/Shader/terrain.tes

34 lines
898 B
Plaintext

#version 430
layout(triangles) in;
layout (binding = 0) uniform sampler2D heightmap;
uniform mat4 model;
uniform mat4 projection;
uniform mat4 view;
in PipelineData {
vec4 position;
vec2 texture_coordinate;
} te_in[];
out PipelineData {
vec4 position;
vec2 texture_coordinate;
} te_out;
void main() {
te_out.texture_coordinate = gl_TessCoord.x * te_in[0].texture_coordinate;
te_out.texture_coordinate += gl_TessCoord.y * te_in[1].texture_coordinate;
te_out.texture_coordinate += gl_TessCoord.z * te_in[2].texture_coordinate;
te_out.position = gl_TessCoord.x * te_in[0].position;
te_out.position += gl_TessCoord.y * te_in[1].position;
te_out.position += gl_TessCoord.z * te_in[2].position;
te_out.position.y += texture(heightmap, te_out.texture_coordinate).r;
mat4 pvm = projection * view * model;
gl_Position = pvm * te_out.position;
}