25 lines
811 B
Plaintext
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));
|
|
}
|