
Shader Counts es una nueva herramienta para crear sombreadores en una unidad. Le permite crear sombreadores para personas sin habilidades para escribir códigos. El resultado de cada operación es visible al editar. Una herramienta ideal para principiantes y experimentadores.
La adición de un gráfico de sombreado a un proyecto se realiza mediante el Administrador de paquetes.

Pero por hoy, solo está disponible la versión Lightweight Render Pipeline, por lo que para los experimentos debe crear un proyecto como este:

Sombreador simple
Shader Graph le permite crear dos tipos de sombreadores Unlit (sin iluminación) y PBR (render fotorrealista), así como sub (nodo para el sombreador). Este último se puede usar dentro de sombreadores Unlit y PBR.

Unlit no utiliza las capacidades integradas de la unidad para iluminar y sombrear el modelo, solo muestra la textura en la parte superior del modelo y, por lo tanto, es mucho más fácil familiarizarse con él.
Crear material y crear gráfico sin luz. Al arrastrar, asignamos un sombreador al material.

Al abrir el sombreador con un doble clic, veremos el nodo maestro

En la salida de este sombreador, podemos controlar:
- Posición - posición de vértice
- Color : color de cada píxel de superficie
- Alfa - su transparencia
- AlphaClipThreshold - umbral de transparencia si no usamos translucidez
La gran mayoría de los sombreadores no usan translucidez debido a la complejidad computacional y las limitaciones que se aplican a dichos sombreadores. Y donde se puede prescindir de la translucidez, es necesario prescindir de ella.
Si su sombreador usará translucidez o no, puede configurarlo en el nodo maestro:

- Opaco - Opaco
- Transparente - Translúcido
Para colorear el modelo, podemos enviar un vector o color tridimensional a la entrada (color) del nodo maestro, que es esencialmente el mismo para el sombreador, pero se muestra de manera diferente en el gráfico.
Se crean nuevos nodos a través del menú contextual.

en este caso, podemos usar dos nodos Color o Vector4

pero para poder configurarlos desde el inspector necesitamos crear una propiedad

y luego arrástrelo al gráfico con el mouse creando así un nodo.

- Expuesto : permite que esta propiedad se vea en el inspector al editar material
- Predeterminado : establece el valor de color predeterminado
- Modo : le permite seleccionar un rango de brillo (HDR le permite ir más allá del brillo habitual)
Para que la propiedad creada afecte el color del material, su salida debe estar conectada a la entrada Color del nodo maestro.

El mismo sombreador, pero el códigoShader "Tutorial/Simpliest"
El sombreador de texturas más simple
Para superponer nuestra textura en la malla, necesitamos crear un nodo que se pueda personalizar desde fuera del gráfico de sombreado. Para hacer esto, cree una propiedad

y estirarlo, esto crea un nodo de textura

Después de eso, debe crear un nodo de muestra de textura que pueda recibir la textura y la coordenada uv en la entrada, y dar el color del píxel a la salida.

Conectamos la salida del muestreador a la entrada de color del nodo maestro.

El código de sombreador de textura más simple Shader "Tutorial/Texture" { Properties { _MainTex("Texture", 2D) = "white" {}
Textura negativa
Antes de mostrar la textura en la pantalla, podemos cambiarla aplicando operaciones matemáticas. Por ejemplo, cree un negativo por simple resta.
Agregue un nodo Restar, el decrementado será (1; 1; 1; 1), y el restado será la salida de la textura.

Código de textura negativa Shader "Tutorial/Texture" { Properties { _MainTex("Texture", 2D) = "white" {} } SubShader { Cull Off ZWrite Off ZTest Always Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; fixed4 frag(v2f_img i) : COLOR { fixed4 col = tex2D(_MainTex, i.uv); col = 1 - col;
Mezclando dos texturas
Para mezclar dos texturas, necesitaremos tres propiedades, dos de las cuales serán texturas y un tercer número, que indicará el grado en que se mezclan.
Y la operación de mezcla en sí será realizada por el nodo Lerp.

Mezclando dos texturas con código Shader "Tutorial/NoiseOverlay" { Properties { _MainTex("Main Texture", 2D) = "white" {} _NoiseTex("Noise Texture", 2D) = "white" {} _LerpValue("Lerp Value", Range(0, 1)) = 0.5 } SubShader { Cull Off ZWrite Off ZTest Always Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; sampler2D _NoiseTex; float _LerpValue; fixed4 frag(v2f_img i) : COLOR { half4 base = tex2D(_MainTex, i.uv); half4 overlay = tex2D(_NoiseTex, i.uv); return lerp(base, overlay , _LerpValue); } ENDCG } } }
Máscara de corte
Para que la parte del modelo sea completamente transparente, debe enviar el valor Alpha del canal a la entrada del nodo maestro, crear una propiedad de control deslizante y alimentarlo a la entrada AlphaClipThreshold

Se necesita un control deslizante para corregir un error en el sombreador de gráficos, que no permite hacer un recorte, y además, le permitirá cambiar el valor de la configuración del material.
Inversión UV
Para trabajar con UV, debe crear un nodo UV y conectarlo al muestreador de textura

aquí puede seleccionar el canal UV, algunos modelos de estos canales pueden tener varios, en caso de texturas multicapa. Con este paso, no cambiamos nada en absoluto, y para invertir UV, necesitamos crear un nodo que invierta los valores UV, la multiplicación habitual por las coordenadas -1 a lo largo de Y es adecuada para nosotros.

Duplicar la textura se puede personalizar a partir del material, para esto necesitamos el nodo Branch, recibe un valor booleano en la entrada y uno de los dos valores en la salida, en nuestro caso 1 o -1

Impresiones
Crear un sombreador utilizando el Gráfico de sombreadores simplifica enormemente la tarea, aunque solo sea porque puede observar el cambio en el resultado después de cada etapa del cálculo. El principio mismo de crear a través del editor de nodos le permite crear algo nuevo incluso para aquellos que no entienden nada en los sombreadores. La herramienta todavía está en bruto, pero ya es muy útil. Como puede experimentar en el editor y luego reproducir el código creado, los nombres de las funciones en la mayoría de los casos coinciden con el nombre de los nodos, por lo que Shader Graph también puede ser útil para los programadores.
PD: Agradezco a
Darkirius por la ayuda para preparar el artículo.
PPS también puede aprender lecciones sobre cómo escribir sombreadores en una unidad usando el enlace
Hit Book