34 lines
856 B
GLSL
34 lines
856 B
GLSL
#version 430 core
|
|
|
|
// Inputs from vertex shader
|
|
in vec3 v_world_position;
|
|
in vec3 v_world_normal;
|
|
in vec2 v_texcoord;
|
|
in vec3 v_world_tangent;
|
|
|
|
// Material uniforms
|
|
uniform vec3 u_albedo;
|
|
uniform float u_metallic;
|
|
uniform float u_roughness;
|
|
|
|
// G-Buffer outputs
|
|
layout(location = 0) out vec3 g_position;
|
|
layout(location = 1) out vec3 g_normal;
|
|
layout(location = 2) out vec4 g_albedo_metallic;
|
|
layout(location = 3) out vec2 g_roughness_ao;
|
|
|
|
void main() {
|
|
// Output world position
|
|
g_position = v_world_position;
|
|
|
|
// Output normalized world normal
|
|
g_normal = normalize(v_world_normal);
|
|
|
|
// Output albedo (RGB) and metallic (A)
|
|
g_albedo_metallic = vec4(u_albedo, u_metallic);
|
|
|
|
// Output roughness (R) and ambient occlusion (G)
|
|
// AO is set to 1.0 by default (no occlusion)
|
|
g_roughness_ao = vec2(u_roughness, 1.0);
|
|
}
|