Sombreador estándar de las Herramientas de gráficos: MRTK3

El sistema de sombreado estándar de Herramientas de gráficos utiliza un sombreador flexible que puede lograr objetos visuales similares al sombreador estándar (o Lit) de Unity. Este implementa varios principios del Sistema Fluent Design y posee un rendimiento estable con los dispositivos de realidad mixta.

Standard shader material gallery sample

Ejemplo

Consulte el escenario de ejemplo de galería de materiales para visualizar varias demostraciones de las variantes del sombreador Graphics Tools/Standard. Para obtener ejemplos del sombreador Graphics Tools/Standard Canvas, consulte el ejemplo del sistema UnityUI.

Architecture

El sistema de sombreado estándar de las Herramientas de gráficos es un "sombreador omnipotente" que usa la característica de variantes del programa sombreador de Unity para generar código de sombreador óptimo, basado en propiedades de material, de forma automática. Cuando un usuario selecciona propiedades de material en el inspector de material, este solo incurre en costos de rendimiento asociados con las características que ha habilitado.

Para ofrecer una mejor compatibilidad con los flujos de trabajo tradicionales de Unity, así como con los flujos de trabajo (de lienzo) de UnityUI, el sistema de sombreado estándar de las Herramientas de gráficos tiene los dos puntos de entrada de sombreador que se indican a continuación:

Context Valor predeterminado UnityUI
Nombre Graphics Tools/Standard Graphics Tools/Standard Canvas
Sombreador GraphicsToolsStandard GraphicsToolsStandardCanvas

Ambos sombreadores son idénticos en mayor medida, ya que comparten algunas inclusiones en su código. Sin embargo, el sombreador Graphics Tools/Standard Canvas contiene una cierta lógica adicional que es específica de la interfaz UnityUI.

El sombreador siguiente incluye el sistema de sombreado estándar de las Herramientas de gráficos:

Incluir Propósito
GraphicsToolsStandardProgram Esta inclusión contiene los métodos de punto de entrada del sombreador de vértices y fragmentos (la implementación principal).
GraphicsToolsStandardMetaProgram Esta inclusión contiene los métodos de punto de entrada del sombreador de vértices y fragmentos que Unity usa para la iluminación estática (no se usa durante el tiempo de ejecución).
GraphicsToolsStandardInput Esta inclusión contiene definiciones de atributos e interpoladores de vértices, texturas, muestras de texturas, búferes de las constantes de cada material, propiedades globales y, por último, constantes.
GraphicsToolsCommon Esta inclusión contiene métodos reutilizables y definiciones.

Compatibilidad con la canalización de representación

Los desarrolladores pueden elegir entre varias de las canalizaciones de representación que ofrece Unity. El sistema de sombreado estándar de las Herramientas de gráficos está diseñado para funcionar automáticamente con la canalización de representación integrada de Unity o con la canalización de representación universal (URP). No es necesario cambiar de sombreadores en función de la canalización. A continuación se muestra una matriz de compatibilidad:

Canalización Compatible Excepciones
Canalización de representación integrada No se admiten los "modos de desenfoque" acrílicos.
Canalización de representación universal (URP)
Canalización de representación de alta definición (HDRP)
Canalización de representación personalizada La compatibilidad dependerá de cómo se compile la canalización.

Compatibilidad con UnityUI

El sistema de sombreado estándar de las Herramientas de gráficos funciona con el sistema de UI integrado de Unity, denominado UnityUI. El sistema de sombreado Graphics Tools/Standard Canvas debe usarse con todos los materiales de los lienzos de UnityUI.

Si se incluye un elemento Canvas o CanvasRenderer en las Herramientas de gráficos, este solicitará la adición de un archivo ScaleMeshEffect.cs si es necesario, tal y como se muestra a continuación:

Scale mesh effect inspector warning

En los componentes de UnityUI, la matriz unity_ObjectToWorld (o UNITY_MATRIX_M en el caso de URP) no es la matriz de transformación de la transformación local en la que reside el componente gráfico, sino la de su lienzo principal. Muchos efectos del sombreador lienzo estándar de las Herramientas de gráficos necesitan conocer la escala de los objetos. Para resolver este problema, el archivo ScaleMeshEffect.cs almacena la información de escalado en forma de atributos de canal UV durante la construcción de la malla de la UI.

Sugerencia

