aurora-rendering-engine/shaders/denoiser.comp

25 lines
811 B
Plaintext

#version 430 core
layout(local_size_x = 16, local_size_y = 16) in;
layout(binding = 0, rgba32f) uniform readonly image2D u_input;
layout(binding = 1, rgba32f) uniform writeonly image2D u_output;
// uniform int u_radius; // 已经不需要了,但保留定义以防外部报错
void main() {
ivec2 p = ivec2(gl_GlobalInvocationID.xy);
ivec2 size = imageSize(u_output);
// 边界检查:如果像素超出范围,直接返回
if (p.x >= size.x || p.y >= size.y) return;
// 【修改点】:
// 1. 不再使用循环去遍历周围的像素 (dy, dx)。
// 2. 直接读取当前位置 (p) 的颜色。
vec3 original_color = imageLoad(u_input, p).rgb;
// 直接写入输出图像,不做任何平均计算
imageStore(u_output, p, vec4(original_color, 1.0));
}