Skip to main content

RenderManager

The RenderManager class controls the initialization and management of all render-specific resources. It provides an efficient mechanism for temporary Buffer and Texture allocations.

#include <render/TellusimRenderManager.h>

Constructors

RenderManager()
explicit RenderManager(SceneManager &manager)

Methods

Clear manager.

void clear()

Check manager.

bool isCreated() const

Manager flags.

Flags getFlags() const
bool hasFlag(Flags flags) const
bool hasFlags(Flags flags) const
String getFlagsName() const

Set default buffer parameters.

void setBufferParameters(const Device &device, size_t memory = (size_t) 1024 * 1024 * 512, uint32_t storage = 0, uint32_t scalar = 0, uint32_t instance = 0, uint32_t batch = 0, uint32_t indirect = 0)
TypeNameDescription
size_tmemoryTotal buffer memory allocation.
uint32_tstorageStorage buffer split ratio.
uint32_tscalarScalar buffer split ratio.
uint32_tinstanceInstance buffer split ratio.
uint32_tbatchBatch buffer split ratio.
uint32_tindirectIndirect buffer split ratio.

Storage buffer parameters.

void setStorageBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getStorageBufferSize() const
Buffer getStorageBuffer()
TypeNameDescription
size_tsizeStorage buffer size in bytes.
Buffer::FlagsflagsAdditional storage buffer flags.

Scalar buffer parameters.

void setScalarBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getScalarBufferSize() const
Buffer getScalarBuffer()
TypeNameDescription
size_tsizeScalar buffer size in bytes.
Buffer::FlagsflagsAdditional scalar buffer flags.

Instance buffer parameters.

void setInstanceBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getInstanceBufferSize() const
Buffer getInstanceBuffer()
TypeNameDescription
size_tsizeInstance buffer size in bytes.
Buffer::FlagsflagsAdditional instance buffer flags.

Batch buffer parameters.

void setBatchBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getBatchBufferSize() const
Buffer getBatchBuffer()
TypeNameDescription
size_tsizeBatch buffer size in bytes.
Buffer::FlagsflagsAdditional batch buffer flags.

Indirect buffer parameters.

void setIndirectBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getIndirectBufferSize() const
Buffer getIndirectBuffer()
TypeNameDescription
size_tsizeIndirect buffer size in bytes.
Buffer::FlagsflagsAdditional indirect buffer flags.

Dispatch buffer parameters.

void setDispatchBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getDispatchBufferSize() const
Buffer getDispatchBuffer()
TypeNameDescription
size_tsizeDispatch buffer size in bytes.
Buffer::FlagsflagsAdditional dispatch buffer flags.

Renderer parameters.

void setRendererParameters(const Device &device, Format color = FormatRGBAf16, Format depth = FormatDf32, Format normal = FormatRGBAu16n, Format diffuse = FormatRGBu10Au2n, Format metallic = FormatRGBAu8n, Flags flags = RenderRenderer::FlagNone)
void setRendererFlags(const Device &device, Flags flags)
Flags getRendererFlags() const
Format getRendererColorFormat() const
Format getRendererDepthFormat() const
Format getRendererNormalFormat() const
Format getRendererDiffuseFormat() const
Format getRendererMetallicFormat() const
RenderRenderer getRenderer() const
TypeNameDescription
FormatcolorColor texture format.
FormatdepthDepth texture format.
FormatnormalNormal texture format.
FormatdiffuseDiffuse texture format.
FormatmetallicMetallic texture format.
RenderRenderer::FlagsflagsAdditional renderer flags.

Spatial parameters.

void setSpatialParameters(const Device &device, uint32_t nodes = 1024 * 128, uint32_t steps = 5, Flags flags = RenderSpatial::FlagNone)
void setSpatialFlags(const Device &device, Flags flags)
Flags getSpatialFlags() const
uint32_t getSpatialNodes() const
uint32_t getSpatialSteps() const
RenderSpatial getSpatial() const
TypeNameDescription
uint32_tnodesMaximum number of next step nodes (not the total number of nodes).
uint32_tstepsNumber of spatial intersection steps.
RenderSpatial::FlagsflagsAdditional spatial flags.

Draw parameters.

void setDrawParameters(const Device &device, Format color = FormatRGBAu8n, Format depth = FormatDu24Su8, uint32_t multisample = 0)
Format getDrawColorFormat() const
Format getDrawDepthFormat() const
uint32_t getDrawMultisample() const
RenderDraw getDraw() const
TypeNameDescription
FormatcolorColor texture format.
FormatdepthDepth texture format.
uint32_tmultisampleAntialiasing samples (0 is no AA, 2 is 2xMSAA, ...);

Create render manager.

bool create(const Device &device, Flags flags = DefaultFlags, const CreateCallback *func = nullptr, Async *async = nullptr)
TypeNameDescription
RenderManager::FlagsflagsManager flags

Create render textures.

Texture createTexture2D(Format format, uint32_t width, uint32_t height, Flags flags)
Texture createTextureCube(Format format, uint32_t size, Flags flags)
Texture createTexture2D(Format format, uint32_t width, uint32_t height, uint32_t layers, Flags flags)
Texture createTextureCube(Format format, uint32_t size, uint32_t layers, Flags flags)
void releaseTexture(Texture &texture)

Create storage buffer.

uint32_t createStorageBuffer(size_t size)
void releaseStorageBuffer(uint32_t offset)

Create scalar buffer.

uint32_t createScalarBuffer(size_t size)
void releaseScalarBuffer(uint32_t offset)

Create instance buffer.

uint32_t createInstanceBuffer(size_t size)
void releaseInstanceBuffer(uint32_t offset)

Create batch buffer.

uint32_t createBatchBuffer(size_t size)
void releaseBatchBuffer(uint32_t offset)

Create indirect buffer.

uint32_t createIndirectBuffer(size_t size)
void releaseIndirectBuffer(uint32_t offset)

Update render manager.

void update(uint64_t frame = 0, size_t memory = 0)
TypeNameDescription
uint64_tframeIncremental frame number.
size_tmemoryMemory allocation limit.

Flush render manager.

void flush(const Device &device)

Memory usage.

size_t getTextureMemory(bool usage = true) const
size_t getBufferMemory(bool usage = true) const
size_t getMemory(bool usage = true) const
TypeNameDescription
boolusageCurrent usage if true.

Load render manager.

bool load(const Xml &xml)
bool load(const Json &json)
bool load(Stream &stream)

Save render manager.

bool save(Xml &xml, bool force = false, bool comment = false) const
bool save(Json &json, bool force = false) const
bool save(Stream &stream) const
TypeNameDescription
boolforceKeep default values.
boolcommentComment default values.

Types

using CreateCallback = Function<void(uint32_t progress)>

Enums

Flags

Manager flags.

NameValueDescription
FlagNone0
FlagVerbose(1 << 0)Verbose processing.
FlagQuery(1 << 1)Time query profiler.
FlagStatistics(1 << 2)Frame statistics query.
FlagPrintf(1 << 3)Create printf resources.
FlagRaster(1 << 4)Create raster resources.
FlagMeshlet(1 << 5)Create meshlet resources.
FlagTracing(1 << 6)Create tracing resources.
FlagShadowMap(1 << 7)Create shadow map resources.
FlagAntialiasing(1 << 8)Enable antialiasing.
FlagStencilBuffer(1 << 9)Enable stencil buffer.
FlagAuxiliaryBuffer(1 << 10)Enable auxiliary buffer.
FlagMotionBuffer(1 << 11)Enable motion buffer.
FlagBufferInterop(1 << 12)Enable buffers interop.
DefaultFlags(FlagQuery | FlagStatistics | FlagShadowMap)
NumFlags13