Describes how to render 3D geometries. More...

#include <Urho3D/Graphics/Material.h>

Inheritance diagram for Urho3D::Material:
[legend]
Collaboration diagram for Urho3D::Material:
[legend]

Public Member Functions

 Material (Context *context)
 Construct.
 
 ~Material () override
 Destruct.
 
bool BeginLoad (Deserializer &source) override
 Load resource from stream. May be called from a worker thread. Return true if successful.
 
bool EndLoad () override
 Finish resource loading. Always called from the main thread. Return true if successful.
 
bool Save (Serializer &dest) const override
 Save resource. Return true if successful.
 
bool Load (const XMLElement &source)
 Load from an XML element. Return true if successful.
 
bool Save (XMLElement &dest) const
 Save to an XML element. Return true if successful.
 
bool Load (const JSONValue &source)
 Load from a JSON value. Return true if successful.
 
bool Save (JSONValue &dest) const
 Save to a JSON value. Return true if successful.
 
void SetNumTechniques (unsigned num)
 
void SetTechnique (unsigned index, Technique *tech, MaterialQuality qualityLevel=QUALITY_LOW, float lodDistance=0.0f)
 Set technique.
 
void SetVertexShaderDefines (const String &defines)
 
void SetPixelShaderDefines (const String &defines)
 
void SetShaderParameter (const String &name, const Variant &value)
 
void SetShaderParameterAnimation (const String &name, ValueAnimation *animation, WrapMode wrapMode=WM_LOOP, float speed=1.0f)
 Set shader parameter animation.
 
void SetShaderParameterAnimationWrapMode (const String &name, WrapMode wrapMode)
 Set shader parameter animation wrap mode.
 
void SetShaderParameterAnimationSpeed (const String &name, float speed)
 Set shader parameter animation speed.
 
void SetTexture (TextureUnit unit, Texture *texture)
 
void SetUVTransform (const Vector2 &offset, float rotation, const Vector2 &repeat)
 Set texture coordinate transform.
 
void SetUVTransform (const Vector2 &offset, float rotation, float repeat)
 Set texture coordinate transform.
 
void SetCullMode (CullMode mode)
 
void SetShadowCullMode (CullMode mode)
 
void SetFillMode (FillMode mode)
 
void SetDepthBias (const BiasParameters &parameters)
 
void SetAlphaToCoverage (bool enable)
 
void SetLineAntiAlias (bool enable)
 
void SetRenderOrder (unsigned char order)
 
void SetOcclusion (bool enable)
 
void SetScene (Scene *scene)
 
void RemoveShaderParameter (const String &name)
 Remove shader parameter.
 
void ReleaseShaders ()
 Reset all shader pointers.
 
SharedPtr< MaterialClone (const String &cloneName=String::EMPTY) const
 Clone the material.
 
void SortTechniques ()
 Ensure that material techniques are listed in correct order.
 
void MarkForAuxView (unsigned frameNumber)
 Mark material for auxiliary view rendering.
 
unsigned GetNumTechniques () const
 
const Vector< TechniqueEntry > & GetTechniques () const
 Return all techniques.
 
const TechniqueEntryGetTechniqueEntry (unsigned index) const
 Return technique entry by index.
 
TechniqueGetTechnique (unsigned index) const
 
PassGetPass (unsigned index, const String &passName) const
 Return pass by technique index and pass name.
 
TextureGetTexture (TextureUnit unit) const
 
const HashMap< TextureUnit, SharedPtr< Texture > > & GetTextures () const
 Return all textures.
 
const StringGetVertexShaderDefines () const
 
const StringGetPixelShaderDefines () const
 
const VariantGetShaderParameter (const String &name) const
 
ValueAnimationGetShaderParameterAnimation (const String &name) const
 Return shader parameter animation.
 
WrapMode GetShaderParameterAnimationWrapMode (const String &name) const
 Return shader parameter animation wrap mode.
 
float GetShaderParameterAnimationSpeed (const String &name) const
 Return shader parameter animation speed.
 
const HashMap< StringHash, MaterialShaderParameter > & GetShaderParameters () const
 Return all shader parameters.
 
CullMode GetCullMode () const
 
CullMode GetShadowCullMode () const
 
FillMode GetFillMode () const
 
const BiasParametersGetDepthBias () const
 
bool GetAlphaToCoverage () const
 
bool GetLineAntiAlias () const
 
unsigned char GetRenderOrder () const
 
