Sombreador padrão MRTK2

Exemplos de sombreador padrão

O sistema de sombreamento MRTK2 Standard utiliza um sombreador flexível único que pode obter visuais semelhantes ao Sombreador Standard do Unity, implementar Sistema Fluent Design princípios e permanecer em execução em dispositivos de realidade misturada.

Cenas de exemplo

Você pode encontrar os exemplos de material do sombreador na cena MaterialGallery em MRTK/Examples/Demos/StandardShader/Scenes/. Todos os materiais nesta cena estão usando o sombreador MRTK/Standard.

Galeria de Materiais

Você pode encontrar uma cena de comparação para comparar e testar o sombreador MRTK/Standard em relação ao exemplo de sombreador Unity/Standard na cena StandardMaterialComparison em MRTK/Examples/Demos/StandardShader/Scenes/.

Comparação de materiais

Arquitetura

O sistema de sombreamento MRTK/Standard é um "sombreador uber" que usa o recurso de variante do programa de sombreador do Unity para gerar automaticamente o código de sombreador ideal com base nas propriedades do material. Quando um usuário seleciona propriedades de material no inspetor de materiais, ele só incorre em custo de desempenho para os recursos que habilitou.

Inspetor de materiais

Existe um inspetor de material personalizado para o sombreador MRTK/Standard chamado MixedRealityStandardShaderGUI.cs. O inspetor habilita/desabilita automaticamente os recursos do sombreador, com base na seleção do usuário e em auxiliares na configuração do estado de renderização. Para obter mais informações sobre cada recurso , passe o mouse sobre cada propriedade no Editor do Unity para obter uma dica de ferramenta.

Inspetor de Materiais

A primeira parte do inspetor controla o estado de renderização do material. O Modo de Renderização determina quando e como um material será renderizado. O objetivo do sombreador MRTK/Standard é espelhar os modos de renderização encontrados no sombreador Unity/Standard. O sombreador MRTK/Standard também inclui um modo de renderização aditivo e modo de renderização personalizado para controle de usuário completo.

Modo de renderização Descrição
Opaco (Padrão) Adequado para objetos sólidos normais sem áreas transparentes.
Recorte Permite a criação de efeitos transparentes com bordas duras entre as áreas opacas e transparentes. Nesse modo, não há áreas semitransparente. A textura é 100% opaca ou invisível. Isso é útil ao usar a transparência para criar a forma de materiais, como vegetação.
Esmaecimento Permite que os valores de transparência esmaeçam totalmente um objeto, incluindo quaisquer realces especulares ou reflexões que ele possa ter. Esse modo será útil se você quiser animar um objeto desbotado dentro ou fora. Não é adequado para renderizar materiais transparentes realistas, como plástico transparente ou vidro, pois os reflexos e os destaques também serão desbotados.
Transparente Adequado para renderizar materiais transparentes realistas, como plástico transparente ou vidro. Nesse modo, o material em si assumirá valores de transparência (com base no canal alfa da textura e no alfa da cor da tonalidade). No entanto, reflexões e realces de iluminação permanecerão visíveis com total clareza, como é o caso de materiais transparentes reais.
Aditiva Habilita um modo de combinação aditivo, que soma a cor do pixel anterior com a atual. Esse é o modo de transparência preferencial para evitar problemas de classificação de transparência.
Personalizado Permite que todos os aspectos do modo de renderização sejam controlados manualmente. Somente para uso avançado.

Renderizando modos

Modo de seleção Descrição
Desativado Desabilita a seleção facial. A seleção só deve ser Desativada quando uma malha de dois lados for necessária.
Front Habilita a seleção facial.
Voltar (Padrão) Habilita a seleção da face traseira. A seleção da face traseira deve ser habilitada com a maior frequência possível para melhorar o desempenho de renderização.

Desempenho

Uma das principais vantagens de usar o sombreador MRTK Standard sobre o sombreador padrão do Unity é o desempenho. O Sombreador Padrão mrtk é extensível para utilizar apenas os recursos habilitados. No entanto, o sombreador MRTK Standard também foi escrito para fornecer resultados estéticos comparáveis como o sombreador Unity Standard, mas a um custo muito menor. Uma maneira simples de comparar o desempenho do sombreador é por meio do número de operações que precisam ser executadas na GPU. É claro que a magnitude dos cálculos pode flutuar por recursos habilitados e outras configurações de renderização. Mas, em geral, o sombreador MRTK Standard executa significativamente menos computação do que o sombreador Unity Standard.

