]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - shaders/3d/vertex.glsl
Speed up logistics of all air mapblocks
[dragonblocks_alpha.git] / shaders / 3d / vertex.glsl
1 layout(location = 0) in vec3 vertexPosition;
2 layout(location = 1) in vec3 vertexNormal;
3 layout(location = 2) in float vertexTextureIndex;
4 layout(location = 3) in vec2 vertexTextureCoords;
5 layout(location = 4) in vec3 vertexColor;
6
7 out vec3 fragmentPosition;
8 out vec3 fragmentNormal;
9 out float fragmentTextureIndex;
10 out vec2 fragmentTextureCoords;
11 out vec3 fragmentColor;
12
13 uniform mat4 model;
14 uniform mat4 VP;
15 uniform float daylight;
16 uniform float ambientLight;
17 uniform vec3 lightDir;
18
19 void main()
20 {
21         vec4 worldSpace = model * vec4(vertexPosition, 1.0);
22         gl_Position = VP * worldSpace;
23
24         fragmentPosition = worldSpace.xyz;
25         fragmentNormal = vertexNormal;
26         fragmentTextureIndex = vertexTextureIndex;
27         fragmentTextureCoords = vertexTextureCoords;
28         fragmentColor = vertexColor;
29
30         float diffuseLight = 0.3 * daylight * clamp(dot(normalize(fragmentNormal), normalize(lightDir)), 0.0, 1.0);
31         float light = ambientLight + diffuseLight;
32
33         fragmentColor *= light;
34 }