Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::RenderPassManager Class Referencefinal

#include <RenderPassManager.h>

+ Inheritance diagram for Divide::RenderPassManager:

Classes

struct  RenderParams
 
struct  RenderPassData
 

Public Member Functions

 RenderPassManager (Kernel &parent, GFXDevice &context)
 
 ~RenderPassManager ()
 
void render (const RenderParams &params)
 Call every render queue's render function in order.
 
RenderPasssetRenderPass (RenderStage renderStage, const vector< RenderStage > &dependencies={})
 Add a new pass that will run once for each of the RenderStages specified.
 
U32 getLastTotalBinSize (RenderStage renderStage) const noexcept
 
I32 drawCallCount (const RenderStage stage) const noexcept
 
void doCustomPass (Camera *const camera, RenderPassParams params, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut)
 
void postInit ()
 
- Public Member Functions inherited from Divide::KernelComponent
 KernelComponent (Kernel &parent) noexcept
 
virtual ~KernelComponent ()=default
 
Kernelparent () noexcept
 
const Kernelparent () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 

Static Public Attributes

static constexpr U32 MAX_RENDER_PASSES = 16u
 

Private Member Functions

void startRenderTasks (const RenderParams &params, TaskPool &pool, Task *parentTask)
 
const RenderPassgetPassForStage (RenderStage renderStage) const noexcept
 

Private Attributes

GFXDevice_context
 
Handle< ShaderProgram_oitCompositionShader = INVALID_HANDLE<ShaderProgram>
 
Handle< ShaderProgram_oitCompositionShaderMS = INVALID_HANDLE<ShaderProgram>
 
Handle< ShaderProgram_gbufferResolveShader = INVALID_HANDLE<ShaderProgram>
 
Mutex _waitForDependenciesLock
 
std::condition_variable _waitForDependencies
 
std::array< RenderPassData, to_base(RenderStage::COUNT)> _renderPassData {}
 
std::array< std::atomic_bool, to_base(RenderStage::COUNT)> _renderPassCompleted {}
 
std::array< RenderPassExecutor_uptr, to_base(RenderStage::COUNT)> _executors
 
std::array< Time::ProfileTimer *, to_base(RenderStage::COUNT)> _processCommandBufferTimer = create_array<to_base( RenderStage::COUNT ), Time::ProfileTimer*>( nullptr )
 
std::array< I32, to_base(RenderStage::COUNT)> _drawCallCount = create_array<to_base( RenderStage::COUNT ), I32>( 0 )
 
Time::ProfileTimer_renderPassTimer = nullptr
 
Time::ProfileTimer_buildCommandBufferTimer = nullptr
 
Time::ProfileTimer_processGUITimer = nullptr
 
Time::ProfileTimer_flushCommandBufferTimer = nullptr
 
Time::ProfileTimer_postFxRenderTimer = nullptr
 
Time::ProfileTimer_blitToDisplayTimer = nullptr
 

Friends

class RenderPassExecutor
 

Additional Inherited Members

- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Attributes inherited from Divide::KernelComponent
Kernel_parent
 

Detailed Description

Definition at line 101 of file RenderPassManager.h.

Constructor & Destructor Documentation

◆ RenderPassManager()

Divide::RenderPassManager::RenderPassManager ( Kernel parent,
GFXDevice context 
)
explicit

Definition at line 38 of file RenderPassManager.cpp.

◆ ~RenderPassManager()

Divide::RenderPassManager::~RenderPassManager ( )

Definition at line 60 of file RenderPassManager.cpp.

Member Function Documentation

◆ doCustomPass()

void Divide::RenderPassManager::doCustomPass ( Camera *const  camera,
RenderPassParams  params,
GFX::CommandBuffer bufferInOut,
GFX::MemoryBarrierCommand memCmdInOut 
)

Definition at line 340 of file RenderPassManager.cpp.

◆ drawCallCount()

I32 Divide::RenderPassManager::drawCallCount ( const RenderStage  stage) const
inlinenoexcept

Definition at line 126 of file RenderPassManager.h.

◆ getLastTotalBinSize()

U32 Divide::RenderPassManager::getLastTotalBinSize ( RenderStage  renderStage) const
noexcept

Definition at line 330 of file RenderPassManager.cpp.

◆ getPassForStage()

const RenderPass & Divide::RenderPassManager::getPassForStage ( RenderStage  renderStage) const
privatenoexcept

Definition at line 335 of file RenderPassManager.cpp.

◆ postInit()

void Divide::RenderPassManager::postInit ( )

Definition at line 67 of file RenderPassManager.cpp.

◆ render()

