Vinarnt Portfolio

Paging System

Lors de mes aventures dans le domaine du développement de jeux-vidéo en 3D, je me suis intéressé à l'optimisation du rendu.
Dans ce projet, il s'agit du paging (pagination), qui s’apparente visuellement au "clipping", faisant disparaitre des modèles à l’horizon, mais dont le fonctionnement diffère.
En effet, le clipping est un effet introduit par le fonctionnement d’une caméra en infographie, plus précisément par le "frustum", qui définit un espace entre deux plans où le rendu sera effectué, alors que le paging est indépendant du mécanisme de rendu. Son but est d’ajouter ou supprimer des éléments en fonction de la position du joueur, voire de charger et décharger des portions du niveau pour les mondes plus grands.

Développé en java de manière abstraite sans dépendances, cette librairie peut être utilisée par n’importe quel moteur 3D développé en java.

Le principe de mon système de paging est de découper le monde à la volée en secteurs, ainsi tout élément du monde sera lié au secteur auquel il appartient. Cela permet de limiter les calculs à effectuer, aux secteurs actifs. Les secteurs actifs correspondent au secteur où la camera se trouve et les 26 secteurs adjacents à celui ci.
Pour finir, il suffit de faire un calcul de distance entre la caméra et les éléments des secteurs actifs, et exécuter selon le résultat de cette distance par rapport à la distance de vue, se traduisant pour la majorité des cas, à l’ajout ou suppression de l’élément du monde.

Ainsi en ne gérant que ce qui est dans l'entourage immédiat, le gain de performance est exponentiel à la taille du monde.
Le système peut également gérer plusieurs caméras, utile pour du splitscreen.

Ci-dessous, vous pouvez visualiser une comparaison des performances, avec le système actif et inactif.
A gauche le système inactif, à droite le système actif.
Les cubes en bleu, sont les cubes affichés par le système et ceux en rouge sont ceux qui devraient être cachés par le système s’il était actif. Les cubes en fil de fer correspondent aux secteurs actifs.
Les sphères blanches représentent les caméras et les sphères en fil de fer, la distance de vue de la caméra à laquelle elles sont associées.

Comparaison des performances en vue côte à côte