Rasterización Tiled: el otro camino de rasterización de LCC2
El pipeline LCC2 ofrece dos métodos de rasterización, que se seleccionan con la propiedad Rasterizer del Actor: el predeterminado Pipeline usa el propio pipeline de renderizado del motor, mientras que Tiled usa un camino de cómputo basado en tiles implementado por el plugin.
Tiled es actualmente experimental y pertenece a la edición Pro. Solo surte efecto después de registrar una App Key, consultar Ediciones y licencias.
Aumenta la tasa de fotogramas de forma notable en la mayoría de las escenas densas, pero el beneficio depende del contenido de la imagen y de dónde esté el cuello de botella. En algunas escenas el beneficio es pequeño, y en otras no hay ningún cambio. Después de activarlo, confirmar el resultado midiendo, tal como se describe en Decidir si ayuda. No dar por supuesto que siempre es más rápido.
Nota: «tile» se refiere aquí a tiles de píxeles de pantalla, algo distinto del «renderizado por bloques» de Renderizado, que carga nodos según la visibilidad de la cámara. El primero decide cómo se dibujan los datos que ya están en memoria de vídeo, el segundo decide cómo entran los datos en memoria de vídeo. Son independientes y pueden estar activos al mismo tiempo.
Diferencias entre los dos métodos de rasterización
| Pipeline (predeterminado) | Tiled | |
|---|---|---|
| Rasterización | Se entrega al pipeline de renderizado del motor; cada splat se expande en un quad y el motor rellena los píxeles | Envío de cómputo propio del plugin; los splats visibles se reparten primero en tiles de pantalla y después se sombrean y se componen tile a tile |
| Ordenación | Una única ordenación global sobre todos los splats visibles | Ordenación segmentada por tile de pantalla; cada segmento ordena solo los splats que caen en ese tile |
| Madurez | El camino predeterminado de siempre | Experimental |
| Licencia | Disponible en la edición gratuita | Edición Pro |
El beneficio procede de dos sitios: el ámbito de la ordenación se reduce de global a un único tile de pantalla, y los píxeles solo se procesan en los tiles que realmente cubren, lo que recorta el relleno desperdiciado en las zonas de solapamiento.
El beneficio está por tanto ligado al contenido de la imagen: es claro cuando la densidad de splats es alta y el solapamiento en pantalla es intenso, y no hay ningún cambio observable cuando la imagen es dispersa o cuando el cuello de botella de la tasa de fotogramas no está de entrada en la ordenación y el relleno de píxeles.
El resultado visual es idéntico en ambos casos. Cambiar Rasterizer no requiere ningún otro cambio de parámetros y no afecta a la carga de datos, al LOD, a los volúmenes de recorte, a la iluminación ni a los ajustes de color.
Cómo activarla
En la categoría XGrids del panel Details del Actor, poner Rasterizer en Tiled. La propiedad está justo después de Render Mode y solo aparece cuando Render Mode es 3DGS.
Llamar al setter desde Blueprint o C++:
LCC2Component->SetRasterizer(ELCC2Rasterizer::Tiled);
Hay dos getters, con finalidades distintas:
| Método | Devuelve |
|---|---|
GetRasterizer() | La opción guardada en el panel |
GetEffectiveRasterizer() | La rasterización realmente en efecto, con el control de licencia aplicado |
Usar GetEffectiveRasterizer() para confirmar que el camino de renderizado pasa realmente por Tiled.
Decidir si ayuda
Como el beneficio no está garantizado, medir antes y después del cambio. El método coincide con el de la Guía de rendimiento:
- Fijar las condiciones de prueba: la misma vista o trayectoria de cámara, la misma resolución y el mismo Screen Percentage, y todos los demás parámetros sin cambios.
- Ejecutar primero una pasada de calentamiento para que la compilación inicial de shaders y la primera lectura de disco no se mezclen con los valores.
- Registrar el tiempo de fotograma de GPU con
Pipelinemediantestat unitcomo referencia. - Cambiar solo
Rasterizery medir de nuevo la misma vista. - Repetir en unas cuantas vistas representativas, sobre todo en las imágenes con los splats más densos y el solapamiento más intenso.
Si el tiempo de fotograma de GPU no baja, el cuello de botella actual queda fuera de lo que abarca este camino. Entonces conviene mantener Pipeline y seguir localizando el verdadero cuello de botella con la guía de rendimiento.
Alcance
| Elemento | Notas |
|---|---|
| Pipeline | Solo el pipeline LCC2. ALCCActor (.lcc) no tiene esta propiedad |
| Formatos | .lcc2 / .sog / .spz / .ply funcionan todos |
| Modo de renderizado | Solo el modo 3DGS. El modo de nube de puntos ignora la propiedad y usa siempre Pipeline |
| Motor y RHI | El mismo alcance de compatibilidad que el propio plugin; D3D12 y Vulkan funcionan ambos |
| Varias vistas | El renderizado estéreo para VR, nDisplay, la pantalla partida y SceneCapture son todos compatibles |
Comportamiento sin licencia
Poner Rasterizer en Tiled sin una App Key registrada no provoca un error ni un fallo de carga. El camino de renderizado recurre automáticamente a Pipeline. La opción guardada en el panel no se sobrescribe nunca, así que surte efecto en cuanto se registra la licencia, sin necesidad de volver a establecerla.
Para saber si Tiled está realmente en uso, leer el valor devuelto por GetEffectiveRasterizer(): al recurrir a la reserva devuelve Pipeline, mientras que GetRasterizer() sigue devolviendo Tiled.
Nota: confirmar que la licencia es válida antes de empaquetar para publicación; de lo contrario, el resultado empaquetado sigue el comportamiento de la edición gratuita y usa Pipeline.
Cuándo mantener Pipeline
- Se está usando el modo de renderizado de nube de puntos. La propiedad no tiene efecto ahí, así que no hay nada que establecer.
- Están cargados datos
.lcc. El pipeline LCC no tiene este camino. - Proyectos de la edición gratuita.
Tiledrecurre a la reserva de todas formas, así que el valor predeterminado es más claro. - La medición no muestra ninguna mejora en el tiempo de fotograma.
- El proyecto ha entrado en la validación de entrega, donde es mejor evitar un camino experimental.
Tiled baja el coste de la etapa de renderizado; no reduce el trabajo de carga ni de recorrido. Cuando el cuello de botella está del lado de la carga de datos, tratar primero la carga y el LOD con la Guía de rendimiento.