Cuando use un componente de imagen de Unity, es recomendable especificar la imagen de origen como un elemento "Ninguno (Sprite)" para evitar que la UI de Unity genere vértices adicionales.

Inspector de materiales

Los sombreadores Graphics Tools/Standard y Graphics Tools/Standard Canvas poseen un inspector de materiales personalizado denominado StandardShaderGUI.cs. Este inspector habilita o deshabilita automáticamente las características del sombreador en función de la selección del usuario y, así, ayuda a configurar el estado de representación. Para obtener más información sobre cada característica, mantenga el puntero sobre cada propiedad en el editor de Unity y se mostrará información sobre herramientas.

Nota

La UI del inspector es de naturaleza dinámica. Por tanto, sus partes cambiarán en función de las características que estén habilitadas y deshabilitadas.

Material inspector for Graphics Tools/Standard

El inspector puede dividirse en una serie de áreas de características, tal y como se describe a continuación.

Modo de representación

La primera parte del inspector controla el estado de representación del material. El modo de representación determina cómo y cuándo se representará un material. El objetivo de los sombreadores Graphics Tools/Standard y Graphics Tools/Standard Canvas es reflejar los modos de representación que se encuentran en el sombreador estándar de Unity. Los sombreadores estándar de las Herramientas de gráficos y lienzo estándar de las Herramientas de gráficos también incluyen un modo de representación aditivo y un modo de representación personalizado, que permiten un control completo al usuario.

Modo de representación Descripción
Opaca (Valor predeterminado) Este modo es adecuado para objetos sólidos normales sin áreas transparentes.
Recorte Este modo permite la creación de efectos transparentes que tengan bordes duros entre las áreas opacas y transparentes. Sin embargo, no permite utilizar áreas semitransparentes, por lo que la textura será completamente opaca o invisible. Esto resulta útil cuando se quiere crear la forma de materiales mediante transparencias, como en el caso de la vegetación.
Atenuación Este modo permite que los valores de transparencia puedan usarse para hacer que un objeto se desvanezca por completo, incluidos los resaltados especulares o los reflejos que pueda tener. Su uso resulta útil si se desea animar un objeto que aparezca o desaparezca gradualmente. Sin embargo, este no es adecuado para representar materiales transparentes realistas, como el plástico claro o el vidrio, ya que sus reflejos y resaltados también se desvanecerán.
Transparente Este modo es adecuado para representar materiales transparentes realistas, como el plástico claro o el vidrio. Al usarlo, el material tomará valores de transparencia por su propia cuenta (en función del canal alfa de la textura y del alfa del color de tinte). Sin embargo, los reflejos y los resaltados de iluminación seguirán siendo visibles con total claridad, tal y como sucede con los materiales transparentes reales.
Aditivo Este es un modo de mezcla aditivo que suma el color de píxel anterior al color de píxel actual. Se trata del mejor modo de transparencia para evitar problemas de ordenación de transparencia.
Personalizado Este modo permite controlar manualmente todos los aspectos del modo de representación. Debe usarse únicamente para usos avanzados.

Rendering modes example lineup

Modo de selección

Modo de selección Descripción
Desactivado Este modo deshabilita la selección de caras. El valor de la selección solo debe establecerse como Desactivado cuando se requiera una malla de dos caras.
Front Este modo habilita la selección de caras frontales.
Atrás (Valor predeterminado) Este modo habilita la selección de caras posteriores. Para mejorar el rendimiento de la representación, habilite la selección de caras posteriores siempre que sea posible.

Mapas principales

La función principal de esta sección es controlar el color de albedo del material, así como las opciones de representación basadas en leyes físicas.

Para mejorar la paridad con el sombreador estándar de Unity por píxel, el empaquetado de canales permite controlar los valores metálico, de suavidad, de emisión y de oclusión.

Si usa el empaquetado de canales, solo tendrá que muestrear y cargar una textura en la memoria en lugar de hacerlo con cuatro instancias independientes. Al escribir los mapas de textura en un programa como Substance o Photoshop, puede empaquetarlos manualmente de la siguiente forma:

Canal Propiedad
Rojo Metálico
Verde Oclusión
Azul Emisión (escala de grises)
Alpha Suavidad

La sección principal del mapa también tiene una opción para la asignación triplanar y el suavizado de contorno de supermuestreo.

