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)
Type | Name | Description |
---|---|---|
size_t | memory | Total buffer memory allocation. |
uint32_t | storage | Storage buffer split ratio. |
uint32_t | scalar | Scalar buffer split ratio. |
uint32_t | instance | Instance buffer split ratio. |
uint32_t | batch | Batch buffer split ratio. |
uint32_t | indirect | Indirect buffer split ratio. |
Storage buffer parameters.
void setStorageBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getStorageBufferSize() const
Buffer getStorageBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Storage buffer size in bytes. |
Buffer::Flags | flags | Additional storage buffer flags. |
Scalar buffer parameters.
void setScalarBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getScalarBufferSize() const
Buffer getScalarBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Scalar buffer size in bytes. |
Buffer::Flags | flags | Additional scalar buffer flags. |
Instance buffer parameters.
void setInstanceBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getInstanceBufferSize() const
Buffer getInstanceBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Instance buffer size in bytes. |
Buffer::Flags | flags | Additional instance buffer flags. |
Batch buffer parameters.
void setBatchBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getBatchBufferSize() const
Buffer getBatchBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Batch buffer size in bytes. |
Buffer::Flags | flags | Additional batch buffer flags. |
Indirect buffer parameters.
void setIndirectBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getIndirectBufferSize() const
Buffer getIndirectBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Indirect buffer size in bytes. |
Buffer::Flags | flags | Additional indirect buffer flags. |
Dispatch buffer parameters.
void setDispatchBufferParameters(size_t size, Flags flags = Buffer::FlagNone)
size_t getDispatchBufferSize() const
Buffer getDispatchBuffer()
Type | Name | Description |
---|---|---|
size_t | size | Dispatch buffer size in bytes. |
Buffer::Flags | flags | Additional 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
Type | Name | Description |
---|---|---|
Format | color | Color texture format. |
Format | depth | Depth texture format. |
Format | normal | Normal texture format. |
Format | diffuse | Diffuse texture format. |
Format | metallic | Metallic texture format. |
RenderRenderer::Flags | flags | Additional 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
Type | Name | Description |
---|---|---|
uint32_t | nodes | Maximum number of next step nodes (not the total number of nodes). |
uint32_t | steps | Number of spatial intersection steps. |
RenderSpatial::Flags | flags | Additional 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
Type | Name | Description |
---|---|---|
Format | color | Color texture format. |
Format | depth | Depth texture format. |
uint32_t | multisample | Antialiasing 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)
Type | Name | Description |
---|---|---|
RenderManager::Flags | flags | Manager 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)
Type | Name | Description |
---|---|---|
uint64_t | frame | Incremental frame number. |
size_t | memory | Memory 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
Type | Name | Description |
---|---|---|
bool | usage | Current 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
Type | Name | Description |
---|---|---|
bool | force | Keep default values. |
bool | comment | Comment default values. |
Types
using CreateCallback = Function<void(uint32_t progress)>
Enums
Flags
Manager flags.
Name | Value | Description |
---|---|---|
FlagNone | 0 | |
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) | |
NumFlags | 13 |