add emission gbuffer attachment

This commit is contained in:
MihailRis
2025-07-12 21:09:23 +03:00
parent 8a3306ed41
commit 5ec9f14021
12 changed files with 101 additions and 31 deletions
+1
View File
@@ -4,6 +4,7 @@ out vec4 f_color;
uniform sampler2D u_screen;
uniform sampler2D u_position;
uniform sampler2D u_normal;
uniform sampler2D u_emission;
uniform sampler2D u_noise;
uniform sampler2D u_ssao;
uniform samplerCube u_skybox;
+1 -1
View File
@@ -16,7 +16,7 @@ vec4 effect() {
vec3 normal = transpose(mat3(u_view)) * texture(u_normal, v_uv).xyz;
vec3 dir = modelpos.xyz - u_cameraPos;
#ifdef ENABLE_SHADOWS
ssao *= calc_shadow(modelpos, normal, length(pos));
ssao *= max(calc_shadow(modelpos, normal, length(pos)), texture(u_emission, v_uv).r);
#endif
vec3 fogColor = texture(u_skybox, dir).rgb;
float fog = calc_fog(length(u_view * vec4((modelpos.xyz - u_cameraPos) * FOG_POS_SCALE, 0.0)) / 256.0);
+1
View File
@@ -29,6 +29,7 @@ vec4 effect() {
occlusion += (sampleDepth >= samplePos.z + u_bias ? 1.0 : 0.0) * rangeCheck;
}
occlusion = min(1.0, 1.05 - (occlusion / u_kernelSize));
occlusion = max(occlusion, texture(u_emission, v_uv).r);
float z = -position.z * 0.01;
z = max(0.0, 1.0 - z);
+2
View File
@@ -1,6 +1,7 @@
layout (location = 0) out vec4 f_color;
layout (location = 1) out vec4 f_position;
layout (location = 2) out vec4 f_normal;
layout (location = 3) out vec4 f_emission;
in float a_distance;
in float a_fog;
@@ -40,4 +41,5 @@ void main() {
f_color.a = alpha;
f_position = vec4(a_position, 1.0);
f_normal = vec4(a_normal, 1.0);
f_emission = vec4(0.0);
}
+3 -1
View File
@@ -1,6 +1,7 @@
layout (location = 0) out vec4 f_color;
layout (location = 1) out vec4 f_position;
layout (location = 2) out vec4 f_normal;
layout (location = 3) out vec4 f_emission;
in float a_distance;
in float a_fog;
@@ -12,6 +13,7 @@ in vec3 a_realnormal;
in vec3 a_skyLight;
in vec4 a_modelpos;
in vec4 a_torchLight;
in float a_emission;
uniform sampler2D u_texture0;
uniform samplerCube u_skybox;
@@ -47,8 +49,8 @@ void main() {
vec3 fogColor = texture(u_skybox, a_dir).rgb;
f_color = mix(f_color, vec4(fogColor, 1.0), a_fog);
#endif
f_color.a = alpha;
f_position = vec4(a_position, 1.0);
f_normal = vec4(a_normal, 1.0);
f_emission = vec4(a_emission);
}
+2
View File
@@ -15,6 +15,7 @@ out vec3 a_realnormal;
out vec4 a_torchLight;
out vec3 a_skyLight;
out vec4 a_modelpos;
out float a_emission;
uniform mat4 u_model;
uniform mat4 u_proj;
@@ -51,6 +52,7 @@ void main() {
mat4 viewmodel = u_view * u_model;
a_distance = length(viewmodel * vec4(pos3d, 0.0));
a_fog = calc_fog(length(viewmodel * vec4(pos3d * FOG_POS_SCALE, 0.0)) / 256.0);
a_emission = v_normal.w;
vec4 viewmodelpos = u_view * a_modelpos;
a_position = viewmodelpos.xyz;