Posterização e dithering
Reduzir a imagem a poucas cores e arranjar os pixels em padrão para que os degraus entre elas ainda pareçam tons.
Cards
Um exemplo ao vivo para ajustar, aprender e copiar.
Como funciona
Posterizar arredonda cada cor para o nível mais próximo de uns poucos. Com quatro níveis por canal, uma foto vira
manchas chapadas, como uma serigrafia ou um pôster, daí o nome. Só arredondar cria faixas duras onde um degradê passa de
um nível para o seguinte: o mesmo bandingBanding são as faixas em que um degradê suave se parte quando guardado com poucos níveis. O dithering soma um ruído minúsculo por pixel antes do arredondamento, e as faixas viram uma granulação fina. Banding e dithering Banding são as faixas em que um degradê suave se parte quando guardado com poucos níveis. O dithering soma um ruído minúsculo por pixel antes do arredondamento, e as faixas viram uma granulação fina.
O dithering transforma essas faixas de volta em tons. Antes de arredondar, some um pequeno deslocamento que muda de
pixel para pixel. Onde uma cor está a 30% do caminho entre um nível e o seguinte, cerca de 30% dos pixels agora
arredondam para cima e, de uma distância normal, o olho faz a média e vê o tom intermediário. O deslocamento pode vir de
um hashUma função que embaralha a entrada num valor que parece aleatório, mas é sempre o mesmo para a mesma entrada. Shaders a usam para ter aleatoriedade por pixel e por célula. Hash Uma função que embaralha a entrada num valor que parece aleatório, mas é sempre o mesmo para a mesma entrada. Shaders a usam para ter aleatoriedade por pixel e por célula. Matriz de Bayer Um pequeno quadrado de limiares, repetido pela tela, ordenado para que, em qualquer brilho, os pixels que passam fiquem espalhados da forma mais uniforme possível. É a base do dithering ordenado.h = fract(sin(dot(p, k)) × big) da posição do pixel, que parece granulado, ou de uma pequena
matriz de BayerUm pequeno quadrado de limiares, repetido pela tela, ordenado para que, em qualquer brilho, os pixels que passam fiquem espalhados da forma mais uniforme possível. É a base do dithering ordenado.threshold = (M[y % 4][x % 4] + 0.5) / 16
Levado ao limite, duas cores e mais nada, o resultado é o visual de 1 bit: cada pixel é tinta ou papel, e todo o sombreado mora no padrão. A página de Renderização sobre banding usa o mesmo truque de forma invisível, um degrau de 8 bits por vez; aqui ele é o estilo.
Leitura complementar
- Relative luminance (abre em uma nova aba)Referência
- Blend modes (abre em uma nova aba)Referência
- Alpha compositing (abre em uma nova aba)Referência
- fract (abre em uma nova aba)Referência
- mod (abre em uma nova aba)Referência
- Patterns (abre em uma nova aba)Livro
- Random (abre em uma nova aba)Livro
- Hash Functions for GPU Rendering (abre em uma nova aba)Paper
- Colour banding (abre em uma nova aba)Referência
- Ordered dithering (abre em uma nova aba)Referência
- Framebuffers (abre em uma nova aba)Artigo
- Bloom (abre em uma nova aba)Artigo
- Custom post-processing (abre em uma nova aba)Documentação
- Dither (abre em uma nova aba)Referência
- gl_FragCoord (abre em uma nova aba)Referência