Castor3D  0.11.0
Multiplatform 3D engine
Classes | Types publics | Fonctions membres publiques | Fonctions membres publiques statiques | Types protégés | Fonctions membres protégées | Attributs protégés | Liste de tous les membres
Référence de la classe castor3d::LightPassabstract
Graphe d'héritage de castor3d::LightPass:
Inheritance graph
[légende]
Graphe de collaboration de castor3d::LightPass:
Collaboration graph
[légende]

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 PipelinedoGetPipeline (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...
 

Attributs protégés

Enginem_engine
 
RenderDevice const & m_device
 
Scene const * m_scene { nullptr }
 
SceneUbom_sceneUbo { nullptr }
 
UniformBufferT< ModelMatrixUboConfiguration > const * m_mmUbo { nullptr }
 
VoxelizerUbo const * m_vctUbo { nullptr }
 
ashes::PipelineVertexInputStateCreateInfo m_usedVertexLayout { 0u, {}, {} }
 
ashes::PipelineVertexInputStateCreateInfo const * m_pUsedVertexLayout { nullptr }
 
RenderPassTimerm_timer { nullptr }
 
UniformBufferBase const * m_baseUbo { nullptr }
 
bool m_shadows
 
bool m_voxels
 
bool m_generatesIndirect
 
MatrixUbo m_matrixUbo
 
RenderPass m_firstRenderPass
 
RenderPass m_blendRenderPass
 
castor3d::ShaderModule m_vertexShader
 
castor3d::ShaderModule m_pixelShader
 
std::array< ashes::CommandBufferPtr, 2u > m_commandBuffers
 
uint32_t m_commandBufferIndex { 0u }
 
PipelineMap m_pipelines
 
Pipelinem_pipeline { nullptr }
 
SamplerSPtr m_sampler
 
ashes::VertexBufferPtr< float > m_vertexBuffer
 
ashes::PipelineVertexInputStateCreateInfoPtr m_vertexLayout
 
GpInfoUbo const & m_gpInfoUbo
 
uint32_t m_offset { 0u }
 
ashes::SemaphorePtr m_signalImgReady
 
ashes::SemaphorePtr m_signalImgFinished
 
ashes::FencePtr m_fence
 
OpaquePassResult const * m_opaquePassResult {}
 

Documentation des définitions de type membres

◆ PipelineArray

using castor3d::LightPass::PipelineArray = std::array< Pipeline, size_t( ShadowType::eCount ) * 2u >

◆ PipelineMap

using castor3d::LightPass::PipelineMap = std::map< size_t, PipelinePtr >

◆ PipelinePtr

using castor3d::LightPass::PipelinePtr = std::unique_ptr< Pipeline >

◆ ProgramPtr

using castor3d::LightPass::ProgramPtr = std::unique_ptr< Program >
protected

Documentation des constructeurs et destructeur

◆ ~LightPass()

virtual castor3d::LightPass::~LightPass ( )
virtualdefault

Destructeur.

◆ LightPass()

castor3d::LightPass::LightPass ( RenderDevice const &  device,
castor::String const &  suffix,
ashes::RenderPassPtr  firstRenderPass,
ashes::RenderPassPtr  blendRenderPass,
LightPassConfig const &  lpConfig,
VoxelizerUbo const *  vctConfig 
)
protected

Constructeur.

Paramètres
[in]deviceLe device GPU.
[in]suffixLe suffixe du nom de la passe.
[in]firstRenderPassLa passe de rendu pour la première source lumineuse.
[in]blendRenderPassLa passe de rendu pour les autres sources lumineuses.
[in]lpConfigLa configuration de la passe d'éclairage.
[in]vctConfigL'UBO du voxelizer.

Documentation des fonctions membres

◆ accept()

virtual void castor3d::LightPass::accept ( PipelineVisitorBase visitor)
pure virtual

Fonction d'acceptation de visiteur.

Paramètres
visitorLe ... visiteur.

Implémenté dans castor3d::DirectionalLightPass, castor3d::PointLightPass, et castor3d::SpotLightPass.

◆ cleanup()

virtual void castor3d::LightPass::cleanup ( )
pure virtual

Nettoie la passe d'éclairage.

Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.

◆ createPipeline()

Pipeline castor3d::LightPass::createPipeline ( LightType  lightType,
ShadowType  shadowType,
bool  rsm,
ShadowMap const *  shadowMap,
TextureUnit const *  vctFirstBounce,
TextureUnit const *  vctSecondaryBounce 
)

◆ doCleanup()

void castor3d::LightPass::doCleanup ( )
protected

Nettoie la passe d'éclairage.

◆ doCreateProgram()

virtual ProgramPtr castor3d::LightPass::doCreateProgram ( )
protectedpure virtual

Crée un programme de passe d'éclairage.

Renvoie
Le programme créé.

Implémenté dans castor3d::DirectionalLightPass.

◆ doGetPbrMRPixelShaderSource()

virtual ShaderPtr castor3d::LightPass::doGetPbrMRPixelShaderSource ( SceneFlags const &  sceneFlags,
LightType  lightType,
ShadowType  shadowType,
bool  rsm 
) const
protectedvirtual

Récupère le source du pixel shader pour cette passe lumineuse.

Paramètres
[in]sceneFlagsLes indicateurs de scène.
[in]lightTypeLe type de source lumineuse.
[in]shadowTypeLe type d'ombres.
[in]rsmDit si les RSM doivent être générées.
Renvoie
Le source.

◆ doGetPbrSGPixelShaderSource()

virtual ShaderPtr castor3d::LightPass::doGetPbrSGPixelShaderSource ( SceneFlags const &  sceneFlags,
LightType  lightType,
ShadowType  shadowType,
bool  rsm 
) const
protectedvirtual

Récupère le source du pixel shader pour cette passe lumineuse.

Paramètres
[in]sceneFlagsLes indicateurs de scène.
[in]lightTypeLe type de source lumineuse.
[in]shadowTypeLe type d'ombres.
[in]rsmDit si les RSM doivent être générées.
Renvoie
Le source.

◆ doGetPhongPixelShaderSource()

virtual ShaderPtr castor3d::LightPass::doGetPhongPixelShaderSource ( SceneFlags const &  sceneFlags,
LightType  lightType,
ShadowType  shadowType,
bool  rsm 
) const
protectedvirtual

Récupère le source du pixel shader pour cette passe lumineuse.

Paramètres
[in]sceneFlagsLes indicateurs de scène.
[in]lightTypeLe type de source lumineuse.
[in]shadowTypeLe type d'ombres.
[in]rsmDit si les RSM doivent être générées.
Renvoie
Le source.

◆ doGetPipeline()

virtual Pipeline* castor3d::LightPass::doGetPipeline ( bool  first,
Light const &  light,
ShadowMap const *  shadowMap,
TextureUnit const *  vctFirstBounce,
TextureUnit const *  vctSecondaryBounce 
)
protectedvirtual

◆ doGetVertexShaderSource()

virtual ShaderPtr castor3d::LightPass::doGetVertexShaderSource ( SceneFlags const &  sceneFlags) const
protectedpure virtual

Récupère le source du vertex shader pour cette passe lumineuse.

Paramètres
[in]sceneFlagsLes indicateurs de scène.
Renvoie
Le source.

Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.

◆ doInitialise()

void castor3d::LightPass::doInitialise ( Scene const &  scene,
OpaquePassResult const &  gp,
LightType  type,
ashes::VertexBufferBase &  vbo,
ashes::PipelineVertexInputStateCreateInfo const &  vertexLayout,
SceneUbo sceneUbo,
UniformBufferT< ModelMatrixUboConfiguration > const *  modelMatrixUbo,
RenderPassTimer timer 
)
protected

Initialise la passe d'éclairage.

Paramètres
[in]sceneLa scène.
[in]gpLes tampons de la passe géométries.
[in]typeLe type de source lumineuse.
[in]vboLe VBO.
[in]vertexLayoutLe layout du tampon de sommets.
[in]sceneUboL'UBO de scène.
[in]modelMatrixUboL'UBO optionnel de matrices modèle.
[in]timerLe timer de passe.

◆ doPrepareCommandBuffer()

void castor3d::LightPass::doPrepareCommandBuffer ( Pipeline pipeline,
bool  first 
)
protected

Prépare le tampon de commandes du pipeline donné.

Paramètres
[in]pipelineLe pipeline de la passe d'éclairage.
[in]firstDit s'il s'agit de la première passe (true) ou la passe de mélange (false).

◆ doUpdate()

virtual void castor3d::LightPass::doUpdate ( bool  first,
castor::Size const &  size,
Light const &  light,
Camera const &  camera 
)
protectedpure virtual

Met à jour la passe d'éclairage.

Paramètres
[in]firstDit s'il s'agit de la première passe.
[in]sizeLes dimensions de la zone de rendu.
[in]lightLa source lumineuse.
[in]cameraLa caméra.

Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.

◆ getCount()

virtual uint32_t castor3d::LightPass::getCount ( ) const
pure virtual

name Accesseurs.

Renvoie
Le nombre de primitives à dessiner.

Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.

◆ getName()

castor::String const& castor3d::LightPass::getName ( ) const
inline

◆ getSemaphore()

ashes::Semaphore const& castor3d::LightPass::getSemaphore ( ) const
inline

Références m_signalImgFinished.

◆ initialise()

virtual void castor3d::LightPass::initialise ( Scene const &  scene,
OpaquePassResult const &  gp,
SceneUbo sceneUbo,
RenderPassTimer timer 
)
pure virtual

Initialise la passe d'éclairage.

Paramètres
[in]sceneLa scène.
[in]gpLes tampons de la passe géométries.
[in]sceneUboL'UBO de scène.
[in]timerLe timer de passe.

Implémenté dans castor3d::DirectionalLightPass, et castor3d::MeshLightPass.

◆ makeKey()

static size_t castor3d::LightPass::makeKey ( Light const &  light,
ShadowMap const *  shadowMap,
TextureUnit const *  vctFirstBounce,
TextureUnit const *  vctSecondaryBounce 
)
static

◆ render()

virtual ashes::Semaphore const& castor3d::LightPass::render ( uint32_t  index,
ashes::Semaphore const &  toWait 
)
virtual

Dessine la passe de rendu.

Paramètres
[in]indexL'indice de la passe de rendu.
[in]toWaitLe sémaphore de la précédente passe de rendu.

Réimplémentée dans castor3d::MeshLightPass.

◆ update()

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.

Paramètres
[in]firstDit s'il s'agit de la première passe.
[in]sizeLes dimensions de la zone de rendu.
[in]lightLa source lumineuse.
[in]cameraLa caméra.
[in]shadowMapLa texture d'ombres, optionnelle.
[in]vctFirstBounceLe résultat du premier rebond de VCT.
[in]vctSecondaryBounceLe résultat du second rebond de VCT.

Documentation des données membres

◆ m_baseUbo

UniformBufferBase const* castor3d::LightPass::m_baseUbo { nullptr }
protected

◆ m_blendRenderPass

RenderPass castor3d::LightPass::m_blendRenderPass
protected

◆ m_commandBufferIndex

uint32_t castor3d::LightPass::m_commandBufferIndex { 0u }
protected

◆ m_commandBuffers

std::array< ashes::CommandBufferPtr, 2u > castor3d::LightPass::m_commandBuffers
protected

◆ m_device

RenderDevice const& castor3d::LightPass::m_device
protected

◆ m_engine

Engine& castor3d::LightPass::m_engine
protected

◆ m_fence

ashes::FencePtr castor3d::LightPass::m_fence
protected

◆ m_firstRenderPass

RenderPass castor3d::LightPass::m_firstRenderPass
protected

◆ m_generatesIndirect

bool castor3d::LightPass::m_generatesIndirect
protected

◆ m_gpInfoUbo

GpInfoUbo const& castor3d::LightPass::m_gpInfoUbo
protected

◆ m_matrixUbo

MatrixUbo castor3d::LightPass::m_matrixUbo
protected

◆ m_mmUbo

UniformBufferT< ModelMatrixUboConfiguration > const* castor3d::LightPass::m_mmUbo { nullptr }
protected

◆ m_offset

uint32_t castor3d::LightPass::m_offset { 0u }
protected

◆ m_opaquePassResult

OpaquePassResult const* castor3d::LightPass::m_opaquePassResult {}
protected

◆ m_pipeline

Pipeline* castor3d::LightPass::m_pipeline { nullptr }
protected

◆ m_pipelines

PipelineMap castor3d::LightPass::m_pipelines
protected

◆ m_pixelShader

castor3d::ShaderModule castor3d::LightPass::m_pixelShader
protected

◆ m_pUsedVertexLayout

ashes::PipelineVertexInputStateCreateInfo const* castor3d::LightPass::m_pUsedVertexLayout { nullptr }
protected

◆ m_sampler

SamplerSPtr castor3d::LightPass::m_sampler
protected

◆ m_scene

Scene const* castor3d::LightPass::m_scene { nullptr }
protected

◆ m_sceneUbo

SceneUbo* castor3d::LightPass::m_sceneUbo { nullptr }
protected

◆ m_shadows

bool castor3d::LightPass::m_shadows
protected

◆ m_signalImgFinished

ashes::SemaphorePtr castor3d::LightPass::m_signalImgFinished
protected

Référencé par getSemaphore().

◆ m_signalImgReady

ashes::SemaphorePtr castor3d::LightPass::m_signalImgReady
protected

◆ m_timer

RenderPassTimer* castor3d::LightPass::m_timer { nullptr }
protected

◆ m_usedVertexLayout

ashes::PipelineVertexInputStateCreateInfo castor3d::LightPass::m_usedVertexLayout { 0u, {}, {} }
protected

◆ m_vctUbo

VoxelizerUbo const* castor3d::LightPass::m_vctUbo { nullptr }
protected

◆ m_vertexBuffer

ashes::VertexBufferPtr< float > castor3d::LightPass::m_vertexBuffer
protected

◆ m_vertexLayout

ashes::PipelineVertexInputStateCreateInfoPtr castor3d::LightPass::m_vertexLayout
protected

◆ m_vertexShader

castor3d::ShaderModule castor3d::LightPass::m_vertexShader
protected

◆ m_voxels

bool castor3d::LightPass::m_voxels
protected

La documentation de cette classe a été générée à partir du fichier suivant :