Sombreado padrão MRTK2
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.
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 .
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.
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. |
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
Exemplo de 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
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:
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:
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:
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
- Veja 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/
.
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:
- 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.
- Extrusão de Vértice – tem de estar ativado para compor o destaque.
- 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.
- Normais suaves geradas através de
MeshSmoother.cs
. - 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:
Suporte de cores instâncias
Suporte de cores instâncias para fornecer milhares de malhas de instância de GPU propriedades de material exclusivo:
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.
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.
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:
São suportadas texturas de recorte por pixel, anti aliasing à base de arestas locais e dimensionamento de mapa normal.