zworld/assets/shaders/forward/textured.fs.glsl
2024-01-14 22:56:06 +08:00

29 lines
830 B
GLSL

#version 450
#extension GL_GOOGLE_include_directive : enable
#include "lib/common.glsl"
#include "lib/lighting.glsl"
#include "lib/forward_fragment.glsl"
CAMERA(0, camera)
STORAGE_BUFFER(1, Object, objects)
LIGHT_BUFFER(2, lights)
SAMPLER_ARRAY(3, textures)
void main()
{
vec2 texcoord0 = in_color.xy;
uint texture0 = objects.item[in_object].textures[0];
vec4 albedo = texture(textures[texture0], texcoord0);
int lightCount = lights.settings.Count;
vec3 lightColor = ambientLight(lights.settings, 1);
for(int i = 0; i < lightCount; i++) {
lightColor += calculateLightColor(lights.item[i], in_world_position, in_world_normal, in_view_position.z, lights.settings);
}
// gamma correct & write fragment
vec3 linearColor = pow(albedo.rgb, vec3(gamma));
out_diffuse = vec4(linearColor * lightColor, albedo.a);
}