#version 460 core //-------------------------------------------------------------------------------------- // Globals //-------------------------------------------------------------------------------------- layout(std140, binding = 0) uniform cbMatrices { mat4 g_mWorldViewProjection; mat4 g_mWorld; }; layout(std140, binding = 1) uniform cbLights { vec4 g_LightDiffuse[8]; // Light's diffuse color - up to 8 lights vec4 g_LightDir[8]; // Light's direction in world space vec4 g_fAmbient; int g_nNumLights; }; layout(std140, binding = 2) uniform cbObjectColors { vec4 g_vDiffuseObjectColor; vec4 g_vAmbientObjectColor; bool g_bHasTexture; }; //-------------------------------------------------------------------------------------- // Input / Output structures //-------------------------------------------------------------------------------------- layout(location = 0) in vec3 position; layout(location = 1) in vec3 vNormal; layout(location = 2) in vec2 vertex_uv; out vec2 uv; out vec4 diffuse; void main() { vec3 vNormalWorldSpace; float dotProduct; vec4 dottedLightColor; gl_Position = g_mWorldViewProjection * vec4(position, 1.0); vNormalWorldSpace = mat3(g_mWorld) * vNormal; uv = vertex_uv; // Compute simple directional lighting equation vec4 vTotalLightDiffuse = vec4(0,0,0,0); for(int i=0; i