Castor3D
0.11.0
Multiplatform 3D engine
|
Classes | |
struct | Config |
struct | Pipeline |
struct | Program |
Classe de base pour tous les programmes des passes d'éclairage. Plus de détails... | |
struct | RenderPass |
Types publics | |
using | PipelinePtr = std::unique_ptr< Pipeline > |
using | PipelineMap = std::map< size_t, PipelinePtr > |
using | PipelineArray = std::array< Pipeline, size_t(ShadowType::eCount) *2u > |
Fonctions membres publiques | |
virtual | ~LightPass ()=default |
Destructeur. Plus de détails... | |
virtual void | initialise (Scene const &scene, OpaquePassResult const &gp, SceneUbo &sceneUbo, RenderPassTimer &timer)=0 |
Initialise la passe d'éclairage. Plus de détails... | |
virtual void | cleanup ()=0 |
Nettoie la passe d'éclairage. Plus de détails... | |
void | update (bool first, castor::Size const &size, Light const &light, Camera const &camera, ShadowMap const *shadowMap, TextureUnit const *vctFirstBounce, TextureUnit const *vctSecondaryBounce) |
Met à jour la passe d'éclairage. Plus de détails... | |
virtual ashes::Semaphore const & | render (uint32_t index, ashes::Semaphore const &toWait) |
Dessine la passe de rendu. Plus de détails... | |
virtual void | accept (PipelineVisitorBase &visitor)=0 |
Fonction d'acceptation de visiteur. Plus de détails... | |
Pipeline | createPipeline (LightType lightType, ShadowType shadowType, bool rsm, ShadowMap const *shadowMap, TextureUnit const *vctFirstBounce, TextureUnit const *vctSecondaryBounce) |
virtual uint32_t | getCount () const =0 |
ashes::Semaphore const & | getSemaphore () const |
castor::String const & | getName () const |
Fonctions membres publiques statiques | |
static size_t | makeKey (Light const &light, ShadowMap const *shadowMap, TextureUnit const *vctFirstBounce, TextureUnit const *vctSecondaryBounce) |
Types protégés | |
using | ProgramPtr = std::unique_ptr< Program > |
Fonctions membres protégées | |
virtual Pipeline * | doGetPipeline (bool first, Light const &light, ShadowMap const *shadowMap, TextureUnit const *vctFirstBounce, TextureUnit const *vctSecondaryBounce) |
LightPass (RenderDevice const &device, castor::String const &suffix, ashes::RenderPassPtr firstRenderPass, ashes::RenderPassPtr blendRenderPass, LightPassConfig const &lpConfig, VoxelizerUbo const *vctConfig) | |
Constructeur. Plus de détails... | |
void | doInitialise (Scene const &scene, OpaquePassResult const &gp, LightType type, ashes::VertexBufferBase &vbo, ashes::PipelineVertexInputStateCreateInfo const &vertexLayout, SceneUbo &sceneUbo, UniformBufferT< ModelMatrixUboConfiguration > const *modelMatrixUbo, RenderPassTimer &timer) |
Initialise la passe d'éclairage. Plus de détails... | |
void | doCleanup () |
Nettoie la passe d'éclairage. Plus de détails... | |
virtual void | doUpdate (bool first, castor::Size const &size, Light const &light, Camera const &camera)=0 |
Met à jour la passe d'éclairage. Plus de détails... | |
void | doPrepareCommandBuffer (Pipeline &pipeline, bool first) |
Prépare le tampon de commandes du pipeline donné. Plus de détails... | |
virtual ShaderPtr | doGetPhongPixelShaderSource (SceneFlags const &sceneFlags, LightType lightType, ShadowType shadowType, bool rsm) const |
Récupère le source du pixel shader pour cette passe lumineuse. Plus de détails... | |
virtual ShaderPtr | doGetPbrMRPixelShaderSource (SceneFlags const &sceneFlags, LightType lightType, ShadowType shadowType, bool rsm) const |
Récupère le source du pixel shader pour cette passe lumineuse. Plus de détails... | |
virtual ShaderPtr | doGetPbrSGPixelShaderSource (SceneFlags const &sceneFlags, LightType lightType, ShadowType shadowType, bool rsm) const |
Récupère le source du pixel shader pour cette passe lumineuse. Plus de détails... | |
virtual ShaderPtr | doGetVertexShaderSource (SceneFlags const &sceneFlags) const =0 |
Récupère le source du vertex shader pour cette passe lumineuse. Plus de détails... | |
virtual ProgramPtr | doCreateProgram ()=0 |
Crée un programme de passe d'éclairage. Plus de détails... | |
using castor3d::LightPass::PipelineArray = std::array< Pipeline, size_t( ShadowType::eCount ) * 2u > |
using castor3d::LightPass::PipelineMap = std::map< size_t, PipelinePtr > |
using castor3d::LightPass::PipelinePtr = std::unique_ptr< Pipeline > |
|
protected |
|
virtualdefault |
Destructeur.
|
protected |
Constructeur.
[in] | device | Le device GPU. |
[in] | suffix | Le suffixe du nom de la passe. |
[in] | firstRenderPass | La passe de rendu pour la première source lumineuse. |
[in] | blendRenderPass | La passe de rendu pour les autres sources lumineuses. |
[in] | lpConfig | La configuration de la passe d'éclairage. |
[in] | vctConfig | L'UBO du voxelizer. |
|
pure virtual |
Fonction d'acceptation de visiteur.
visitor | Le ... visiteur. |
Implémenté dans castor3d::DirectionalLightPass, castor3d::PointLightPass, et castor3d::SpotLightPass.
|
pure virtual |
Nettoie la passe d'éclairage.
Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.
Pipeline castor3d::LightPass::createPipeline | ( | LightType | lightType, |
ShadowType | shadowType, | ||
bool | rsm, | ||
ShadowMap const * | shadowMap, | ||
TextureUnit const * | vctFirstBounce, | ||
TextureUnit const * | vctSecondaryBounce | ||
) |
|
protected |
Nettoie la passe d'éclairage.
|
protectedpure virtual |
Crée un programme de passe d'éclairage.
Implémenté dans castor3d::DirectionalLightPass.
|
protectedvirtual |
Récupère le source du pixel shader pour cette passe lumineuse.
[in] | sceneFlags | Les indicateurs de scène. |
[in] | lightType | Le type de source lumineuse. |
[in] | shadowType | Le type d'ombres. |
[in] | rsm | Dit si les RSM doivent être générées. |
|
protectedvirtual |
Récupère le source du pixel shader pour cette passe lumineuse.
[in] | sceneFlags | Les indicateurs de scène. |
[in] | lightType | Le type de source lumineuse. |
[in] | shadowType | Le type d'ombres. |
[in] | rsm | Dit si les RSM doivent être générées. |
|
protectedvirtual |
Récupère le source du pixel shader pour cette passe lumineuse.
[in] | sceneFlags | Les indicateurs de scène. |
[in] | lightType | Le type de source lumineuse. |
[in] | shadowType | Le type d'ombres. |
[in] | rsm | Dit si les RSM doivent être générées. |
|
protectedvirtual |
|
protectedpure virtual |
Récupère le source du vertex shader pour cette passe lumineuse.
[in] | sceneFlags | Les indicateurs de scène. |
Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.
|
protected |
Initialise la passe d'éclairage.
[in] | scene | La scène. |
[in] | gp | Les tampons de la passe géométries. |
[in] | type | Le type de source lumineuse. |
[in] | vbo | Le VBO. |
[in] | vertexLayout | Le layout du tampon de sommets. |
[in] | sceneUbo | L'UBO de scène. |
[in] | modelMatrixUbo | L'UBO optionnel de matrices modèle. |
[in] | timer | Le timer de passe. |
|
protected |
Prépare le tampon de commandes du pipeline donné.
[in] | pipeline | Le pipeline de la passe d'éclairage. |
[in] | first | Dit s'il s'agit de la première passe (true ) ou la passe de mélange (false ). |
|
protectedpure virtual |
Met à jour la passe d'éclairage.
[in] | first | Dit s'il s'agit de la première passe. |
[in] | size | Les dimensions de la zone de rendu. |
[in] | light | La source lumineuse. |
[in] | camera | La caméra. |
Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.
|
pure virtual |
name Accesseurs.
Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.
|
inline |
|
inline |
Références m_signalImgFinished.
|
pure virtual |
Initialise la passe d'éclairage.
[in] | scene | La scène. |
[in] | gp | Les tampons de la passe géométries. |
[in] | sceneUbo | L'UBO de scène. |
[in] | timer | Le timer de passe. |
Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.
|
static |
|
virtual |
Dessine la passe de rendu.
[in] | index | L'indice de la passe de rendu. |
[in] | toWait | Le sémaphore de la précédente passe de rendu. |
Réimplémentée dans castor3d::MeshLightPass.
void castor3d::LightPass::update | ( | bool | first, |
castor::Size const & | size, | ||
Light const & | light, | ||
Camera const & | camera, | ||
ShadowMap const * | shadowMap, | ||
TextureUnit const * | vctFirstBounce, | ||
TextureUnit const * | vctSecondaryBounce | ||
) |
Met à jour la passe d'éclairage.
[in] | first | Dit s'il s'agit de la première passe. |
[in] | size | Les dimensions de la zone de rendu. |
[in] | light | La source lumineuse. |
[in] | camera | La caméra. |
[in] | shadowMap | La texture d'ombres, optionnelle. |
[in] | vctFirstBounce | Le résultat du premier rebond de VCT. |
[in] | vctSecondaryBounce | Le résultat du second rebond de VCT. |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Référencé par getSemaphore().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |