Sombreado padrão MRTK2

Exemplos de sombreado padrão

O sistema de sombreado Padrão MRTK2 utiliza um sombreado único e flexível que pode alcançar elementos visuais semelhantes ao Standard Shader do Unity, implementar princípios de Sistema Fluent Design e continuar a ter um desempenho em dispositivos de realidade mista.

Cenas de exemplo

Pode encontrar os exemplos de material de sombreado na cena MaterialGallery em MRTK/Examples/Demos/StandardShader/Scenes/. Todos os materiais nesta cena estão a utilizar o sombreado MRTK/Standard.

Galeria de Materiais

Pode encontrar uma cena de comparação para comparar e testar o sombreado MRTK/Standard com o exemplo de sombreador Unity/Standard na cena MRTK/Examples/Demos/StandardShader/Scenes/StandardMaterialComparison em .

Comparação material

Arquitetura

O sistema de sombreado MRTK/Standard é um "tom uber" que utiliza a funcionalidade de variante do programa shader do Unity para gerar automaticamente código de sombreado ideal com base nas propriedades do material. Quando um utilizador seleciona propriedades materiais no inspetor de materiais, apenas incorre em custos de desempenho para as funcionalidades que ativaram.

Inspetor de materiais

Existe um inspector de material personalizado para o tom MRTK/Standard denominado MixedRealityStandardShaderGUI.cs. O inspetor ativa/desativa automaticamente as funcionalidades de sombreador, com base na seleção do utilizador e nos auxiliares na configuração do estado de composição. Para obter mais informações sobre cada funcionalidade , paire o cursor sobre cada propriedade no Editor do Unity para obter uma descrição.

Inspetor de Materiais

A primeira parte do inspector controla o estado de composição do material. O Modo de Composição determina quando e como um material será composto. O objetivo do sombreado MRTK/Standard é espelhar os modos de composição encontrados no sombreador Unity/Standard. O sombreado MRTK/Standard também inclui um modo de composição aditiva e o modo de composição personalizada para um controlo de utilizador completo.

Modo de Composição Descrição
Opaco (Predefinição) Adequado para objetos sólidos normais sem áreas transparentes.
Recorte Permite a criação de efeitos transparentes que tenham arestas rígidas entre as áreas opacas e transparentes. Neste modo, não existem áreas semi-transparentes, a textura é 100% opaca ou invisível. Isto é útil ao utilizar a transparência para criar a forma de materiais, como a vegetação.
Desvanecer Permite que os valores de transparência desvaneçam completamente um objeto, incluindo quaisquer destaques ou reflexos especificados que possa ter. Este modo é útil se quiser animar um objeto a desaparecer ou a desaparecer. Não é adequado para compor materiais transparentes realistas, tais como plástico transparente ou vidro, porque os reflexos e os destaques também serão desvanecidos.
Transparente Adequado para compor materiais transparentes realistas, como plástico transparente ou vidro transparente. Neste 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, as reflexões e os destaques de iluminação permanecerão visíveis com toda a clareza, como é o caso dos materiais transparentes reais.
Aditiva Ativa um modo de mistura de aditivos, que soma a cor do pixel anterior com a cor atual do pixel. Este é o modo de transparência preferencial para evitar problemas de ordenação de transparência.
Personalizado Permite que todos os aspetos do modo de composição sejam controlados manualmente. Apenas para utilização avançada.

Modos de Composição

Modo de Abate Descrição
Desativado Desativa o abate facial. O abate só deve ser definido como Desativado quando for necessária uma malha de dois lados.
Front Ativa o abate frontal.
Voltar (Predefinição) Ativa o abate facial. O abate de rostos traseiros deve ser ativado com a maior frequência possível para melhorar o desempenho da composição.

Desempenho

Uma das principais vantagens da utilização do tom padrão do MRTK sobre o sombreador padrão do Unity é o desempenho. O MrTK Standard Shader é extensível para utilizar apenas as funcionalidades ativadas. No entanto, o sombreado MRTK Standard também foi escrito para fornecer resultados estéticos comparáveis como o sombreado Unity Standard, mas a um custo muito mais baixo. Uma forma simples de comparar o desempenho do sombreado é através do número de operações que têm de ser realizadas na GPU. É claro que a magnitude dos cálculos pode flutuar por funcionalidades ativadas e outras configurações de composição. No entanto, em geral, o sombreado MRTK Standard executa significativamente menos computação do que o sombreador Unity Standard.

