#version 460 #extension GL_GOOGLE_include_directive : require #extension GL_EXT_nonuniform_qualifier : require #include "structures.layout" layout (location = 0) in struct FragDataIn { vec3 normal; vec2 uv; } FragData; layout (location = 0) out vec4 FragColor; vec4 CalculateDirectionalLight(vec4 diff_col, vec4 diff_samp, vec4 light_col, vec3 dir, vec3 normal) { float diffuse_factor = max(dot(normal, -dir), 0.0); vec4 ambient = vec4(vec3(G.ambient_color * diff_col), diff_samp.a); vec4 diffuse = vec4(vec3(light_col * diffuse_factor), diff_samp.a); diffuse *= diff_samp; ambient *= diff_samp; return (ambient + diffuse); } void main() { vec4 col = Materials[nonuniformEXT(PC.mat_id)].diffuse; vec4 tex_col = texture(sampler2D(Textures[nonuniformEXT(Materials[nonuniformEXT(PC.mat_id)].albedo_texture)], SamplerNearest), FragData.uv); FragColor = CalculateDirectionalLight(col, tex_col, G.light_color, G.light_direction, FragData.normal); }