Sombreado padrão das ferramentas gráficas – MRTK3
O sistema de sombreado Padrão das Ferramentas Gráficas utiliza um sombreado flexível que pode obter elementos visuais semelhantes ao sombreado Standard (ou Iluminado) do Unity. Implementa princípios Sistema Fluent Design e continua a ter um desempenho em dispositivos de realidade mista.
Sample
Veja o exemplo da Galeria de Materiais para obter várias demonstrações de variantes de gráficos/sombreado padrão. Para obter exemplos de Ferramentas Gráficas/Tela Padrão, veja o exemplo unityUI
Arquitetura
O sistema de sombreado Graphics Tools/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 em propriedades materiais. Quando um utilizador seleciona propriedades materiais no inspetor de materiais, apenas incorre em custos de desempenho para as funcionalidades que ativou.
Para suportar melhor os fluxos de trabalho tradicionais do Unity e os fluxos de trabalho unityUI (tela), o sistema de sombreado Graphics Tools/Standard tem dois pontos de entrada de sombreado:
Contexto | Predefinição | UnityUI |
---|---|---|
Name | Ferramentas de Gráficos/Padrão | Ferramentas de Gráficos/Tela Padrão |
Sombreado | GraphicsToolsStandard | GraphicsToolsStandardCanvas |
Ambos os sombreados são maioritariamente idênticos porque partilham códigos de sombreado comuns. As Ferramentas de Gráficos/Tela Padrão contêm alguma lógica adicional específica do UnityUI.
O sombreado seguinte inclui o sistema de sombreado Graphics Tools/Standard:
Incluir | Objetivo |
---|---|
GraphicsToolsStandardProgram | Contém os métodos de ponto de entrada de sombreado de vértice e fragmentação (a implementação principal). |
GraphicsToolsStandardMetaProgram | Contém os métodos de ponto de entrada de sombreado de vértice e fragmentação utilizados pelo Unity para iluminação estática (não utilizado no runtime). |
GraphicsToolsStandardInput | Definições para atributos de vértice, interpoladores de vértice, texturas, amostras de textura, memórias intermédias constantes por material, propriedades globais e constantes. |
GraphicsToolsCommon | Métodos e definições reutilizáveis. |
Suporte do pipeline de composição
O Unity tem um punhado de pipelines de composição para os programadores escolherem. O sistema de sombreado Padrão das Ferramentas Gráficas foi concebido para funcionar automaticamente com o pipeline de composição incorporado do Unity ou o Pipeline de Composição Universal (URP). Não é necessário mudar de sombreado com base no pipeline. Segue-se uma matriz de suporte:
Pipeline | Suportado | Exceções |
---|---|---|
Pipeline de Composição Incorporado | ✅ | Os "Modos de Desfocagem" acrílicos não são suportados. |
Pipeline de Composição Universal (URP) | ✅ | |
Pipeline de Composição de Alta Definição (HDRP) | ❌ | |
Pipeline de Composição Personalizada | ❔ | O suporte depende da forma como o pipeline é criado. |
Suporte do UnityUI
O sistema de sombreado Padrão das Ferramentas Gráficas funciona com o sistema de IU incorporado do Unity chamado UnityUI. Deve Graphics Tools/Standard Canvas
ser utilizado para todos os materiais nas telas unityUI.
Um Canvas ou CanvasRenderer nas Ferramentas de Gráficos pedirá a adição de quando ScaleMeshEffect.cs
for necessário:
Nos componentes do UnityUI, a unity_ObjectToWorld
matriz (ou UNITY_MATRIX_M
no URP) não é a matriz de transformação da transformação local em que o componente Gráfico se encontra, mas sim a do respetivo Canvas principal. Muitas ferramentas de gráficos/ efeitos de sombreado de tela padrão requerem que a escala de objetos seja conhecida. Para resolver este problema, o irá armazenar informações ScaleMeshEffect.cs
de dimensionamento em atributos de canal UV durante a construção da malha de IU.
Dica
Ao utilizar um componente imagem do Unity, é recomendado especificar "Nenhum (Sprite)" para a Imagem de Origem para impedir que a IU do Unity gere vértices adicionais.
Inspetor de materiais
Existe um inspetor de material personalizado para as Ferramentas de Gráficos/Ferramentas De Padrão e Gráficos/ Sombreados de Tela Standard denominados StandardShaderGUI.cs. O inspetor ativa/desativa automaticamente as funcionalidades de sombreado, 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.
Nota
A IU do inspetor é dinâmica. Partes da IU serão alteradas à medida que as funcionalidades são ativadas e desativadas.
O inspetor pode ser dividido em algumas áreas de funcionalidades, conforme descrito abaixo.
Modo de composiçã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 dos Graphics Tools/Standard
sombreados e Graphics Tools/Standard Canvas
é espelhar os modos de composição encontrados no sombreado Unity/Standard. As Ferramentas de Gráficos/Ferramentas Padrão e Gráficos/Sombreados de Tela Padrão também incluem um modo de composição aditiva e o modo de composição personalizada para um controlo completo do utilizador.
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 têm contornos rígidos entre as áreas opacas e transparentes. Neste modo, não existem áreas semi-transparentes, a textura é 100% opaca ou invisível. Isto é útil quando se utiliza 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 desaparecer. Não é adequado para compor materiais transparentes realistas, como plástico transparente ou vidro, porque os reflexos e destaques também serão desvanecidos. |
Transparente | Adequado para a composição de materiais transparentes realistas, como plástico transparente ou vidro. 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 em plena 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
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. |
Mapas principais
A função primária desta secção é controlar a cor do albedo do material e as opções de composição fisicamente baseadas .
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.
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 |
A secção de mapa principal também tem uma opção para mapeamento triplanar e anti-aliasing de super-exemplo. Também contém a opção para adicionar mapas coloridos de textura de emissões assim que a caixa de verificação Emissão estiver selecionada.
O mapeamento triplanar é uma técnica para criar uma textura programática de uma malha. É frequentemente utilizado em terrenos, malhas sem UVs ou difícil de desembrulhar formas. 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 três amostras de textura, pelo que é utilizada com moderação em situações críticas de desempenho.
O anti-aliasing de super-exemplo deve ser utilizado em quaisquer materiais que apresentem um ícone ou imagem em que os detalhes sejam críticos à distância.
Opções de composição
As opções de composição controlam principalmente as definições de iluminação de um material. Esta secção de material também contém um punhado de outras funcionalidades que controlam a cor, a translência ou a posição de uma superfície. Para obter mais detalhes sobre a iluminação, consulte abaixo.
Opções fluentes
Fluent é uma arquitetura de design utilizada em componentes de IU em produtos Microsoft. Esta secção contém um punhado de funcionalidades que ajudam a imitar os princípios do sistema de design Fluent em superfícies arbitrárias. Se estiver à procura de sombreados Fluent personalizados, estes podem ser encontrados no espaço de nomes Ferramentas de Gráficos/Ferramentas de Tela e Gráficos/Espaço de nomes de sombreado Não Tela .
Opções avançadas
Semelhante à secção avançada nos sombreados incorporados do Unity. Esta secção controla a ordem de composição e se as variantes de instancing da GPU devem ser criadas. Além disso, existem suportes de teste stencil configuráveis para alcançar uma grande variedade de efeitos. Como portais:
Iluminação
As Ferramentas de Gráficos/Ferramentas Padrão e Gráficos/Sombreados de Tela Padrão utilizam uma aproximação simples para iluminação. Uma vez que os sombreados não calculam a correção física e a conservação de energia, são compostos de forma rápida e eficiente. Blinn-Phong é a técnica de iluminação primária utilizada e é misturada com Fresnel e iluminação baseada em imagens para uma iluminação aproximada fisicamente baseada. Os sombreados suportam 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).
Importante
As luzes dinâmicas, os holofotes ou qualquer outra luz do Unity não serão consideradas na iluminação em tempo real. Neste momento, não são suportadas máscaras leves.
Harmónica esférica
O sombreado utiliza sondas de luz para aproximar as luzes na cena com harmónicas esféricas, se ativadas.
Importante
Os cálculos harmónicos esféricos são efetuados por vértice e as sondas leves não são misturadas para reduzir os custos de cálculo.
Máscara de Luz
Para iluminação estática, o sombreado respeitará os máscaras de luz construídos pelo sistema de limpeza de luzes do Unity. Marque o compositor como estático (ou estático de mapa claro) para utilizar máscaras leves.
Desempenho
Uma das principais vantagens de utilizar o sistema de sombreado padrão das Ferramentas Gráficas sobre o sombreado Standard do Unity é o desempenho. As Ferramentas de Gráficos/Ferramentas Padrão e Gráficos/Sombreados de Tela Padrão são arquitetados para utilizar apenas as funcionalidades ativadas. No entanto, as Ferramentas Gráficas/Ferramentas Padrão e Gráficos/Sombreados de Tela Padrão também foram escritos para fornecer resultados estéticos comparáveis como o sombreado Do Unity Standard, mas a um custo muito mais baixo. Uma forma simples de comparar o desempenho do sombreador é através do número de operações que têm de ser realizadas na GPU. A magnitude dos cálculos pode flutuar por funcionalidades ativadas e outras configurações de composição.
Dica
Como regra de polegar, deve utilizar o sombreado Padrão das Ferramentas Gráficas sobre sombreados incorporados em dispositivos de realidade mista móvel. No entanto, é sempre aconselhável criar o perfil do seu cenário com ferramentas como RenderDoc.