#version 450 layout(std140, binding = 0) uniform camera_Block { mat4 view_proj; vec3 position; } camera; layout(std140, binding = 1) uniform lighting_Block { vec3 direction; vec3 color; float intensity; } lighting; layout(binding = 16) uniform sampler2D diffuse_tex; layout(binding = 18) uniform sampler2D normal_tex; layout(location = 0) in vec2 in_uv; layout(location = 0) out vec4 out_color; void main() { vec4 diffuse = texture(diffuse_tex, in_uv); vec4 normal_sample = texture(normal_tex, in_uv); vec3 n = normalize(((normal_sample.xyz * 2.0) - vec3(1.0, 1.0, 1.0))); vec3 l = normalize(lighting.direction); float ndotl = max(dot(n, l), 0.0); vec3 lit = (((diffuse.rgb * lighting.color) * ndotl) * lighting.intensity); out_color = vec4(lit, diffuse.a); }