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

#include <ShaderDataUploader.h>

Classes

struct  BlockMember
 

Public Member Functions

 UniformBlockUploader (GFXDevice &context, const eastl::string &parentShaderName, const Reflection::BufferEntry &uniformBlock, const U16 shaderStageVisibilityMask)
 
void uploadUniformData (const UniformData &uniforms) noexcept
 
bool commit (DescriptorSet &set, GFX::MemoryBarrierCommand &memCmdInOut)
 
void onFrameEnd () noexcept
 
void toggleStageVisibility (U16 visibilityMask, bool state)
 
void toggleStageVisibility (ShaderStageVisibility visibility, bool state)
 
size_t totalBufferSize () const noexcept
 
 PROPERTY_R_IW (Reflection::BufferEntry, uniformBlock)
 

Static Public Attributes

static constexpr U16 RingBufferLength = 6u
 

Private Member Functions

void resizeBlockBuffer (bool increaseSize)
 
bool prepare (DescriptorSet &set)
 

Private Attributes

GFXDevice_context
 
U16 _shaderStageVisibilityMask { to_base( ShaderStageVisibility::COUNT ) }
 
vector< Byte_localDataCopy
 
vector< BlockMember_blockMembers
 
eastl::string _parentShaderName
 
ShaderBuffer_uptr _buffer { nullptr }
 
size_t _uniformBlockSizeAligned { 0u }
 
bool _uniformBlockDirty { false }
 
bool _needsQueueIncrement { false }
 
bool _needsResize { false }
 
U16 _bufferWritesThisFrame { 0u }
 
U16 _bufferSizeFactor { 0u }
 

Detailed Description

Definition at line 141 of file ShaderDataUploader.h.

Constructor & Destructor Documentation

◆ UniformBlockUploader()

Divide::UniformBlockUploader::UniformBlockUploader ( GFXDevice context,
const eastl::string &  parentShaderName,
const Reflection::BufferEntry uniformBlock,
const U16  shaderStageVisibilityMask 
)
explicit

Definition at line 307 of file ShaderDataUploader.cpp.

Member Function Documentation

◆ commit()

bool Divide::UniformBlockUploader::commit ( DescriptorSet set,
GFX::MemoryBarrierCommand memCmdInOut 
)

Definition at line 465 of file ShaderDataUploader.cpp.

◆ onFrameEnd()

void Divide::UniformBlockUploader::onFrameEnd ( )
noexcept

Definition at line 520 of file ShaderDataUploader.cpp.

◆ prepare()

bool Divide::UniformBlockUploader::prepare ( DescriptorSet set)
private

Definition at line 494 of file ShaderDataUploader.cpp.

◆ PROPERTY_R_IW()

Divide::UniformBlockUploader::PROPERTY_R_IW ( Reflection::BufferEntry  ,
uniformBlock   
)

◆ resizeBlockBuffer()

void Divide::UniformBlockUploader::resizeBlockBuffer ( bool  increaseSize)
private

Definition at line 413 of file ShaderDataUploader.cpp.

◆ toggleStageVisibility() [1/2]

void Divide::UniformBlockUploader::toggleStageVisibility ( ShaderStageVisibility  visibility,
bool  state 
)

Definition at line 535 of file ShaderDataUploader.cpp.

◆ toggleStageVisibility() [2/2]

void Divide::UniformBlockUploader::toggleStageVisibility ( U16  visibilityMask,
bool  state 
)

Definition at line 530 of file ShaderDataUploader.cpp.

◆ totalBufferSize()

size_t Divide::UniformBlockUploader::totalBufferSize ( ) const
noexcept

Definition at line 540 of file ShaderDataUploader.cpp.

◆ uploadUniformData()

void Divide::UniformBlockUploader::uploadUniformData ( const UniformData uniforms)
noexcept

Definition at line 431 of file ShaderDataUploader.cpp.

Member Data Documentation

◆ _blockMembers

vector<BlockMember> Divide::UniformBlockUploader::_blockMembers
private

Definition at line 178 of file ShaderDataUploader.h.

◆ _buffer

ShaderBuffer_uptr Divide::UniformBlockUploader::_buffer { nullptr }
private

Definition at line 180 of file ShaderDataUploader.h.

◆ _bufferSizeFactor

U16 Divide::UniformBlockUploader::_bufferSizeFactor { 0u }
private

Definition at line 187 of file ShaderDataUploader.h.

◆ _bufferWritesThisFrame

U16 Divide::UniformBlockUploader::_bufferWritesThisFrame { 0u }
private

Definition at line 186 of file ShaderDataUploader.h.

◆ _context

GFXDevice& Divide::UniformBlockUploader::_context
private

Definition at line 174 of file ShaderDataUploader.h.

◆ _localDataCopy

vector<Byte> Divide::UniformBlockUploader::_localDataCopy
private

Definition at line 177 of file ShaderDataUploader.h.

◆ _needsQueueIncrement

bool Divide::UniformBlockUploader::_needsQueueIncrement { false }
private

Definition at line 183 of file ShaderDataUploader.h.

◆ _needsResize

bool Divide::UniformBlockUploader::_needsResize { false }
private

Definition at line 185 of file ShaderDataUploader.h.

◆ _parentShaderName

eastl::string Divide::UniformBlockUploader::_parentShaderName
private

Definition at line 179 of file ShaderDataUploader.h.

◆ _shaderStageVisibilityMask

U16 Divide::UniformBlockUploader::_shaderStageVisibilityMask { to_base( ShaderStageVisibility::COUNT ) }
private

Definition at line 175 of file ShaderDataUploader.h.

◆ _uniformBlockDirty

bool Divide::UniformBlockUploader::_uniformBlockDirty { false }
private

Definition at line 182 of file ShaderDataUploader.h.

◆ _uniformBlockSizeAligned

size_t Divide::UniformBlockUploader::_uniformBlockSizeAligned { 0u }
private

Definition at line 181 of file ShaderDataUploader.h.

◆ RingBufferLength

constexpr U16 Divide::UniformBlockUploader::RingBufferLength = 6u
staticconstexpr

Definition at line 144 of file ShaderDataUploader.h.


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