Grafos de materiales
Crea tu propio material con nodos cuando los materiales estándar no te basten. También puedes usar un grafo para crear un efecto a pantalla completa.
Los tipos de material estándar cubren la mayoría de los proyectos. Cuando no es así, conecta nodos en un grafo y el editor lo convertirá en un material de verdad.
Usa un grafo para lo que no puede hacer un material fijo: una textura que se desplaza, un efecto de disolución, un holograma, agua, un color que cambia según el ángulo de visión, una bandera que ondea.
Todos los nodos y sus puertos están en la referencia de nodos de shader: 95 nodos.
Un material de grafo recibe la misma iluminación que los tipos integrados, como standard,
physical y toon, y también funciona en móviles.
Crear un grafo de material
- Abre el Material editor desde la barra lateral izquierda.
- Haz clic en + Create material para empezar con un grafo vacío. O haz clic en Clone an existing material para empezar con una copia de un material que ya tienes.
- Añade nodos y conéctalos, desde las entradas hasta el nodo de salida.
- Usa el material en tus objetos como cualquier otro material.
También puedes crear un grafo en Project assets: haz clic derecho y elige Create asset → Material graph.
Cómo se construye un grafo
Un grafo va desde las entradas, pasa por los cálculos y llega a la salida. Los nodos se agrupan así:
| Grupo | Qué encontrarás |
|---|---|
| Inputs | UV, la normal de la superficie, el tiempo, la posición, texturas, qué copia se está dibujando |
| Constants | números y colores fijos que escribes tú |
| Math | operaciones aritméticas y curvas sobre números sueltos |
| Vectors | crear, separar, mezclar y girar vectores y colores |
| Lighting | términos de iluminación que ajustas tú mismo |
| Post-processing | nodos que leen el fotograma renderizado; consulta efectos de pantalla |
| Output | el aspecto final de la superficie |
Las salidas de la superficie
El grafo termina en el nodo de salida. Sus entradas describen la superficie:
| Salida | Significa |
|---|---|
baseColor | el color de la superficie |
metallic | 0 para lo que no es metal, 1 para metal desnudo; casi nunca un valor intermedio |
roughness | 0 es liso como un espejo, 1 es completamente mate |
normal | tu propia normal, para añadir detalle a la superficie |
emissive | la luz que emite la superficie por sí misma |
alpha | la transparencia |
clearcoat · clearcoatRoughness | una capa de barniz transparente por encima |
ior · transmission · thickness | la luz que se desvía al atravesar la superficie, para vidrio y líquidos |
Cualquier salida que dejes sin conectar conserva su valor por defecto. Una salida que no usas no cuesta nada.
Hacer que cada copia se vea distinta
Hay dos nodos de entrada pensados para los objetos instanciados, en los que un mismo objeto se dibuja muchas veces:
instanceIdte dice qué copia se está dibujando;instanceColorte da el tinte de esa copia.
Pasa instanceId por un hash y cada copia tendrá su propio tinte, tamaño o ritmo de animación. Una
hierba en la que cada brizna se mece de forma un poco distinta cuesta lo mismo que una en la que
todas se mecen a la vez.
En un objeto normal, los dos nodos dan valores por defecto seguros. Así que el grafo sigue funcionando en objetos que no están instanciados.
Efectos de pantalla
Un grafo que lee el fotograma renderizado se convierte en un efecto a pantalla completa sobre toda la escena. No es algo que pongas en un objeto. Úsalo para corrección de color, viñetas, desenfoques o líneas de escaneo.
No tienes que configurar nada. En cuanto el grafo usa un nodo que lee el fotograma, como
screenColor, se convierte en un efecto.
Para añadir el efecto:
- Abre Space settings.
- Haz clic en + Add feature y elige Post-processing, si esa sección aún no está.
- Haz clic en + Add effect y elige tu grafo.
Si hay varios efectos, se aplican en el orden en que los pongas.
Texturas y color
Un nodo de textura lee una imagen de tu proyecto. Las imágenes de color se convierten automáticamente, para que los cálculos trabajen con los valores de color reales.
Algunas texturas guardan números, no color: un mapa de rugosidad, una máscara, un mapa de alturas. Márcalas como datos; si no, se les aplica corrección de color y tus valores salen un poco desviados. Es el motivo más habitual de que un mapa de rugosidad no se vea como debería.
Cambiar un material de grafo mientras se ejecuta la escena
Un script no puede cambiar los ajustes de un grafo, porque no tiene acceso al componente del grafo. Aun así, las dos necesidades más habituales están cubiertas:
| Lo que quieres | Cómo hacerlo |
|---|---|
| algo que se anime solo | usa la entrada time dentro del grafo para latidos, desplazamientos o destellos |
| algo que reaccione a lo que pasa en el juego | usa un material normal; un script puede cambiar su emissiveIntensity, color, opacity o roughness |
Por ejemplo, una baliza que late sin parar es un grafo que lee time. Una baliza que brilla más
cuando el jugador marca un punto es un script que cambia emissiveIntensity en un material
estándar.
Consejos
- Parte de un material existente. Clone an existing material convierte un material estándar en un grafo. Así tienes un punto de partida correcto y completo. En un lienzo vacío tendrías que rehacer una iluminación que no te hacía falta rehacer.
- Vigila lo que añades. Un grafo se ejecuta para cada píxel, en cada fotograma. Leer una textura cuesta poco; un bucle, no. Si baja la tasa de fotogramas después de un cambio, revisa el último nodo que añadiste.
- Usa un grafo para cada aspecto. Todos los objetos que usan el grafo se actualizan cuando lo cambias. Así solo hay un sitio donde corregir ese aspecto.
Siguiente: Partículas — fuego, humo, chispas y polvo.