Irrlicht 3D Engine
SMaterial.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __S_MATERIAL_H_INCLUDED__
6 #define __S_MATERIAL_H_INCLUDED__
7 
8 #include "SColor.h"
9 #include "matrix4.h"
10 #include "irrArray.h"
11 #include "irrMath.h"
12 #include "EMaterialTypes.h"
13 #include "EMaterialFlags.h"
14 #include "SMaterialLayer.h"
15 
16 namespace irr
17 {
18 namespace video
19 {
20  class ITexture;
21 
24  {
25  EBF_ZERO = 0,
36  };
37 
40  {
41  EBO_NONE = 0,
51  };
52 
55  {
59  };
60 
63  {
80  };
81 
84  {
96  ECP_RGB=14,
99  };
100 
102 
105  {
112  };
113 
115 
116  inline f32 pack_textureBlendFunc ( const E_BLEND_FACTOR srcFact, const E_BLEND_FACTOR dstFact, const E_MODULATE_FUNC modulate=EMFN_MODULATE_1X, const u32 alphaSource=EAS_TEXTURE )
117  {
118  const u32 tmp = (alphaSource << 12) | (modulate << 8) | (srcFact << 4) | dstFact;
119  return FR(tmp);
120  }
121 
123 
124  inline void unpack_textureBlendFunc ( E_BLEND_FACTOR &srcFact, E_BLEND_FACTOR &dstFact,
125  E_MODULATE_FUNC &modulo, u32& alphaSource, const f32 param )
126  {
127  const u32 state = IR(param);
128  alphaSource = (state & 0x0000F000) >> 12;
129  modulo = E_MODULATE_FUNC( ( state & 0x00000F00 ) >> 8 );
130  srcFact = E_BLEND_FACTOR ( ( state & 0x000000F0 ) >> 4 );
131  dstFact = E_BLEND_FACTOR ( ( state & 0x0000000F ) );
132  }
133 
135  inline bool textureBlendFunc_hasAlpha ( const E_BLEND_FACTOR factor )
136  {
137  switch ( factor )
138  {
139  case EBF_SRC_ALPHA:
141  case EBF_DST_ALPHA:
144  return true;
145  default:
146  return false;
147  }
148  }
149 
150 
152 
159  {
173 
175  };
176 
178 
185  {
198  };
199 
201 
203  {
205 
208 
211  };
212 
215  {
216  "Back",
217  "Front",
218  0
219  };
220 
221 
224 
226  class SMaterial
227  {
228  public:
231  : MaterialType(EMT_SOLID), AmbientColor(255,255,255,255), DiffuseColor(255,255,255,255),
232  EmissiveColor(0,0,0,0), SpecularColor(255,255,255,255),
233  Shininess(0.0f), MaterialTypeParam(0.0f), MaterialTypeParam2(0.0f), Thickness(1.0f),
237  Wireframe(false), PointCloud(false), GouraudShading(true),
238  Lighting(true), ZWriteEnable(true), BackfaceCulling(true), FrontfaceCulling(false),
239  FogEnable(false), NormalizeNormals(false), UseMipMaps(true)
240  { }
241 
243 
244  SMaterial(const SMaterial& other)
245  {
246  // These pointers are checked during assignment
247  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
248  TextureLayer[i].TextureMatrix = 0;
249  *this = other;
250  }
251 
253 
255  {
256  // Check for self-assignment!
257  if (this == &other)
258  return *this;
259 
260  MaterialType = other.MaterialType;
261 
262  AmbientColor = other.AmbientColor;
263  DiffuseColor = other.DiffuseColor;
266  Shininess = other.Shininess;
269  Thickness = other.Thickness;
270  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
271  {
272  TextureLayer[i] = other.TextureLayer[i];
273  }
274 
275  Wireframe = other.Wireframe;
276  PointCloud = other.PointCloud;
278  Lighting = other.Lighting;
279  ZWriteEnable = other.ZWriteEnable;
282  FogEnable = other.FogEnable;
284  ZBuffer = other.ZBuffer;
285  AntiAliasing = other.AntiAliasing;
286  ColorMask = other.ColorMask;
291  UseMipMaps = other.UseMipMaps;
292 
293  return *this;
294  }
295 
298 
301 
303 
307 
309 
311 
314 
316 
319 
321 
351 
353 
356 
358 
360 
363 
365 
367 
369 
373 
375 
380 
382 
388 
390 
393 
395 
398 
400 
402 
404 
407  bool Wireframe:1;
408 
410  bool PointCloud:1;
411 
414 
416  bool Lighting:1;
417 
419 
422  bool ZWriteEnable:1;
423 
426 
429 
431  bool FogEnable:1;
432 
434 
436 
438 
439  bool UseMipMaps:1;
440 
442 
445  {
446  return TextureLayer[i].getTextureMatrix();
447  }
448 
450 
453  {
454  if (i<MATERIAL_MAX_TEXTURES)
455  return TextureLayer[i].getTextureMatrix();
456  else
457  return core::IdentityMatrix;
458  }
459 
461 
463  void setTextureMatrix(u32 i, const core::matrix4& mat)
464  {
465  if (i>=MATERIAL_MAX_TEXTURES)
466  return;
468  }
469 
471 
474  {
475  return i < MATERIAL_MAX_TEXTURES ? TextureLayer[i].Texture : 0;
476  }
477 
479 
482  void setTexture(u32 i, ITexture* tex)
483  {
484  if (i>=MATERIAL_MAX_TEXTURES)
485  return;
486  TextureLayer[i].Texture = tex;
487  }
488 
490 
492  void setFlag(E_MATERIAL_FLAG flag, bool value)
493  {
494  switch (flag)
495  {
496  case EMF_WIREFRAME:
497  Wireframe = value; break;
498  case EMF_POINTCLOUD:
499  PointCloud = value; break;
500  case EMF_GOURAUD_SHADING:
501  GouraudShading = value; break;
502  case EMF_LIGHTING:
503  Lighting = value; break;
504  case EMF_ZBUFFER:
505  ZBuffer = value; break;
506  case EMF_ZWRITE_ENABLE:
507  ZWriteEnable = value; break;
509  BackfaceCulling = value; break;
511  FrontfaceCulling = value; break;
512  case EMF_BILINEAR_FILTER:
513  {
514  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
515  TextureLayer[i].BilinearFilter = value;
516  }
517  break;
519  {
520  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
521  TextureLayer[i].TrilinearFilter = value;
522  }
523  break;
525  {
526  if (value)
527  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
528  TextureLayer[i].AnisotropicFilter = 0xFF;
529  else
530  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
531  TextureLayer[i].AnisotropicFilter = 0;
532  }
533  break;
534  case EMF_FOG_ENABLE:
535  FogEnable = value; break;
537  NormalizeNormals = value; break;
538  case EMF_TEXTURE_WRAP:
539  {
540  for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
541  {
544  }
545  }
546  break;
547  case EMF_ANTI_ALIASING:
548  AntiAliasing = value?EAAM_SIMPLE:EAAM_OFF; break;
549  case EMF_COLOR_MASK:
550  ColorMask = value?ECP_ALL:ECP_NONE; break;
551  case EMF_COLOR_MATERIAL:
552  ColorMaterial = value?ECM_DIFFUSE:ECM_NONE; break;
553  case EMF_USE_MIP_MAPS:
554  UseMipMaps = value; break;
555  case EMF_BLEND_OPERATION:
556  BlendOperation = value?EBO_ADD:EBO_NONE; break;
557  case EMF_POLYGON_OFFSET:
558  PolygonOffsetFactor = value?1:0;
560  break;
561  default:
562  break;
563  }
564  }
565 
567 
569  bool getFlag(E_MATERIAL_FLAG flag) const
570  {
571  switch (flag)
572  {
573  case EMF_WIREFRAME:
574  return Wireframe;
575  case EMF_POINTCLOUD:
576  return PointCloud;
577  case EMF_GOURAUD_SHADING:
578  return GouraudShading;
579  case EMF_LIGHTING:
580  return Lighting;
581  case EMF_ZBUFFER:
582  return ZBuffer!=ECFN_NEVER;
583  case EMF_ZWRITE_ENABLE:
584  return ZWriteEnable;
586  return BackfaceCulling;
588  return FrontfaceCulling;
589  case EMF_BILINEAR_FILTER:
590  return TextureLayer[0].BilinearFilter;
592  return TextureLayer[0].TrilinearFilter;
594  return TextureLayer[0].AnisotropicFilter!=0;
595  case EMF_FOG_ENABLE:
596  return FogEnable;
598  return NormalizeNormals;
599  case EMF_TEXTURE_WRAP:
600  return !(TextureLayer[0].TextureWrapU ||
608  case EMF_ANTI_ALIASING:
609  return (AntiAliasing==1);
610  case EMF_COLOR_MASK:
611  return (ColorMask!=ECP_NONE);
612  case EMF_COLOR_MATERIAL:
613  return (ColorMaterial != ECM_NONE);
614  case EMF_USE_MIP_MAPS:
615  return UseMipMaps;
616  case EMF_BLEND_OPERATION:
617  return BlendOperation != EBO_NONE;
618  case EMF_POLYGON_OFFSET:
619  return PolygonOffsetFactor != 0;
620  }
621 
622  return false;
623  }
624 
626 
628  inline bool operator!=(const SMaterial& b) const
629  {
630  bool different =
631  MaterialType != b.MaterialType ||
632  AmbientColor != b.AmbientColor ||
633  DiffuseColor != b.DiffuseColor ||
636  Shininess != b.Shininess ||
639  Thickness != b.Thickness ||
640  Wireframe != b.Wireframe ||
641  PointCloud != b.PointCloud ||
643  Lighting != b.Lighting ||
644  ZBuffer != b.ZBuffer ||
645  ZWriteEnable != b.ZWriteEnable ||
648  FogEnable != b.FogEnable ||
650  AntiAliasing != b.AntiAliasing ||
651  ColorMask != b.ColorMask ||
656  UseMipMaps != b.UseMipMaps;
657  for (u32 i=0; (i<MATERIAL_MAX_TEXTURES) && !different; ++i)
658  {
659  different |= (TextureLayer[i] != b.TextureLayer[i]);
660  }
661  return different;
662  }
663 
665 
667  inline bool operator==(const SMaterial& b) const
668  { return !(b!=*this); }
669 
670  bool isTransparent() const
671  {
676  }
677  };
678 
680  IRRLICHT_API extern SMaterial IdentityMaterial;
681 
682 } // end namespace video
683 } // end namespace irr
684 
685 #endif
irr::video::SMaterialLayer::getTextureMatrix
core::matrix4 & getTextureMatrix()
Gets the texture transformation matrix.
Definition: SMaterialLayer.h:122
irr::video::ECFN_LESS
@ ECFN_LESS
exclusive less comparison, i.e. <
Definition: SMaterial.h:71
irr::video::EMF_ZWRITE_ENABLE
@ EMF_ZWRITE_ENABLE
May be written to the zbuffer or is it readonly. Default: true.
Definition: EMaterialFlags.h:33
irr::video::EAAM_SIMPLE
@ EAAM_SIMPLE
Default anti-aliasing mode.
Definition: SMaterial.h:163
irr::video::EPO_BACK
@ EPO_BACK
Push pixel towards the far plane, away from the eye.
Definition: SMaterial.h:206
irr::video::SMaterial::setTexture
void setTexture(u32 i, ITexture *tex)
Sets the i-th texture.
Definition: SMaterial.h:482
irr::video::ECP_NONE
@ ECP_NONE
No color enabled.
Definition: SMaterial.h:86
irr::video::SMaterial::ColorMaterial
u8 ColorMaterial
Defines the interpretation of vertex color in the lighting equation.
Definition: SMaterial.h:387
irr::video::EMF_NORMALIZE_NORMALS
@ EMF_NORMALIZE_NORMALS
Normalizes normals. Default: false.
Definition: EMaterialFlags.h:66
irr::video::EMF_GOURAUD_SHADING
@ EMF_GOURAUD_SHADING
Flat or Gouraud shading? Default: true.
Definition: EMaterialFlags.h:23
irr::video::E_COMPARISON_FUNC
E_COMPARISON_FUNC
Comparison function, e.g. for depth buffer test.
Definition: SMaterial.h:62
irr::video::EBF_SRC_COLOR
@ EBF_SRC_COLOR
dest (srcR, srcG, srcB, srcA)
Definition: SMaterial.h:29
irr::video::SMaterialLayer::TrilinearFilter
bool TrilinearFilter
Is trilinear filtering enabled? Default: false.
Definition: SMaterialLayer.h:197
irr::video::SMaterial::MaterialTypeParam
f32 MaterialTypeParam
Free parameter, dependent on the material type.
Definition: SMaterial.h:355
irr::video::EAAM_QUALITY
@ EAAM_QUALITY
High-quality anti-aliasing, not always supported, automatically enables SIMPLE mode.
Definition: SMaterial.h:165
irr::video::E_COLOR_PLANE
E_COLOR_PLANE
Enum values for enabling/disabling color planes for rendering.
Definition: SMaterial.h:83
irr::video::ECFN_GREATER
@ ECFN_GREATER
inverse of <=
Definition: SMaterial.h:77
irr::video::EBF_ONE_MINUS_DST_ALPHA
@ EBF_ONE_MINUS_DST_ALPHA
src & dest (1-destA, 1-destA, 1-destA, 1-destA)
Definition: SMaterial.h:34
irr::video::E_MATERIAL_FLAG
E_MATERIAL_FLAG
Material flags.
Definition: EMaterialFlags.h:14
irr::video::E_ANTI_ALIASING_MODE
E_ANTI_ALIASING_MODE
These flags are used to specify the anti-aliasing and smoothing modes.
Definition: SMaterial.h:158
irr::video::ECFN_NEVER
@ ECFN_NEVER
Test never succeeds, this equals disable.
Definition: SMaterial.h:65
irr::video::EBF_ONE_MINUS_SRC_COLOR
@ EBF_ONE_MINUS_SRC_COLOR
dest (1-srcR, 1-srcG, 1-srcB, 1-srcA)
Definition: SMaterial.h:30
irr::video::EMT_TRANSPARENT_VERTEX_ALPHA
@ EMT_TRANSPARENT_VERTEX_ALPHA
Makes the material transparent based on the vertex alpha value.
Definition: EMaterialTypes.h:116
irr::video::EMF_BILINEAR_FILTER
@ EMF_BILINEAR_FILTER
Is bilinear filtering enabled? Default: true.
Definition: EMaterialFlags.h:43
irr::video::SMaterial::FogEnable
bool FogEnable
Is fog enabled? Default: false.
Definition: SMaterial.h:431
irr::video::SMaterial::FrontfaceCulling
bool FrontfaceCulling
Is frontface culling enabled? Default: false.
Definition: SMaterial.h:428
irr::video::ECFN_NOTEQUAL
@ ECFN_NOTEQUAL
Succeeds almost always, except for exact equality.
Definition: SMaterial.h:73
IRRLICHT_API
#define IRRLICHT_API
Set FPU settings.
Definition: IrrCompileConfig.h:705
irr::video::EBF_ONE_MINUS_SRC_ALPHA
@ EBF_ONE_MINUS_SRC_ALPHA
src & dest (1-srcA, 1-srcA, 1-srcA, 1-srcA)
Definition: SMaterial.h:32
irr::c8
char c8
8 bit character variable.
Definition: irrTypes.h:31
irr::video::EMT_SOLID
@ EMT_SOLID
Standard solid material.
Definition: EMaterialTypes.h:19
irr::video::ECP_GREEN
@ ECP_GREEN
Green enabled.
Definition: SMaterial.h:92
irr::video::SMaterial::BlendOperation
E_BLEND_OPERATION BlendOperation
Store the blend operation of choice.
Definition: SMaterial.h:392
irr::video::EMFN_MODULATE_4X
@ EMFN_MODULATE_4X
Definition: SMaterial.h:58
irr::video::EAAM_POINT_SMOOTH
@ EAAM_POINT_SMOOTH
point smoothing, often in software and slow, only with OpenGL
Definition: SMaterial.h:169
irr::video::EBO_NONE
@ EBO_NONE
No blending happens.
Definition: SMaterial.h:41
irr::video::SMaterial::Shininess
f32 Shininess
Value affecting the size of specular highlights.
Definition: SMaterial.h:350
irr::video::EBF_ZERO
@ EBF_ZERO
src & dest (0, 0, 0, 0)
Definition: SMaterial.h:25
irr::video::SMaterial::PointCloud
bool PointCloud
Draw as point cloud or filled triangles? Default: false.
Definition: SMaterial.h:410
irr::video::EBF_SRC_ALPHA
@ EBF_SRC_ALPHA
src & dest (srcA, srcA, srcA, srcA)
Definition: SMaterial.h:31
irr::video::SMaterial::operator!=
bool operator!=(const SMaterial &b) const
Inequality operator.
Definition: SMaterial.h:628
irr::video::EMF_BLEND_OPERATION
@ EMF_BLEND_OPERATION
Flag for blend operation.
Definition: EMaterialFlags.h:84
matrix4.h
irr::core::IR
u32 IR(f32 x)
Definition: irrMath.h:353
irr::video::EBO_MAX_ALPHA
@ EBO_MAX_ALPHA
Choose maximum value of each color channel based on alpha value, not widely supported.
Definition: SMaterial.h:50
irr::video::EMF_ZBUFFER
@ EMF_ZBUFFER
Is the ZBuffer enabled? Default: true.
Definition: EMaterialFlags.h:29
irr::video::ITexture
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:98
irr::video::SMaterial::operator==
bool operator==(const SMaterial &b) const
Equality operator.
Definition: SMaterial.h:667
irr::video::SMaterial::MaterialTypeParam2
f32 MaterialTypeParam2
Second free parameter, dependent on the material type.
Definition: SMaterial.h:359
irr::video::ECM_EMISSIVE
@ ECM_EMISSIVE
Use vertex color for emissive light.
Definition: SMaterial.h:193
irr::video::SMaterial::SMaterial
SMaterial()
Default constructor. Creates a solid, lit material with white colors.
Definition: SMaterial.h:230
irr::video::EMFN_MODULATE_2X
@ EMFN_MODULATE_2X
Definition: SMaterial.h:57
irr::video::ECM_SPECULAR
@ ECM_SPECULAR
Use vertex color for specular light.
Definition: SMaterial.h:195
irr::video::ECFN_LESSEQUAL
@ ECFN_LESSEQUAL
<= test, default for e.g. depth test
Definition: SMaterial.h:67
irr::video::SMaterial::EmissiveColor
SColor EmissiveColor
Light emitted by this material. Default is to emit no light.
Definition: SMaterial.h:313
irr::video::EMF_POINTCLOUD
@ EMF_POINTCLOUD
Draw as point cloud or filled triangles? Default: false.
Definition: EMaterialFlags.h:20
irr::video::E_TEXTURE_CLAMP
E_TEXTURE_CLAMP
Texture coord clamp mode outside [0.0, 1.0].
Definition: SMaterialLayer.h:18
irr::video::EAS_TEXTURE
@ EAS_TEXTURE
Use texture alpha channel.
Definition: SMaterial.h:111
irr::video::EBO_MIN_FACTOR
@ EBO_MIN_FACTOR
Choose minimum value of each color channel after applying blend factors, not widely supported.
Definition: SMaterial.h:47
irr::video::EMF_BACK_FACE_CULLING
@ EMF_BACK_FACE_CULLING
Is backface culling enabled? Default: true.
Definition: EMaterialFlags.h:36
irr::video::SMaterial::DiffuseColor
SColor DiffuseColor
How much diffuse light coming from a light source is reflected by this material.
Definition: SMaterial.h:310
irr::video::SMaterial::SpecularColor
SColor SpecularColor
How much specular light (highlights from a light) is reflected.
Definition: SMaterial.h:318
irr::video::SMaterial::getTexture
ITexture * getTexture(u32 i) const
Gets the i-th texture.
Definition: SMaterial.h:473
irr::core::CMatrix4
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Definition: matrix4.h:45
irrArray.h
irr::video::ECP_ALL
@ ECP_ALL
All planes enabled.
Definition: SMaterial.h:98
irr::video::ECM_AMBIENT
@ ECM_AMBIENT
Use vertex color for ambient light.
Definition: SMaterial.h:191
irr::video::EBO_MIN
@ EBO_MIN
Choose minimum value of each color channel.
Definition: SMaterial.h:45
irr::video::EMF_COLOR_MATERIAL
@ EMF_COLOR_MATERIAL
ColorMaterial enum for vertex color interpretation.
Definition: EMaterialFlags.h:78
irr::video::EAS_NONE
@ EAS_NONE
Use no alpha, somewhat redundant with other settings.
Definition: SMaterial.h:107
irr::video::EBF_DST_COLOR
@ EBF_DST_COLOR
src (destR, destG, destB, destA)
Definition: SMaterial.h:27
irr::video::SMaterialLayer
Struct for holding material parameters which exist per texture layer.
Definition: SMaterialLayer.h:48
irr::video::SMaterial::PolygonOffsetFactor
u8 PolygonOffsetFactor
Factor specifying how far the polygon offset should be made.
Definition: SMaterial.h:397
irr::video::SMaterial::TextureLayer
SMaterialLayer TextureLayer[MATERIAL_MAX_TEXTURES]
Texture layer array.
Definition: SMaterial.h:297
irr::video::EMF_FRONT_FACE_CULLING
@ EMF_FRONT_FACE_CULLING
Is frontface culling enabled? Default: false.
Definition: EMaterialFlags.h:40
irr::video::EBF_ONE_MINUS_DST_COLOR
@ EBF_ONE_MINUS_DST_COLOR
src (1-destR, 1-destG, 1-destB, 1-destA)
Definition: SMaterial.h:28
irr::video::EMF_ANTI_ALIASING
@ EMF_ANTI_ALIASING
AntiAliasing mode.
Definition: EMaterialFlags.h:72
irr::core::FR
f32 FR(u32 x)
Floating-point representation of an integer value.
Definition: irrMath.h:363
irr::video::SMaterial::getTextureMatrix
core::matrix4 & getTextureMatrix(u32 i)
Gets the texture transformation matrix for level i.
Definition: SMaterial.h:444
irr::video::SMaterial::GouraudShading
bool GouraudShading
Flat or Gouraud shading? Default: true.
Definition: SMaterial.h:413
irr::video::ECP_ALPHA
@ ECP_ALPHA
Alpha enabled.
Definition: SMaterial.h:88
irr::video::E_POLYGON_OFFSET
E_POLYGON_OFFSET
Flags for the definition of the polygon offset feature.
Definition: SMaterial.h:202
irr::f32
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
irr::video::SMaterial::getTextureMatrix
const core::matrix4 & getTextureMatrix(u32 i) const
Gets the immutable texture transformation matrix for level i.
Definition: SMaterial.h:452
irr::video::E_MATERIAL_TYPE
E_MATERIAL_TYPE
Abstracted and easy to use fixed function/programmable pipeline material modes.
Definition: EMaterialTypes.h:14
EMaterialTypes.h
irr::video::SMaterial::NormalizeNormals
bool NormalizeNormals
Should normals be normalized?
Definition: SMaterial.h:435
irr::video::SMaterialLayer::BilinearFilter
bool BilinearFilter
Is bilinear filtering enabled? Default: true.
Definition: SMaterialLayer.h:192
irr::video::ECP_RGB
@ ECP_RGB
All colors, no alpha.
Definition: SMaterial.h:96
irr::video::EMF_ANISOTROPIC_FILTER
@ EMF_ANISOTROPIC_FILTER
Is anisotropic filtering? Default: false.
Definition: EMaterialFlags.h:55
irr::video::SMaterial::Thickness
f32 Thickness
Thickness of non-3dimensional elements such as lines and points.
Definition: SMaterial.h:362
irr::video::EMF_TRILINEAR_FILTER
@ EMF_TRILINEAR_FILTER
Is trilinear filtering enabled? Default: false.
Definition: EMaterialFlags.h:48
irr::video::ECM_DIFFUSE_AND_AMBIENT
@ ECM_DIFFUSE_AND_AMBIENT
Use vertex color for both diffuse and ambient light.
Definition: SMaterial.h:197
irr::video::SMaterial::MaterialType
E_MATERIAL_TYPE MaterialType
Type of the material. Specifies how everything is blended together.
Definition: SMaterial.h:300
irr::video::EBO_REVSUBTRACT
@ EBO_REVSUBTRACT
This modes subtracts destination from source.
Definition: SMaterial.h:44
EMaterialFlags.h
irr::video::SMaterial::setFlag
void setFlag(E_MATERIAL_FLAG flag, bool value)
Sets the Material flag to the given value.
Definition: SMaterial.h:492
irr::video::EAAM_FULL_BASIC
@ EAAM_FULL_BASIC
All typical anti-alias and smooth modes.
Definition: SMaterial.h:171
irr::video::SMaterial::getFlag
bool getFlag(E_MATERIAL_FLAG flag) const
Gets the Material flag.
Definition: SMaterial.h:569
irr::video::EMFN_MODULATE_1X
@ EMFN_MODULATE_1X
Definition: SMaterial.h:56
irr::video::SMaterial::AmbientColor
SColor AmbientColor
How much ambient light (a global light) is reflected by this material.
Definition: SMaterial.h:306
irr::video::EMT_TRANSPARENT_REFLECTION_2_LAYER
@ EMT_TRANSPARENT_REFLECTION_2_LAYER
A transparent reflecting material with an optional additional non reflecting texture layer.
Definition: EMaterialTypes.h:124
irr::video::ECFN_GREATEREQUAL
@ ECFN_GREATEREQUAL
>= test
Definition: SMaterial.h:75
irr::video::SMaterialLayer::TextureWrapV
u8 TextureWrapV
Definition: SMaterialLayer.h:189
irr::video::E_COLOR_MATERIAL
E_COLOR_MATERIAL
These flags allow to define the interpretation of vertex color when lighting is enabled.
Definition: SMaterial.h:184
irr::video::SMaterialLayer::Texture
ITexture * Texture
Texture.
Definition: SMaterialLayer.h:184
irr::video::EMF_TEXTURE_WRAP
@ EMF_TEXTURE_WRAP
Access to all layers texture wrap settings. Overwrites separate layer settings.
Definition: EMaterialFlags.h:69
irr::video::SMaterial::Lighting
bool Lighting
Will this material be lighted? Default: true.
Definition: SMaterial.h:416
irrMath.h
irr::video::MATERIAL_MAX_TEXTURES
const u32 MATERIAL_MAX_TEXTURES
Maximum number of texture an SMaterial can have.
Definition: SMaterial.h:223
irr::video::unpack_textureBlendFunc
void unpack_textureBlendFunc(E_BLEND_FACTOR &srcFact, E_BLEND_FACTOR &dstFact, E_MODULATE_FUNC &modulo, u32 &alphaSource, const f32 param)
EMT_ONETEXTURE_BLEND: unpack srcFact & dstFact and Modulo to MaterialTypeParam.
Definition: SMaterial.h:124
irr::video::SMaterial::UseMipMaps
bool UseMipMaps
Shall mipmaps be used if available.
Definition: SMaterial.h:439
irr::video::EBO_MIN_ALPHA
@ EBO_MIN_ALPHA
Choose minimum value of each color channel based on alpha value, not widely supported.
Definition: SMaterial.h:49
irr::video::SMaterial::ZWriteEnable
bool ZWriteEnable
Is the zbuffer writeable or is it read-only. Default: true.
Definition: SMaterial.h:422
irr::core::IdentityMatrix
const IRRLICHT_API matrix4 IdentityMatrix
global const identity matrix
irr::video::E_BLEND_FACTOR
E_BLEND_FACTOR
Flag for EMT_ONETEXTURE_BLEND, ( BlendFactor ) BlendFunc = source * sourceFactor + dest * destFactor.
Definition: SMaterial.h:23
irr::video::EBF_SRC_ALPHA_SATURATE
@ EBF_SRC_ALPHA_SATURATE
src (min(srcA, 1-destA), idem, ...)
Definition: SMaterial.h:35
irr::video::SMaterial::isTransparent
bool isTransparent() const
Definition: SMaterial.h:670
irr::video::EBO_MAX_FACTOR
@ EBO_MAX_FACTOR
Choose maximum value of each color channel after applying blend factors, not widely supported.
Definition: SMaterial.h:48
irr::video::SMaterialLayer::TextureWrapU
u8 TextureWrapU
Texture Clamp Mode.
Definition: SMaterialLayer.h:188
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::video::PolygonOffsetDirectionNames
const c8 *const PolygonOffsetDirectionNames[]
Names for polygon offset direction.
Definition: SMaterial.h:214
irr::video::EMF_FOG_ENABLE
@ EMF_FOG_ENABLE
Is fog enabled? Default: false.
Definition: EMaterialFlags.h:58
irr::video::EMF_LIGHTING
@ EMF_LIGHTING
Will this material be lighted? Default: true.
Definition: EMaterialFlags.h:26
irr::video::EMF_POLYGON_OFFSET
@ EMF_POLYGON_OFFSET
Flag for polygon offset.
Definition: EMaterialFlags.h:87
irr::video::EAAM_LINE_SMOOTH
@ EAAM_LINE_SMOOTH
Line smoothing.
Definition: SMaterial.h:167
irr::video::ECFN_EQUAL
@ ECFN_EQUAL
Exact equality.
Definition: SMaterial.h:69
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
irr::video::EBO_SUBTRACT
@ EBO_SUBTRACT
This mode subtracts the color values.
Definition: SMaterial.h:43
irr::video::EBF_DST_ALPHA
@ EBF_DST_ALPHA
src & dest (destA, destA, destA, destA)
Definition: SMaterial.h:33
irr::video::SMaterial::operator=
SMaterial & operator=(const SMaterial &other)
Assignment operator.
Definition: SMaterial.h:254
irr::video::ECM_DIFFUSE
@ ECM_DIFFUSE
Use vertex color for diffuse light, this is default.
Definition: SMaterial.h:189
irr::video::SMaterial::AntiAliasing
u8 AntiAliasing
Sets the antialiasing mode.
Definition: SMaterial.h:372
irr::video::EAAM_ALPHA_TO_COVERAGE
@ EAAM_ALPHA_TO_COVERAGE
Enhanced anti-aliasing for transparent materials.
Definition: SMaterial.h:174
irr::video::ECM_NONE
@ ECM_NONE
Don't use vertex color for lighting.
Definition: SMaterial.h:187
_IRR_MATERIAL_MAX_TEXTURES_
#define _IRR_MATERIAL_MAX_TEXTURES_
Maximum number of texture an SMaterial can have, up to 8 are supported by Irrlicht.
Definition: IrrCompileConfig.h:121
irr::video::E_MODULATE_FUNC
E_MODULATE_FUNC
MaterialTypeParam: e.g. DirectX: D3DTOP_MODULATE, D3DTOP_MODULATE2X, D3DTOP_MODULATE4X.
Definition: SMaterial.h:54
irr::video::textureBlendFunc_hasAlpha
bool textureBlendFunc_hasAlpha(const E_BLEND_FACTOR factor)
EMT_ONETEXTURE_BLEND: has BlendFactor Alphablending.
Definition: SMaterial.h:135
irr::video::EBO_ADD
@ EBO_ADD
Default blending adds the color values.
Definition: SMaterial.h:42
irr::video::SMaterial
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226
irr::video::SMaterial::setTextureMatrix
void setTextureMatrix(u32 i, const core::matrix4 &mat)
Sets the i-th texture transformation matrix.
Definition: SMaterial.h:463
irr::video::SMaterial::ColorMask
u8 ColorMask
Defines the enabled color planes.
Definition: SMaterial.h:379
irr::video::EMF_USE_MIP_MAPS
@ EMF_USE_MIP_MAPS
Flag for enabling/disabling mipmap usage.
Definition: EMaterialFlags.h:81
irr::video::EMT_TRANSPARENT_ALPHA_CHANNEL
@ EMT_TRANSPARENT_ALPHA_CHANNEL
Makes the material transparent based on the texture alpha channel.
Definition: EMaterialTypes.h:101
irr::video::pack_textureBlendFunc
f32 pack_textureBlendFunc(const E_BLEND_FACTOR srcFact, const E_BLEND_FACTOR dstFact, const E_MODULATE_FUNC modulate=EMFN_MODULATE_1X, const u32 alphaSource=EAS_TEXTURE)
EMT_ONETEXTURE_BLEND: pack srcFact, dstFact, Modulate and alpha source to MaterialTypeParam.
Definition: SMaterial.h:116
irr::video::SMaterial::PolygonOffsetDirection
E_POLYGON_OFFSET PolygonOffsetDirection
Flag defining the direction the polygon offset is applied to.
Definition: SMaterial.h:401
irr::video::E_BLEND_OPERATION
E_BLEND_OPERATION
Values defining the blend operation used when blend is enabled.
Definition: SMaterial.h:39
irr::video::SMaterial::ZBuffer
u8 ZBuffer
Is the ZBuffer enabled? Default: ECFN_LESSEQUAL.
Definition: SMaterial.h:366
irr::video::EMF_WIREFRAME
@ EMF_WIREFRAME
Draw as wireframe or filled triangles? Default: false.
Definition: EMaterialFlags.h:17
irr::video::EAAM_OFF
@ EAAM_OFF
Use to turn off anti-aliasing for this material.
Definition: SMaterial.h:161
irr::video::SColor
Class representing a 32 bit ARGB color.
Definition: SColor.h:201
irr::video::EMF_COLOR_MASK
@ EMF_COLOR_MASK
ColorMask bits, for enabling the color planes.
Definition: EMaterialFlags.h:75
irr::video::SMaterialLayer::setTextureMatrix
void setTextureMatrix(const core::matrix4 &mat)
Sets the texture transformation matrix to mat.
Definition: SMaterialLayer.h:144
irr::video::EPO_FRONT
@ EPO_FRONT
Pull pixels towards the camera.
Definition: SMaterial.h:210
irr::video::EMT_TRANSPARENT_ADD_COLOR
@ EMT_TRANSPARENT_ADD_COLOR
A transparent material.
Definition: EMaterialTypes.h:88
irr::video::E_ALPHA_SOURCE
E_ALPHA_SOURCE
Source of the alpha value to take.
Definition: SMaterial.h:104
irr::video::ECFN_ALWAYS
@ ECFN_ALWAYS
test succeeds always
Definition: SMaterial.h:79
irr::video::EBF_ONE
@ EBF_ONE
src & dest (1, 1, 1, 1)
Definition: SMaterial.h:26
irr::video::SMaterial::Wireframe
bool Wireframe
Draw as wireframe or filled triangles? Default: false.
Definition: SMaterial.h:407
irr::video::EBO_MAX
@ EBO_MAX
Choose maximum value of each color channel.
Definition: SMaterial.h:46
irr::video::ECP_BLUE
@ ECP_BLUE
Blue enabled.
Definition: SMaterial.h:94
irr::u8
unsigned char u8
8 bit unsigned variable.
Definition: irrTypes.h:18
irr::video::SMaterial::SMaterial
SMaterial(const SMaterial &other)
Copy constructor.
Definition: SMaterial.h:244
irr::video::IdentityMaterial
IRRLICHT_API SMaterial IdentityMaterial
global const identity Material
irr::video::SMaterialLayer::AnisotropicFilter
u8 AnisotropicFilter
Is anisotropic filtering enabled? Default: 0, disabled.
Definition: SMaterialLayer.h:206
irr::video::ECP_RED
@ ECP_RED
Red enabled.
Definition: SMaterial.h:90
irr::video::SMaterial::BackfaceCulling
bool BackfaceCulling
Is backface culling enabled? Default: true.
Definition: SMaterial.h:425
irr::video::EAS_VERTEX_COLOR
@ EAS_VERTEX_COLOR
Use vertex color alpha.
Definition: SMaterial.h:109
SColor.h
SMaterialLayer.h