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
Manager frame.
uint64_t getFrame() 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 |