IrrlichtEngine
Public Member Functions | Public Attributes
irr::video::SMaterial Class Reference

Struct for holding parameters for a material renderer. More...

#include <SMaterial.h>

List of all members.

Public Member Functions

bool getFlag (E_MATERIAL_FLAG flag) const
 Gets the Material flag.
ITexturegetTexture (u32 i) const
 Gets the i-th texture.
core::matrix4getTextureMatrix (u32 i)
 Gets the texture transformation matrix for level i.
const core::matrix4getTextureMatrix (u32 i) const
 Gets the immutable texture transformation matrix for level i.
bool isTransparent () const
bool operator!= (const SMaterial &b) const
 Inequality operator.
SMaterialoperator= (const SMaterial &other)
 Assignment operator.
bool operator== (const SMaterial &b) const
 Equality operator.
void setFlag (E_MATERIAL_FLAG flag, bool value)
 Sets the Material flag to the given value.
void setTexture (u32 i, ITexture *tex)
 Sets the i-th texture.
void setTextureMatrix (u32 i, const core::matrix4 &mat)
 Sets the i-th texture transformation matrix.
 SMaterial ()
 Default constructor. Creates a solid, lit material with white colors.
 SMaterial (const SMaterial &other)
 Copy constructor.

Public Attributes

SColor AmbientColor
 How much ambient light (a global light) is reflected by this material.
u8 AntiAliasing
 Sets the antialiasing mode.
bool BackfaceCulling:1
 Is backface culling enabled? Default: true.
E_BLEND_OPERATION BlendOperation:4
 Store the blend operation of choice.
u8 ColorMask:4
 Defines the enabled color planes.
u8 ColorMaterial:3
 Defines the interpretation of vertex color in the lighting equation.
SColor DiffuseColor
 How much diffuse light coming from a light source is reflected by this material.
SColor EmissiveColor
 Light emitted by this material. Default is to emit no light.
bool FogEnable:1
 Is fog enabled? Default: false.
bool FrontfaceCulling:1
 Is frontface culling enabled? Default: false.
bool GouraudShading:1
 Flat or Gouraud shading? Default: true.
bool Lighting:1
 Will this material be lighted? Default: true.
E_MATERIAL_TYPE MaterialType
 Type of the material. Specifies how everything is blended together.
f32 MaterialTypeParam
 Free parameter, dependent on the material type.
f32 MaterialTypeParam2
 Second free parameter, dependent on the material type.
bool NormalizeNormals:1
 Should normals be normalized?
bool PointCloud:1
 Draw as point cloud or filled triangles? Default: false.
E_POLYGON_OFFSET PolygonOffsetDirection:1
 Flag defining the direction the polygon offset is applied to.
u8 PolygonOffsetFactor:3
 Factor specifying how far the polygon offset should be made.
f32 Shininess
 Value affecting the size of specular highlights.
SColor SpecularColor
 How much specular light (highlights from a light) is reflected.
SMaterialLayer TextureLayer [MATERIAL_MAX_TEXTURES]
 Texture layer array.
f32 Thickness
 Thickness of non-3dimensional elements such as lines and points.
bool UseMipMaps:1
 Shall mipmaps be used if available.
bool Wireframe:1
 Draw as wireframe or filled triangles? Default: false.
u8 ZBuffer
 Is the ZBuffer enabled? Default: ECFN_LESSEQUAL.
bool ZWriteEnable:1
 Is the zbuffer writeable or is it read-only. Default: true.

Detailed Description

Struct for holding parameters for a material renderer.

Definition at line 217 of file SMaterial.h.


Constructor & Destructor Documentation

irr::video::SMaterial::SMaterial ( ) [inline]

Default constructor. Creates a solid, lit material with white colors.

Definition at line 221 of file SMaterial.h.

irr::video::SMaterial::SMaterial ( const SMaterial other) [inline]

Copy constructor.

Parameters:
otherMaterial to copy from.

Definition at line 235 of file SMaterial.h.

References irr::video::MATERIAL_MAX_TEXTURES, and TextureLayer.


Member Function Documentation

