» Back To Index
API Demoniak3D/LUA: fonctions de manipulation des vertex pool
La librairie
HYP_VertexPool permet de gérer les vertex pool. Un vertex pool est un objet qui permet de gérer
un grand nombre de vertices indépendants les uns des autres. Chaque vertex peut avoir une position dans l'espace ainsi
qu'une couleur. En présence d'une texture, les vertices sont rendus en mode point sprite. Le mode point sprite est
une fonctionnalité de la carte 3D qui permet de créer un quad texturé et billboardé à partir d'un simple vertex.
En somme, le vertex pool peut être vu comme l'outil de base pour vous permettre de créer votre propre système de
particules. Un des intérets du vertex pool est sa rapidité de rendu.
HYP_VertexPool.Create
HYP_VertexPool.Destroy
HYP_VertexPool.SetVertexPosition
HYP_VertexPool.GetVertexPosition
HYP_VertexPool.SetVertexColor
HYP_VertexPool.GetVertexColor
HYP_VertexPool.SetVerticesColor
HYP_VertexPool.SetVerticesSize
HYP_VertexPool.SetPointSpriteDistAtt
HYP_VertexPool.SetUseOfVertexRenderingState
HYP_VertexPool.SetVertexRenderingState
Create
Create permet de créer un vertex pool.
Syntaxe
id_vp = HYP_VertexPool.Create( num_vertices, [name] );
- num_vertices - [INTEGER] - nombre de vertices du vertex pool.
- name - [STR127] - nom à donner au vertex pool. Optionnel.
Destroy
Destroy permet de détuire un vertex pool créé avec Create().
Syntaxe
HYP_VertexPool.Destroy( name | id );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
SetVertexPosition
SetVertexPosition permet de changer la position d'un vertex particulier du vertex pool.
Syntaxe
HYP_VertexPool.SetVertexPosition( name | id, vertex_index, x, y, z );
HYP_VertexPool.SetVertexPosition_Fast( name | id, vertex_index, x, y, z );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- x - [REAL] - nouvelle coordonnée en X.
- y - [REAL] - nouvelle coordonnée en Y.
- z - [REAL] - nouvelle coordonnée en Z.
Remarques
Pour des raisons de rapidité, SetVertexPosition_Fast ne contrôle pas la validité des paramètres d'entrée.
GetVertexPosition
GetVertexPosition permet de récupérer la position d'un vertex particulier du vertex pool.
Syntaxe
x, y, z = HYP_VertexPool.GetVertexPosition( name | id, vertex_index );
x, y, z = HYP_VertexPool.GetVertexPosition_Fast( name | id, vertex_index );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- x - [REAL] - nouvelle coordonnée en X.
- y - [REAL] - nouvelle coordonnée en Y.
- z - [REAL] - nouvelle coordonnée en Z.
Remarques
Pour des raisons de rapidité, GetVertexPosition_Fast ne contrôle pas la validité des paramètres d'entrée.
SetVertexColor
SetVertexColor permet de changer la couleur d'un vertex particulier du vertex pool.
Syntaxe
HYP_VertexPool.SetVertexColor( name | id, vertex_index, r, g, b, a );
HYP_VertexPool.SetVertexColor_Fast( name | id, vertex_index, r, g, b, a );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- r - [CLAMPED_REAL] - composante rouge de la couleur.
- g - [CLAMPED_REAL] - composante verte de la couleur.
- b - [CLAMPED_REAL] - composante bleue de la couleur.
- a - [CLAMPED_REAL] - composante alpha de la couleur.
Remarques
Pour des raisons de rapidité, SetVertexColor_Fast ne contrôle pas la validité des paramètres d'entrée.
GetVertexColor
GetVertexColor permet de récupérer la couleur d'un vertex particulier du vertex pool.
Syntaxe
r, g, b, a = HYP_VertexPool.GetVertexColor( name | id, vertex_index );
r, g, b, a = HYP_VertexPool.GetVertexColor_Fast( name | id, vertex_index );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- r - [CLAMPED_REAL] - composante rouge de la couleur.
- g - [CLAMPED_REAL] - composante verte de la couleur.
- b - [CLAMPED_REAL] - composante bleue de la couleur.
- a - [CLAMPED_REAL] - composante alpha de la couleur.
Remarques
Pour des raisons de rapidité, GetVertexColor_Fast ne contrôle pas la validité des paramètres d'entrée.
SetVerticesColor
SetVerticesColor permet de changer la couleur de tous les vertices du vertex pool.
Syntaxe
HYP_VertexPool.SetVerticesColor( name | id, r, g, b, a );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- r - [CLAMPED_REAL] - composante rouge de la couleur.
- g - [CLAMPED_REAL] - composante verte de la couleur.
- b - [CLAMPED_REAL] - composante bleue de la couleur.
- a - [CLAMPED_REAL] - composante alpha de la couleur.
SetVerticesSize
SetVerticesSize permet de changer la taille de tous les vertices du vertex pool.
Attention: si vous attachez une texture au vertex pool, les vertices du pool sont
rendus en mode point sprite. Dans ce cas la taille maximale est dépendente du hardware graphique.
Sur nVidia, la taille max est de 63.5.
Syntaxe
HYP_VertexPool.SetVerticesSize( name | id, size );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- size - [REAL] - taille des vertices.
SetPointSpriteDistAtt
SetPointSpriteDistAtt permet de changer les coefficients du facteur d'atténuation de la taille des vertices
avec la distance. Ce facteur est exprimé par 3 valeurs {a, b, c}:
1
dist_atten(d) = -------------------
a + b * d + c * d^2
où d est la distance de la camera, positionné en {0, 0, 0, 1} (coordonnées de l'oeil) au vertex.
Par défaut, {a, b, c} valent {0.0, 0.01, 0.0002}.
Syntaxe
HYP_VertexPool.SetPointSpriteDistAtt( name | id, a, b, c );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- a - [REAL] - facteur d'atténuation constant.
- b - [REAL] - facteur d'atténuation linéaire.
- c - [REAL] - facteur d'atténuation quadratique.
SetVertexRenderingState
SetVertexRenderingState permet de désactiver ou d'activer le rendu d'un vertex particulier.
Syntaxe
HYP_VertexPool.SetVertexRenderingState( name|id, vertex_index, state );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- state - [INTEGER] - active le rendu si 1 ou le désactive si 0.
GetVertexRenderingState
GetVertexRenderingState permet de connaître l'état de rendu d'un vertex particulier.
Syntaxe
state = HYP_VertexPool.GetVertexRenderingState( name|id, vertex_index );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- vertex_index - [INTEGER] - index du vertex. Valeur: 0 à num_vertices_in_pool-1.
- state - [INTEGER] - rendu activé si 1 ou désactivé si 0.
SetUseOfVertexRenderingState
SetUseOfVertexRenderingState permet de désactiver ou d'activer le mode gestion de
rendu par vertex (fonctions SetVertexRenderingState et GetVertexRenderingState).
En effet, le mode de rendu par vertex implique des calculs supplémentaires qui peuvent
être couteux en présence d'un grand nombre de particules.
Par défaut, la gestion est désactivée.
Syntaxe
HYP_VertexPool.SetUseOfVertexRenderingState( name|id, state );
- name - [STR127] - nom du vertex pool.
- id - [INTEGER] - identifiant numérique du vertex pool.
- state - [INTEGER] - active si 1 ou désactive si 0.