35 lines
964 B
GLSL
35 lines
964 B
GLSL
#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);
|
|
}
|