Files
dt/shaders/geometry.frag
T
2026-11-03 20:05:02 -05:00

36 lines
1.0 KiB
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 = albedo.rgb * albedo.rgb; // same cheap 2.2 stand-in as the lighting shaders
}
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));
}