Exemplo de estatísticas de sombreado do Unity Standard

Estatísticas de Sombreado Padrão do Unity

Exemplo de estatísticas de sombreado Padrão do MRTK

Estatísticas de Sombreado Padrão do MRTK

Nota

Estes resultados podem ser gerados selecionando e visualizando um recurso de sombreado no inspetor do Unity e, em seguida, clicando no botão Compilar e mostrar código .

Iluminação

O MRTK/Standard utiliza uma aproximação simples para iluminação. Uma vez que este sombreado não calcula a correção física e a conservação de energia, é composto 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 imagens para aproximadamente iluminação fisicamente baseada. O sombreado suporta as seguintes técnicas de iluminação:

Luz direcional

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

Harmónica esférica

O sombreado utilizará Sondas Ligeiras para aproximar as luzes na cena através de Harmónica Esférica, se ativada. Os cálculos harmónicos esféricos são efetuados por vértice para reduzir o custo de cálculo.

Máscara de Luz

Para iluminação estática, o sombreado respeitará os máscaras de luz construídos pelo sistema lightmapping do Unity. Basta marcar o compositor como estático (ou estático do mapa de luz) para utilizar máscaras leves.

Pairar o cursor de luz

Luz de proximidade

Suporte de Pipeline de Composição Com scriptável leve

O MRTK contém um caminho de atualização para permitir que os programadores utilizem o Pipeline de Composição Scriptável Leve (LWRP) do Unity com sombreados MRTK. Testado no pacote Unity 2019.1.1f1 e Lightweight RP 5.7.2. Para obter instruções sobre como começar a utilizar o LWRP, consulte esta página.

Para efetuar a atualização do MRTK, selecione: Mixed Reality Toolkit –> Utilitários –> Atualizar o Standard Shader do MRTK para o Pipeline de Composição Leve

lwrp upgrade

Após a atualização, o tom MRTK/Standard será alterado e quaisquer materiais magenta (erro de sombreador) devem ser corrigidos. Para verificar se a atualização ocorreu com êxito, verifique a consola de: Recursos Atualizados/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader para utilização com o Pipeline de Composição Leve.

Suporte da UGUI

O sistema de sombreado MrTK Standard funciona com o sistema de IU incorporado do Unity. Nos componentes da IU do Unity, a matriz de unity_ObjectToWorld não é a matriz de transformação da transformação local em que o componente Gráfico se encontra, mas sim a da tela principal. Muitos efeitos de sombreado MRTK/Standard requerem que a escala de objetos seja conhecida. Para resolver este problema, o ScaleMeshEffect.cs irá armazenar informações de dimensionamento em atributos de canal UV durante a construção da malha de IU.

Tenha em atenção que, ao utilizar um componente unity Image, é recomendado especificar "Nenhum (Sprite)" para a Imagem de Origem para impedir que a IU do Unity gere vértices adicionais.

Uma Tela no MRTK pedirá a adição de uma ScaleMeshEffect.cs quando for necessária:

efeito de malha de escala

Combinador de textura

Para melhorar a paridade com o tom do Unity Standard por pixel metálico, a suavidade, a emissiva e os valores de oclusão podem ser controlados através da embalagem de canais. Por exemplo:

exemplo de mapa de canais

Quando utiliza o empacotamento de canais, só tem de amostrar e carregar uma textura para a memória em vez de quatro separadas. Quando escreve os mapas de textura num programa como o Substance ou o Photoshop, pode embalá-los à mão da seguinte forma:

Canal Propriedade
Red Metálico
Green Oclusão
Blue Emissões (Greyscale)
Alpha Suavidade

Em alternativa, pode utilizar a Ferramenta de Combinação de Texturas do MRTK. Para abrir a ferramenta, selecione: Mixed Reality Toolkit -> Utilitários –> Combinação de Textura, que abrirá a janela abaixo:

exemplo de combinação de texturas

