game/data/shaders/pbrVertex.glsl

44 lines
903 B
GLSL

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoord;
uniform mat4 MVP;
uniform mat4 Model;
uniform vec3 CameraPos;
uniform int tick;
out vec2 gtexCoord;
out vec3 gnormCoord;
//Pbr
out vec3 gWorldPos;
out DATA {
vec3 normal;
vec2 texCoord;
mat4 camProj;
mat4 modelProj;
vec3 lightPos;
vec3 camPos;
} data_out;
void main()
{
// Saving camera projection until geometry shader.
gl_Position = Model * vec4(aPos, 1.0);
gnormCoord = aNormal;
gtexCoord = aTexCoord;
data_out.normal = aNormal;
data_out.texCoord = aTexCoord;
data_out.camProj = MVP;
data_out.modelProj = Model;
data_out.lightPos = vec3( (sin(tick / 1000.0)*2), 1 + sin(tick / 600.0)*2, 2.0);
data_out.camPos = CameraPos;
// Calculate position of fragment
gWorldPos = vec3(Model * vec4(aPos, 1.0));
};