Castor3D
..
|
Implémentation du mappage d'ombres. Plus de détails...
Fonctions membres publiques | |
C3D_API | ShadowMap (Engine &engine, TextureUnit &&shadowMap, TextureUnit &&linearMap, ShadowMapPassSPtr pass) |
Constructeur. Plus de détails... | |
C3D_API | ~ShadowMap () |
Destructeur. Plus de détails... | |
C3D_API bool | initialise () |
Initialise le frame buffer et les données spécifiques au type de source lumineuse. Plus de détails... | |
C3D_API void | cleanup () |
Nettoie le frame buffer et les données spécifiques au type de source lumineuse. Plus de détails... | |
virtual C3D_API void | update (Camera const &camera, RenderQueueArray &queues, Light &light, uint32_t index)=0 |
Met à jour les passes, en sélectionnant les lumières qui projetteront une ombre. Plus de détails... | |
virtual C3D_API void | render ()=0 |
Dessine la shadow map de la lumière donnée. Plus de détails... | |
virtual C3D_API void | debugDisplay (castor::Size const &size, uint32_t index)=0 |
Dumpe la texture d'ombres sur l'écran. Plus de détails... | |
C3D_API void | updateFlags (PassFlags &passFlags, TextureChannels &textureFlags, ProgramFlags &programFlags, SceneFlags &sceneFlags) const |
Modifie les indicateurs donnés pour le faire correspondre au pré-requis de la passe de rendus. Plus de détails... | |
C3D_API glsl::Shader | getVertexShaderSource (PassFlags const &passFlags, TextureChannels const &textureFlags, ProgramFlags const &programFlags, SceneFlags const &sceneFlags, bool invertNormals) const |
Récupère le source du vertex shader qui correspond aux indicateurs donnés. Plus de détails... | |
C3D_API glsl::Shader | getGeometryShaderSource (PassFlags const &passFlags, TextureChannels const &textureFlags, ProgramFlags const &programFlags, SceneFlags const &sceneFlags) const |
Récupère le source du geometry shader qui correspond aux indicateurs donnés. Plus de détails... | |
C3D_API glsl::Shader | getPixelShaderSource (PassFlags const &passFlags, TextureChannels const &textureFlags, ProgramFlags const &programFlags, SceneFlags const &sceneFlags, ComparisonFunc alphaFunc) const |
Récupère le source du pixel shader qui correspond aux indicateurs donnés. Plus de détails... | |
TextureUnit & | getTexture () |
TextureUnit const & | getTexture () const |
TextureUnit & | getDepth () |
TextureUnit const & | getDepth () const |
Fonctions membres protégées | |
void | doDiscardAlpha (glsl::GlslWriter &writer, TextureChannels const &textureFlags, ComparisonFunc alphaFunc, glsl::Int const &material, shader::Materials const &materials) const |
Défausse les matériaux avec du mélange alpha ou un fonction alpha, si besoin est. Plus de détails... | |
Attributs protégés | |
FrameBufferSPtr | m_frameBuffer |
std::set< GeometryBuffersSPtr > | m_geometryBuffers |
ShadowMapPassSPtr | m_pass |
TextureUnit | m_shadowMap |
TextureUnit | m_linearMap |
Implémentation du mappage d'ombres.
C3D_API castor3d::ShadowMap::ShadowMap | ( | Engine & | engine, |
TextureUnit && | shadowMap, | ||
TextureUnit && | linearMap, | ||
ShadowMapPassSPtr | pass | ||
) |
Constructeur.
[in] | engine | Le moteur. |
[in] | shadowMap | La texture d'ombres. |
[in] | linearMap | La texture de profondeur linéaire. |
[in] | pass | La passe utilisée pour rendre cette texture. |
C3D_API castor3d::ShadowMap::~ShadowMap | ( | ) |
Destructeur.
C3D_API void castor3d::ShadowMap::cleanup | ( | ) |
Nettoie le frame buffer et les données spécifiques au type de source lumineuse.
|
pure virtual |
Dumpe la texture d'ombres sur l'écran.
[in] | size | Les dimensions d'affichage. |
[in] | index | L'indice de la texture d'ombres (pour calculer sa position). |
Implémenté dans castor3d::ShadowMapDirectional, castor3d::ShadowMapPoint, et castor3d::ShadowMapSpot.
|
protected |
Défausse les matériaux avec du mélange alpha ou un fonction alpha, si besoin est.
[in] | writer | Le writer GLSL. |
[in] | textureFlags | Les indicateurs de texture. |
alphaFunc | La fonction d'opacité. | |
[in] | material | L'indice du matériau. |
[in] | materials | Les matériaux. |
Référencé par getDepth().
|
inline |
Références m_linearMap.
Référencé par castor3d::LightPassShadow< LtType >::render().
|
inline |
C3D_API glsl::Shader castor3d::ShadowMap::getGeometryShaderSource | ( | PassFlags const & | passFlags, |
TextureChannels const & | textureFlags, | ||
ProgramFlags const & | programFlags, | ||
SceneFlags const & | sceneFlags | ||
) | const |
Récupère le source du geometry shader qui correspond aux indicateurs donnés.
[in] | passFlags | Une combinaison de PassFlag. |
[in] | textureFlags | Une combinaison de TextureChannel. |
[in] | programFlags | Une combinaison de ProgramFlag. |
[in] | sceneFlags | Les indicateurs relatifs à la scène. |
C3D_API glsl::Shader castor3d::ShadowMap::getPixelShaderSource | ( | PassFlags const & | passFlags, |
TextureChannels const & | textureFlags, | ||
ProgramFlags const & | programFlags, | ||
SceneFlags const & | sceneFlags, | ||
ComparisonFunc | alphaFunc | ||
) | const |
Récupère le source du pixel shader qui correspond aux indicateurs donnés.
[in] | passFlags | Une combinaison de PassFlag. |
[in] | textureFlags | Une combinaison de TextureChannel. |
[in] | programFlags | Une combinaison de ProgramFlag. |
[in] | sceneFlags | Les indicateurs relatifs à la scène. |
[in] | alphaFunc | La fonction de test alpha. |
|
inline |
Références m_shadowMap.
Référencé par castor3d::LightPassShadowTraits< LightType::eDirectional >::getTexture(), castor3d::LightPassShadowTraits< LightType::eSpot >::getTexture(), et castor3d::LightPassShadow< LtType >::render().
|
inline |
Références m_shadowMap.
C3D_API glsl::Shader castor3d::ShadowMap::getVertexShaderSource | ( | PassFlags const & | passFlags, |
TextureChannels const & | textureFlags, | ||
ProgramFlags const & | programFlags, | ||
SceneFlags const & | sceneFlags, | ||
bool | invertNormals | ||
) | const |
Récupère le source du vertex shader qui correspond aux indicateurs donnés.
[in] | passFlags | Une combinaison de PassFlag. |
[in] | textureFlags | Une combinaison de TextureChannel. |
[in] | programFlags | Une combinaison de ProgramFlag. |
[in] | sceneFlags | Les indicateurs relatifs à la scène. |
[in] | invertNormals | Dit si les normales doivent être inversées, dans le programme. |
C3D_API bool castor3d::ShadowMap::initialise | ( | ) |
Initialise le frame buffer et les données spécifiques au type de source lumineuse.
|
pure virtual |
Dessine la shadow map de la lumière donnée.
Implémenté dans castor3d::ShadowMapDirectional, castor3d::ShadowMapPoint, et castor3d::ShadowMapSpot.
|
pure virtual |
Met à jour les passes, en sélectionnant les lumières qui projetteront une ombre.
[in] | camera | La caméra de l'observateur. |
[out] | queues | Reçoit les files de rendu nécessaires pour le dessin de la frame. |
[out] | light | La source lumineuse. |
[out] | index | L'indice de la texture. |
Implémenté dans castor3d::ShadowMapDirectional, castor3d::ShadowMapPoint, et castor3d::ShadowMapSpot.
C3D_API void castor3d::ShadowMap::updateFlags | ( | PassFlags & | passFlags, |
TextureChannels & | textureFlags, | ||
ProgramFlags & | programFlags, | ||
SceneFlags & | sceneFlags | ||
) | const |
Modifie les indicateurs donnés pour le faire correspondre au pré-requis de la passe de rendus.
[in,out] | passFlags | Une combinaison de PassFlag. |
[in,out] | textureFlags | Une combinaison de TextureChannel. |
[in,out] | programFlags | Une combinaison de ProgramFlag. |
[in,out] | sceneFlags | Une combinaison de SceneFlag. |
|
protected |
Le tampon d'image.
|
protected |
Les tampons de géométrie.
|
protected |
La texture de profondeur linéaire.
Référencé par getDepth().
|
protected |
Les passes de shadow mapping utilisées pendant le rendu.
|
protected |
La texture de mappage d'ombres.
Référencé par castor3d::ShadowMapPoint::getTexture(), et getTexture().