arsa
2.7
|
Struct for holding parameters for a material renderer. More...
#include <SMaterial.h>
Public Member Functions | |
SMaterial () | |
Default constructor. Creates a solid, lit material with white colors. More... | |
SMaterial (const SMaterial &other) | |
Copy constructor. More... | |
SMaterial & | operator= (const SMaterial &other) |
Assignment operator. More... | |
core::matrix4 & | getTextureMatrix (u32 i) |
Gets the texture transformation matrix for level i. More... | |
const core::matrix4 & | getTextureMatrix (u32 i) const |
Gets the immutable texture transformation matrix for level i. More... | |
void | setTextureMatrix (u32 i, const core::matrix4 &mat) |
Sets the i-th texture transformation matrix. More... | |
ITexture * | getTexture (u32 i) const |
Gets the i-th texture. More... | |
void | setTexture (u32 i, ITexture *tex) |
Sets the i-th texture. More... | |
void | setFlag (E_MATERIAL_FLAG flag, bool value) |
Sets the Material flag to the given value. More... | |
bool | getFlag (E_MATERIAL_FLAG flag) const |
Gets the Material flag. More... | |
bool | operator!= (const SMaterial &b) const |
Inequality operator. More... | |
bool | operator== (const SMaterial &b) const |
Equality operator. More... | |
bool | isAlphaBlendOperation () const |
Check if material needs alpha blending. More... | |
bool | isTransparent () const |
Public Attributes | |
SMaterialLayer | TextureLayer [MATERIAL_MAX_TEXTURES] |
Texture layer array. More... | |
E_MATERIAL_TYPE | MaterialType |
Type of the material. Specifies how everything is blended together. More... | |
SColor | AmbientColor |
How much ambient light (a global light) is reflected by this material. More... | |
SColor | DiffuseColor |
How much diffuse light coming from a light source is reflected by this material. More... | |
SColor | EmissiveColor |
Light emitted by this material. Default is to emit no light. More... | |
SColor | SpecularColor |
How much specular light (highlights from a light) is reflected. More... | |
f32 | Shininess |
Value affecting the size of specular highlights. More... | |
f32 | MaterialTypeParam |
Free parameter, dependent on the material type. More... | |
f32 | MaterialTypeParam2 |
Second free parameter, dependent on the material type. More... | |
f32 | Thickness |
Thickness of non-3dimensional elements such as lines and points. More... | |
u8 | ZBuffer |
Is the ZBuffer enabled? Default: ECFN_LESSEQUAL. More... | |
u8 | AntiAliasing |
Sets the antialiasing mode. More... | |
u8 | ColorMask:4 |
Defines the enabled color planes. More... | |
u8 | ColorMaterial:3 |
Defines the interpretation of vertex color in the lighting equation. More... | |
E_BLEND_OPERATION | BlendOperation:4 |
Store the blend operation of choice. More... | |
f32 | BlendFactor |
Store the blend factors. More... | |
u8 | PolygonOffsetFactor:3 |
DEPRECATED. Will be removed after Irrlicht 1.9. Please use PolygonOffsetDepthBias instead. More... | |
E_POLYGON_OFFSET | PolygonOffsetDirection:1 |
DEPRECATED. Will be removed after Irrlicht 1.9. More... | |
f32 | PolygonOffsetDepthBias |
A constant z-buffer offset for a polygon/line/point. More... | |
f32 | PolygonOffsetSlopeScale |
Variable Z-Buffer offset based on the slope of the polygon. More... | |
bool | Wireframe:1 |
Draw as wireframe or filled triangles? Default: false. More... | |
bool | PointCloud:1 |
Draw as point cloud or filled triangles? Default: false. More... | |
bool | GouraudShading:1 |
Flat or Gouraud shading? Default: true. More... | |
bool | Lighting:1 |
Will this material be lighted? Default: true. More... | |
E_ZWRITE | ZWriteEnable:2 |
Is the zbuffer writable or is it read-only. Default: EZW_AUTO. More... | |
bool | BackfaceCulling:1 |
Is backface culling enabled? Default: true. More... | |
bool | FrontfaceCulling:1 |
Is frontface culling enabled? Default: false. More... | |
bool | FogEnable:1 |
Is fog enabled? Default: false. More... | |
bool | NormalizeNormals:1 |
Should normals be normalized? More... | |
bool | UseMipMaps:1 |
Shall mipmaps be used if available. More... | |
Struct for holding parameters for a material renderer.
Definition at line 304 of file SMaterial.h.
|
inline |
Default constructor. Creates a solid, lit material with white colors.
Definition at line 308 of file SMaterial.h.
Copy constructor.
other | Material to copy from. |
Definition at line 323 of file SMaterial.h.
|
inline |
Gets the Material flag.
flag | The flag to query. |
Definition at line 687 of file SMaterial.h.
Gets the i-th texture.
i | The desired level. |
Definition at line 587 of file SMaterial.h.
|
inline |
Gets the texture transformation matrix for level i.
i | The desired level. Must not be larger than MATERIAL_MAX_TEXTURES |
Definition at line 558 of file SMaterial.h.
|
inline |
Gets the immutable texture transformation matrix for level i.
i | The desired level. |
Definition at line 566 of file SMaterial.h.
|
inline |
Check if material needs alpha blending.
Definition at line 790 of file SMaterial.h.
|
inline |
Check for some fixed-function transparent types. Still used internally, but might be deprecated soon. You probably should not use this anymore, IVideoDriver::needsTransparentRenderPass is more useful in most situations as it asks the material renders directly what they do with the material.
Definition at line 815 of file SMaterial.h.
Inequality operator.
b | Material to compare to. |
Definition at line 743 of file SMaterial.h.
Assignment operator.
other | Material to copy from. |
Definition at line 333 of file SMaterial.h.
Equality operator.
b | Material to compare to. |
Definition at line 786 of file SMaterial.h.
|
inline |
Sets the Material flag to the given value.
flag | The flag to be set. |
value | The new value for the flag. |
Definition at line 606 of file SMaterial.h.
Sets the i-th texture.
If i>=MATERIAL_MAX_TEXTURES this setting will be ignored.
i | The desired level. |
tex | Texture for texture level i. |
Definition at line 596 of file SMaterial.h.
|
inline |
Sets the i-th texture transformation matrix.
i | The desired level. |
mat | Texture matrix for texture level i. |
Definition at line 577 of file SMaterial.h.
SColor irr::video::SMaterial::AmbientColor |
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 388 of file SMaterial.h.
u8 irr::video::SMaterial::AntiAliasing |
Sets the antialiasing mode.
Values are chosen from E_ANTI_ALIASING_MODE. Default is EAAM_SIMPLE, i.e. simple multi-sample anti-aliasing.
Definition at line 455 of file SMaterial.h.
bool irr::video::SMaterial::BackfaceCulling |
Is backface culling enabled? Default: true.
Definition at line 539 of file SMaterial.h.
f32 irr::video::SMaterial::BlendFactor |
Store the blend factors.
textureBlendFunc/textureBlendFuncSeparate functions should be used to write properly blending factors to this parameter. Due to historical reasons this parameter is not used for material type EMT_ONETEXTURE_BLEND which uses MaterialTypeParam instead for the blend factor. It's generally used only for materials without any blending otherwise (like EMT_SOLID). It's main use is to allow having shader materials which can enable/disable blending after they have been created. When you set this you usually also have to set BlendOperation to a value != EBO_NONE (setting it to EBO_ADD is probably the most common one value).
Definition at line 486 of file SMaterial.h.
E_BLEND_OPERATION irr::video::SMaterial::BlendOperation |
Store the blend operation of choice.
Values to be chosen from E_BLEND_OPERATION.
Definition at line 474 of file SMaterial.h.
u8 irr::video::SMaterial::ColorMask |
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 462 of file SMaterial.h.
u8 irr::video::SMaterial::ColorMaterial |
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 470 of file SMaterial.h.
SColor irr::video::SMaterial::DiffuseColor |
How much diffuse light coming from a light source is reflected by this material.
The default is full white.
Definition at line 392 of file SMaterial.h.
SColor irr::video::SMaterial::EmissiveColor |
Light emitted by this material. Default is to emit no light.
Definition at line 395 of file SMaterial.h.
bool irr::video::SMaterial::FogEnable |
Is fog enabled? Default: false.
Definition at line 545 of file SMaterial.h.
bool irr::video::SMaterial::FrontfaceCulling |
Is frontface culling enabled? Default: false.
Definition at line 542 of file SMaterial.h.
bool irr::video::SMaterial::GouraudShading |
Flat or Gouraud shading? Default: true.
Definition at line 528 of file SMaterial.h.
bool irr::video::SMaterial::Lighting |
Will this material be lighted? Default: true.
Definition at line 531 of file SMaterial.h.
E_MATERIAL_TYPE irr::video::SMaterial::MaterialType |
Type of the material. Specifies how everything is blended together.
Definition at line 382 of file SMaterial.h.
f32 irr::video::SMaterial::MaterialTypeParam |
Free parameter, dependent on the material type.
Mostly ignored, used for example in EMT_PARALLAX_MAP_SOLID, EMT_TRANSPARENT_ALPHA_CHANNEL and EMT_ONETEXTURE_BLEND.
Definition at line 437 of file SMaterial.h.
f32 irr::video::SMaterial::MaterialTypeParam2 |
Second free parameter, dependent on the material type.
Mostly ignored.
Definition at line 441 of file SMaterial.h.
bool irr::video::SMaterial::NormalizeNormals |
Should normals be normalized?
Always use this if the mesh lit and scaled. Default: false
Definition at line 549 of file SMaterial.h.
bool irr::video::SMaterial::PointCloud |
Draw as point cloud or filled triangles? Default: false.
Definition at line 525 of file SMaterial.h.
f32 irr::video::SMaterial::PolygonOffsetDepthBias |
A constant z-buffer offset for a polygon/line/point.
The range of the value is driver specific. On OpenGL you get units which are multiplied by the smallest value that is guaranteed to produce a resolvable offset. On D3D9 you can pass a range between -1 and 1. But you should likely divide it by the range of the depthbuffer. Like dividing by 65535.0 for a 16 bit depthbuffer. Thought it still might produce too large of a bias. Some article (https://aras-p.info/blog/2008/06/12/depth-bias-and-the-power-of-deceiving-yourself/) recommends multiplying by 2.0*4.8e-7 (and strangely on both 16 bit and 24 bit).
Definition at line 507 of file SMaterial.h.
E_POLYGON_OFFSET irr::video::SMaterial::PolygonOffsetDirection |
DEPRECATED. Will be removed after Irrlicht 1.9.
Flag defining the direction the polygon offset is applied to. Can be to front or to back, specified by values from E_POLYGON_OFFSET.
Definition at line 498 of file SMaterial.h.
u8 irr::video::SMaterial::PolygonOffsetFactor |
DEPRECATED. Will be removed after Irrlicht 1.9. Please use PolygonOffsetDepthBias instead.
Factor specifying how far the polygon offset should be made. Specifying 0 disables the polygon offset. The direction is specified separately. The factor can be from 0 to 7. Note: This probably never worked on Direct3D9 (was coded for D3D8 which had different value ranges)
Definition at line 493 of file SMaterial.h.
f32 irr::video::SMaterial::PolygonOffsetSlopeScale |
Variable Z-Buffer offset based on the slope of the polygon.
For polygons looking flat at a camera you could use 0 (for example in a 2D game) But in most cases you will have polygons rendered at a certain slope. The driver will calculate the slope for you and this value allows to scale that slope. The complete polygon offset is: PolygonOffsetSlopeScale*slope + PolygonOffsetDepthBias A good default here is to use 1.f if you want to push the polygons away from the camera and -1.f to pull them towards the camera.
Definition at line 516 of file SMaterial.h.
f32 irr::video::SMaterial::Shininess |
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]:
You can change the color of the highlights using
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:
Definition at line 432 of file SMaterial.h.
SColor irr::video::SMaterial::SpecularColor |
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 400 of file SMaterial.h.
SMaterialLayer irr::video::SMaterial::TextureLayer[MATERIAL_MAX_TEXTURES] |
Texture layer array.
Definition at line 379 of file SMaterial.h.
f32 irr::video::SMaterial::Thickness |
Thickness of non-3dimensional elements such as lines and points.
Definition at line 444 of file SMaterial.h.
bool irr::video::SMaterial::UseMipMaps |
Shall mipmaps be used if available.
Sometimes, disabling mipmap usage can be useful. Default: true
Definition at line 553 of file SMaterial.h.
bool irr::video::SMaterial::Wireframe |
Draw as wireframe or filled triangles? Default: false.
The user can access a material flag using
or
Definition at line 522 of file SMaterial.h.
u8 irr::video::SMaterial::ZBuffer |
Is the ZBuffer enabled? Default: ECFN_LESSEQUAL.
If you want to disable depth test for this material just set this parameter to ECFN_DISABLED. Values are from E_COMPARISON_FUNC.
Definition at line 450 of file SMaterial.h.
E_ZWRITE irr::video::SMaterial::ZWriteEnable |
Is the zbuffer writable or is it read-only. Default: EZW_AUTO.
If this parameter is not EZW_OFF, you probably also want to set ZBuffer to values other than ECFN_DISABLED
Definition at line 536 of file SMaterial.h.