Actualización del terreno 2018.3: Primeros pasos

¡Ahora contamos con un equipo dedicado al terreno y nuestros esfuerzos iniciales pronto estarán disponibles públicamente! Unity 2018.3 se enviará con una actualización del sistema de terreno. Esta actualización presenta herramientas mejoradas y rendimiento al aprovechar mejor la GPU. También agrega soporte para los canales de renderizadoHD y LW , al mismo tiempo que es compatible con versiones anteriores del canal de renderizado integrado y el sistema Unity Terrain existente.
¡Obtén la versión beta de Unity 2018.3 ahora para obtener acceso anticipado a las actualizaciones! Tenga en cuenta que tanto la interfaz de usuario como la API aún están sujetas a cambios ya que la versión beta aún se encuentra en desarrollo activo.
En cuanto al rendimiento, agregamos una ruta de renderizado instanciada por GPU para el terreno. En la mayoría de los casos, la creación de instancias produce una reducción drástica en la cantidad de llamadas de sorteo emitidas. Muchas de nuestras pruebas mostraron una reducción de más del 50% en los costos de CPU (aunque, por supuesto, los números reales dependerán de su plataforma y caso de uso). Puede elegir esta nueva ruta de renderizado habilitando 'Dibujar instanciado' en la configuración del Terreno:

Cuando está habilitado, Unity transforma todos los datos pesados del terreno, como mapas de altura y mapas de salpicaduras, en texturas en la GPU. En lugar de construir una malla personalizada para cada parche de terreno en la CPU, podemos usar la creación de instancias de GPU para replicar una sola malla y muestrear la textura del mapa de altura para producir la geometría correcta. Esto reduce la carga de trabajo de la CPU del terreno en órdenes de magnitud, ya que unas pocas llamadas de dibujo instanciadas reemplazan potencialmente miles de dibujos de malla personalizados.
¡Como efecto secundario agradable, también mejora nuestros tiempos de carga! No solo podemos omitir la construcción de todas esas mallas personalizadas, sino que también podemos usar la GPU para construir el mapa base (textura LOD premezclada); la GPU es mucho más rápida en ese tipo de cosas. Esto también significa que si tienes tu propio sombreador de terreno personalizado, ahora puedes anular el sombreador 'construir mapa base' y generar texturas LOD de mapa base coincidentes.
La creación de instancias también mejora la apariencia de las normales del terreno; desacoplamos las normales de la malla del terreno de la geometría almacenándolas en una textura de mapa normal que se genera a partir del mapa de altura y se muestrea en el sombreador de píxeles. Esto significa que las normales son independientes del nivel LOD de la malla. En consecuencia, puede aumentar la "tasa de error de píxeles" para disminuir el costo de vértices, con menos artefactos.

También desarrollamos sombreadores de terreno para los canales de renderizado HD y LW, disponibles en las versiones de paquete 4.0.0 o posteriores, con soporte para renderizado instanciado y normales por píxel. El sombreador HD se mejoró aún más para admitir nuevas funciones, como modos de fusión de altura y densidad, escala normal, metalización de la superficie controlada por textura y suavidad. El sombreador de terreno HD está limitado a una sola pasada, pero admite la combinación de hasta 8 capas de terreno en una sola pasada.
En el lado del editor, hemos expuesto una API de script para construir sus propias herramientas de terreno personalizadas, junto con un conjunto de funciones de utilidad que puede usar para implementar fácilmente operaciones de escultura y pintura entre mosaicos sin inconvenientes en la GPU. La nueva TerrainAPI incluye TerrainPaintTool<T0>, una clase base para herramientas de terreno, y TerrainPaintUtility, que contiene funciones de utilidad para modificar datos de terreno.
Al aplicar estos cambios, convertimos todas las herramientas de terreno existentes a operaciones de GPU. Además de hacer que estas herramientas sean mucho más rápidas, esto también nos dio tamaños de pincel más grandes, vistas previas de pincel mejoradas y la capacidad de pintar a través de los bordes de los mosaicos de terreno con costuras automáticas.

También hemos comenzado a experimentar con funciones de pincel, como rotación y aleatorización de pinceles, y herramientas de pintura más avanzadas, como mapas de altura y estampado de malla, pinceles de clonación y más. Estas funciones de herramientas de pintura actualmente no están disponibles en 2018.3, pero las ponemos a disposición a través de nuestro proyecto GitHub Terrain Tools.

Hicimos que sea más fácil trabajar con múltiples mosaicos de terreno. Además de la pintura perfecta entre terrenos, ahora puedes administrar las conexiones entre terrenos vecinos automáticamente. Anteriormente, esto requería escribir un script para conectar a los vecinos manualmente.
Habilite “Conexión automática” en la configuración del terreno y el terreno se conectará automáticamente a sus vecinos con el mismo ID de agrupación.
Al ampliar su terreno existente, puede utilizar nuestra nueva herramienta "Crear terreno vecino" para agregar rápidamente mosaicos de terreno coincidentes a lo largo de bordes vacíos.

También estamos trabajando para que los cambios de tamaño y resolución sean menos destructivos. En 2018.3, los mapas de altura y de salpicaduras se volverán a muestrear cuando cambie su resolución, en lugar del comportamiento anterior de borrar los datos y perder todo su trabajo. Estamos trabajando para mejorar todas las operaciones de cambio de tamaño en el futuro cercano.
Para simplificar los flujos de trabajo, también creamos dos nuevos tipos de activos relacionados con el terreno: el activo TerrainLayer y el activo Brush.

TerrainLayer nos permite definir materiales de terreno independientemente del objeto de terreno para que podamos rastrear fácilmente el mismo material en múltiples terrenos. Esto ayuda con la pintura sin costuras y la modificación de materiales. También ampliamos el activo TerrainLayer para admitir texturas de “mapa de máscara”, que se pueden usar para fines de sombreado arbitrario, y una interfaz de script para proporcionar una GUI personalizada dependiente del sombreador para el activo TerrainLayer.

El pincel representa las formas de pincel de la GPU utilizadas por las herramientas de pintura y escultura. Ahora están definidos por una textura y una curva de caída radial. Esto hace que sea mucho más fácil crear y modificar formas de pinceles (que antes requerían colocar archivos de imágenes elaborados de manera arcana en una carpeta con un nombre especial).
También agregamos soporte para el formato de textura R16 (un formato de 16 bits de un solo canal) a Unity. Esto nos permite evitar la cuantificación de 8 bits en las formas de nuestros pinceles, lo que puede provocar efectos de "terrazas" no deseados si se usa como un sello de mapa de altura.

Nuestro equipo de terreno recién está comenzando y el desarrollo continúa. ¡Envíenos sus comentarios en el foro de creación de mundos !
