Le COLLADA propose deux méthodes pour déterminer le format approprié pour une surface. La première basé sur un identifiant représentant le format, et la deuxième se basant sur une liste de contraintes sur le format. Le moteur n’utilisera peut-être pas le format voulu, l’implémentation pouvant ne pas proposer tel ou tel format, cependant, il essaiera d’obtenir un format approché en ajustant éventuellement la taille des différentes composantes.
Première méthode : utilisation de l’élément surface/format[]
L’élément surface/format contient une chaine de caractère décrivant le format à utiliser parmi la liste des différents formats reconnu par le moteur.
La liste ci-dessus répertorie l’ensemble des différents formats internes de texture acceptés par le moteur ; ils peuvent être utilisés dans la description des surfaces dans les fichiers COLLADA. Celle-ci reprend à la fois les notations utilisés par OpenGl 3.1 et par DirectX.
Voici la liste exhaustive des formats acceptés par le jeu :
- ALPHA, RED, RG, RGB, RGBA, GL_RGB_SNORM, GL_RGBA_SNORM
- ALPHA4, ALPHA8, ALPHA12, ALPHA16
- R8, R8_SNORM, R16, R16_SNORM
- RG8, RG8_SNORM, RG16, RG16_SNORM
- R3_G3_B2, RGB4, RGB5, RGB8, RGB8_SNORM, RGB10, RGB12, RGB16, RGB16_SNORM
- RGBA2, RGBA4, RGB5_A1, RGBA8, RGBA8_SNORM, RGB10_A2, RGBA12, RGBA16, RGBA16_SNORM
- SRGB, SRGB8, SRGB_ALPHA, SRGB8_ALPHA8
- R16F, RG16F, RGB16F, RGBA16F, R32F, RG32F, RGB32F, RGBA32F, R11F_G11F_B10F, RGB9_E5
- R8I, R8UI, R16I, R16UI, R32I, R32UI, RG8I, RG8UI, RG16I, RG16UI, RG32I, RG32UI, RGB8I, RGB8UI, RGB16I, RGB16UI, RGB32I, RGB32UI, RGBA8I, RGBA8UI, RGBA16I, RGBA16UI, RGBA32I, RGBA32UI
- DEPTH_COMPONENT, DEPTH_STENCIL
- DEPTH_COMPONENT16, DEPTH_COMPONENT24, DEPTH_COMPONENT32, DEPTH_COMPONENT32F, DEPTH24_STENCIL8, DEPTH32_STENCIL8
- COMPRESSED_RED, COMPRESSED_RG, COMPRESSED_RGB, COMPRESSED_RGBA, COMPRESSED_SRGB, COMPRESSED_SRGB_ALPHA, COMPRESSED_RED_RGTC1, COMPRESSED_SIGNED_RED_RGTC1, COMPRESSED_RG_RGTC2, COMPRESSED_SIGNED_RG_RGTC2
- R32G32B32A32_FLOAT, R32G32B32A32_UINT, R32G32B32A32_SINT, R32G32B32_FLOAT, R32G32B32_UINT, R32G32B32_SINT
- R16G16B16A16, R16G16B16A16_FLOAT, R16G16B16A16_UINT, R16G16B16A16_UNORM, R16G16B16A16_SINT, R16G16B16A16_SNORM
- R32G32_FLOAT, R32G32_UINT, R32G32_SINT
- R10G10B10A2, R11G11B10_FLOAT, R8G8B8A8, R8G8B8A8_UNORM, R8G8B8A8_UNORM_SRGB, R8G8B8A8_UINT, R8G8B8A8_SINT, R8G8B8A8_SNORM
- R16G16, R16G16_FLOAT, R16G16_UINT, R16G16_UNORM, R16G16_SINT, R16G16_SNORM
- R32_FLOAT, D32_FLOAT, R32_UINT, R32_SINT, D24_UNORM_S8_UINT
- R8G8, R8G8_UNORM, R8G8_UINT, R8G8_SINT, R8G8_SNORM, R16, D16, R16_FLOAT, R16_UNORM, D16_UNORM, R16_UINT, R16_SNORM, R16_SINT, R8, R8_UNORM, R8_UINT, R8_SNORM, R8_SINT, A8
- R9G9B9E5_SHAREDEXP
Deuxième méthode : utilisation de l’élément surface/format_hint[]
Dans cette deuxième méthode, vous pouvez préciser quelques critères que le moteur s’efforcera de respecter, cependant, celui-ci peut ne pas les respecter si ceux-ci ne peuvent être remplis comme par exemple demander une texture RGB 32 UNORM.
La table ci-dessus décrit les différents champs de surface/format_hint :
Nom | Description | Occurrences |
---|---|---|
channels | Contient une énumération décrivant les différentes composantes utilisés pour chaque texel. Les valeurs disponibles sont :
Les valeurs suivantes sont ignorées par le moteur :
Si celle-ci étaient utilisées, le moteur utiliserait le format par défaut RGBA8. |
1 |
range | Contient une énumération décrivant le type utilisé pour chaque texel. Les valeurs possibles sont :
|
1 |
precision | Contient une énumération décrivant la précision utilisé. Les valeurs possibles sont :
|
0 ou 1 |
option | Contient une énumération permettant de définir des options supplémentaires relatives au format. Les valeurs possibles sont :
Les options suivantes ne sont pas reconnus par le moteur :
|
0 ou plus |