36 lines
1016 B
GLSL
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));
|
|
}
|