Exemplo de estatísticas de sombreador do Unity Standard

Estatísticas do sombreador padrão do Unity

Exemplo de estatísticas de sombreador padrão do MRTK

Estatísticas do sombreador padrão mrtk

Observação

Esses resultados podem ser gerados selecionando e exibindo um ativo de sombreador no inspetor do Unity e, em seguida, clicando no botão Compilar e mostrar código .

Iluminação

O MRTK/Standard usa uma aproximação simples para iluminação. Como esse sombreador não calcula a correção física e a conservação de energia, ele renderiza de forma rápida e eficiente. Blinn-Phong é a técnica de iluminação primária que é misturada com Fresnel e iluminação baseada em imagem para iluminação aproximada de base física. O sombreador dá suporte às seguintes técnicas de iluminação:

Luz direcional

O sombreador respeitará a direção, a cor e a intensidade da primeira Luz Direcional do Unity na cena (se habilitada). Luzes de ponto dinâmico, luzes spot ou qualquer outra luz do Unity não serão consideradas na iluminação em tempo real.

Harmônicos esféricos

O sombreador usará Investigações Leves para aproximar luzes na cena usando Harmônicos Esféricos, se habilitado. Cálculos harmônicos esféricos são executados por vértice para reduzir o custo de cálculo.

Lightmapping

Para iluminação estática, o sombreador respeitará os lightmaps criados pelo sistema Lightmapping do Unity. Basta marcar o renderizador como estático (ou estático de mapa de luz) para usar lightmaps.

Luz de foco

Luz de proximidade

Suporte ao Pipeline de Renderização Com Script Leve

O MRTK contém um caminho de atualização para permitir que os desenvolvedores utilizem o LWRP (Lightweight Scriptable Render Pipeline) do Unity com sombreadores MRTK. Testado no pacote Unity 2019.1.1f1 e Lightweight RP 5.7.2. ou instruções sobre como começar a usar o LWRP, consulte esta página.

Para executar a atualização do MRTK, selecione: Realidade Misturada Toolkit –> Utilitários –> Atualizar o sombreador padrão mrtk para o pipeline de renderização leve

Atualização lwrp

Depois que a atualização ocorrer, o sombreador MRTK/Standard será alterado e qualquer material magenta (erro do sombreador) deverá ser corrigido. Para verificar se a atualização ocorreu com êxito, verifique o console para: Ativos atualizados/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader para uso com o Pipeline de Renderização Leve.

Suporte à UGUI

O sistema de sombreamento MRTK Standard funciona com o sistema de interface do usuário interno do Unity. Nos componentes da interface do usuário do Unity, a matriz de unity_ObjectToWorld não é a matriz de transformação da transformação local em que o componente gráfico reside, mas a do Canvas pai. Muitos efeitos de sombreador MRTK/Standard exigem que a escala de objeto seja conhecida. Para resolver esse problema, ScaleMeshEffect.cs armazenará informações de escala em atributos de canal UV durante a construção da malha da interface do usuário.

Observe que, ao usar um componente de Imagem do Unity, é recomendável especificar "Nenhum (Sprite)" para a imagem de origem para impedir que a interface do usuário do Unity gere vértices extras.

Uma tela no MRTK solicitará a adição de um ScaleMeshEffect.cs quando for necessário:

efeito de malha de escala

Combinador de textura

Para melhorar a paridade com o sombreador padrão do Unity por pixel, os valores metálico, de suavidade, emissivo e oclusão podem ser controlados pelo empacotamento de canal. Por exemplo:

exemplo de mapa de canal

Ao usar o empacotamento de canal, você só precisa amostrar e carregar uma textura na memória em vez de quatro separadas. Ao gravar seus mapas de textura em um programa como o Substance ou o Photoshop, você pode empacotá-los como o seguinte:

Canal Propriedade
Vermelho Metálico
Verde Oclusão
Azul Emissões (escala de cinza)
Alpha Suavidade

Ou você pode usar a Ferramenta de Combinação de Textura mrtk. Para abrir a ferramenta, selecione: Realidade Misturada Toolkit –> Utilitários –> Combinador de Textura que abrirá a janela abaixo:

Exemplo do combinador de textura

