summaryrefslogtreecommitdiff
path: root/source/lessons/instanced_rendering/planetary models/shaders/model.vs.glsl
blob: e4896c9a4e468ff24aabb0ce441a0369011b296a (plain)
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
#version 330 core
layout(location=0) in vec3 aPos;
layout(location=1) in vec3 aNormal;
layout(location=2) in vec2 aTex;

// uniform mat4 Model;
layout (std140) uniform Matrices {
  mat4 View;        // start:  0      // end: 16 *  4 =  64
  mat4 Projection;  // start: 64      // end: 64 + 64 = 128
};

uniform mat4 Model;

out vec2 TexCoords;
out vec3 VertexWorldPos;
out vec3 FragNormal;

// @note: I still do not fully understand how the FragNormal calculation works. Need to make sure I intuitively 
// get that

void main() {
  gl_Position = Projection*View*Model*vec4(aPos, 1.0);

  VertexWorldPos = vec3(Model * vec4(aPos, 1.0));
  FragNormal = mat3(transpose(inverse(Model))) * aNormal;
  FragNormal = normalize(FragNormal);
  TexCoords = aTex;
};