This commit is contained in:
Gabrieal Jimmy
2026-10-02 12:42:00 -05:00
commit 2c99305fb0
145 changed files with 6525 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
#version 450 core
// 13-tap downsample (Jimenez, "Next Generation Post Processing in CoD:AW").
// The first pass uses a Karis average to suppress fireflies.
in vec2 vUV;
layout(binding = 0) uniform sampler2D uSrc;
uniform vec2 uSrcTexel;
uniform int uKaris;
layout(location = 0) out vec4 fragColor;
float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); }
vec3 karis(vec3 c) { return c / (1.0 + luma(c)); }
void main() {
vec2 t = uSrcTexel;
vec3 a = texture(uSrc, vUV + t * vec2(-2, 2)).rgb;
vec3 b = texture(uSrc, vUV + t * vec2(0, 2)).rgb;
vec3 c = texture(uSrc, vUV + t * vec2(2, 2)).rgb;
vec3 d = texture(uSrc, vUV + t * vec2(-2, 0)).rgb;
vec3 e = texture(uSrc, vUV).rgb;
vec3 f = texture(uSrc, vUV + t * vec2(2, 0)).rgb;
vec3 g = texture(uSrc, vUV + t * vec2(-2, -2)).rgb;
vec3 h = texture(uSrc, vUV + t * vec2(0, -2)).rgb;
vec3 i = texture(uSrc, vUV + t * vec2(2, -2)).rgb;
vec3 j = texture(uSrc, vUV + t * vec2(-1, 1)).rgb;
vec3 k = texture(uSrc, vUV + t * vec2(1, 1)).rgb;
vec3 l = texture(uSrc, vUV + t * vec2(-1, -1)).rgb;
vec3 m = texture(uSrc, vUV + t * vec2(1, -1)).rgb;
vec3 r;
if (uKaris == 1) {
vec3 g0 = karis((a + b + d + e) * 0.25), g1 = karis((b + c + e + f) * 0.25);
vec3 g2 = karis((d + e + g + h) * 0.25), g3 = karis((e + f + h + i) * 0.25);
vec3 g4 = karis((j + k + l + m) * 0.25);
r = g4 * 0.5 + (g0 + g1 + g2 + g3) * 0.125;
r /= max(1.0 - luma(r), 1e-3); // undo tonemap-weighting on the average
} else {
r = e * 0.125 + (a + c + g + i) * 0.03125 + (b + d + f + h) * 0.0625 + (j + k + l + m) * 0.125;
}
fragColor = vec4(max(r, vec3(0.0)), 1.0);
}