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.
 
virtual ~Material () override
 Destruct.
 
virtual bool BeginLoad (Deserializer &source) override
 Load resource from stream. May be called from a worker thread. Return true if successful.
 
virtual bool EndLoad () override
 Finish resource loading. Always called from the main thread. Return true if successful.
 
virtual 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)
 Set number of techniques.
 
void SetTechnique (unsigned index, Technique *tech, unsigned qualityLevel=0, float lodDistance=0.0f)
 Set technique.
 
void 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.
 
void 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.
 
void SetShaderParameter (const String &name, const Variant &value)
 Set shader parameter.
 
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)
 Set 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)
 Set culling mode.
 
void SetShadowCullMode (CullMode mode)
 Set culling mode for shadows.
 
void SetFillMode (FillMode mode)
 Set polygon fill mode. Interacts with the camera's fill mode setting so that the "least filled" mode will be used.
 
void 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.
 
void SetAlphaToCoverage (bool enable)
 Set alpha-to-coverage mode on all passes.
 
void SetLineAntiAlias (bool enable)
 Set line antialiasing on/off. Has effect only on models that consist of line lists.
 
void 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.
 
void SetOcclusion (bool enable)
 Set whether to use in occlusion rendering. Default true.
 
void 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.
 
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
 Return number of techniques.
 
const Vector< TechniqueEntry > & GetTechniques () const
 Return all techniques.
 
const TechniqueEntryGetTechniqueEntry (unsigned index) const
 Return technique entry by index.
 
TechniqueGetTechnique (unsigned index) const
 Return technique by index.
 
PassGetPass (unsigned index, const String &passName) const
 Return pass by technique index and pass name.
 
TextureGetTexture (TextureUnit unit) const
 Return texture by unit.
 
const HashMap< TextureUnit,
SharedPtr< Texture > > & 
GetTextures () const
 Return all textures.
 
const StringGetVertexShaderDefines () const
 Return additional vertex shader defines.
 
const StringGetPixelShaderDefines () const
 Return additional pixel shader defines.
 
const VariantGetShaderParameter (const String &name) const
 Return shader parameter.
 
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
 Return normal culling mode.
 
CullMode GetShadowCullMode () const
 Return culling mode for shadows.
 
FillMode GetFillMode () const
 Return polygon fill mode.
 
const BiasParametersGetDepthBias () const
 Return depth bias.
 
bool GetAlphaToCoverage () const
 Return alpha-to-coverage mode.
 
bool GetLineAntiAlias () const
 Return whether line antialiasing is enabled.
 
unsigned char GetRenderOrder () const
 Return render order.
 
unsigned GetAuxViewFrameNumber () const
 Return last auxiliary view rendered frame number.
 
bool GetOcclusion () const
 Return whether should render occlusion.
 
bool GetSpecular () const
 Return whether should render specular.
 
SceneGetScene () const
 Return the scene associated with the material for shader parameter animation updates.
 
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)
 Load resource from file.
 
virtual bool SaveFile (const String &fileName) const
 Save resource to file.
 
void SetName (const String &name)
 Set 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
 Return name.
 
StringHash GetNameHash () const
 Return name hash.
 
unsigned GetMemoryUse () const
 Return memory use in bytes, possibly approximate.
 
unsigned GetUseTimer ()
 Return time since last use in milliseconds. If referred to elsewhere than in the resource cache, returns always zero.
 
AsyncLoadState GetAsyncLoadState () const
 Return the asynchronous loading state.
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
virtual ~Object () override
 Destruct. Clean up self from event sender & receiver structures.
 
virtual StringHash GetType () const =0
 Return type hash.
 
virtual const StringGetTypeName () const =0
 Return type name.
 
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.
 
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
 Return global variable based on key.
 
const VariantMapGetGlobalVars () const
 Return all global variables.
 
void SetGlobalVar (StringHash key, const Variant &value)
 Set global variable with the respective key and 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
 Return object category. Categories are (optionally) registered along with the object factory. Return an empty string if the object category is not registered.
 
- 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.
 
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
 Return reference count.
 
int WeakRefs () const
 Return weak reference count.
 
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,
MaterialShaderParameter
shaderParameters_
 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_
 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.


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