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.
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.
Name | Value |
---|---|
TypeUnknown | 0 |
TypeBase | 1 |
TypeRoot | 2 |
TypeSolid | 3 |
TypeMetallic | 4 |
TypeSpecular | 5 |
TypeShading | 6 |
TypeScript | 7 |
NumTypes | 8 |
Pass
Material passes.
Name | Value | Description |
---|---|---|
PassDeferred | 0 | Deferred pass. |
PassForward | 1 | Forward pass. |
PassTransparent | 2 | Transparent pass. |
PassShadowMap | 3 | Shadow map pass. |
NumPasses | 4 |
Mode
Material modes.
Name | Value | Description |
---|---|---|
ModeDraw | 0 | Draw commands mode. |
ModeRaster | 1 | Compute raster mode. |
ModeTracing | 2 | Ray tracing mode. |
NumModes | 3 |
DeferredTarget
Deferred targets.
Name | Value | Description |
---|---|---|
DeferredColor | 0 | Emission color target. |
DeferredNormal | 1 | Normal and binormal angle target. |
DeferredDiffuse | 2 | Diffuse color and multisample mask target. |
DeferredMetallic | 3 | Occlusion, roughness, metallic and reflectance targets. |
DeferredAuxiliary | 4 | Clearcoat, clearcoat roughness, anisotropy and anisotropy angle targets. |
NumDeferredTargets | 5 |