terrain-gen/shaders/land.vert

44 lines
1.2 KiB
GLSL

#version 400 core
in vec3 in_position;
in vec3 in_normal;
in int in_biome;
uniform mat3 u_normalMatrix;
uniform mat4 u_model;
uniform mat4 u_view;
uniform mat4 u_projection;
uniform mat4 u_depthVP;
uniform vec4 u_lightPos;
uniform int u_time;
uniform int u_renderPass;
out vec3 lightVector;
out vec3 normal;
out vec4 worldSpacePosition;
out vec4 shadowPosition;
out vec4 fPosition;
flat out int biome;
#define RENDER_PASS_REFLECTION 0x00
#define RENDER_PASS_REFRACTION 0x01
#define RENDER_PASS_SHADOW 0x02
void main() {
if (u_renderPass == RENDER_PASS_SHADOW) {
worldSpacePosition = u_projection * u_view * u_model * vec4(in_position, 1.0);
gl_Position = worldSpacePosition;
} else {
worldSpacePosition = u_model * vec4(in_position, 1.0);
gl_Position = u_projection * u_view * worldSpacePosition;
fPosition = gl_Position;
biome = in_biome;
shadowPosition = u_depthVP * u_model * vec4(in_position, 1.0);
// Camera space
//normal = normalize((u_view * vec4(u_normalMatrix * in_normal, 0.0)).xyz);
normal = normalize(u_normalMatrix * in_normal);
lightVector = normalize((u_view * u_lightPos).xyz);
}
}