Texturização procedimental estocástica no Unity

THOMAS DELIOT / UNITY TECHNOLOGIESContributor
Feb 14, 2019|3 Min
Texturização procedimental estocástica no Unity
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

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.

Imagem de texturas em mosaico para cobrir grandes superfícies

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.

Usando o shader StandardStochastic

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:

A imagem mostra a adição de dois novos controles na parte superior
A imagem mostra melhorias na entrada

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²).

Exemplo de sombreador
Exemplo de sombreador
Exemplo de sombreador
Limitações

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.

Exemplos de texturas
Feedback

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!

Leitura adicional

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:

O código fornecido com o plug-in apresenta comentários referentes a seções específicas do capítulo técnico.