Essa janela pode ser preenchida automaticamente selecionando um sombreador Do Unity Standard e clicando em "Preencher automaticamente do Material Padrão". Ou você pode especificar manualmente uma textura (ou valor constante) por canal vermelho, verde, azul ou alfa. A combinação de textura é acelerada por GPU e não exige que a textura de entrada seja acessível à CPU.

Documentação de recursos adicionais

Abaixo estão detalhes extras sobre alguns detalhes de recursos disponíveis com o sombreador MRTK/Standard.

Recorte primitivo

recorte primitivo

Estruturas de tópicos

Muitas técnicas de estrutura de malha são feitas usando uma técnica de pós-processamento. O pós-processamento fornece ótimas estruturas de tópicos de qualidade, mas pode ser proibitivamente caro em muitos dispositivos Realidade Misturada. Você pode encontrar uma cena que demonstra o uso de contornos de malha na cena OutlineExamples em MRTK/Examples/Demos/StandardShader/Scenes/.

Estrutura de tópicos

MeshOutline.cs e MeshOutlineHierarchy.cs pode ser usado para renderizar uma estrutura de tópicos em torno de um renderizador de malha. Habilitar esse componente introduz uma passagem de renderização adicional do objeto que está sendo descrito, mas foi projetado para ser executado com desempenho em dispositivos de Realidade Misturada móvel e não utiliza nenhum processo pós-processo. As limitações desse efeito incluem não funcionar bem em objetos que não são impermeáveis (ou que devem ter dois lados) e problemas de classificação de profundidade podem ocorrer em objetos sobrepostos.

Os comportamentos de estrutura de tópicos foram projetados para serem usados em conjunto com o sombreador MRTK/Standard. Os materiais de estrutura de tópicos geralmente são uma cor não iluminada sólida, mas podem ser configurados para obter uma ampla matriz de efeitos. A configuração padrão de um material de estrutura de tópicos é a seguinte:

Material da Estrutura de Tópicos da Malha
  1. Gravação de profundidade – deve ser desabilitada para materiais de estrutura de tópicos para garantir que a estrutura de tópicos não impeça a renderização de outros objetos.
  2. Extrusão de vértice – deve ser habilitada para renderizar a estrutura.
  3. Usar normal suave – essa configuração é opcional em algumas malhas. A extrusão ocorre movendo um vértice ao longo de um vértice normal, em algumas malhas extrudadas ao longo do normal padrão causará descontinuidades na estrutura. Para corrigir essas descontinuidades, marque esta caixa para usar outro conjunto de normais suavizados que são gerados por MeshSmoother.cs

MeshSmoother.cs é um componente que pode ser usado para gerar automaticamente normais suavizados em uma malha. Esse método agrupa vértices em uma malha que compartilha o mesmo local no espaço e, em seguida, encontra a média dos normais desses vértices. Esse processo cria uma cópia da malha subjacente e deve ser usado somente quando necessário.

Estrutura de Tópicos normais suaves
  1. Normais suaves geradas por meio MeshSmoother.csde .
  2. Normais padrão usados, observe os artefatos ao redor dos cantos do cubo.

Teste de estêncil

Suporte de teste de estêncil configurável para obter uma ampla matriz de efeitos. Como os portais:

Teste de estêncil

Suporte a cores em instâncias

Suporte a cores em instâncias para fornecer a milhares de propriedades de material exclusivo de malhas com instâncias de GPU:

propriedades com instâncias

Mapeamento triplanar

O mapeamento triplanar é uma técnica para texturizar uma malha de forma programática. Geralmente usado em terrenos, malhas sem UVs ou difícil de desembrulhar formas. Essa implementação dá suporte à projeção de espaço local ou mundial, à especificação de suavidade de combinação e ao suporte normal ao mapa. Observe que cada textura usada requer três amostras de textura, portanto, use com moderação em situações críticas de desempenho.

triplanar

Extrusão de vértice

Extrusão de vértice no espaço mundial. Útil para visualizar volumes delimitados extrudados ou transições em malhas de entrada/saída.

escala de mapa normal 1

Disposições Gerais

Uma caixa de seleção para controlar otimizações albedo. Como operações albedo de otimização são desabilitadas quando nenhuma textura albedo é especificada. Isso é útil para controlar o carregamento de textura remota.

Basta marcar esta caixa:

atribuição albedo

Há suporte para texturas de recorte por pixel, anti aliasing baseado em borda local e dimensionamento normal do mapa.

escala de mapa normal 2

Confira também