void Divide::RenderPassManager::render ( const RenderParams params)

Call every render queue's render function in order.

Definition at line 170 of file RenderPassManager.cpp.

◆ setRenderPass()

RenderPass & Divide::RenderPassManager::setRenderPass ( RenderStage  renderStage,
const vector< RenderStage > &  dependencies = {} 
)

Add a new pass that will run once for each of the RenderStages specified.

Definition at line 313 of file RenderPassManager.cpp.

◆ startRenderTasks()

void Divide::RenderPassManager::startRenderTasks ( const RenderParams params,
TaskPool pool,
Task parentTask 
)
private

Definition at line 111 of file RenderPassManager.cpp.

Friends And Related Function Documentation

◆ RenderPassExecutor

friend class RenderPassExecutor
friend

Definition at line 138 of file RenderPassManager.h.

Member Data Documentation

◆ _blitToDisplayTimer

Time::ProfileTimer* Divide::RenderPassManager::_blitToDisplayTimer = nullptr
private

Definition at line 171 of file RenderPassManager.h.

◆ _buildCommandBufferTimer

Time::ProfileTimer* Divide::RenderPassManager::_buildCommandBufferTimer = nullptr
private

Definition at line 167 of file RenderPassManager.h.

◆ _context

GFXDevice& Divide::RenderPassManager::_context
private

Definition at line 142 of file RenderPassManager.h.

◆ _drawCallCount

std::array<I32, to_base( RenderStage::COUNT )> Divide::RenderPassManager::_drawCallCount = create_array<to_base( RenderStage::COUNT ), I32>( 0 )
private

Definition at line 164 of file RenderPassManager.h.

◆ _executors

std::array<RenderPassExecutor_uptr, to_base( RenderStage::COUNT )> Divide::RenderPassManager::_executors
private

Definition at line 162 of file RenderPassManager.h.

◆ _flushCommandBufferTimer

Time::ProfileTimer* Divide::RenderPassManager::_flushCommandBufferTimer = nullptr
private

Definition at line 169 of file RenderPassManager.h.

◆ _gbufferResolveShader

Handle<ShaderProgram> Divide::RenderPassManager::_gbufferResolveShader = INVALID_HANDLE<ShaderProgram>
private

Definition at line 146 of file RenderPassManager.h.

◆ _oitCompositionShader

Handle<ShaderProgram> Divide::RenderPassManager::_oitCompositionShader = INVALID_HANDLE<ShaderProgram>
private

Definition at line 144 of file RenderPassManager.h.

◆ _oitCompositionShaderMS

Handle<ShaderProgram> Divide::RenderPassManager::_oitCompositionShaderMS = INVALID_HANDLE<ShaderProgram>
private

Definition at line 145 of file RenderPassManager.h.

◆ _postFxRenderTimer

Time::ProfileTimer* Divide::RenderPassManager::_postFxRenderTimer = nullptr
private

Definition at line 170 of file RenderPassManager.h.

◆ _processCommandBufferTimer

std::array<Time::ProfileTimer*, to_base( RenderStage::COUNT )> Divide::RenderPassManager::_processCommandBufferTimer = create_array<to_base( RenderStage::COUNT ), Time::ProfileTimer*>( nullptr )
private

Definition at line 163 of file RenderPassManager.h.

◆ _processGUITimer

Time::ProfileTimer* Divide::RenderPassManager::_processGUITimer = nullptr
private

Definition at line 168 of file RenderPassManager.h.

◆ _renderPassCompleted

std::array<std::atomic_bool, to_base( RenderStage::COUNT )> Divide::RenderPassManager::_renderPassCompleted {}
private

Definition at line 159 of file RenderPassManager.h.

◆ _renderPassData

std::array<RenderPassData, to_base(RenderStage::COUNT)> Divide::RenderPassManager::_renderPassData {}
private

Definition at line 158 of file RenderPassManager.h.

◆ _renderPassTimer

Time::ProfileTimer* Divide::RenderPassManager::_renderPassTimer = nullptr
private

Definition at line 166 of file RenderPassManager.h.

◆ _waitForDependencies

std::condition_variable Divide::RenderPassManager::_waitForDependencies
private

Definition at line 156 of file RenderPassManager.h.

◆ _waitForDependenciesLock

Mutex Divide::RenderPassManager::_waitForDependenciesLock
private

Definition at line 155 of file RenderPassManager.h.

◆ MAX_RENDER_PASSES

constexpr U32 Divide::RenderPassManager::MAX_RENDER_PASSES = 16u
staticconstexpr

Definition at line 106 of file RenderPassManager.h.


The documentation for this class was generated from the following files: