Files
dt/shaders/geometry.frag
T
2026-11-02 19:35:36 -05:00

36 lines
1016 B
GLSL

#version 330 core
layout (location = 0) out vec3 gPosition;
layout (location = 1) out vec3 gNormal;
layout (location = 2) out vec4 gAlbedo; // linear rgb + alpha
layout (location = 3) out vec4 gMaterial; // r = metallic, g = roughness, b = ao, a = emissive
in vec3 FragPos;
in vec3 Normal;
in vec2 TexCoord;
uniform sampler2D tex;
uniform vec4 colorOverride = vec4(0.0);
uniform int useTexture = 0;
uniform float metallic = 0.0;
uniform float roughness = 0.7;
uniform float ao = 1.0;
uniform float emissive = 0.0;
void main()
{
vec4 albedo = vec4(0.8, 0.8, 0.8, 1.0);
if (useTexture != 0) {
albedo = texture(tex, TexCoord);
if (albedo.a < 0.1)
discard;
albedo.rgb = pow(albedo.rgb, vec3(2.2));
}
albedo.rgb = mix(albedo.rgb, colorOverride.rgb, colorOverride.w);
gPosition = FragPos;
gNormal = normalize(Normal);
gAlbedo = albedo;
gMaterial = vec4(clamp(metallic, 0.0, 1.0), clamp(roughness, 0.04, 1.0), ao, clamp(emissive, 0.0, 1.0));
}