Il y a un certain nombre d'options dans Ultimate 3D pour modifier la façon avec laquelle il charge les données, il calcule le rendu des scènes et la façon dont il gère les erreurs. Quelques-unes de ces options doivent être définies avant qu'Ultimate 3D soit initialisé, tandis que d'autres peuvent être changées n'importe quand en utilisant les fonctions correspondantes. Celles qui doivent être définies avant qu'Ultimate 3D soit initiliasé sont définies dans le script Ultimate3DOptions(). Ce script n'est pas prévu pour être appellé par l'utilisateur. Il sera appellé une fois qu'Ultimate 3D sera initialisé, c'est tout. Le fait que ce soit un script plutôt qu'un certain nombre de constantes Game Maker résulte en un avantage pour vous, parce que de cette manière vous pouvez charger les options depuis un fichier. Actuellement il y a six options qui sont définies par des variables dans le script Ultimate3DOptions():
global.u3d_splash_screen_file
Il vous faudra définir
cette variable comme string. Si vous ne souhaitez pas qu'Ultimate 3D
n'affiche un écran pendant le chargement des ressources, vous pouvez
définir cette variable à une chaîne vide (""). Sinon, si vous souhaiter
afficher une image durant le chargement des ressources, il vous suffira
de définir cette variable au nom de fichier, en y incluant le chemin du
fichier, pour cette variable.
global.u3d_z_buffer_format
Cette variable peut avoir
soit la valeur 16 ou 32. Si vous la définissez à 32, Ultimate 3D
tentera de créer un périphérique utilisant un z-buffering de 32 bits.
Le Z-buffering est une technique utilisée pour éviter que les objets
qui sont devants d'autres objets soient couverts par les objets
dérrière eux. Si vous le définissez à 16 Ultimate 3D utilisera un
z-buffering de 16 bits, bien entendu.
global.u3d_multi_sample_type
Ce variable peut prendre
une valeur entière allant de 2 à 16, ou bien 0. Elle définit le nombre
d'échantillonages qui seront utilisés pour l'antialiasing. Dans le cas
où elle est égale à 0 aucun antialiasing ne sera utilisé. Plus la
valeur est élevée, plus fort sera l'antialiasing. Notez que le nombre
d'échantillonage diffère de carte graphique en carte graphique.
Certains périphériques graphiques ne supportent même pas
l'antialiasing. Une autre chose que vous devriez noter est que
l'antialiasing n'aura aucun effet si les post screen shaders sont
activés.
global.u3d_device_type
Si vous n'avez pas une
bonne raison de ne pas le faire, vous devriez définir cette variable à
0. Ultimate 3D créera ensuite l'interface la plus efficace et rapide
qui offre toutes les fonctionalités requises. Si vous la définissez à
1, Ultimate 3D créera une interface qui calculera les vertex à l'aide
du logiciel. Cela signifie que cela sera le processeur principal (CPU)
qui calculera les données des vertex, plutôt que le processeur
graphique. Habituellement cela n'a pas du tout de sens. L'unique cas
dans lequel vous devriez utiliser cette option est lorsqu'il y a un bug
dans les drivers du périphérique graphique, qui donne lieu à un crash
lors de l'utilisation de fonctionnalités particulières avec le calcul
de vertex supporté matériellement. J'ai connu cela avec un driver ATI
en utilisant le vertex tweening. Pour finir vous pouvez initialiser
cette variable à 2 pour créer une interface complètement logicielle (en
utilisant la couche Direct 3D de référence). Cela vous donnera un frame
rate extrêmement lent mais toutes les fonctionalités (cube mapping,
shadow casting et les modèles de pixel shader 1.4) seront correctements
prises en charges.
global.u3d_log_file
Cette variable peut être
définie avec un chemin de fichier d'un fichier texte, par exemple
"LogFile.txt". Si elle est initialisée en tant que string, Ultimate 3D
créera un fichier de journal, pendant que l'exécutable fonctionnera.
Beaucoup d'informations utiles sortiront dans ce fichier de journal (en
particulier, tous les messages d'erreur et d'avertissement, les
informations à propos du périphériques et de ses capacités et quelques
données à propos du succès de certaines opérations). Si vous même, ou
un utilisateur d'une de vos applications basées sur Ultimate 3D a des
problèmes avec votre application, le fichier de journal rendra la
résolution du problème bien plus aisée.
global.u3d_few_message_output
Cette variable peut être
définie à true, afin de réduire le nombre de messages d'erreur
qu'Ultimate 3D affichera à l'écran. Si elle est définit à true,
Ultimate 3D affichera seulement les messages d'erreur, s'ils sont
cruciaux et s'ils sont suceptibles de faire crasher l'application. Le
fichier de journal n'est pas affecté par ce paramétrage.
Comme je l'ai déjà dit, les autres options peuvent être changées à n'importe quel moment en utilisant des fonctions. La première option disponible est vraiment facile à comprendre. Si vous êtes en train d'utiliser Ultimate 3D, il vous est nécessaire de savoir qu'il recherche les textures des modèles dans le dossier "gfx" par défaut. Si vous souhaitez qu'Ultimate 3D les cherche ailleurs, vous pouvez utiliser la fonction suivante, pour donner un nouveau chemin (en incluant le slash de fin).
Cette fonction modifie le dossier dans lequel Ultimate 3D cherche les textures des modèles.
SetTexturePath(
TextureDirectory
)
|
---|
TextureDirectory
Le dossier contenant les texture, en y incluant le slash à la fin de l'adresse.
La fonction suivante change la méthode de filtrage utilisée pour le niveau de texturage donné. La méthode de filtrage définie comment Ultimate 3D calculera une couleur d'une texture et une coordonnée de texture. La méthode de filtrage par défaut, est le filtrage linéaire.
Cette fonction définie une nouvelle méthode de filtrage pour le niveau de texturage donné.
SetFilter(
TextureFilter,
TextureStage
)
|
---|
TextureFilter
Le filtre qui est destiné à
être utilisé pour filtrer les textures. Voici une liste des
significations des différentes valeurs que vous pouvez entrer pour cet
argument:
1: Filtrage par les points les plus proches: La couleur des texels les plus proches seront utilisés.
2: Filtrage Linéaire: La couleur des quatres texels les plus proches sera interpolée pour obtenir un résultat plus lisse.
3:
Filtrage Anisotropique: Une méthode de filtrage plus complexe qui peut
amener à de meilleurs résultats. Ce n'est pas supporté par certains
périphériques graphiques.
TextureStage
Le niveau de texturage pour
lequel vous souhaitez définir le filtrage de texture. Cela peut être
une valeur entière arbitraire allant de 0 à 7. Par défaut chaque niveau
de texture utilise le filtrage linéaire. Si vous passez 1 pour ce
paramètre, le filtre de texture spécifié sera utilisé pour afficher les
textures DrawTex(en utilisant (...) et DrawTexEx(...)).
En définissant un filtrage par les points les plus proches pour
l'affichage des textures, vous pouvez éviter une perte de qualité.
La fonction suivante définit combien de mip maps sont à créer pour les textures qui seront chargées. Créer des mip maps consiste à créer des versions de résolution plus basse pour chaque texture qui peut être utilisée, dépendemment de la distance de l'objet qui l'utilise. Chaque mip map aura une résolution moitié moins grande que la résolution de la mip map précédente. (ex.: Un nombre de Mip map définit à trois, donnera: 512*256; 256*128; 128*64).
Cette fonction définit le nombre de mip maps à créer pour les textures qui seront chargées.
SetMipMapCount(
NewMipMapCount
)
|
---|
NewMipMapCount
Le nouveau nombre de mip
maps, et donc de copies à des résolutions plus basses qui doivent être
créées pour chacune des textures qui seront chargées.
Vous pouvez aussi spécifier de quelle façon Ultimate 3D doit interpoler les mip maps entre elles. Par défaut le filtrage par le point le plus proche est utilisé à cette fin. Cela signifie que chaque pixel utilise seulement une mip map. Entre les mip maps il y des de changements soudains, qui se voient parfaitements, particulièrement sur les textures détaillées. Vous pouvez dire exactement quand est-ce que le programme doit cesser d'utiliser une mip map et doit en prendre une plus basse. Définir un filtrage linéaire pour interpoler les mip maps entre elles, peut permettre d'éviter cet effet indésirable.
SetMipMapFilter(
TextureFilter,
TextureStage
) |
---|
TextureFilter
Le filtre destiné à être
utilisé pour l'interpolation des mip maps entre elles. Par défaut, le
filtrage par le point le plus proche est activé (1). L'alternative
commune est le filtrage linéaire (2). Pour une liste détaillée de tous
les filtres disponibles, référez vous à la description de SetFilter(...).
TextureStage
Le niveau de texturage pour
lequel vous souhaitez définir le filtre de mip map. Cela peut être un
nombre entier arbitraire allant de 0 à 7.
Pour finir, il existe une fonction pour qu'Ultimate 3D passe en mode de rendu fil de fer (wireframe) pour des objets spécifiques. Le rendu en mode fil de fer, consiste à ne calculer que le rendu des contours des triangles. Cette fonctionnalité est prévue pour être utilisée par des choses telles que les editeurs de niveaux. Utiliser le rendu en mode fil de fer pour implémenter un effet ingame, ne rend habituellement pas très bien.
SwitchWireFrameMode(
EnableDisable
)
|
---|
EnableDisable
Si vous passez true pour cet argument, le rendu en mode fil de fer sera activé, sinon, il sera désactivé.
Si vous utiliser Game Maker 6.0 ou supérieur il y a une variable supplémentaire qu'il vous faut connaître. Vous avez pu remarquer qu'Ultimate 3D n'affiche par le curseur, même si l'option correspondante dans Game Maker est activée. La raison de ce comportement est que Game Maker 6.0 ou supérieur (à l'instar de Game Maker 5.x) n'offre pas la possibilité de déterminer si il affiche le curseur ou non. Pour cette raison il vous faut donner l'information manuellement. Cela peut être fait en changeant la valeur de control.show_cursor. En la définissant à true, Ultimate 3D affichera le curseur, en la définissant à false Ultimate 3D désactivera le curseur.
© Christoph Peters. Certains droits réservés. (Traduction FR 04/2008, Franck Vernel / Damien Buhl).