bool irr::video::SMaterial::getFlag ( E_MATERIAL_FLAG  flag) const [inline]
ITexture* irr::video::SMaterial::getTexture ( u32  i) const [inline]

Gets the i-th texture.

Parameters:
iThe desired level.
Returns:
Texture for texture level i, if defined, else 0.

Definition at line 464 of file SMaterial.h.

References irr::video::MATERIAL_MAX_TEXTURES, irr::video::SMaterialLayer::Texture, and TextureLayer.

core::matrix4& irr::video::SMaterial::getTextureMatrix ( u32  i) [inline]

Gets the texture transformation matrix for level i.

Parameters:
iThe desired level. Must not be larger than MATERIAL_MAX_TEXTURES.
Returns:
Texture matrix for texture level i.

Definition at line 435 of file SMaterial.h.

References irr::video::SMaterialLayer::getTextureMatrix(), and TextureLayer.

const core::matrix4& irr::video::SMaterial::getTextureMatrix ( u32  i) const [inline]

Gets the immutable texture transformation matrix for level i.

Parameters:
iThe desired level.
Returns:
Texture matrix for texture level i, or identity matrix for levels larger than MATERIAL_MAX_TEXTURES.

Definition at line 443 of file SMaterial.h.

References irr::video::SMaterialLayer::getTextureMatrix(), irr::core::IdentityMatrix, irr::video::MATERIAL_MAX_TEXTURES, and TextureLayer.

bool irr::video::SMaterial::isTransparent ( ) const [inline]
bool irr::video::SMaterial::operator!= ( const SMaterial b) const [inline]
SMaterial& irr::video::SMaterial::operator= ( const SMaterial other) [inline]
bool irr::video::SMaterial::operator== ( const SMaterial b) const [inline]

Equality operator.

Parameters:
bMaterial to compare to.
Returns:
True if the materials are equal, else false.

Definition at line 658 of file SMaterial.h.

void irr::video::SMaterial::setFlag ( E_MATERIAL_FLAG  flag,
bool  value 
) [inline]
void irr::video::SMaterial::setTexture ( u32  i,
ITexture tex 
) [inline]

Sets the i-th texture.

If i>=MATERIAL_MAX_TEXTURES this setting will be ignored.

Parameters:
iThe desired level.
texTexture for texture level i.

Definition at line 473 of file SMaterial.h.

References irr::video::MATERIAL_MAX_TEXTURES, irr::video::SMaterialLayer::Texture, and TextureLayer.

Referenced by irr::scene::ISceneNode::setMaterialTexture().

void irr::video::SMaterial::setTextureMatrix ( u32  i,
const core::matrix4 mat 
) [inline]

Sets the i-th texture transformation matrix.

Parameters:
iThe desired level.
matTexture matrix for texture level i.

Definition at line 454 of file SMaterial.h.

References irr::video::MATERIAL_MAX_TEXTURES, irr::video::SMaterialLayer::setTextureMatrix(), and TextureLayer.


Member Data Documentation

How much ambient light (a global light) is reflected by this material.

The default is full white, meaning objects are completely globally illuminated. Reduce this if you want to see diffuse or specular light effects.

Definition at line 297 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Sets the antialiasing mode.

Values are chosen from E_ANTI_ALIASING_MODE. Default is EAAM_SIMPLE|EAAM_LINE_SMOOTH, i.e. simple multi-sample anti-aliasing and lime smoothing is enabled.

Definition at line 363 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Is backface culling enabled? Default: true.

Definition at line 416 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Store the blend operation of choice.

Values to be chosen from E_BLEND_OPERATION. The actual way to use this value is not yet determined, so ignore it for now.

Definition at line 383 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Defines the enabled color planes.

Values are defined as or'ed values of the E_COLOR_PLANE enum. Only enabled color planes will be rendered to the current render target. Typical use is to disable all colors when rendering only to depth or stencil buffer, or using Red and Green for Stereo rendering.

Definition at line 370 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Defines the interpretation of vertex color in the lighting equation.

