Skip to main content

Material

The Material class provides an interface to Scene materials. Materials can form a hierarchical structure allowing inheritance of parameters from parent to child materials. They support unlimited textures and uniform parameters, enabling efficient handling of thousands of texture and uniform inputs.

info

Materials can be loaded from asset files containing all parameters.

#include <scene/TellusimMaterial.h>

Constructors

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

Methods

static Material create(Type type, const char *name = nullptr)

Clear material.

void clear()

Material type.

Type getType() const
static const char *getTypeName(Type type)
const char *getTypeName() const
bool isBase() const
bool isSolid() const
bool isMetallic() const
bool isSpecular() const
bool isShading() const
bool isRoot() const
bool isScript() const

Material pass name.

static const char *getPassName(Pass pass)

Material mode name.

static const char *getModeName(Mode mode)

Material unique identifier.

uint32_t getID() const

Material index.

uint32_t getIndex() const

Material address.

uint32_t getAddress() const

Material name.

void setName(const char *name)
void setName(const String &name)
String getName() const

Material scene.

void setScene(Scene &scene, bool check = true)
const Scene getScene() const
Scene getScene()

Enabled flag.

void setEnabled(bool enabled)
bool isEnabled() const
bool isDisabled() const

Light mask.

void setLightMask(uint32_t mask)
uint32_t getLightMask() const

Camera mask.

void setCameraMask(uint32_t mask)
uint32_t getCameraMask() const

Object mask.

void setObjectMask(uint32_t mask)
uint32_t getObjectMask() const

Shadow mask.

void setShadowMask(uint32_t mask)
uint32_t getShadowMask() const

Tracer mask.

void setTracerMask(uint32_t mask)
uint32_t getTracerMask() const

Tracing mask.

void setTracingMask(uint32_t mask)
uint32_t getTracingMask() const

Collider mask.

void setColliderMask(uint32_t mask)
uint32_t getColliderMask() const

Motion mask.

void setMotionMask(uint32_t mask)
uint32_t getMotionMask() const

Hidden flag.

void setHidden(bool flag)
bool isHidden() const

Expanded flag.

void setExpanded(bool flag)
bool isExpanded() const

Internal flag.

void setInternal(bool flag)
bool isInternal() const

Virtual flag.

void setVirtual(bool flag)
bool isVirtual() const

Changed flag.

void setChanged(bool flag)
bool isChanged() const

Pointer info.

void setPtrInfo(void *ptr)
void *getPtrInfo() const

Meta info.

void setMetaInfo(const String &info)
String getMetaInfo() const

Root material.

const Material getRoot() const
Material getRoot()
Type getRootType() const

Material parent.

void clearParent()
uint32_t setParent(Material &parent, bool check = true)
const Material getParent() const
Material getParent()

Material children.

void reserveChildren(uint32_t num_children)
uint32_t addChild(Material &child, bool check = true)
bool removeChild(Material &child)
bool releaseChildren()
bool clearChildren()
void swapChildren(uint32_t index_0, uint32_t index_1)
uint32_t findChild(const char *name) const
uint32_t findChild(const Material &child) const
bool isChild(const Material &child) const
uint32_t getNumChildren() const
const Array<Material> getChildren() const
Array<Material> getChildren()
const Material getChild(uint32_t index) const
const Material getChild(const char *name) const
Material getChild(uint32_t index)
Material getChild(const char *name)

Material hierarchy.

uint32_t getHierarchy(Array<Material> &materials, bool clear = true)

Asset file name.

void setAssetName(const char *name)
void setAssetName(const String &name)
String getAssetName() const

Load material asset.

bool loadAsset(const char *name)
bool loadAsset(const String &name)
bool loadAsset(const Archive &archive)

Material textures.

void reserveTextures(uint32_t num_textures)
uint32_t addTexture(const char *name, const char *layout = nullptr, bool check = true)
uint32_t findTexture(const String &name) const
uint32_t findTexture(const char *name) const
void setTextureOverride(uint32_t index, bool override)
uint32_t getNumTextures() const
String getTextureName(uint32_t index) const
bool getTextureOverride(uint32_t index) const
String getTextureLayout(uint32_t index) const
String getTextureLayout(uint32_t index, const char *name) const
bool hasTextureLayout(uint32_t index, const char *name) const
uint32_t findTextureLayoutValue(const String &name) const
uint32_t findTextureLayoutValue(const char *name) const

Textures by index.

void setTexture(uint32_t index, const char *file, uint32_t priority = 0)
void setTexture(uint32_t index, const String &file, uint32_t priority = 0)
void setTexture(uint32_t index, const char *hash, const char *file, uint32_t priority = 0)
void setTexture(uint32_t index, const char *hash, const String &file, uint32_t priority = 0)
void setTexture(uint32_t index, const char *hash, Image &image, uint32_t priority = 0)
void setTexture(uint32_t index, const char *hash, Stream &stream, uint32_t priority = 0)
void setTexture(uint32_t index, const char *hash, Texture &texture, uint32_t priority = 0)
String getTextureHash(uint32_t index) const
String getTextureFile(uint32_t index) const
Texture getTextureSource(uint32_t index) const
uint32_t getTextureIndex(uint32_t index) const

Textures by name.

