第 10 课:Pixelation
我的解:gpt教我的是动态的:
我的解
uniform vec2 iResolution;
uniform sampler2D iChannel0;
const float blockSize = 10.0;
void main() {
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = gl_FragCoord.xy / iResolution.xy;
// 像素坐标(单位:像素)
vec2 pixelCoord = gl_FragCoord.xy;
// 找到所在的区块左上角像素(整数除法取块,再乘回来)
vec2 blockOrigin = floor(pixelCoord / blockSize) * blockSize;
// 该区块左上角像素对应的 uv
vec2 sampleUV = blockOrigin / iResolution.xy;
vec3 color = texture(iChannel0, sampleUV).rgb;
gl_FragColor = vec4(color, 1.0);
}
复盘笔记
- gpt教我的是动态的:
- 就是再造一个像素坐标“语言”,只要在某个block内,就floor掉小数,再乘回来(又是uv坐标系了),这样就只共用一个像素的数值了,然后再应用时用uv的逻辑。
- 官方的解是静态的:
- 定义像素大小,