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.
  • Desplazamiento vectorial del viento.
  • Desove y nerviosismo de base normal.
  • 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.



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 la 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.


Parámetros

  • 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).



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).
  • Jitter de posición: varía aleatoriamente la posición de cada cuchilla, útil para romper los patrones de teselación.
  • Variación: controla cuánto fluyen juntas las cuchillas, los valores más altos darán una apariencia más densa y tupida.
  • 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.


Teselación sobre la hierba en Rhea

  • Densidad: La cantidad máxima total de teselación aplicada.
  • Umbral: El umbral de oscuridad en el que las hojas de hierba se sacrificarán por completo.
  • Distancia de visualización: controla cuánto se desvanece la densidad con la distancia de la cámara.
  • Falloff: controla el contraste de la textura cuando se utiliza como mapa de altura para las cuchillas.
  • 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).


Viento sobre la hierba

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


Desplazamiento de objetos para ser utilizado con SetDisplacementLocation.cs

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


Dejamos un video donde se pueden ver los resultados



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.