Texturizado estocástico procedimental en Unity

THOMAS DELIOT / UNITY TECHNOLOGIESContributor
Feb 14, 2019|3 minutos
Texturizado estocástico procedimental en Unity
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

¿Has probado alguna vez a utilizar texturas en mosaico para cubrir grandes superficies o añadir detalles a tus mallas? Si es así, probablemente esté familiarizado con el patrón de repetición visible que aparece rápidamente con valores de embaldosado más altos. En Unity Labs hemos desarrollado una nueva técnica de texturizado que evita este problema, el texturizado estocástico procedimental.

Las texturas enlosables son una herramienta útil para añadir detalle a tus escenas 3D. Sin embargo, cuando se desea texturizar grandes áreas o conseguir superficies muy detalladas utilizando texturas enlosables y mapas de detalle, los patrones de enlosado se hacen visibles. Este efecto se ilustra en la parte izquierda de la siguiente imagen. Normalmente, para reducir los patrones de repetición se necesitan texturas más grandes u ocultar la repetición visible con objetos adicionales. En esta entrada de blog, proporcionamos un plugin que resuelve este problema para texturas con apariencias estocásticas, como óxido, musgo, corteza, etc. Su impacto se muestra en la parte derecha de la siguiente imagen.

Imagen de texturas enlosables para cubrir grandes superficies

Descargue el plugin aquí.

Dada una textura de entrada, el plugin generará proceduralmente una textura infinita que coincida con la apariencia de la entrada. Para ello, aprovechamos una función de mezcla de texturas de última generación que opera sobre una versión modificada de la textura de entrada, que sólo requiere tres muestras de textura por fragmento, y recuperamos una pequeña tabla de consulta. Dado que el plugin evita la necesidad de utilizar mosaicos, permite cubrir superficies más grandes con texturas más pequeñas y mayores niveles de detalle sin artefactos de repetición.

Uso del sombreador StandardStochastic

El plugin proporciona una variante del shader Estándar, que se incluye en un paquete de Unity. Una vez que haya importado el paquete, seleccione el shader StandardStochastic para su material. La interfaz es la misma que la del sombreador estándar, con la adición de dos nuevos controles en la parte superior, correspondientes a los dos pasos de configuración necesarios:

La imagen muestra la adición de dos nuevos controles en la parte superior
La imagen muestra las mejoras introducidas

El menú Stochastic Inputs permite especificar en cuál de las texturas de entrada se desea activar nuestra técnica (puede establecerse en Everything, o en texturas específicas, por ejemplo, albedo y/o normal map).

El botón Aplicar precalcula los datos para las entradas estocásticas seleccionadas y actualiza el material, finalizando el proceso. Para cada textura de entrada, este paso genera dos texturas intermedias situadas en la misma carpeta.

Algunas observaciones adicionales:

  • Dado que las texturas intermedias existentes se cargan cuando se detecta que saltan los tiempos de generación, cualquier modificación de la textura original requiere borrarlas ambas antes de volver a pulsar el botón Aplicar para forzar su regeneración.
  • Al cambiar entre los shaders Estándar y EstándarEstocástico, los parámetros se transfieren de un lado a otro.
  • También se proporciona un sombreador StandardStochastic (configuración Especular) para los materiales que utilizan el flujo de trabajo Especular.

Los siguientes ejemplos muestran el prototipo trabajando con diferentes materiales utilizando texturas de entrada pequeñas (256²).

Ejemplo de sombreado
Ejemplo de sombreado
Ejemplo de sombreado
Limitaciones

Esta técnica sólo es compatible con texturas estocásticas y casi estocásticas enlosables, como las texturas que se asemejan al ruido aleatorio cuando se ven desde lejos y los materiales de aspecto típicamente natural sin formas geométricas precisas.

Ejemplos de texturas
Comentarios

Se trata de un prototipo de investigación; no está en desarrollo activo. Por lo tanto, no garantizamos el mantenimiento ni la asistencia, pero no dudes en plantear cualquier pregunta o sugerencia en este hilo del foro de Unity. Actualmente estamos trabajando en una implementación de ShaderGraph para shaders personalizados y compatibilidad con los nuevos pipelines de renderizado. Esté atento a las actualizaciones en el hilo del foro.

Para saber más

¿Tienes curiosidad por saber cómo funciona el plugin? Consulte nuestros dos trabajos de investigación publicados recientemente sobre el tema, en los que se basa nuestro plugin:

El código suministrado con el plugin incluye comentarios que remiten a secciones específicas del capítulo técnico.