Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

ShaderCenter Class Reference

Classe de gestion de Shaders. More...

#include <ShaderCenter.h>

List of all members.

Public Member Functions

 ShaderCenter ()
 Constructeur de ShaderCenter.
void registerShader (Shader *shader, int type)
 Fonction d'enregistrement de shader.
void unregisterShader (int type)
 Fonction de desenregistrement de shader.
void registerParameter (int shaderType, int type, CGparameter paramName, bool refreshable, int pass=1)
 Fonction d'enregistrement de parametre pour un shader.
void refreshParameters (int shaderType)
 Fonction de rafraichissement des parametres.
void registerTexture (int shaderType, CGparameter texParamName, GLuint id)
 Fonction d'enregistrement d'une texture pour un shader.
void unregisterParameters (int shaderType)
 Fonction de desenregistrement de parametres dans un shader.
void unregisterTextures (int shaderType)
 Fonction de desenregistrement de toutes les textures pour un shader.
void scheduleShaderForChange (unsigned int shaderType, Shader *newShader)
 Fonction de demande de swap de shader.
void scheduleTextureForChange (unsigned int shaderType, CGparameter param, Texture *texToAdd, Texture *texToRemove)
 Fonction de demande de swap de texture.
void flushScheduledShaders ()
 Fonction de swap de shaders.
void flushScheduledTextures ()
 Fonction de swap de textures.
void executeShader (int type, int pass=1)
 Fonction d'activation d'un shader.
void endShader (int type)
 Fonction de desactivation d'un shader.
void changeTexture (int shaderType, CGparameter texParamName, GLuint newId)
 Procede au swap immediat d'une texture.

Static Public Member Functions

static void getShaderParam_ModelView (CGparameter p)
static void getShaderParam_ModelViewProj (CGparameter p)
static void getShaderParam_dirLumiere (CGparameter p)
static void getShaderParam_observateur (CGparameter p)
static void getShaderParam_couleurLumiere (CGparameter p)
static void getShaderParam_tailleLightMap (CGparameter p)
static void getShaderParam_gmLod (CGparameter p)
static void getShaderParam_gmLodX (CGparameter p)
static void getShaderParam_gmLodY (CGparameter p)
static void getShaderParam_gmPatchSize (CGparameter p)
static void getShaderParam_t (CGparameter p)
static void getShaderParam_lakeTranslation (CGparameter p)
static void getShaderParam_ModelViewInverseCube (CGparameter p)

Static Public Attributes

static unsigned int tailleLightMap
 Variable contenant la taille de la lightmap pour les shaders.

Private Attributes

map< int, shaderInfoPtr, ltintshaderList
 Liste des shaders enregistres.
vector< textureInfoPtrtextureList [NUM_SHADER_TYPES]
 Liste des textures enregistrees.
int activatedShader
 Code du shader active dans le ShaderCenter.
vector< shaderChangePtrscheduledShaders
 Liste des shaders a swapper.
vector< textureChangePtrscheduledTextures
 Liste des textures a swapper.

Static Private Attributes

static void * paramTypesFuncs [NUM_PARAM_TYPES]
 Liste des fonctions associees aux parametres.


Detailed Description

Classe de gestion de Shaders.

Cette classe permet une gestion simplifiee des shaders. Lorsqu'un Shader doit etre utilise, un objet derivant de la classe Shader et cree et s'enregistre aupres du ShaderCenter. Pour cela, il s'enregistre comme shader en indiquant sur quels elements de la scene il doit etre utilise. Il indique ensuite de quels parametres et de quelles textures il aura besoin. Lors du dessin de l'element de scene correspondant, le renderer demandera au ShaderCenter d'activer le shader le temps du rendu, puis de le desactiver.

Le ShaderCenter supporte aussi le swapping de shaders et de textures. Pour cela, le shader ou la texture doit etre declares comme voulant etre changes, en indiquant le nouvel objet. Le changement se fera au debut du prochain rendu, puisqu'il ne faut pas changer d'objet en cours de rendu.

La procedure exacte est donc la suivante :

Pour ajouter un nouveau type de parametre, la procedure est la suivante :


Constructor & Destructor Documentation