unsigned GetAuxViewFrameNumber () const
 Return last auxiliary view rendered frame number.
 
bool GetOcclusion () const
 
bool GetSpecular () const
 Return whether should render specular.
 
SceneGetScene () const
 
unsigned GetShaderParameterHash () const
 Return shader parameter hash value. Used as an optimization to avoid setting shader parameters unnecessarily.
 
- Public Member Functions inherited from Urho3D::Resource
 Resource (Context *context)
 Construct.
 
bool Load (Deserializer &source)
 Load resource synchronously. Call both BeginLoad() & EndLoad() and return true if both succeeded.
 
bool LoadFile (const String &fileName)
 
virtual bool SaveFile (const String &fileName) const
 
void SetName (const String &name)
 
void SetMemoryUse (unsigned size)
 Set memory use in bytes, possibly approximate.
 
void ResetUseTimer ()
 Reset last used timer.
 
void SetAsyncLoadState (AsyncLoadState newState)
 Set the asynchronous loading state. Called by ResourceCache. Resources in the middle of asynchronous loading are not normally returned to user.
 
const StringGetName () const
 
StringHash GetNameHash () const
 Return name hash.
 
unsigned GetMemoryUse () const
 
unsigned GetUseTimer ()
 
AsyncLoadState GetAsyncLoadState () const
 Return the asynchronous loading state.
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
 ~Object () override
 Destruct. Clean up self from event sender & receiver structures.
 
virtual StringHash GetType () const =0
 
virtual const StringGetTypeName () const =0
 
virtual const TypeInfoGetTypeInfo () const =0
 Return type info.
 
virtual void OnEvent (Object *sender, StringHash eventType, VariantMap &eventData)
 Handle event.
 
bool IsInstanceOf (StringHash type) const
 Check current instance is type of specified type.
 
bool IsInstanceOf (const TypeInfo *typeInfo) const
 Check current instance is type of specified type.
 
template<typename T >
bool IsInstanceOf () const
 Check current instance is type of specified class.
 
template<typename T >
T * Cast ()
 Cast the object to specified most derived class.
 
template<typename T >
const T * Cast () const
 Cast the object to specified most derived class.
 
void SubscribeToEvent (StringHash eventType, EventHandler *handler)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, EventHandler *handler)
 Subscribe to a specific sender's event.
 
