Tessellation en UE4
¿Qué es Tessellation? Tessellation es el proceso por el cuál la GPU puede subdividir la geometría de manera dinámica y en tiempo real. Lo que nos permite hacer efectos realmente chulos con los materiales. Veamos unos cuantos.
Lo primero es lo primero, ¿para que querríamos subdividir la geometría de manera dinámica? La clave aquí está en los displacement maps. Así que aparquemos por un momento tessellation y veamos eso del displacement mapping.
Displacement Mapping
El displacement mapping es una técnica por la cuál los vértices de una geometría se desplazan localmente. Fíjate en el siguiente material:
En este caso se desplazan (0, 0, 50) unidades los vértices de la geometría dando como resultado el siguiente efecto:
Podemos hacer un material más interesante usando el nodo GenerateBand.
Este es el nodo GenerateBand en acción:
Y podemos usarlo así:
Este plano tiene 100 vértices, si usamos el mismo material con un plano de 6500 vértices tenemos:
Aquí ambos planos funcionando con el material en modo wireframe (puedes activar el modo wireframe en el viewport con Alt+F2):
Fíjate el plano con menos vértices no se ve todo lo suave que querríamos por insuficiente número de vértices. Mientras que en el plano con mayor número de vértices se ve muy bien pero a un precio excesivo (demasiados vértices).
Tessellation al rescate
Ahora es dónde encontramos la tessellation útil. Haremos subdivisión pero no en toda la geometría, si no justo dónde desplazamos los vértices y de manera dinámica.
Lo primero que tenemos que hacer es activar la tessellation en el material:
Entonces en el material podemos conectar el Tessellation Multiplier, fíjate como cambia la subdivisión:
Pero esto no es lo que queremos, queremos subdividir una parte de la geometría de manera dinámica. Así quedaría el material final:
Y este su resultado final:
En los settings del material referente a tessellation hay varias opciones:
¿Cuál es la diferencia?
- Con Flat cada tríangulo es dividido en más triángulos. Sin más.
- Con PN Triangles además se hace uso de los smoothing group para suavizar el objeto.