ShaderCenter::ShaderCenter  ) 
 

Constructeur de ShaderCenter.

Initialise les dictionnaires de shaders.


Member Function Documentation

void ShaderCenter::changeTexture int  shaderType,
CGparameter  texParamName,
GLuint  newId
 

Procede au swap immediat d'une texture.

Parameters:
shaderType Type du shader sur lequel changer la texture.
texParamName Parametre Cg correspondant a la texture.
newId Identifiant de la texture a mettre en place.
Cette fonction procede au changement immediat d'uen texture, sans attendre le prochain rendu. Il faut pour cela specifier sur quel shader effectuer le changement, l'identifiant de la nouvelle texture, et le parametre Cg correspondant.

void ShaderCenter::endShader int  type  ) 
 

Fonction de desactivation d'un shader.

Parameters:
type Type du shader a desactiver.
Cette fonction permet de desactiver un shader lorsque le rendu des elements le concernant est termine. Tous les parametres et textures associes sont egalement desactives.

void ShaderCenter::executeShader int  type,
int  pass = 1
 

Fonction d'activation d'un shader.

Parameters:
type Type du shader a activer.
pass Indique quelle passe de parametre doit etre envoyee au programme Cg.
Cette fonction active un shader pour un rendu, en passant les parametre pour le numero de passe demande (par defaut 1). Tous les parametres et toutes les textures enregistrees pour ce shader seront egalement activees. Si la passe specifiee est differente de 1, alors l'activation du shader n'est pas effectuee, et seul le passage des parametres de la passe demandee est faite.

void ShaderCenter::flushScheduledShaders  ) 
 

Fonction de swap de shaders.

Effectue les changements de shaders demandes depuis le dernier flush. Tous les changements de shaders demandes par la fonction scheduleShaderForChange seront donc effectues.

void ShaderCenter::flushScheduledTextures  ) 
 

Fonction de swap de textures.

Effectue les changements de textures demandes depuis le dernier flush. Tous les changements de textures demandes par la fonction scheduleTextureForChange seront donc effectues.

void ShaderCenter::getShaderParam_couleurLumiere CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_dirLumiere CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_gmLod CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_gmLodX CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_gmLodY CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_gmPatchSize CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_lakeTranslation CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_ModelView CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_ModelViewInverseCube CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_ModelViewProj CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_observateur CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_t CGparameter  p  )  [static]
 

void ShaderCenter::getShaderParam_tailleLightMap CGparameter  p  )  [static]
 

void ShaderCenter::refreshParameters int  shaderType  ) 
 

Fonction de rafraichissement des parametres.

Parameters:
int shaderType Type du shader
Cette fonction permet de rafraichir des parametres declares comme tel pendant l'execution d'un shader.

void ShaderCenter::registerParameter int  shaderType,
int  type,
CGparameter  paramName,
bool  refreshable,
int  pass = 1
 

Fonction d'enregistrement de parametre pour un shader.

Parameters:
shaderType Type du shader sur lequel enregistrer le parametre.
type Type du parametre a enregistrer.
paramName Identifiant du parametre dans le programme Cg.
refreshable Indique si le parametre peut etre rafraichi pendant l'execution.
pass Indique la passe a laquelle le parametre doit etre rafraichi (1 par defaut).
Cette fonction permet d'enregistrer un parametre pour un shader donne. Pour cela, il est necessaire de fournir le type du shader, le type du parametre, ainsi que l'identifiant du parametre dans le programem Cg. De plus, un numero de passe peut etre indique si les parametres doivent etre passes en plusieurs fois (par exemple en appliquant des transformations entre deux passes).

void ShaderCenter::registerShader Shader shader,
int  type
 

Fonction d'enregistrement de shader.

Parameters:
shader Shader a enregistrer
type Type d'element sur lequel utiliser le shader dans la scene.
Cette fonction enregistre un shader aupres du ShaderCenter en lui indiquant le type d'element de la scene ou le shader doit etre utilise.

void ShaderCenter::registerTexture int  shaderType,
CGparameter  texParamName,
GLuint  id
 

Fonction d'enregistrement d'une texture pour un shader.