void SubscribeToEvent (StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to a specific sender's event.
 
void UnsubscribeFromEvent (StringHash eventType)
 Unsubscribe from an event.
 
void UnsubscribeFromEvent (Object *sender, StringHash eventType)
 Unsubscribe from a specific sender's event.
 
void UnsubscribeFromEvents (Object *sender)
 Unsubscribe from a specific sender's events.
 
void UnsubscribeFromAllEvents ()
 Unsubscribe from all events.
 
void UnsubscribeFromAllEventsExcept (const PODVector< StringHash > &exceptions, bool onlyUserData)
 Unsubscribe from all events except those listed, and optionally only those with userdata (script registered events).
 
void SendEvent (StringHash eventType)
 Send event to all subscribers.
 
void SendEvent (StringHash eventType, VariantMap &eventData)
 Send event with parameters to all subscribers.
 
VariantMapGetEventDataMap () const
 Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps.
 
template<typename... Args>
void SendEvent (StringHash eventType, Args... args)
 Send event with variadic parameter pairs to all subscribers. The parameter pairs is a list of paramID and paramValue separated by comma, one pair after another.
 
ContextGetContext () const
 Return execution context.
 
const VariantGetGlobalVar (StringHash key) const
 
const VariantMapGetGlobalVars () const
 
void SetGlobalVar (StringHash key, const Variant &value)
 
ObjectGetSubsystem (StringHash type) const
 Return subsystem by type.
 
ObjectGetEventSender () const
 Return active event sender. Null outside event handling.
 
EventHandlerGetEventHandler () const
 Return active event handler. Null outside event handling.
 
bool HasSubscribedToEvent (StringHash eventType) const
 Return whether has subscribed to an event without specific sender.
 
bool HasSubscribedToEvent (Object *sender, StringHash eventType) const
 Return whether has subscribed to a specific sender's event.
 
bool HasEventHandlers () const
 Return whether has subscribed to any event.
 
template<class T >
T * GetSubsystem () const
 Template version of returning a subsystem.
 
const StringGetCategory () const
 
void SetBlockEvents (bool block)
 Block object from sending and receiving events.
 
bool GetBlockEvents () const
 Return sending and receiving events blocking status.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
 RefCounted (const RefCounted &rhs)=delete
 Prevent copy construction.
 
RefCountedoperator= (const RefCounted &rhs)=delete
 Prevent assignment.
 
void AddRef ()
 Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting.
 
void ReleaseRef ()
 Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting.
 
int Refs () const
 
int WeakRefs () const
 
RefCountRefCountPtr ()
 Return pointer to the reference count structure.
 

Static Public Member Functions

static void RegisterObject (Context *context)
 Register object factory.
 
static String GetTextureUnitName (TextureUnit unit)
 Return name for texture unit.
 
static Variant ParseShaderParameterValue (const String &value)
 Parse a shader parameter value from a string. Retunrs either a bool, a float, or a 2 to 4-component vector.
 
- Static Public Member Functions inherited from Urho3D::Object
static const TypeInfoGetTypeInfoStatic ()
 Return type info static.
 

Private Member Functions

 URHO3D_OBJECT (Material, Resource)
 
bool BeginLoadJSON (Deserializer &source)
 Helper function for loading JSON files.
 
bool BeginLoadXML (Deserializer &source)
 Helper function for loading XML files.
 
void ResetToDefaults ()
 Reset to defaults.
 
void RefreshShaderParameterHash ()
 Recalculate shader parameter hash.
 
void RefreshMemoryUse ()
 Recalculate the memory used by the material.
 
void ApplyShaderDefines (unsigned index=M_MAX_UNSIGNED)
 Reapply shader defines to technique index. By default reapply all.
 
ShaderParameterAnimationInfoGetShaderParameterAnimationInfo (const String &name) const
 Return shader parameter animation info.
 
void UpdateEventSubscription ()
 Update whether should be subscribed to scene or global update events for shader parameter animation.
 
void HandleAttributeAnimationUpdate (StringHash eventType, VariantMap &eventData)
 Update shader parameter animations.
 

Private Attributes

Vector< TechniqueEntrytechniques_
 Techniques.
 
HashMap< TextureUnit, SharedPtr< Texture > > textures_
 Textures.
 
HashMap< StringHash, MaterialShaderParametershaderParameters_
 Shader parameters.
 
HashMap< StringHash, SharedPtr< ShaderParameterAnimationInfo > > shaderParameterAnimationInfos_
 Shader parameters animation infos.
 
String vertexShaderDefines_
 Vertex shader defines.
 
String pixelShaderDefines_
 Pixel shader defines.
 
CullMode cullMode_ {}
 Normal culling mode.
 
CullMode shadowCullMode_ {}
 Culling mode for shadow rendering.
 
FillMode fillMode_ {}
 Polygon fill mode.
 
BiasParameters depthBias_ {}
 Depth bias parameters.
 
unsigned char renderOrder_ {}
 Render order value.
 
unsigned auxViewFrameNumber_ {}
 Last auxiliary view rendered frame number.
 
unsigned shaderParameterHash_ {}
 Shader parameter hash value.
 
bool alphaToCoverage_ {}
 Alpha-to-coverage flag.
 
bool lineAntiAlias_ {}
 Line antialiasing flag.
 
bool occlusion_ {true}
 Render occlusion flag.
 
bool specular_ {}
 Specular lighting flag.
 
bool subscribed_ {}
 Flag for whether is subscribed to animation updates.
 
bool batchedParameterUpdate_ {}
 Flag to suppress parameter hash and memory use recalculation when setting multiple shader parameters (loading or resetting the material).
 
SharedPtr< XMLFileloadXMLFile_
 XML file used while loading.
 
SharedPtr< JSONFileloadJSONFile_
 JSON file used while loading.
 
WeakPtr< Scenescene_
 Associated scene for shader parameter animation updates.
 

Additional Inherited Members

- Protected Attributes inherited from Urho3D::Object
Contextcontext_
 Execution context.
 

Detailed Description

Describes how to render 3D geometries.

Member Function Documentation

◆ GetAlphaToCoverage()

bool Urho3D::Material::GetAlphaToCoverage ( ) const
inline

Return alpha-to-coverage mode.

◆ GetCullMode()

CullMode Urho3D::Material::GetCullMode ( ) const
inline

Return normal culling mode.

Here is the caller graph for this function:

◆ GetDepthBias()

const BiasParameters& Urho3D::Material::GetDepthBias ( ) const
inline

Return depth bias.

◆ GetFillMode()

FillMode Urho3D::Material::GetFillMode ( ) const
inline

Return polygon fill mode.

◆ GetLineAntiAlias()

bool Urho3D::Material::GetLineAntiAlias ( ) const
inline

Return whether line antialiasing is enabled.

◆ GetNumTechniques()

unsigned Urho3D::Material::GetNumTechniques ( ) const
inline

Return number of techniques.

◆ GetOcclusion()

bool Urho3D::Material::GetOcclusion ( ) const
inline

Return whether should render occlusion.

Here is the caller graph for this function:

◆ GetPixelShaderDefines()

const String& Urho3D::Material::GetPixelShaderDefines ( ) const
inline

Return additional pixel shader defines.

◆ GetRenderOrder()

unsigned char Urho3D::Material::GetRenderOrder ( ) const
inline

Return render order.

◆ GetScene()

Scene * Urho3D::Material::GetScene ( ) const

Return the scene associated with the material for shader parameter animation updates.

◆ GetShaderParameter()

const Variant & Urho3D::Material::GetShaderParameter ( const String name) const

Return shader parameter.

◆ GetShadowCullMode()

CullMode Urho3D::Material::GetShadowCullMode ( ) const
inline

Return culling mode for shadows.

◆ GetTechnique()

Technique * Urho3D::Material::GetTechnique ( unsigned  index) const

Return technique by index.

◆ GetTexture()

Texture * Urho3D::Material::GetTexture ( TextureUnit  unit) const

Return texture by unit.

◆ GetVertexShaderDefines()

const String& Urho3D::Material::GetVertexShaderDefines ( ) const
inline

Return additional vertex shader defines.

◆ SetAlphaToCoverage()

void Urho3D::Material::SetAlphaToCoverage ( bool  enable)

Set alpha-to-coverage mode on all passes.

◆ SetCullMode()

void Urho3D::Material::SetCullMode ( CullMode  mode)

Set culling mode.

◆ SetDepthBias()

void Urho3D::Material::SetDepthBias ( const BiasParameters parameters)

Set depth bias parameters for depth write and compare. Note that the normal offset parameter is not used and will not be saved, as it affects only shadow map sampling during light rendering.

Here is the call graph for this function:

◆ SetFillMode()

void Urho3D::Material::SetFillMode ( FillMode  mode)

Set polygon fill mode. Interacts with the camera's fill mode setting so that the "least filled" mode will be used.

◆ SetLineAntiAlias()

void Urho3D::Material::SetLineAntiAlias ( bool  enable)

Set line antialiasing on/off. Has effect only on models that consist of line lists.

◆ SetNumTechniques()

void Urho3D::Material::SetNumTechniques ( unsigned  num)

Set number of techniques.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetOcclusion()

void Urho3D::Material::SetOcclusion ( bool  enable)

Set whether to use in occlusion rendering. Default true.

◆ SetPixelShaderDefines()

void Urho3D::Material::SetPixelShaderDefines ( const String defines)

Set additional pixel shader defines. Separate multiple defines with spaces. Setting defines at the material level causes technique(s) to be cloned as necessary.

Here is the call graph for this function:

◆ SetRenderOrder()

void Urho3D::Material::SetRenderOrder ( unsigned char  order)

Set 8-bit render order within pass. Default 128. Lower values will render earlier and higher values later, taking precedence over e.g. state and distance sorting.

◆ SetScene()

void Urho3D::Material::SetScene ( Scene scene)

Associate the material with a scene to ensure that shader parameter animation happens in sync with scene update, respecting the scene time scale. If no scene is set, the global update events will be used.

Here is the call graph for this function:

◆ SetShaderParameter()

void Urho3D::Material::SetShaderParameter ( const String name,
const Variant value 
)

Set shader parameter.

Here is the caller graph for this function:

◆ SetShadowCullMode()

void Urho3D::Material::SetShadowCullMode ( CullMode  mode)

Set culling mode for shadows.

◆ SetTexture()

void Urho3D::Material::SetTexture ( TextureUnit  unit,
Texture texture 
)

Set texture.

◆ SetVertexShaderDefines()

void Urho3D::Material::SetVertexShaderDefines ( const String defines)

Set additional vertex shader defines. Separate multiple defines with spaces. Setting defines at the material level causes technique(s) to be cloned as necessary.

Here is the call graph for this function:

The documentation for this class was generated from the following files:
  • Source/Urho3D/Graphics/Material.h
  • Source/Urho3D/Graphics/Material.cpp