跳到主要内容
← Image Manipulation with Shaders

Image Manipulation with Shaders

Pixelation

gpt教我的是动态的:

实时渲染 · 纹理 GLSL

第 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的逻辑。
  • 官方的解是静态的:
  • 定义像素大小,