Simular hierba con Rhea para Unity

Simular hierba con Rhea para Unity, un simulador de hierba basado en el Shader para Universal Render Pipeline (URP) de Unity. El script está creado por Ryan Gee.

El paquete incluye:

  • Desplazamiento basado en objetos.
  • Desove y nerviosismo de base normal.
  • Desplazamiento vectorial del viento.
  • Texturizado basado en procedurales y atlas.
  • Forma de hoja personalizable y deformación.
  • Recorte basado en texturas y mapeo de altura.
  • Teselación basada en vistas para aumentar la densidad de césped de manera eficiente.
Shader de hierba geométrica con Rhea
Shader de hierba geométrica con Rhea

Uso de Rhea para simular hierba

Se incluyen varios materiales de ejemplo, con ejemplos de atlas de texturas y configuraciones de procedurales.
Para el desplazamiento de objetos, adjunta el script SetDisplacementLocation.cs al reproductor o al objeto del que se debe desplazar la hierba.

El mapa de altura de césped y el mapa vectorial de viento se pueden establecer en RenderTextures en su lugar. Lo que permite un rastro de césped siguiendo un objeto, viento dinámico de mapas de flujo en tiempo real o mapas de altura precocidos.

Este repositorio pretende ser una demostración técnica de sombreadores de geometría para césped de terreno. Sin embargo, debe tenerse en cuenta que el soporte de la plataforma y el rendimiento de esta implementación, y los sombreadores de geometría en general, pueden no ser ideales para el uso general en los juegos.

Referencia de la propiedad Shader en Texturas

Textura de la hoja

  • Una textura de píxel transparente o atlas utilizado para texturizar cada brizna de hierba. Esto se puede dejar sin asignar si texturizas proceduralmente.
  • Si la textura se va a utilizar como atlas, las texturas individuales deben alinearse en una fila horizontal.
  • Las texturas deben organizarse en orden de ocurrencia si se utiliza sesgo (textura que ocurre más comúnmente a la izquierda, menos común a la derecha).
  • Las texturas se pueden proporcionar en cualquier ración de aspecto, pero deben escalarse según sea necesario para llenar el UDIM completo.

Coloración de la hoja: dos colores utilizados para el tintado de degradado, interpolados linealmente entre la base y la punta de la hoja.
Luma Jitter: Oscurece aleatoriamente algunas cuchillas.
Brillo de altura: oscurece las cuchillas en función de la altura de la cuchilla: las cuchillas inferiores son más oscuras, las hojas más altas son más brillantes.
Fluctuación de tono: varía aleatoriamente el tono de cada hoja (solo afecta a los canales R y G para preservar una coloración más natural).

Referencia de la propiedad Shader en Texturas
Referencia de la propiedad Shader en Texturas

Atlas simulando hierba con Rhea para Unity

Longitud del atlas: el número de texturas dispuestas horizontalmente en la textura de la hoja.
Sesgo: crea una distribución no uniforme de texturas del atlas, las texturas en el lado izquierdo ocurrirán con más frecuencia que las texturas en el lado derecho.
Sesgo de altura: aplica sesgo de textura basado en la altura en lugar de la selección aleatoria, las cuchillas inferiores tendrán texturas seleccionadas desde el lado izquierdo, las cuchillas más altas desde la derecha.

Tamaño de la hoja de césped

Ancho: Los límites superior e inferior del ancho de las cuchillas.
Altura: Los límites superior e inferior de la altura de las cuchillas.
Cuchillas cónicas: cambia la geometría de una cinta de malla a un triángulo segmentado, útil para cuchillas texturizadas por procedimientos.

Deformación de la hoja simulando hierba con Rhea para Unity

Flexión: La cantidad total de flexión en cada cuchilla (puede ser positiva o negativa).
Curvatura: Qué tan curvada está la cuchilla a través de su flexión. Valores más altos darán bases más rectas y extremos más arqueados.
Variación: controla cuánto fluyen juntas las cuchillas, los valores más altos darán una apariencia más densa y tupida.
Jitter de posición: varía aleatoriamente la posición de cada cuchilla, útil para romper los patrones de teselación.

Teselación sobre la hierba en Rhea

Densidad: La cantidad máxima total de teselación aplicada.
Distancia de visualización: controla cuánto se desvanece la densidad con la distancia de la cámara
Adornos.
Mapa de recorte: una textura en escala de grises utilizada para determinar la altura y el sacrificio de las hojas de hierba (los valores más oscuros son más cortos, los valores más brillantes son más altos).
Umbral: El umbral de oscuridad en el que las hojas de hierba se sacrificarán por completo.
Falloff: controla el contraste de la textura cuando se utiliza como mapa de altura para las cuchillas.

Viento sobre la hierba

Mapa vectorial de viento: Un mapa de desplazamiento vectorial utilizado para doblar palas como viento.
Vector de velocidad: La dirección del desplazamiento del viento.
Velocidad: La velocidad de panorámica del mapa del viento.

Desplazamiento de objetos para ser utilizado con SetDisplacementLocation.cs.

Radio: El radio de la ubicación de los objetos en la que se desplazará la hierba.
Fuerza: La cantidad de desplazamiento en la hierba del objeto.
Caída: Qué tan bruscamente termina el desplazamiento alrededor del objeto.

Dejamos un video donde se pueden ver los resultados

shader de hierba geométrica con Rhea - video en YouTube
Shader de hierba geométrica con Rhea – video en YouTube

Aparte de la hierba, el artista está trabajando en Broken Roads, un RPG post-apocalíptico isométrico impulsado por la narrativa.

Puedes descargar Rhea shader geométrico de hierba en GitHub. En el blog puedes encontrar otros artículos relacionados con el tema de simular hierba. Y tienes más información y comentarios sobre el tema en el foro, sigue leyendo…