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. 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.

C'est la version 1.31 qui a vu l'apparition de cette technologie; pour mémoire, l'annonce avait été faite par Chris sur son forum.

Fonctionnement

Il faut tout d'abord se remémorer le fonctionnement d'une texture : la largeur est le double de la hauteur. Lorsqu'on parle d'une texture de 1k, cela signifie que sa résolution est de 1024 pixels de largeur, et de 512 pixels de hauteur.

Les textures virtuelles fractionnent cette résolution, tout en conservant les proportions. Un 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 x 512*256 "tiles" (les "morceaux" de la texture originale).

Cette méthode revient à appliquer un fractionnement que nous appelleront horizontal, puisque se contentant de partitionner l'existant en plusieurs morceaux. La deuxième astuce, à combiner a 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 "Level".

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é 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 (soit jusqu'à un répertoire nommé "level12") de fractionnement horizontal.

Utilisation

C'est au moyen d'un fichier Ctx que Celestia sait que la texture à charger est virtuelle.