Texture:Texture Virtuelle

De Celestia wiki

Histoire

Les textures virtuelles permettent à Celestia d'afficher des textures qu'il n'aurait jamais été possible de rendre sur un PC en les découpant en "tuiles" (en anglais : "tiles"). Seules sont donc chargées en mémoire et affichées celles apparaissant à l'écran. Dépassant aujourd'hui couramment les 128k de résolution, l'idée à l'origine était bien plus modeste : pouvoir utiliser les textures Blue Marble 32k fournies par la NASA, alors qu'avec les cartes graphiques d'aujourd'hui on arriverait presque à le faire en brut.

Cette technique est apparue avec la version 1.3.1 de Celestia (cf. le topic de Chris Laurel sur le forum officiel).

Fonctionnement

Il faut tout d'abord se remémorer le fonctionnement d'une texture : c'est une image rectangulaire dont la largeur est le double de la hauteur (comme un tatami !). Lorsqu'on parle d'une texture de 1k, cela signifie que sa résolution est de 1024 pixels en largeur, et de 512 pixels en hauteur.

Les textures virtuelles fractionnent cette résolution, tout en conservant les proportions. Une personne souhaitant effectuer une seule série de textures virtuelles à partir d'une texture de base de 1k, devrait en réalité scinder en 4 la texture de base (sauf pour le premier niveau, voir ci-dessous). On obtiendrait pour résultat 4 "tiles" de 512*256 pixels chacune.

Cette méthode revient à appliquer un fractionnement que nous appellerons horizontal, puisque se contentant de partitionner l'existant en plusieurs morceaux. La deuxième astuce, à combiner à cette première, nous l'appelleront le fractionnement vertical, qui utilise la technique des Levels (niveaux).

Levels

Le fractionnement vertical revient à réduire la résolution de base de la texture, et à en mettre une version à chaque fois de moindre qualité dans des répertoires nommés "Leveln" (n valant 0, 1, 2, 3,..., 12).

Le but étant de partir de la résolution maximale, pour aller vers sa version minimale, une texture de 128k sera fractionnée une première fois horizontalement, puis verticalement une première fois (résultat : 64k), puis verticalement une seconde fois (résulat : 32k) jusqu'à atteindre 2 tiles (c'est le Level0).

Prenons les choses à l'envers : votre texture virtuelle au level0 (le premier, donc) est composée de 2 tiles de 512x512, qui donnent un total de 1024x512 pixels, soit notre fameuse texture de 1k. Le level0 est toujours composé de 2 tiles.

Au niveau suivant, le "level1", nous aurons 8 fois (2 x 4) des tiles de 512x512; au "level2", 32 tiles (8 x 4), et ainsi de suite. Etant entendu qu'au niveau suivant, chaque tile est divisée en 4 de même taille. Un level5 complet comportera ainsi 2048 tiles.

Le nombre de tiles d'un level n complet peut se calculer par la formule suivante : 22n+1

Depuis la version 1.4, Celestia accepte jusqu'à 13 niveaux de fractionnement horizontal (soit du "level0" au "level12"). Pour information, un level12 complet comporterait donc plus de 33,5 millions de tiles !

Utilisation

Il est nécessaire d'indiquer à Celestia que la texture qu'il va devoir afficher est une texture virtuelle. Cela se fait par le biais d'un fichier Ctx obligatoire.

Structure d'un dossier de textures virtuelles

[A compléter]