Esta janela pode ser preenchida automaticamente ao selecionar um sombreado Do Unity Standard e clicar em "Autopopulate from Standard Material". Em alternativa, 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 requer que a textura de entrada seja acessível à CPU.

Documentação de funcionalidades adicionais

Seguem-se detalhes adicionais sobre um punhado de detalhes de funcionalidades disponíveis com o sombreador MRTK/Standard.

Recorte primitivo

recorte primitivo

Contornos de malha

Muitas técnicas de contorno de malha são feitas com uma técnica de pós-processamento . O processamento pós-processamento fornece destaques de grande qualidade, mas pode ser proibitivamente caro em muitos dispositivos Mixed Reality. Pode encontrar uma cena que demonstra a utilização de contornos de malha na cena OutlineExamples em MRTK/Examples/Demos/StandardShader/Scenes/.

Contorno da Malha

MeshOutline.cs e MeshOutlineHierarchy.cs pode ser utilizado para compor um contorno em torno de um compositor de malha. Ativar este componente introduz um passe de composição adicional do objeto que está a ser delineado, mas foi concebido para ser executado de forma eficaz em dispositivos móveis Mixed Reality e não utiliza quaisquer processos pós-processos. As limitações deste efeito incluem que não está a funcionar bem em objetos que não são estanques (ou têm de ser dois lados) e podem ocorrer problemas de ordenação de profundidade em objetos sobrepostos.

Os comportamentos hierárquico foram concebidos para serem utilizados em conjunto com o sombreador MRTK/Standard. Normalmente, os materiais hierárquico são uma cor sólida não iluminada, mas podem ser configurados para alcançar uma grande variedade de efeitos. A configuração predefinida de um material hierárquico é a seguinte:

Material Hierárquico de Malha
  1. Escrita de Profundidade – deve ser desativada para materiais hierárquico para se certificar de que o destaque não impede a composição de outros objetos.
  2. Extrusão de Vértice – tem de estar ativado para compor o destaque.
  3. Utilizar Normas Suaves – esta definição é opcional para algumas malhas. A extrusão ocorre ao mover um vértice ao longo de um vértice normal, em algumas malhas que se extrudem ao longo dos normais predefinidos causará descontinuações no contorno. Para corrigir estas descontinuidades, pode selecionar esta caixa para utilizar outro conjunto de normais suavados que são gerados por MeshSmoother.cs

MeshSmoother.cs é um componente que pode ser utilizado para gerar automaticamente normais suavizadas numa malha. Este método agrupa vértices numa malha que partilham a mesma localização no espaço e, em seguida, media os normais desses vértices. Este processo cria uma cópia da malha subjacente e deve ser utilizado apenas quando necessário.

Contorno de Normas Suaves
  1. Normais suaves geradas através de MeshSmoother.cs.
  2. Normas predefinidas utilizadas, repare nos artefactos nos cantos do cubo.

Teste do Stencil

Incorporado no suporte de teste de stencil configurável para alcançar uma grande variedade de efeitos. Como portais:

teste de stencil

Suporte de cores instâncias

Suporte de cores instâncias para fornecer milhares de malhas de instância de GPU propriedades de material exclusivo:

propriedades de instâncias

Mapeamento triplanar

O mapeamento triplanar é uma técnica para criar uma textura programática de uma malha. Frequentemente utilizado em terrenos, malhas sem UVs ou formas difíceis de desembrulhar. Esta implementação suporta a projeção do espaço local ou mundial, a especificação da suavidade de mistura e o suporte normal do mapa. Tenha em atenção que cada textura utilizada requer 3 amostras de textura, pelo que utilize 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 delimitadores extrudidos ou transições em malhas de entrada/saída.

escala de mapa normal 1

Diversos

Uma caixa de verificação para controlar as otimizações do albedo. Como uma otimização, as operações de albedo são desativadas quando não é especificada nenhuma textura albedo. Isto é útil para controlar o carregamento remoto de texturas.

Basta selecionar esta caixa:

atribuição de albedo

São suportadas texturas de recorte por pixel, anti aliasing à base de arestas locais e dimensionamento de mapa normal.

escala de mapa normal 2

Ver também