Rastérisation Tiled : l'autre chemin de rastérisation de LCC2
La pipeline LCC2 propose deux méthodes de rastérisation, choisies via la propriété Rasterizer de l'Actor : la valeur par défaut Pipeline utilise la pipeline de rendu du moteur, tandis que Tiled utilise un chemin de calcul par tuiles implémenté par le plugin.
Tiled est actuellement expérimental et relève de l'édition Pro. Il ne prend effet qu'après l'enregistrement d'une App Key, voir Éditions et licences.
Il augmente sensiblement la fréquence d'images dans la plupart des scènes denses, mais le gain dépend du contenu de l'image et de l'emplacement du goulot d'étranglement. Dans certaines scènes le gain est faible, et dans d'autres il n'y a aucun changement. Après l'avoir activé, confirmez le résultat par la mesure, comme décrit dans Déterminer si cela apporte un gain. Ne supposez pas qu'il est toujours plus rapide.
Note : « tuile » désigne ici des tuiles de pixels écran, ce qui est différent du « rendu par blocs » décrit dans Rendu, qui charge les nœuds selon la visibilité caméra. Le premier décide comment les données déjà en mémoire vidéo sont dessinées, le second comment les données entrent en mémoire vidéo. Ils sont indépendants et peuvent être actifs en même temps.
Différences entre les deux méthodes de rastérisation
| Pipeline (par défaut) | Tiled | |
|---|---|---|
| Rastérisation | Confiée à la pipeline de rendu du moteur ; chaque splat est étendu en quad et le moteur remplit les pixels | Dispatch de calcul personnalisé par le plugin ; les splats visibles sont d'abord répartis dans des tuiles écran, puis ombrés et composés tuile par tuile |
| Tri | Un tri global sur tous les splats visibles | Tri segmenté par tuile écran ; chaque segment ne trie que les splats qui tombent dans cette tuile |
| Maturité | Le chemin par défaut de longue date | Expérimental |
| Licence | Disponible en édition gratuite | Édition Pro |
Le gain provient de deux effets : la portée du tri se réduit du global à une seule tuile écran, et les pixels ne sont traités que dans les tuiles qui les couvrent réellement, ce qui réduit le remplissage inutile dans les zones de recouvrement.
Le gain est donc lié au contenu de l'image : il est net quand la densité de splats est élevée et le recouvrement écran important, et il n'y a aucun changement observable quand l'image est éparse ou quand le goulot d'étranglement de la fréquence d'images ne se situe de toute façon pas dans le tri et le remplissage de pixels.
Le résultat visuel est identique dans les deux cas. Changer Rasterizer ne nécessite aucune autre modification de paramètre et n'affecte ni le chargement des données, ni le LOD, ni les volumes de découpe, ni l'éclairage, ni les réglages de couleur.
Comment l'activer
Dans la catégorie XGrids du panneau Details de l'Actor, réglez Rasterizer sur Tiled. La propriété se trouve juste après Render Mode et n'apparaît que lorsque Render Mode vaut 3DGS.
Appelez le setter depuis Blueprint ou C++ :
LCC2Component->SetRasterizer(ELCC2Rasterizer::Tiled);
Il existe deux getters, avec des rôles différents :
| Méthode | Valeur retournée |
|---|---|
GetRasterizer() | Le choix enregistré dans le panneau |
GetEffectiveRasterizer() | La rastérisation réellement active, une fois le contrôle de licence appliqué |
Utilisez GetEffectiveRasterizer() pour confirmer que le chemin de rendu passe bien par Tiled.
Déterminer si cela apporte un gain
Comme le gain n'est pas garanti, mesurez avant et après le changement. La méthode correspond au Guide de performance :
- Fixez les conditions de test : même vue ou même trajectoire de caméra, même résolution et même Screen Percentage, tous les autres paramètres inchangés.
- Faites d'abord une passe de préchauffage pour exclure des mesures la compilation initiale des shaders et la première lecture disque.
- Relevez le temps d'image GPU sous
Pipelineavecstat unitcomme référence. - Ne modifiez que
Rasterizeret mesurez de nouveau la même vue. - Répétez sur plusieurs vues représentatives, en particulier les images où les splats sont les plus denses et le recouvrement le plus important.
Si le temps d'image GPU ne baisse pas, le goulot d'étranglement actuel se situe hors du périmètre de ce chemin. Conservez Pipeline et continuez à localiser le véritable goulot d'étranglement avec le guide de performance.
Périmètre d'application
| Élément | Remarques |
|---|---|
| Pipeline | Pipeline LCC2 uniquement. ALCCActor (.lcc) ne possède pas cette propriété |
| Formats | .lcc2 / .sog / .spz / .ply fonctionnent tous |
| Mode de rendu | Mode 3DGS uniquement. Le mode nuage de points ignore la propriété et utilise toujours Pipeline |
| Moteur et RHI | Même périmètre de prise en charge que le plugin lui-même ; D3D12 et Vulkan fonctionnent tous les deux |
| Vues multiples | Le rendu stéréo VR, nDisplay, l'écran partagé et SceneCapture sont tous pris en charge |
Comportement sans licence
Régler Rasterizer sur Tiled sans App Key enregistrée ne provoque ni erreur ni échec de chargement. Le chemin de rendu revient automatiquement à Pipeline. Le choix enregistré dans le panneau n'est jamais écrasé ; il prend donc effet dès l'enregistrement de la licence, sans avoir à le redéfinir.
Pour savoir si Tiled est réellement utilisé, lisez la valeur retournée par GetEffectiveRasterizer() : en cas de repli elle retourne Pipeline, tandis que GetRasterizer() retourne toujours Tiled.
Note : vérifiez que la licence est valide avant de packager pour la diffusion, sinon la sortie packagée suit le comportement de l'édition gratuite et utilise Pipeline.
Quand conserver Pipeline
- Le mode de rendu nuage de points est utilisé. La propriété n'a aucun effet dans ce cas, il n'y a donc rien à régler.
- Des données
.lccsont chargées. La pipeline LCC ne possède pas ce chemin. - Projets en édition gratuite. Régler
Tiledprovoque de toute façon un repli, la valeur par défaut est donc plus claire. - La mesure ne montre aucune amélioration du temps d'image.
- Le projet est entré en validation de livraison, où il vaut mieux éviter un chemin expérimental.
Tiled réduit le coût de l'étape de rendu ; il ne réduit pas le travail de chargement et de traversal. Quand le goulot d'étranglement se situe du côté du chargement des données, traitez d'abord le chargement et le LOD avec le Guide de performance.