Values should be chosen from E_COLOR_MATERIAL. When lighting is enabled, vertex color can be used instead of the material values for light modulation. This allows to easily change e.g. the diffuse light behavior of each face. The default, ECM_DIFFUSE, will result in a very similar rendering as with lighting turned off, just with light shading.

Definition at line 378 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

How much diffuse light coming from a light source is reflected by this material.

The default is full white.

Definition at line 301 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Light emitted by this material. Default is to emit no light.

Definition at line 304 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Is fog enabled? Default: false.

Definition at line 422 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Is frontface culling enabled? Default: false.

Definition at line 419 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Flat or Gouraud shading? Default: true.

Definition at line 404 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Will this material be lighted? Default: true.

Definition at line 407 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Type of the material. Specifies how everything is blended together.

Definition at line 291 of file SMaterial.h.

Referenced by isTransparent(), operator!=(), operator=(), and irr::scene::ISceneNode::setMaterialType().

Free parameter, dependent on the material type.

Mostly ignored, used for example in EMT_PARALLAX_MAP_SOLID and EMT_TRANSPARENT_ALPHA_CHANNEL.

Definition at line 346 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Second free parameter, dependent on the material type.

Mostly ignored.

Definition at line 350 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Should normals be normalized?

Always use this if the mesh lit and scaled. Default: false

Definition at line 426 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Draw as point cloud or filled triangles? Default: false.

Definition at line 401 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Flag defining the direction the polygon offset is applied to.

Can be to front or to back, specififed by values from E_POLYGON_OFFSET.

Definition at line 392 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), operator!=(), operator=(), and setFlag().

Factor specifying how far the polygon offset should be made.

Specifying 0 disables the polygon offset. The direction is specified spearately. The factor can be from 0 to 7.

Definition at line 388 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Value affecting the size of specular highlights.

A value of 20 is common. If set to 0, no specular highlights are being used. To activate, simply set the shininess of a material to a value in the range [0.5;128]:

                sceneNode->getMaterial(0).Shininess = 20.0f;

You can change the color of the highlights using

                sceneNode->getMaterial(0).SpecularColor.set(255,255,255,255);

The specular color of the dynamic lights (SLight::SpecularColor) will influence the the highlight color too, but they are set to a useful value by default when creating the light scene node. Here is a simple example on how to use specular highlights:

                // load and display mesh
                scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(
                smgr->getMesh("data/faerie.md2"));
                node->setMaterialTexture(0, driver->getTexture("data/Faerie2.pcx")); // set diffuse texture
                node->setMaterialFlag(video::EMF_LIGHTING, true); // enable dynamic lighting
                node->getMaterial(0).Shininess = 20.0f; // set size of specular highlights

                // add white light
                scene::ILightSceneNode* light = smgr->addLightSceneNode(0,
                        core::vector3df(5,5,5), video::SColorf(1.0f, 1.0f, 1.0f));

Definition at line 341 of file SMaterial.h.

Referenced by operator!=(), and operator=().

How much specular light (highlights from a light) is reflected.

The default is to reflect white specular light. See SMaterial::Shininess on how to enable specular lights.

Definition at line 309 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Thickness of non-3dimensional elements such as lines and points.

Definition at line 353 of file SMaterial.h.

Referenced by operator!=(), and operator=().

Shall mipmaps be used if available.

Sometimes, disabling mipmap usage can be useful. Default: true

Definition at line 430 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Draw as wireframe or filled triangles? Default: false.

The user can access a material flag using

 material.Wireframe=true 

or

 material.setFlag(EMF_WIREFRAME, true); 

Definition at line 398 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Is the ZBuffer enabled? Default: ECFN_LESSEQUAL.

Values are from E_COMPARISON_FUNC.

Definition at line 357 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().

Is the zbuffer writeable or is it read-only. Default: true.

This flag is forced to false if the MaterialType is a transparent type and the scene parameter ALLOW_ZWRITE_ON_TRANSPARENT is not set.

Definition at line 413 of file SMaterial.h.

Referenced by irr::video::SOverrideMaterial::apply(), getFlag(), operator!=(), operator=(), and setFlag().


The documentation for this class was generated from the following file: