Atualmente, estou tentando entender algumas coisas sobre a rasterização de gráficos vetoriais e as diferentes maneiras como ela é implementada em vários tipos de aplicativos.
Testei e comparei alguns programas e notei que há uma grande diferença na maneira como o anti-aliasing se comporta no processo de rasterização. Estou especialmente interessado no comportamento de renderização no Illustrator . Você verá o porquê lendo mais.
Para os meus testes, usei uma composição muito simples de triângulos organizados em um hexágono irregular com cores diferentes.
Softwares de gráficos vetoriais
Aqui estão três renderizações do mesmo gráfico de vetor no Illustrator, Affinity e Inkscape. (A imagem produzida no Affinity e no Inkscape é exatamente a mesma.)
Como você pode ver, há uma linha branca indesejada em cada uma das bordas da imagem renderizada com Affinity e Inkscape. O anti-aliasing não preenche essa área com uma cor sólida, o que resulta em um pequeno espaço entre as formas adjacentes.
Embora não haja espaço na renderização do Illustrator, as bordas das formas parecem tão suaves quanto a renderização de afinidade.
Aqui está uma imagem mostrando a mesma área de cada imagem aumentada.
Há uma diferença muito sutil entre as duas imagens. A renderização Affinity é um pouco mais suave, mas é quase impossível ver a diferença ao observar as imagens em seus tamanhos originais.
Navegadores
Renderização SVG
A exibição dos mesmos gráficos exportados como SVG em um navegador é muito semelhante à imagem rasterizada produzida pelo Affinity e pelo Inkscape.
Existem diferenças muito pequenas no anti-aliasing de bordas (que não valem a pena mostrar aqui), mas a rasterização SVG em navegadores comuns se comporta da mesma maneira.
Renderização decomposta
Testando a renderização do Illustrator um pouco mais, tentei dividir partes dos meus gráficos e exportá-los individualmente e depois compor novamente com um software de edição raster.
Em teoria, isso resultaria na mesma imagem de uma peça única, mas o resultado é um pouco diferente usando esse método.
Como mostrado, quando as duas partes são compostas, há um pequeno espaço entre elas. Embora seja mais sutil, é muito semelhante ao gráfico renderizado no Affinity.
Renderização de polígono
Blender (software 3D)
O Blender permite importar arquivos SVG e manipulá-los como objetos de curva. Aqui está o gráfico importado mostrado na viewport 3D. (Por padrão, o material será afetado pelas luzes da cena. A verificação da propriedade sem sombra no painel de propriedades do material permitirá que as formas sejam renderizadas com suas cores originais.)
Aqui está uma renderização feita do SVG dentro do Blender.
Não existe nenhum espaço entre os triângulos. É provável que outros softwares 3D funcionem da mesma maneira. Então o Blender se comporta exatamente como o Illustrator , ou não? Talvez seja o contrário?
As verdadeiras perguntas
- Qual biblioteca de desenhos vetoriais o Illustrator usa nos bastidores?
- Será possível que o Illustrator faça uso de uma espécie de mecanismo de renderização em 3D? É de código aberto? (provavelmente não?)
- Alguma das bibliotecas conhecidas de desenho vetorial, como Cairo e Skia, pode obter o mesmo comportamento de renderização? (Nenhuma diferença entre as formas)
- Existe alguma biblioteca de desenho vetorial menos conhecida por aí que tenha o mesmo comportamento?