Parameters:
shaderType Type du shader pour lequel enregistrer la texture.
texParamName Identifiant du parametre de texture dans le programme Cg.
id Identifiant OpenGL de la texture a enregistrer.
Cette fonction enregistre une texture aupres du ShaderCenter pour un shader donne. La texure sera activee a chaque utilisation du shader.

void ShaderCenter::scheduleShaderForChange unsigned int  shaderType,
Shader newShader
 

Fonction de demande de swap de shader.

Parameters:
shaderType Type du shader a changer.
newShader Nouveau shader a utiliser pour ce type.
Cette fonction demande un changement de shader. Ce changement sera effectue au debut du prochain rendu, pour ne pas faire un rendu inconsistent.

void ShaderCenter::scheduleTextureForChange unsigned int  shaderType,
CGparameter  param,
Texture texToAdd,
Texture texToRemove
 

Fonction de demande de swap de texture.

Parameters:
shaderType Type du shader sur lequel changer la texture.
param Parametre Cg pour la texture a changer.
texToAdd Texture a mettre en place dans le shader.
texToRemove Texture a retirer du shader.

void ShaderCenter::unregisterParameters int  shaderType  ) 
 

Fonction de desenregistrement de parametres dans un shader.

Parameters:
shaderType Type du shader sur lequel desenregistrer le parametre.
Cette fonction desenregistre tous les parametres pour un shader donne.

void ShaderCenter::unregisterShader int  type  ) 
 

Fonction de desenregistrement de shader.

Parameters:
type Type du shader a desenregistrer.
Cette fonction permet de desenregistrer un shader pour arreter de l'utiliser. Comme seul un shader peut etre utilise par type d'element de la scene, le type du shader est donc la seule information a fournir pour la desactivation.

void ShaderCenter::unregisterTextures int  shaderType  ) 
 

Fonction de desenregistrement de toutes les textures pour un shader.

Parameters:
shaderType Type du shader pour lequel desenregistrer les textures.
Cette fonction desenregistre toutes les textures associees a un shader donne.


Member Data Documentation

int ShaderCenter::activatedShader [private]
 

Code du shader active dans le ShaderCenter.

Ce code indique si un shader est actuellement active, et si oui, lequel. Cela permet ensuite de bloquer le desenregistrement d'un shader active, ou bien d'en activer deux simultanement.

void * ShaderCenter::paramTypesFuncs [static, private]
 

Initial value:

Liste des fonctions associees aux parametres.

Cette variable contient la liste ordonnee des fonctions utilisees pour le renseignement des parametres uniformes des shaders. Bien que le pointeur de fonction soit conserve en (void *), toutes ces fonctions ont comme signature void *func(CGparameter).

vector<shaderChangePtr> ShaderCenter::scheduledShaders [private]
 

Liste des shaders a swapper.

Cette variable contient la liste des shaders pour lesquels un changement a ete demande depuis le dernier flushScheduledShaders().

vector<textureChangePtr> ShaderCenter::scheduledTextures [private]
 

Liste des textures a swapper.

Cette variable contient la liste des textures pour lesquels un changement a ete demande depuis le dernier flushScheduledTextures().

map<int, shaderInfoPtr, ltint> ShaderCenter::shaderList [private]
 

Liste des shaders enregistres.

Liste des shaders enregistres dans le ShaderCenter. La cle du dictionnaire est le type du shader et sa valeur est une structure d'information contenant le shader et la liste des parametres qui y sont associes.

unsigned int ShaderCenter::tailleLightMap [static]
 

Variable contenant la taille de la lightmap pour les shaders.

Parametre de shader contenant la taille de la lightmap pour effectuer les calculs de coordonnees de texture dans les shaders.

vector<textureInfoPtr> ShaderCenter::textureList[NUM_SHADER_TYPES] [private]
 

Liste des textures enregistrees.

Liste des textures enregistrees pour un shader dans le ShaderCenter. Elle contient pour chaque texture une structure d'information indiquant l'identifiant de la texture dans le programme Cg et l'identifiant OpenGL de la texture.


Generated on Thu Mar 24 12:53:49 2005 for Septant by  doxygen 1.4.1