Skip to main content

MaterialRoot

The MaterialRoot class enables precise management of rendering passes, masks, and material options. It handles Pipeline and Kernel instances individually for each object, rendering pass, and program hash. Additionally, it allows defining shader macros via options, providing efficient branch-free control over material behavior during rendering.

#include <scene/TellusimMaterialRoot.h>

Inheritance

Constructors

explicit MaterialRoot(const char *name = nullptr)
explicit MaterialRoot(Scene &scene, const char *name = nullptr)

Methods

Release resources.

void release(const Device &device)

Material order.

void setOrder(int32_t order)
int32_t getOrder() const

Material pass mask.

void setPassMask(PassMask mask)
PassMask getPassMask() const

Material mode mask.

void setModeMask(ModeMask mask)
ModeMask getModeMask() const

Material deferred mask.

void setDeferredMask(DeferredMask mask)
DeferredMask getDeferredMask() const

Material stencil parameters.

void setStencilRef(uint32_t ref)
void setStencilMask(uint32_t mask)
void setStencilFunc(StencilFunc func, StencilOp dpass_op)
void setStencilFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
uint32_t getStencilRef() const
uint32_t getStencilMask() const
StencilFunc getStencilFunc() const
StencilOp getStencilFailOp() const
StencilOp getStencilDepthFailOp() const
StencilOp getStencilDepthPassOp() const

Material options.

void reserveOptions(uint32_t num_options)
uint32_t addOption(const char *name, const char *macro, const char *layout = nullptr, bool check = true)
uint32_t findOption(const String &name) const
uint32_t findOption(const char *name) const
uint32_t getNumOptions() const
String getOptionName(uint32_t index) const
String getOptionMacro(uint32_t index) const
String getOptionLayout(uint32_t index) const
String getOptionLayout(uint32_t index, const char *name) const
bool hasOptionLayout(uint32_t index, const char *name) const
void addOptionParameter(uint32_t index, const char *name)
bool hasOptionParameter(uint32_t index, const char *name) const

Options by index.

void setOption(uint32_t index, bool value, bool force = false)
void setOption(uint32_t index, uint32_t value, bool force = false)
void setOption(uint32_t index, float32_t value, bool force = false)
void setOption(uint32_t index, const char *value, bool force = false)
void setOption(uint32_t index, const String &value, bool force = false)
uint32_t getOptionScalaru32(uint32_t index) const
float32_t getOptionScalarf32(uint32_t index) const
String getOptionString(uint32_t index) const

Options by name.

void setOption(const char *name, bool value, bool force = false)
void setOption(const char *name, uint32_t value, bool force = false)
void setOption(const char *name, float32_t value, bool force = false)
void setOption(const char *name, const char *value, bool force = false)
void setOption(const char *name, const String &value, bool force = false)
uint32_t getOptionScalaru32(const char *name) const
float32_t getOptionScalarf32(const char *name) const
String getOptionString(const char *name) const

Program hashes.

uint32_t getNumProgramHashes(Type type) const
uint32_t getProgramIndex(Type type, uint32_t hash) const
uint32_t getProgramRange(Type type, uint32_t hash) const

Material programs.

void setKernel(Type type, Pass pass, uint32_t hash, Kernel &kernel, bool owner = true)
void setPipeline(Type type, Pass pass, uint32_t hash, Pipeline &pipeline, bool owner = true)
uint32_t getNumPrograms(Type type) const
uint32_t getProgramHash(Type type, uint32_t index) const
Kernel getKernel(Type type, Pass pass, uint32_t index) const
Pipeline getPipeline(Type type, Pass pass, uint32_t index) const

Enums

PassMask

Pass masks.

NameValue
PassMaskNone0
PassMaskDeferred(1 << PassDeferred)
PassMaskForward(1 << PassForward)
PassMaskTransparent(1 << PassTransparent)
PassMaskShadowMap(1 << PassShadowMap)
PassMaskDefault(PassMaskDeferred | PassMaskShadowMap)
PassMaskOpacity(PassMaskDeferred | PassMaskForward | PassMaskShadowMap)
PassMaskAll(PassMaskDeferred | PassMaskForward | PassMaskTransparent | PassMaskShadowMap)

ModeMask

Mode masks.

NameValue
ModeMaskNone0
ModeMaskDraw(1 << ModeDraw)
ModeMaskRaster(1 << ModeRaster)
ModeMaskTracing(1 << ModeTracing)
ModeMaskDefault(ModeMaskDraw | ModeMaskTracing)

DeferredMask

Deferred masks.

NameValue
DeferredMaskNone0
DeferredMaskDepth(1 << 0)
DeferredMaskColor(1 << 1)
DeferredMaskNormal(1 << 2)
DeferredMaskDiffuse(1 << 3)
DeferredMaskMetallic(1 << 4)
DeferredMaskAuxiliary(1 << 5)
DeferredMaskMotion(1 << 6)
DeferredMaskDefault(1 << 7) - 1