void setTexture(const char *name, const char *file, uint32_t priority = 0)
void setTexture(const char *name, const String &file, uint32_t priority = 0)
void setTexture(const char *name, const char *hash, const char *file, uint32_t priority = 0)
void setTexture(const char *name, const char *hash, const String &file, uint32_t priority = 0)
void setTexture(const char *name, const char *hash, Image &image, uint32_t priority = 0)
void setTexture(const char *name, const char *hash, Stream &stream, uint32_t priority = 0)
void setTexture(const char *name, const char *hash, Texture &texture, uint32_t priority = 0)
String getTextureHash(const char *name) const
String getTextureFile(const char *name) const
Texture getTextureSource(const char *name) const
uint32_t getTextureIndex(const char *name) const
uint32_t getTextureAddress() const
bool isTexturesUpdated() const

Material uniforms.

void reserveUniforms(uint32_t num_uniforms, uint32_t size)
uint32_t addUniform(const char *type, const char *name, uint32_t offset, const char *layout = nullptr, bool check = true)
uint32_t findUniform(const String &name) const
uint32_t findUniform(const char *name) const
void setUniformOverride(uint32_t index, bool override)
uint32_t getNumUniforms() const
uint32_t getUniformsSize() const
String getUniformType(uint32_t index) const
String getUniformName(uint32_t index) const
uint32_t getUniformOffset(uint32_t index) const
uint32_t getUniformSize(uint32_t index) const
bool getUniformOverride(uint32_t index) const
String getUniformLayout(uint32_t index) const
String getUniformLayout(uint32_t index, const char *name) const
bool hasUniformLayout(uint32_t index, const char *name) const

Uniforms by index.

void setUniform(uint32_t index, int32_t value, bool force = false)
void setUniform(uint32_t index, uint32_t value, bool force = false)
void setUniform(uint32_t index, float32_t value, bool force = false)
void setUniform(uint32_t index, Vector2f value, bool force = false)
void setUniform(uint32_t index, Vector3f value, bool force = false)
void setUniform(uint32_t index, Vector4f value, bool force = false)
void setUniform(uint32_t index, Matrix3x2f value, bool force = false)
void setUniform(uint32_t index, Matrix4x3f value, bool force = false)
void setUniform(uint32_t index, Matrix4x4f value, bool force = false)
void setUniform(uint32_t index, Color value, bool force = false)
int32_t getUniformScalari32(uint32_t index) const
uint32_t getUniformScalaru32(uint32_t index) const
float32_t getUniformScalarf32(uint32_t index) const
Vector2f getUniformVector2f(uint32_t index) const
Vector3f getUniformVector3f(uint32_t index) const
Vector4f getUniformVector4f(uint32_t index) const
Matrix3x2f getUniformMatrix3x2f(uint32_t index) const
Matrix4x3f getUniformMatrix4x3f(uint32_t index) const
Matrix4x4f getUniformMatrix4x4f(uint32_t index) const
Color getUniformColor(uint32_t index) const

Uniforms by name.

void setUniform(const char *name, int32_t value, bool force = false)
void setUniform(const char *name, uint32_t value, bool force = false)
void setUniform(const char *name, float32_t value, bool force = false)
void setUniform(const char *name, Vector2f value, bool force = false)
void setUniform(const char *name, Vector3f value, bool force = false)
void setUniform(const char *name, Vector4f value, bool force = false)
void setUniform(const char *name, Matrix3x2f value, bool force = false)
void setUniform(const char *name, Matrix4x3f value, bool force = false)
void setUniform(const char *name, Matrix4x4f value, bool force = false)
void setUniform(const char *name, Color value, bool force = false)
int32_t getUniformScalari32(const char *name) const
uint32_t getUniformScalaru32(const char *name) const
float32_t getUniformScalarf32(const char *name) const
Vector2f getUniformVector2f(const char *name) const
Vector3f getUniformVector3f(const char *name) const
Vector4f getUniformVector4f(const char *name) const
Matrix3x2f getUniformMatrix3x2f(const char *name) const
Matrix4x3f getUniformMatrix4x3f(const char *name) const
Matrix4x4f getUniformMatrix4x4f(const char *name) const
Color getUniformColor(const char *name) const
uint32_t getUniformAddress() const
bool isUniformsUpdated() const

Program hashes.

void addProgramHashes(const Material &material)
uint32_t addProgramHash(Type type, uint32_t hash)
uint32_t addProgramHashes(Type type, uint32_t hash, uint32_t range)

Compare material.

int32_t compare(const Material &material, float32_t threshold = 1e-6f) const

Load material.

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

Save material.

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

Clone material.

Material clone(Scene &scene, bool children = true) const

Updated flag.

bool isUpdated() const

Update scene.

void updateScene()

Enums

Type

Material types.

NameValue
TypeUnknown0
TypeBase1
TypeRoot2
TypeSolid3
TypeMetallic4
TypeSpecular5
TypeShading6
TypeScript7
NumTypes8

Pass

Material passes.

NameValueDescription
PassDeferred0Deferred pass.
PassForward1Forward pass.
PassTransparent2Transparent pass.
PassShadowMap3Shadow map pass.
NumPasses4

Mode

Material modes.

NameValueDescription
ModeDraw0Draw commands mode.
ModeRaster1Compute raster mode.
ModeTracing2Ray tracing mode.
NumModes3

DeferredTarget

Deferred targets.

NameValueDescription
DeferredColor0Emission color target.
DeferredNormal1Normal and binormal angle target.
DeferredDiffuse2Diffuse color and multisample mask target.
DeferredMetallic3Occlusion, roughness, metallic and reflectance targets.
DeferredAuxiliary4Clearcoat, clearcoat roughness, anisotropy and anisotropy angle targets.
NumDeferredTargets5