La asignación triplanar es una técnica de asignación de texturas a una malla mediante programación. A menudo, esta se usa en terrenos, mallas sin UV o formas difíciles de desajustar. Esta implementación admite la proyección del espacio local o global, así como la especificación del suavizado de mezcla y la compatibilidad con mapas normales. Tenga en cuenta que cada textura que utilice requerirá tres muestras de textura, por lo que esta técnica deberá usarse con moderación en situaciones en las que el rendimiento sea de importancia crítica.

El suavizado de contorno de supermuestreo debe usarse en cualquier material que muestre un icono o una imagen cuando la visibilidad de sus detalles desde la lejanía sea de importancia crítica.

Opciones de representación

Las opciones de representación controlan, principalmente, la configuración de iluminación de un material. Esta sección del material también contiene una serie de otras características que controlan el color, la translucidez o la posición de una superficie. Para obtener más detalles sobre la iluminación, consulte la información que se detalla más adelante.

Lighting comparisons

Opciones de Fluent

Fluent es un marco de diseño que se usa en los componentes de las UI de los productos de Microsoft. Esta sección contiene una serie de características que ayudan a emular los principios del sistema de diseño Fluent en superficies arbitrarias. Si busca sombreadores Fluent a medida, los podrá encontrar en el espacio de nombres Graphics Tools/Canvas y Graphics Tools/Non-Canvas.

Opciones avanzadas

Esta sección es similar a la sección avanzada de los sombreadores integrados de Unity. Con esta, es posible controlar el orden de representación y si se deben compilar variantes de creación de instancias de GPU. Además, dispone de compatibilidad con pruebas de galerías de símbolos configurables para lograr una amplia gama de efectos. Una de ellas es la prueba de los portales:

Portal example

Iluminación

Los sombreadores Graphics Tools/Standard y Graphics Tools/Standard Canvas usan una aproximación sencilla para crear la iluminación. Dado que los cálculos de los sombreadores no tienen en cuenta ni la corrección física ni la conservación de la energía, sus representaciones se crean de forma rápida y eficaz. Blinn-Phong es la técnica de iluminación más utilizada y suele combinarse con iluminación de Fresnel y basada en imágenes para obtener una iluminación basada en las leyes físicas de forma aproximada. Estos sombreadores admiten las siguientes técnicas de iluminación:

Luz direccional

Cuando se utiliza esta técnica, el sombreador respeta la dirección, el color y la intensidad de la primera luz direccional de Unity que esté presente en la escena (si este se habilita).

Importante

Las luces de punto dinámico, de foco o cualquier otra luz de Unity no se tienen en cuenta durante la iluminación en tiempo real. Esto se debe a que las máscaras de iluminación no se admiten en este momento.

Armónicos esféricos

Al utilizar esta técnica, el sombreador utiliza sondeos de luz para aproximar las luces de la escena mediante armónicos esféricos, siempre que este esté habilitado.

Importante

Los cálculos de los armónicos esféricos se realizan en base a cada vértice y los sondeos de luz no se combinan. De este modo, se reducen los costos del cálculo.

Lightmapping

Al utilizar iluminación estática, el sombreador respetará los lightmaps creados por el sistema de lightmapping de Unity. Para usar lightmaps, marque el representador como estático (o lightmap estático).

Rendimiento

Una de las principales ventajas de usar el sistema de sombreado estándar de las Herramientas de gráficos en lugar del sombreador estándar de Unity es su mayor rendimiento. Los sombreadores Graphics Tools/Standard y Graphics Tools/Standard Canvas están diseñados para utilizar únicamente las características habilitadas. Sin embargo, el diseño de los sombreadores Graphics Tools/Standard y Graphics Tools/Standard Canvas también ofrece resultados estéticos comparables a los del sombreador estándar de Unity, aunque con un costo mucho menor. Una manera sencilla de comparar el rendimiento de los sombreadores se basa en el número de operaciones que se deben realizar en la GPU al usarlos. La magnitud de los cálculos puede fluctuar en función de las características habilitadas y otras configuraciones de representación.

Sugerencia

Como regla general para los dispositivos móviles de realidad mixta, es recomendable usar el sombreador estándar de las Herramientas de gráficos en lugar de los sombreadores integrados. Sin embargo, siempre es aconsejable generar perfiles para su escenario mediante el uso de herramientas como RenderDoc.

Vea también