44 lines
1.2 KiB
GLSL
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);
|
|
}
|
|
}
|