La Red de Conocimientos Pedagógicos - Currículum vitae - [Unity][ traducción] Desglose de los pasos del sombreador de nube

[Unity][ traducción] Desglose de los pasos del sombreador de nube

Traducido manualmente del artículo CLOUDS SHADER BREAKDOWN de Alexandre Stroukoff, enlace original:/2019/09/CLOUDS-SHADER-BREAKDOWN html.

Antes del texto, hablemos del proceso de producción del autor, que se divide aproximadamente en tres pasos:

Según la introducción del autor, el primer paso es crear el modelo de nube, y el segundo paso es hornear la luz, en teoría otro software también puede hacerlo. Y hornearlo con anticipación significa que las nubes están estacionarias y no iluminadas en el motor, por lo que debes prestar atención. Al final del artículo hay una explicación sobre la iluminación dinámica.

Los dos primeros pasos son solo una breve introducción del autor. El video es muy vago, por lo que no lo publicaré. El siguiente es el video completo y los pasajes citados en el texto son mis comentarios.

Hice un sombreador de nubes basado en el juego "Sky Encounter" de ThatGameCompany. Este artículo es un pequeño desglose del mismo paso a paso.

El efecto más grande es la malla de nubes en sí, seguida de las luces horneadas. Usé Houdini+3ds Max para generarlas. En este artículo solo me centraré en los sombreadores, que se crean con el Amplified Shader Editor (ASE).

El primer paso es conectar el color del vértice con la emisión. Para mostrar las luces previamente horneadas (en 3ds Max), utilicé un exponente de 0,454545 para corregir los colores de los vértices (debido a sRGB/lineal/gamma).

Una gran cantidad de superficies triangulares pueden aportar un efecto de desplazamiento más suave. La teselación es un buen enfoque si el rendimiento es aceptable. Marque la opción Teselación en el panel izquierdo y seleccione el modo basado en distancia.

Ajusta los parámetros de distancia y teselación hasta que tú y tu ordenador estén satisfechos. Es bueno ajustar una distancia muy cercana aquí.

Ahora viene la diversión. Agregué un generador de ruido. Este nodo es muy conveniente. Puede generar ruido 3D según la ubicación mundial. Compare el rendimiento con el ruido 3D, puede cambiarlo a ruido simplex, estoy seguro de que todo el efecto se puede lograr con textura de ruido y UV. Multiplico las coordenadas mundiales por un flotante como entrada de "tamaño" del nodo de ruido, y este flotante se utiliza para controlar el mosaico del ruido.

Se asigna de -1/1 a 0/1 para evitar valores negativos.

Esto se agregará a la entrada de depuración.

Ahora no necesitas usar la posición mundial directamente, sino multiplicarla por un vector 3 ("NoiseScaleA"), para que el ruido se pueda escalar de manera no uniforme, ¡lo cual es muy conveniente! (Al igual que escalar la cuadrícula, simplemente escalar la posición de entrada). Aquí estiro el ruido a lo largo del eje Z para demostrar el efecto.

Es hora de añadir algo de acción. Directamente, antes de conectar las coordenadas mundiales escaladas al ruido, agrego un Vector3 para multiplicar el tiempo y poder controlar la dirección en que se mueve el ruido.

Ahora conéctelo al desplazamiento del vértice local y multiplíquelo por dos valores:

Decidí repetir este sonido tres veces. Copie todos los parámetros y agréguelos. Esto me recuerda a un proyecto que hice antes (ruido piroclástico de dibujos animados). La idea es simple: para cada punto de ruido, reduzca a la mitad la intensidad, doble mosaico, doble velocidad y ajuste.

La relación entre cada ruido es muy importante. Aquí solo ajusto la intensidad. Es fácil ajustar el ruido individualmente (ajustar la intensidad de todos menos el ruido actual a 0) y luego ajustar la intensidad.

Para los bordes del degradado, utilice un material transparente y un nodo de degradado de profundidad para configuraciones simples.

Esta parte es un truco, pero agrega muchos detalles. Básicamente, agregué una textura de nube en blanco y negro y la probé con un mapa triplano. Para hacer que el mapa triplanar se moviera, utilicé una posición mundial modificada del Ruido C (ver imagen 1 a continuación) y multipliqué todo por el Ruido A para "borrar" la textura aquí y allá (ver imagen a continuación 2).

Utilizo un nodo Registrar/Obtener Var local para evitar que mis conexiones se ensucien tanto como el cable de unos auriculares anudados en mi bolsillo. Esta característica de ASE es realmente genial.

Puedes ver el efecto de agregar textura de nube.

¡Realmente hermoso!

Dirección del almacén:/AlexStrook/UnlitClouds

Observaciones: