Sombreador padrão do MRTK

Standard shader examples

O sistema de sombreamento MRTK Standard utiliza um único sombreador flexível 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.

Material Gallery

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/.

Material Comparison

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.

Material Inspector

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 que têm 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 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 cor do pixel 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.

Rendering Modes

Modo Cull Descrição
Desativado Desabilita o abate facial. O abate só deve ser definido como Desativado quando uma malha de dois lados é necessária.
Front Habilita o abate frontal.
Voltar (Padrão) Habilita o abate facial. O abate de face traseira deve ser habilitado 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

Unity Standard Shader Statistics

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

MRTK Standard Shader Statistics

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 do MRTK para o Pipeline de Renderização Leve

lwrp upgrade

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, o ScaleMeshEffect.cs armazenamento de informações de dimensionamento em atributos de canal UV durante a construção da malha da interface do usuário.

Observe que, ao usar um componente unity image, é 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 dentro do MRTK solicitará a adição de um ScaleMeshEffect.cs quando for necessário:

scale mesh effect

Combinador de textura

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

channel map example

Ao usar o empacotamento de canal, você só precisa amostrar e carregar uma textura na memória em vez de quatro separadas. Ao escrever 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)
Alfa Suavidade

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

texture combiner example

Essa janela pode ser preenchida automaticamente selecionando um sombreador Do Unity Standard e clicando em "Preenchimento automático 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 do recurso disponíveis com o sombreador MRTK/Standard.

Recorte primitivo

primitive clipping

estruturas de tópicos Mesh

Muitas técnicas de estrutura de tópicos são feitas usando uma técnica de pós-processamento . O pós-processamento fornece estruturas de tópicos de ótima 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/.

Mesh Outline

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 um passe de renderização adicional do objeto que está sendo descrito, mas foi projetado para ser executado com desempenho em dispositivos de Realidade Misturada móveis e não utiliza nenhum processo de postagem. As limitações desse efeito incluem não funcionar bem em objetos que não são impermeáveis (ou necessários para serem 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 cortada 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:

Mesh Outline Material
  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 – precisa ser habilitado para renderizar a estrutura de tópicos.
  3. Use Smooth Normals – essa configuração é opcional para algumas malhas. A extrusão ocorre movendo um vértice ao longo de um vértice normal, em algumas malhas extrudadas ao longo dos normais padrão causará descontinuidades na estrutura de tópicos. Para corrigir essas descontinuidades, você pode marcar essa 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, média os normais desses vértices. Esse processo cria uma cópia da malha subjacente e deve ser usado somente quando necessário.

Smooth Normals Outline
  1. Normal suave gerado por meio de MeshSmoother.cs.
  2. Padrão normal usado, observe os artefatos ao redor dos cantos do cubo.

Teste de estêncil

Suporte interno ao teste de estêncil configurável para obter uma ampla gama de efeitos. Como portais:

stencil test

Suporte a cores em instância

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

instanced properties

Mapeamento triplanar

O mapeamento triplanar é uma técnica para textura programática de uma malha. Geralmente usado em terreno, malhas sem UVs ou difíceis 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.

normal map scale 1

Diversos

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:

albedo assignment

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

normal map scale 2

Confira também