Texturização procedimental estocástica no Unity

Você já tentou usar texturas em mosaico para cobrir grandes superfícies ou adicionar detalhes em escala fina às suas malhas? Nesse caso, você provavelmente está familiarizado com o padrão de repetição visível que surge rapidamente com valores de ladrilho mais altos. No Unity Labs, desenvolvemos uma nova técnica de texturização que evita esse problema, a Procedural Stochastic Texturing.
As texturas em mosaico são uma ferramenta útil para adicionar detalhes às suas cenas em 3D. No entanto, sempre que você quiser texturizar grandes áreas ou obter superfícies altamente detalhadas usando texturas em mosaico e mapas de detalhes, os padrões de mosaico se tornam visíveis. Esse efeito é ilustrado no lado esquerdo da figura a seguir. Normalmente, a redução dos padrões de repetição exige texturas maiores ou a ocultação da repetição visível com objetos adicionais. Nesta postagem do blog, fornecemos um plug-in que resolve esse problema para texturas com aparências estocásticas, como ferrugem, musgo, casca de árvore etc. Seu impacto é mostrado no lado direito da figura a seguir.

Faça o download do plug-in aqui.
Com uma textura de entrada, o plug-in gerará processualmente uma textura infinita que corresponda à aparência da entrada. Fazemos isso aproveitando uma função de mistura de textura de última geração que opera em uma versão modificada da textura de entrada, que requer apenas três amostras de textura por fragmento, e buscando uma pequena tabela de pesquisa. Como o plug-in evita a necessidade de ladrilhos, é possível cobrir superfícies maiores com texturas menores e níveis mais altos de detalhes sem nenhum artefato de repetição.
O plug-in fornece uma variante do sombreador padrão, que está incluído em um pacote do Unity. Depois de importar o pacote, selecione o shader StandardStochastic para o seu material. A interface é a mesma do shader Standard, com a adição de dois novos controles na parte superior, correspondentes às duas etapas de configuração necessárias:


O menu Stochastic Inputs permite que você especifique em quais texturas de entrada deseja ativar nossa técnica (pode ser definido como Everything (Tudo) ou texturas específicas, por exemplo, albedo e/ou mapa normal).
O botão Apply (Aplicar ) calcula previamente os dados para os inputs estocásticos selecionados e atualiza o material, finalizando o processo. Para cada textura de entrada, essa etapa gera duas texturas intermediárias localizadas na mesma pasta.
Algumas observações adicionais:
- Como as texturas intermediárias existentes são carregadas quando se descobre que elas pulam os tempos de geração, qualquer modificação na textura original exige a exclusão de ambas antes de pressionar o botão Apply (Aplicar) novamente para forçar sua regeneração.
- Ao alternar entre os shaders Standard e StandardStochastic, os parâmetros são transferidos para frente e para trás.
- Um shader StandardStochastic (configuração Specular) também é fornecido para materiais que usam o fluxo de trabalho Specular.
Os exemplos a seguir mostram o protótipo trabalhando com diferentes materiais usando texturas de entrada pequenas (256²).



Essa técnica só é compatível com texturas estocásticas e quase estocásticas, como texturas que se assemelham a ruído aleatório quando vistas à distância e materiais de aparência natural sem formas geométricas precisas.

Este é um protótipo de pesquisa; não está em desenvolvimento ativo. Dessa forma, não garantimos manutenção ou suporte, mas fique à vontade para fazer qualquer pergunta e oferecer feedback neste tópico do Fórum Unity. No momento, estamos trabalhando em uma implementação do ShaderGraph para shaders personalizados e compatibilidade com os novos pipelines de renderização. Fique atento às atualizações no tópico do fórum!
Está curioso para saber como o plug-in funciona? Confira nossos dois artigos de pesquisa publicados recentemente sobre o assunto, nos quais nosso plug-in se baseia:
- Papel: Ruído por exemplo de alto desempenho usando um operador de mistura com preservação de histograma - Eric Heitz e Fabrice Neyret, HPG 2018
- Capítulo técnico: Texturas estocásticas procedimentais por mosaico e mistura - Thomas Deliot e Eric Heitz, GPU Zen 2
- Confira nossos outros trabalhos de pesquisa na Unity: Publicações da Unity Labs
O código fornecido com o plug-in apresenta comentários referentes a seções específicas do capítulo técnico.
