LiteFX 0.5.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS > Class Template Referenceabstract

Describes a factory that creates objects for a GraphicsDevice. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::IGraphicsFactory.

Public Types

using descriptor_layout_type = TDescriptorLayout
 
using vertex_buffer_type = TVertexBuffer
 
using vertex_buffer_layout_type = vertex_buffer_type::vertex_buffer_layout_type
 
using index_buffer_type = TIndexBuffer
 
using index_buffer_layout_type = index_buffer_type::index_buffer_layout_type
 
using buffer_type = TBuffer
 
using image_type = TImage
 
using sampler_type = TSampler
 
using bottom_level_acceleration_structure_type = TBLAS
 
using top_level_acceleration_structure_type = TTLAS
 

Public Member Functions

 ~GraphicsFactory () noexcept override=default
 
virtual SharedPtr< TBuffer > createBuffer (BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TBuffer > createBuffer (const String &name, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TVertexBuffer > createVertexBuffer (const vertex_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TVertexBuffer > createVertexBuffer (const String &name, const vertex_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TIndexBuffer > createIndexBuffer (const index_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TIndexBuffer > createIndexBuffer (const String &name, const index_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TImage > createTexture (Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TImage > createTexture (const String &name, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateBuffer (SharedPtr< TBuffer > &buffer, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateBuffer (SharedPtr< TBuffer > &buffer, const String &name, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateVertexBuffer (SharedPtr< TVertexBuffer > &buffer, const vertex_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateVertexBuffer (SharedPtr< TVertexBuffer > &buffer, const String &name, const vertex_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateIndexBuffer (SharedPtr< TIndexBuffer > &buffer, const index_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateIndexBuffer (SharedPtr< TIndexBuffer > &buffer, const String &name, const index_buffer_layout_type &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateTexture (SharedPtr< TImage > &image, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual bool tryCreateTexture (SharedPtr< TImage > &image, const String &name, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual Generator< SharedPtr< TImage > > createTextures (Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 layers=1, UInt32 levels=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const =0
 
virtual SharedPtr< TSampler > createSampler (FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const =0
 
virtual SharedPtr< TSampler > createSampler (const String &name, FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const =0
 
virtual Generator< SharedPtr< TSampler > > createSamplers (FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const =0
 
UniquePtr< TBLAS > createBottomLevelAccelerationStructure (AccelerationStructureFlags flags) const
 
virtual UniquePtr< TBLAS > createBottomLevelAccelerationStructure (StringView name, AccelerationStructureFlags flags) const =0
 
UniquePtr< TTLAS > createTopLevelAccelerationStructure (AccelerationStructureFlags flags) const
 
virtual UniquePtr< TTLAS > createTopLevelAccelerationStructure (StringView name, AccelerationStructureFlags flags) const =0
 
SharedPtr< IBuffercreateBuffer (const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer of type type .
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer of type type .
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IVertexBuffercreateVertexBuffer (const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a vertex buffer, based on the layout .
 
SharedPtr< IVertexBuffercreateVertexBuffer (const String &name, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a vertex buffer, based on the layout .
 
bool tryCreateVertexBuffer (SharedPtr< IVertexBuffer > &buffer, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a vertex buffer, based on the layout .
 
bool tryCreateVertexBuffer (SharedPtr< IVertexBuffer > &buffer, const String &name, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a vertex buffer, based on the layout .
 
SharedPtr< IIndexBuffercreateIndexBuffer (const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates an index buffer, based on the layout .
 
SharedPtr< IIndexBuffercreateIndexBuffer (const String &name, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates an index buffer, based on the layout .
 
bool tryCreateIndexBuffer (SharedPtr< IIndexBuffer > &buffer, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create an index buffer, based on the layout .
 
bool tryCreateIndexBuffer (SharedPtr< IIndexBuffer > &buffer, const String &name, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create an index buffer, based on the layout .
 
bool tryCreateTexture (SharedPtr< IImage > &image, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a texture.
 
bool tryCreateTexture (SharedPtr< IImage > &image, const String &name, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a texture.
 
- Public Member Functions inherited from LiteFX::Rendering::IGraphicsFactory
 ~IGraphicsFactory () noexcept override=default
 
virtual VirtualAllocator createAllocator (UInt64 overallMemory, AllocationAlgorithm algorithm=AllocationAlgorithm::Default) const =0
 Creates a virtual allocator that can be used to manage allocation from a custom block of memory.
 
virtual void beginDefragmentation (const ICommandQueue &queue, DefragmentationStrategy strategy=DefragmentationStrategy::Balanced, UInt64 maxBytesToMove=0u, UInt32 maxAllocationsToMove=0u) const =0
 Starts a defragmentation process for the resources allocated from the factory.
 
virtual UInt64 beginDefragmentationPass () const =0
 Starts a new defragmentation pass.
 
virtual bool endDefragmentationPass () const =0
 Ends a defragmentation pass.
 
virtual ResourceAllocationResult allocate (const ResourceAllocationInfo &allocationInfo, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Allocates a single resource as described by allocationInfo .
 
virtual Generator< ResourceAllocationResultallocate (Enumerable< const ResourceAllocationInfo & > allocationInfos, AllocationBehavior allocationBehavior=AllocationBehavior::Default, bool alias=false) const =0
 Allocates a set of resources as described by allocationInfos .
 
virtual bool canAlias (Enumerable< const ResourceAllocationInfo & > allocationInfos) const =0
 Checks if the resources described by allocationInfos can be overlapped.
 
SharedPtr< IBuffercreateBuffer (BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer of type type .
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer of type type .
 
SharedPtr< IBuffercreateBuffer (const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const String &name, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer of type type .
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, BufferType type, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer of type type .
 
SharedPtr< IBuffercreateBuffer (const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a specific descriptor.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IDescriptorSetLayout &descriptorSet, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a specific descriptor.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IBuffercreateBuffer (const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a buffer that can be bound to a descriptor of a specific descriptor set.
 
bool tryCreateBuffer (SharedPtr< IBuffer > &buffer, const String &name, const IPipeline &pipeline, UInt32 space, UInt32 binding, ResourceHeap heap, size_t elementSize, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.
 
SharedPtr< IVertexBuffercreateVertexBuffer (const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a vertex buffer, based on the layout .
 
bool tryCreateVertexBuffer (SharedPtr< IVertexBuffer > &buffer, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a vertex buffer, based on the layout .
 
SharedPtr< IVertexBuffercreateVertexBuffer (const String &name, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a vertex buffer, based on the layout .
 
bool tryCreateVertexBuffer (SharedPtr< IVertexBuffer > &buffer, const String &name, const IVertexBufferLayout &layout, ResourceHeap heap, UInt32 elements=1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a vertex buffer, based on the layout .
 
SharedPtr< IIndexBuffercreateIndexBuffer (const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates an index buffer, based on the layout .
 
bool tryCreateIndexBuffer (SharedPtr< IIndexBuffer > &buffer, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create an index buffer, based on the layout .
 
SharedPtr< IIndexBuffercreateIndexBuffer (const String &name, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates an index buffer, based on the layout .
 
bool tryCreateIndexBuffer (SharedPtr< IIndexBuffer > &buffer, const String &name, const IIndexBufferLayout &layout, ResourceHeap heap, UInt32 elements, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create an index buffer, based on the layout .
 
SharedPtr< IImagecreateTexture (Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a texture.
 
bool tryCreateTexture (SharedPtr< IImage > &image, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a texture.
 
SharedPtr< IImagecreateTexture (const String &name, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a texture.
 
bool tryCreateTexture (SharedPtr< IImage > &image, const String &name, Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 levels=1, UInt32 layers=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Tries to create a texture.
 
Generator< SharedPtr< IImage > > createTextures (Format format, const Size3d &size, ImageDimensions dimension=ImageDimensions::DIM_2, UInt32 layers=1, UInt32 levels=1, MultiSamplingLevel samples=MultiSamplingLevel::x1, ResourceUsage usage=ResourceUsage::Default, AllocationBehavior allocationBehavior=AllocationBehavior::Default) const
 Creates a series of textures.
 
SharedPtr< ISamplercreateSampler (FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const
 Creates a texture sampler.
 
SharedPtr< ISamplercreateSampler (const String &name, FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const
 Creates a texture sampler.
 
Generator< SharedPtr< ISampler > > createSamplers (FilterMode magFilter=FilterMode::Nearest, FilterMode minFilter=FilterMode::Nearest, BorderMode borderU=BorderMode::Repeat, BorderMode borderV=BorderMode::Repeat, BorderMode borderW=BorderMode::Repeat, MipMapMode mipMapMode=MipMapMode::Nearest, Float mipMapBias=0.f, Float maxLod=std::numeric_limits< Float >::max(), Float minLod=0.f, Float anisotropy=0.f) const
 Creates a series of texture samplers.
 
UniquePtr< IBottomLevelAccelerationStructurecreateBottomLevelAccelerationStructure (AccelerationStructureFlags flags=AccelerationStructureFlags::None) const
 Creates a bottom-level acceleration structure.
 
UniquePtr< IBottomLevelAccelerationStructurecreateBottomLevelAccelerationStructure (StringView name, AccelerationStructureFlags flags=AccelerationStructureFlags::None) const
 Creates a bottom-level acceleration structure.
 
UniquePtr< ITopLevelAccelerationStructurecreateTopLevelAccelerationStructure (AccelerationStructureFlags flags=AccelerationStructureFlags::None) const
 Creates a top-level acceleration structure.
 
UniquePtr< ITopLevelAccelerationStructurecreateTopLevelAccelerationStructure (StringView name, AccelerationStructureFlags flags=AccelerationStructureFlags::None) const
 Creates a top-level acceleration structure.
 
virtual bool supportsResizableBaseAddressRegister () const noexcept=0
 Returns true, if the GPU supports resizable base address register (ReBAR) and false otherwise.
 
virtual Array< MemoryHeapStatisticsmemoryStatistics () const =0
 Returns an array of objects, that contain information about the current memory usage and available memory for a memory heap.
 
virtual DetailedMemoryStatistics detailedMemoryStatistics () const =0
 Returns detailed memory statistics.
 
- Public Member Functions inherited from LiteFX::SharedObject
virtual ~SharedObject () noexcept=default
 Destroys the shared object.
 
template<typename TSelf >
auto shared_from_this (this TSelf &&self) noexcept
 Returns a shared pointer to the current object instance.
 
template<typename TSelf >
auto weak_from_this (this TSelf &&self) noexcept -> WeakPtr< std::remove_reference_t< TSelf > >
 Returns a weak pointer to the current object instance.
 

Protected Member Functions

 GraphicsFactory () noexcept=default
 
 GraphicsFactory (GraphicsFactory &&) noexcept=default
 
 GraphicsFactory (const GraphicsFactory &)=default
 
GraphicsFactoryoperator= (GraphicsFactory &&) noexcept=default
 
GraphicsFactoryoperator= (const GraphicsFactory &)=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IGraphicsFactory
 IGraphicsFactory () noexcept=default
 
 IGraphicsFactory (IGraphicsFactory &&) noexcept=default
 
 IGraphicsFactory (const IGraphicsFactory &)=default
 
IGraphicsFactoryoperator= (const IGraphicsFactory &)=default
 
IGraphicsFactoryoperator= (IGraphicsFactory &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::SharedObject
 SharedObject () noexcept=default
 Initializes a new shared object.
 
 SharedObject (SharedObject &&) noexcept=default
 
 SharedObject (const SharedObject &)=default
 
SharedObjectoperator= (SharedObject &&) noexcept=default
 
SharedObjectoperator= (const SharedObject &)=default
 

Additional Inherited Members

- Static Protected Member Functions inherited from LiteFX::SharedObject
template<typename T , typename... TArgs>
static auto create (TArgs &&... args) -> SharedPtr< T >
 Generic factory method used to create instances of the shared object.
 

Detailed Description

template<typename TDescriptorLayout, typename TBuffer, typename TVertexBuffer, typename TIndexBuffer, typename TImage, typename TSampler, typename TBLAS, typename TTLAS>
requires meta::implements<TDescriptorLayout, IDescriptorLayout> && std::derived_from<TVertexBuffer, VertexBuffer<typename TVertexBuffer::vertex_buffer_layout_type>> && std::derived_from<TIndexBuffer, IndexBuffer<typename TIndexBuffer::index_buffer_layout_type>> && std::derived_from<TImage, IImage> && std::derived_from<TBuffer, IBuffer> && std::derived_from<TSampler, ISampler> && std::derived_from<TBLAS, IBottomLevelAccelerationStructure> && std::derived_from<TTLAS, ITopLevelAccelerationStructure>
class LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >

Describes a factory that creates objects for a GraphicsDevice.

Template Parameters
TDescriptorLayoutThe type of the descriptor layout. Must implement IDescriptorLayout.
TVertexBufferThe type of the vertex buffer. Must implement VertexBuffer.
TIndexBufferThe type of the index buffer. Must implement IndexBuffer.
TImageThe type of the image. Must inherit from IImage.
TBufferThe type of the buffer. Must inherit from IBuffer.
TSamplerThe type of the sampler. Must inherit from ISampler.
TBLASThe type of the bottom-level acceleration structure. Must implement IBottomLevelAccelerationStructure.
TTLASThe type of the top-level acceleration structure. Must implement ITopLevelAccelerationStructure.

Member Typedef Documentation

◆ bottom_level_acceleration_structure_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::bottom_level_acceleration_structure_type = TBLAS

◆ buffer_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::buffer_type = TBuffer

◆ descriptor_layout_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::descriptor_layout_type = TDescriptorLayout

◆ image_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::image_type = TImage

◆ index_buffer_layout_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::index_buffer_layout_type = index_buffer_type::index_buffer_layout_type

◆ index_buffer_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::index_buffer_type = TIndexBuffer

◆ sampler_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::sampler_type = TSampler

◆ top_level_acceleration_structure_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::top_level_acceleration_structure_type = TTLAS

◆ vertex_buffer_layout_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::vertex_buffer_layout_type = vertex_buffer_type::vertex_buffer_layout_type

◆ vertex_buffer_type

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
using LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::vertex_buffer_type = TVertexBuffer

Constructor & Destructor Documentation

◆ GraphicsFactory() [1/3]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::GraphicsFactory ( )
protecteddefaultnoexcept

◆ GraphicsFactory() [2/3]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::GraphicsFactory ( GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS > && )
protecteddefaultnoexcept

◆ GraphicsFactory() [3/3]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::GraphicsFactory ( const GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS > & )
protecteddefault

◆ ~GraphicsFactory()

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::~GraphicsFactory ( )
overridedefaultnoexcept

Member Function Documentation

◆ createBottomLevelAccelerationStructure() [1/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
UniquePtr< TBLAS > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createBottomLevelAccelerationStructure ( AccelerationStructureFlags flags) const
inline

◆ createBottomLevelAccelerationStructure() [2/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual UniquePtr< TBLAS > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createBottomLevelAccelerationStructure ( StringView name,
AccelerationStructureFlags flags ) const
pure virtual

◆ createBuffer() [1/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createBuffer ( BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createBuffer() [2/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a specific descriptor.

Parameters
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [3/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a specific descriptor.

Parameters
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [4/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [5/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [6/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createBuffer ( const String & name,
BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createBuffer() [7/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const String & name,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
size_t elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a specific descriptor.

Parameters
nameThe name of the buffer.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [8/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const String & name,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a specific descriptor.

Parameters
nameThe name of the buffer.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [9/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const String & name,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
nameThe name of the buffer.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createBuffer() [10/10]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IBuffer > LiteFX::Rendering::IGraphicsFactory::createBuffer ( const String & name,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
nameThe name of the buffer.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the buffer.

◆ createIndexBuffer() [1/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IIndexBuffer > LiteFX::Rendering::IGraphicsFactory::createIndexBuffer ( const IIndexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates an index buffer, based on the layout .

An index buffer can be used by different RenderPipelines, as long as they share a common input assembler state.

The size of the buffer is computed from the element size index buffer layout, times the number of elements given by the elements parameter.

Parameters
layoutThe layout of the index buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of indices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the index buffer.

◆ createIndexBuffer() [2/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TIndexBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createIndexBuffer ( const index_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createIndexBuffer() [3/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IIndexBuffer > LiteFX::Rendering::IGraphicsFactory::createIndexBuffer ( const String & name,
const IIndexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates an index buffer, based on the layout .

An index buffer can be used by different RenderPipelines, as long as they share a common input assembler state.

The size of the buffer is computed from the element size index buffer layout, times the number of elements given by the elements parameter.

Parameters
nameThe name of the buffer.
layoutThe layout of the index buffer.
heapThe heap to allocate the buffer on.
usageThe intended usage for the buffer.
elementsThe number of elements within the vertex buffer (i.e. the number of indices).
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the index buffer.

◆ createIndexBuffer() [4/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TIndexBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createIndexBuffer ( const String & name,
const index_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createSampler() [1/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TSampler > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createSampler ( const String & name,
FilterMode magFilter = FilterMode::Nearest,
FilterMode minFilter = FilterMode::Nearest,
BorderMode borderU = BorderMode::Repeat,
BorderMode borderV = BorderMode::Repeat,
BorderMode borderW = BorderMode::Repeat,
MipMapMode mipMapMode = MipMapMode::Nearest,
Float mipMapBias = 0.f,
Float maxLod = std::numeric_limits< Float >::max(),
Float minLod = 0.f,
Float anisotropy = 0.f ) const
pure virtual

◆ createSampler() [2/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TSampler > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createSampler ( FilterMode magFilter = FilterMode::Nearest,
FilterMode minFilter = FilterMode::Nearest,
BorderMode borderU = BorderMode::Repeat,
BorderMode borderV = BorderMode::Repeat,
BorderMode borderW = BorderMode::Repeat,
MipMapMode mipMapMode = MipMapMode::Nearest,
Float mipMapBias = 0.f,
Float maxLod = std::numeric_limits< Float >::max(),
Float minLod = 0.f,
Float anisotropy = 0.f ) const
pure virtual

◆ createSamplers()

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual Generator< SharedPtr< TSampler > > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createSamplers ( FilterMode magFilter = FilterMode::Nearest,
FilterMode minFilter = FilterMode::Nearest,
BorderMode borderU = BorderMode::Repeat,
BorderMode borderV = BorderMode::Repeat,
BorderMode borderW = BorderMode::Repeat,
MipMapMode mipMapMode = MipMapMode::Nearest,
Float mipMapBias = 0.f,
Float maxLod = std::numeric_limits< Float >::max(),
Float minLod = 0.f,
Float anisotropy = 0.f ) const
pure virtual

◆ createTexture() [1/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TImage > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createTexture ( const String & name,
Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createTexture() [2/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TImage > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createTexture ( Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createTextures()

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual Generator< SharedPtr< TImage > > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createTextures ( Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 layers = 1,
UInt32 levels = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createTopLevelAccelerationStructure() [1/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
UniquePtr< TTLAS > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createTopLevelAccelerationStructure ( AccelerationStructureFlags flags) const
inline

◆ createTopLevelAccelerationStructure() [2/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual UniquePtr< TTLAS > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createTopLevelAccelerationStructure ( StringView name,
AccelerationStructureFlags flags ) const
pure virtual

◆ createVertexBuffer() [1/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IVertexBuffer > LiteFX::Rendering::IGraphicsFactory::createVertexBuffer ( const IVertexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a vertex buffer, based on the layout .

A vertex buffer can be used by different RenderPipelines, as long as they share a common input assembler state.

The size of the buffer is computed from the element size vertex buffer layout, times the number of elements given by the elements parameter.

Parameters
layoutThe layout of the vertex buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of vertices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the vertex buffer.

◆ createVertexBuffer() [2/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
SharedPtr< IVertexBuffer > LiteFX::Rendering::IGraphicsFactory::createVertexBuffer ( const String & name,
const IVertexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Creates a vertex buffer, based on the layout .

A vertex buffer can be used by different RenderPipelines, as long as they share a common input assembler state.

The size of the buffer is computed from the element size vertex buffer layout, times the number of elements given by the elements parameter.

Parameters
nameThe name of the buffer.
layoutThe layout of the vertex buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of vertices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
The instance of the vertex buffer.

◆ createVertexBuffer() [3/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TVertexBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createVertexBuffer ( const String & name,
const vertex_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ createVertexBuffer() [4/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual SharedPtr< TVertexBuffer > LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::createVertexBuffer ( const vertex_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ operator=() [1/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
GraphicsFactory & LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::operator= ( const GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS > & )
protecteddefault

◆ operator=() [2/2]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
GraphicsFactory & LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::operator= ( GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS > && )
protecteddefaultnoexcept

◆ tryCreateBuffer() [1/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer of type type .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
typeThe type of the buffer.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [2/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a specific descriptor.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [3/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a specific descriptor.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [4/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [5/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [6/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const String & name,
BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer of type type .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
typeThe type of the buffer.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [7/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const String & name,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
size_t elementSize,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a specific descriptor.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [8/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const String & name,
const IDescriptorSetLayout & descriptorSet,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a specific descriptor.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
descriptorSetThe layout of the descriptors parent descriptor set.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [9/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const String & name,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementSizeThe size of an element in the buffer (in bytes).
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [10/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateBuffer ( SharedPtr< IBuffer > & buffer,
const String & name,
const IPipeline & pipeline,
UInt32 space,
UInt32 binding,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a buffer that can be bound to a descriptor of a specific descriptor set.

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
pipelineThe pipeline that provides the descriptor set.
spaceThe space, the descriptor set is bound to.
bindingThe binding point of the descriptor within the parent descriptor set.
heapThe heap to allocate the buffer on.
elementsThe number of elements in the buffer (in case the buffer is an array).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateBuffer() [11/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateBuffer ( SharedPtr< TBuffer > & buffer,
BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateBuffer() [12/12]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateBuffer ( SharedPtr< TBuffer > & buffer,
const String & name,
BufferType type,
ResourceHeap heap,
size_t elementSize,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateIndexBuffer() [1/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateIndexBuffer ( SharedPtr< IIndexBuffer > & buffer,
const IIndexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create an index buffer, based on the layout .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
layoutThe layout of the index buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of indices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateIndexBuffer() [2/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateIndexBuffer ( SharedPtr< IIndexBuffer > & buffer,
const String & name,
const IIndexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create an index buffer, based on the layout .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
layoutThe layout of the index buffer.
heapThe heap to allocate the buffer on.
usageThe intended usage for the buffer.
elementsThe number of elements within the vertex buffer (i.e. the number of indices).
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateIndexBuffer() [3/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateIndexBuffer ( SharedPtr< TIndexBuffer > & buffer,
const index_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateIndexBuffer() [4/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateIndexBuffer ( SharedPtr< TIndexBuffer > & buffer,
const String & name,
const index_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateTexture() [1/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateTexture ( SharedPtr< IImage > & image,
const String & name,
Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a texture.

Parameters
imageThe instance of the buffer, or nullptr, if the texture could not be allocated.
nameThe name of the texture image.
formatThe format of the texture image.
sizeThe dimensions of the texture.
dimensionThe dimensionality of the texture.
layersThe number of layers (slices) in this texture.
levelsThe number of mip map levels of the texture.
samplesThe number of samples, the texture should be sampled with.
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the texture was created successfully and false otherwise.

◆ tryCreateTexture() [2/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateTexture ( SharedPtr< IImage > & image,
Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a texture.

Parameters
imageThe instance of the buffer, or nullptr, if the texture could not be allocated.
formatThe format of the texture image.
sizeThe dimensions of the texture.
dimensionThe dimensionality of the texture.
layersThe number of layers (slices) in this texture.
levelsThe number of mip map levels of the texture.
samplesThe number of samples, the texture should be sampled with.
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the texture was created successfully and false otherwise.

◆ tryCreateTexture() [3/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateTexture ( SharedPtr< TImage > & image,
const String & name,
Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateTexture() [4/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateTexture ( SharedPtr< TImage > & image,
Format format,
const Size3d & size,
ImageDimensions dimension = ImageDimensions::DIM_2,
UInt32 levels = 1,
UInt32 layers = 1,
MultiSamplingLevel samples = MultiSamplingLevel::x1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateVertexBuffer() [1/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateVertexBuffer ( SharedPtr< IVertexBuffer > & buffer,
const IVertexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a vertex buffer, based on the layout .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
layoutThe layout of the vertex buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of vertices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateVertexBuffer() [2/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
bool LiteFX::Rendering::IGraphicsFactory::tryCreateVertexBuffer ( SharedPtr< IVertexBuffer > & buffer,
const String & name,
const IVertexBufferLayout & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
inline

Tries to create a vertex buffer, based on the layout .

Parameters
bufferThe instance of the buffer, or nullptr, if the buffer could not be allocated.
nameThe name of the buffer.
layoutThe layout of the vertex buffer.
heapThe heap to allocate the buffer on.
elementsThe number of elements within the vertex buffer (i.e. the number of vertices).
usageThe intended usage for the buffer.
allocationBehaviorThe behavior controlling what happens if currently there is not enough memory available for the resource.
Returns
true, if the buffer was created successfully and false otherwise.

◆ tryCreateVertexBuffer() [3/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateVertexBuffer ( SharedPtr< TVertexBuffer > & buffer,
const String & name,
const vertex_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual

◆ tryCreateVertexBuffer() [4/4]

template<typename TDescriptorLayout , typename TBuffer , typename TVertexBuffer , typename TIndexBuffer , typename TImage , typename TSampler , typename TBLAS , typename TTLAS >
virtual bool LiteFX::Rendering::GraphicsFactory< TDescriptorLayout, TBuffer, TVertexBuffer, TIndexBuffer, TImage, TSampler, TBLAS, TTLAS >::tryCreateVertexBuffer ( SharedPtr< TVertexBuffer > & buffer,
const vertex_buffer_layout_type & layout,
ResourceHeap heap,
UInt32 elements = 1,
ResourceUsage usage = ResourceUsage::Default,
AllocationBehavior allocationBehavior = AllocationBehavior::Default ) const
pure virtual