GLSL 效果示例
Bayer 有序抖动:用点阵模拟灰阶渐变
同一灰阶条分屏显示直接量化和点阵抖动。
在线示例
修改右侧代码,左侧预览会实时更新。
观察什么
同一灰阶条分屏显示直接量化和点阵抖动。
实现原理
使用固定的 4×4 阈值图案把灰阶转成黑白点阵。改变像素块大小只放大点阵,不改变输入亮度。
找到控制效果的代码
vec3 src=texture2D(u_texture,uv).rgb;float gray=dot(src,vec3(.2126,.7152,.0722));vec2 q=mod(floor(gl_FragCoord.xy/(1.+floor(u_parameter*3.))),4.);float row=mod(q.y,2.)*2.+mod(floor(q.y/2.),2.)*.5;float b=mod(q.x,2.)*2.+mod(floor(q.x/2.),2.)*.5;float threshold=mod((b*2.+row),4.)/4.+floor(b)/4.;c=vec3(step(fract(threshold),gray));
动手修改
把 u_parameter 从 0 调到 1,1.+floor(u_parameter*3.) 会让每个阈值格从一个屏幕像素变成四个。黑白图案会放大,但不会增加灰色输出级别。
调试与成本
该滤镜只读一次原图,再用算术生成 4×4 阈值图案。把最后 step 调用里的 gray 改为 0.5,就能独立查看固定半亮度图案,不再受彩色测试图影响。