Moved material enums into separate files. Disabled randr again, was accidentially activated.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@984 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
df946a1ce6
commit
63f28cf5ff
|
@ -9,6 +9,7 @@ namespace irr
|
||||||
{
|
{
|
||||||
namespace video
|
namespace video
|
||||||
{
|
{
|
||||||
|
|
||||||
//! An enum for all types of drivers the Irrlicht Engine supports.
|
//! An enum for all types of drivers the Irrlicht Engine supports.
|
||||||
enum E_DRIVER_TYPE
|
enum E_DRIVER_TYPE
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
// Copyright (C) 2002-2007 Nikolaus Gebhardt
|
||||||
|
// This file is part of the "Irrlicht Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||||
|
|
||||||
|
#ifndef __E_MATERIAL_FLAGS_H_INCLUDED__
|
||||||
|
#define __E_MATERIAL_FLAGS_H_INCLUDED__
|
||||||
|
|
||||||
|
namespace irr
|
||||||
|
{
|
||||||
|
namespace video
|
||||||
|
{
|
||||||
|
|
||||||
|
//! Material flags
|
||||||
|
enum E_MATERIAL_FLAG
|
||||||
|
{
|
||||||
|
//! Draw as wireframe or filled triangles? Default: false
|
||||||
|
EMF_WIREFRAME = 0,
|
||||||
|
|
||||||
|
//! Draw as point cloud or filled triangles? Default: false
|
||||||
|
EMF_POINTCLOUD,
|
||||||
|
|
||||||
|
//! Flat or Gouraud shading? Default: true
|
||||||
|
EMF_GOURAUD_SHADING,
|
||||||
|
|
||||||
|
//! Will this material be lighted? Default: true
|
||||||
|
EMF_LIGHTING,
|
||||||
|
|
||||||
|
//! Is the ZBuffer enabled? Default: true
|
||||||
|
EMF_ZBUFFER,
|
||||||
|
|
||||||
|
//! May be written to the zbuffer or is it readonly. Default: true
|
||||||
|
//! This flag is ignored, if the material type is a transparent type.
|
||||||
|
EMF_ZWRITE_ENABLE,
|
||||||
|
|
||||||
|
//! Is backfaceculling enabled? Default: true
|
||||||
|
EMF_BACK_FACE_CULLING,
|
||||||
|
|
||||||
|
//! Is bilinear filtering enabled? Default: true
|
||||||
|
EMF_BILINEAR_FILTER,
|
||||||
|
|
||||||
|
//! Is trilinear filtering enabled? Default: false
|
||||||
|
//! If the trilinear filter flag is enabled,
|
||||||
|
//! the bilinear filtering flag is ignored.
|
||||||
|
EMF_TRILINEAR_FILTER,
|
||||||
|
|
||||||
|
//! Is anisotropic filtering? Default: false
|
||||||
|
//! In Irrlicht you can use anisotropic texture filtering in
|
||||||
|
//! conjunction with bilinear or trilinear texture filtering
|
||||||
|
//! to improve rendering results. Primitives will look less
|
||||||
|
//! blurry with this flag switched on.
|
||||||
|
EMF_ANISOTROPIC_FILTER,
|
||||||
|
|
||||||
|
//! Is fog enabled? Default: false
|
||||||
|
EMF_FOG_ENABLE,
|
||||||
|
|
||||||
|
//! Normalizes normals.You can enable this if you need
|
||||||
|
//! to scale a dynamic lighted model. Usually, its normals will get scaled
|
||||||
|
//! too then and it will get darker. If you enable the EMF_NORMALIZE_NORMALS flag,
|
||||||
|
//! the normals will be normalized again, and the model will look as bright as it should.
|
||||||
|
EMF_NORMALIZE_NORMALS,
|
||||||
|
|
||||||
|
//! Access to all layers texture wrap settings. Overwrites separate layer settings.
|
||||||
|
EMF_TEXTURE_WRAP,
|
||||||
|
|
||||||
|
//! This is not a flag, but a value indicating how much flags there are.
|
||||||
|
EMF_MATERIAL_FLAG_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end namespace video
|
||||||
|
} // end namespace irr
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __E_MATERIAL_FLAGS_H_INCLUDED__
|
||||||
|
|
|
@ -0,0 +1,223 @@
|
||||||
|
// Copyright (C) 2002-2007 Nikolaus Gebhardt
|
||||||
|
// This file is part of the "Irrlicht Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||||
|
|
||||||
|
#ifndef __E_MATERIAL_TYPES_H_INCLUDED__
|
||||||
|
#define __E_MATERIAL_TYPES_H_INCLUDED__
|
||||||
|
|
||||||
|
namespace irr
|
||||||
|
{
|
||||||
|
namespace video
|
||||||
|
{
|
||||||
|
|
||||||
|
//! Abstracted and easy to use fixed function/programmable pipeline material modes.
|
||||||
|
enum E_MATERIAL_TYPE
|
||||||
|
{
|
||||||
|
//! Standard solid material. Only first texture is used, which is
|
||||||
|
//! supposed to be the diffuse material.
|
||||||
|
EMT_SOLID = 0,
|
||||||
|
|
||||||
|
//! Solid material with 2 texture layers. The second is blended onto the
|
||||||
|
//! first using the alpha value of the vertex colors.
|
||||||
|
//! This material is currently not implemented in OpenGL, but it
|
||||||
|
//! works with DirectX.
|
||||||
|
EMT_SOLID_2_LAYER,
|
||||||
|
|
||||||
|
//! Material type with standard lightmap technique:
|
||||||
|
//! There should be 2 textures: The first texture layer is a diffuse map,
|
||||||
|
//! the second is a light map. Vertex light is ignored.
|
||||||
|
EMT_LIGHTMAP,
|
||||||
|
|
||||||
|
//! Material type with lightmap technique like EMT_LIGHTMAP, but
|
||||||
|
//! lightmap and diffuse texture are not modulated, but added instead.
|
||||||
|
EMT_LIGHTMAP_ADD,
|
||||||
|
|
||||||
|
//! Material type with standard lightmap technique:
|
||||||
|
//! There should be 2 textures: The first texture layer is a diffuse map,
|
||||||
|
//! the second is a light map. Vertex light is ignored.
|
||||||
|
//! The texture colors are effectively multiplyied by 2 for brightening.
|
||||||
|
//! like known in DirectX as D3DTOP_MODULATE2X.
|
||||||
|
EMT_LIGHTMAP_M2,
|
||||||
|
|
||||||
|
//! Material type with standard lightmap technique:
|
||||||
|
//! There should be 2 textures: The first texture layer is a diffuse map,
|
||||||
|
//! the second is a light map. Vertex light is ignored.
|
||||||
|
//! The texture colors are effectively multiplyied by 4 for brightening.
|
||||||
|
//! like known in DirectX as D3DTOP_MODULATE4X.
|
||||||
|
EMT_LIGHTMAP_M4,
|
||||||
|
|
||||||
|
//! Like EMT_LIGHTMAP, but also supports dynamic lighting.
|
||||||
|
EMT_LIGHTMAP_LIGHTING,
|
||||||
|
|
||||||
|
//! Like EMT_LIGHTMAP_M2, but also supports dynamic lighting.
|
||||||
|
EMT_LIGHTMAP_LIGHTING_M2,
|
||||||
|
|
||||||
|
//! Like EMT_LIGHTMAP_4, but also supports dynamic lighting.
|
||||||
|
EMT_LIGHTMAP_LIGHTING_M4,
|
||||||
|
|
||||||
|
//! Detail mapped material. The first texture is diffuse color map, the
|
||||||
|
//! second is added to this and usually displayed with a bigger scale value
|
||||||
|
//! so that it adds more detail. The detail map is added to the diffuse map using
|
||||||
|
//! ADD_SIGNED, so that it is possible to add and substract color from the diffuse
|
||||||
|
//! map. For example a value of (127,127,127) will not change the appearance of
|
||||||
|
//! the diffuse map at all.
|
||||||
|
//! Often used for terrain rendering.
|
||||||
|
EMT_DETAIL_MAP,
|
||||||
|
|
||||||
|
//! Makes the material look like it was reflection the environment
|
||||||
|
//! around it. To make this possible, a texture called 'sphere map'
|
||||||
|
//! is used, which must be set as Textures[0].
|
||||||
|
EMT_SPHERE_MAP,
|
||||||
|
|
||||||
|
//! A reflecting material with an
|
||||||
|
//! optional additional non reflecting texture layer. The reflection
|
||||||
|
//! map should be set as Texture 1.
|
||||||
|
EMT_REFLECTION_2_LAYER,
|
||||||
|
|
||||||
|
//! A transparent material. Only the first texture is used.
|
||||||
|
//! The new color is calculated by simply adding the source color and
|
||||||
|
//! the dest color. This means if for example a billboard using a texture with
|
||||||
|
//! black background and a red circle on it is drawn with this material, the
|
||||||
|
//! result is that only the red circle will be drawn a little bit transparent,
|
||||||
|
//! and everything which was black is 100% transparent and not visible.
|
||||||
|
//! This material type is useful for e.g. particle effects.
|
||||||
|
EMT_TRANSPARENT_ADD_COLOR,
|
||||||
|
|
||||||
|
//! Makes the material transparent based on the texture alpha channel.
|
||||||
|
//! The final color is blended together from the destination color and the
|
||||||
|
//! texture color, using the alpha channel value as blend factor.
|
||||||
|
//! Only first texture is used. If you are using this material with small
|
||||||
|
//! textures, it is a good idea to load the texture in 32 bit
|
||||||
|
//! mode (video::IVideoDriver::setTextureCreationFlag()).
|
||||||
|
//! Also, an alpha ref is used, which can be manipulated using SMaterial::MaterialTypeParam.
|
||||||
|
//! If set to 0, the alpha ref gets its default value which is 0.5f and which means
|
||||||
|
//! that pixels with an alpha value >127 will be written, others not. In other, simple
|
||||||
|
//! words: this value controls how sharp the edges become when going from a
|
||||||
|
//! transparent to a solid spot on the texture.
|
||||||
|
EMT_TRANSPARENT_ALPHA_CHANNEL,
|
||||||
|
|
||||||
|
//! Makes the material transparent based on the texture alpha channel.
|
||||||
|
//! If the alpha channel value is greater than 127, a pixel is written to the
|
||||||
|
//! target, otherwise not. This material does not use alpha blending
|
||||||
|
//! and is a lot faster than EMT_TRANSPARENT_ALPHA_CHANNEL. It
|
||||||
|
//! is ideal for drawing stuff like leafes of plants, because the borders
|
||||||
|
//! are not blurry but sharp.
|
||||||
|
//! Only first texture is used. If you are using this material with small
|
||||||
|
//! textures and 3d object, it is a good idea to load the texture in 32 bit
|
||||||
|
//! mode (video::IVideoDriver::setTextureCreationFlag()).
|
||||||
|
EMT_TRANSPARENT_ALPHA_CHANNEL_REF,
|
||||||
|
|
||||||
|
//! Makes the material transparent based on the vertex alpha value.
|
||||||
|
EMT_TRANSPARENT_VERTEX_ALPHA,
|
||||||
|
|
||||||
|
//! A transparent reflecting material with an
|
||||||
|
//! optional additional non reflecting texture layer. The reflection
|
||||||
|
//! map should be set as Texture 1. The transparency depends on the
|
||||||
|
//! alpha value in the vertex colors. A texture which will not reflect
|
||||||
|
//! can be set als Texture 2.
|
||||||
|
//! Please note that this material type is currently not 100% implemented
|
||||||
|
//! in OpenGL. It works in Direct3D.
|
||||||
|
EMT_TRANSPARENT_REFLECTION_2_LAYER,
|
||||||
|
|
||||||
|
//! A solid normal map renderer. First texture is the color map, the
|
||||||
|
//! second should be the normal map. Note that you should use this material
|
||||||
|
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
||||||
|
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
||||||
|
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
||||||
|
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
||||||
|
//! falls back on a fixed function lighted material if this hardware is not available.
|
||||||
|
//! Only two lights are supported by this shader, if there are more, the nearest two
|
||||||
|
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
||||||
|
EMT_NORMAL_MAP_SOLID,
|
||||||
|
|
||||||
|
//! A transparent normal map renderer. First texture is the color map, the
|
||||||
|
//! second should be the normal map. Note that you should use this material
|
||||||
|
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
||||||
|
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
||||||
|
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
||||||
|
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
||||||
|
//! falls back on a fixed function lighted material if this hardware is not available.
|
||||||
|
//! Only two lights are supported by this shader, if there are more, the nearest two
|
||||||
|
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
||||||
|
EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR,
|
||||||
|
|
||||||
|
//! A transparent (based on the vertex alpha value) normal map renderer.
|
||||||
|
//! First texture is the color map, the
|
||||||
|
//! second should be the normal map. Note that you should use this material
|
||||||
|
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
||||||
|
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
||||||
|
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
||||||
|
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
||||||
|
//! falls back on a fixed function lighted material if this hardware is not available.
|
||||||
|
//! Only two lights are supported by this shader, if there are more, the nearest two
|
||||||
|
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
||||||
|
EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA,
|
||||||
|
|
||||||
|
//! Just like EMT_NORMAL_MAP_SOLID, but uses parallax mapping too, which
|
||||||
|
//! looks a lot more realistic. This only works when the hardware supports at
|
||||||
|
//! least vertex shader 1.1 and pixel shader 1.4.
|
||||||
|
//! First texture is the color map, the second should be the normal map.
|
||||||
|
//! The normal map texture should contain the height value in the
|
||||||
|
//! alpha component. The IVideoDriver::makeNormalMapTexture() method writes
|
||||||
|
//! this value automaticly when creating normal maps from a heightmap when using a 32 bit
|
||||||
|
//! texture.
|
||||||
|
//! The height scale of the material (affecting the bumpiness) is being controlled
|
||||||
|
//! by the SMaterial::MaterialTypeParam member.
|
||||||
|
//! If set to zero, the default value (0.02f) will be applied. Otherwise
|
||||||
|
//! the value set in SMaterial::MaterialTypeParam is taken. This value depends on with which
|
||||||
|
//! scale the texture is mapped on the material. Too high or low values of MaterialTypeParam
|
||||||
|
//! can result in strange artifacts.
|
||||||
|
EMT_PARALLAX_MAP_SOLID,
|
||||||
|
|
||||||
|
//! A material just like EMT_PARALLAX_MAP_SOLID, but it is transparent, using
|
||||||
|
//! EMT_TRANSPARENT_ADD_COLOR as base material.
|
||||||
|
EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR,
|
||||||
|
|
||||||
|
//! A material just like EMT_PARALLAX_MAP_SOLID, but it is transparent, using
|
||||||
|
//! EMT_TRANSPARENT_VERTEX_ALPHA as base material.
|
||||||
|
EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA,
|
||||||
|
|
||||||
|
//! BlendFunc = source * sourceFactor + dest * destFactor ( E_BLEND_FUNC )
|
||||||
|
//! Using only Textures[0]. generic Blender
|
||||||
|
EMT_ONETEXTURE_BLEND,
|
||||||
|
|
||||||
|
//! This value is not used. It only forces this enumeration to compile in 32 bit.
|
||||||
|
EMT_FORCE_32BIT = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Array holding the built in material type names
|
||||||
|
const char* const sBuiltInMaterialTypeNames[] =
|
||||||
|
{
|
||||||
|
"solid",
|
||||||
|
"solid_2layer",
|
||||||
|
"lightmap",
|
||||||
|
"lightmap_add",
|
||||||
|
"lightmap_m2",
|
||||||
|
"lightmap_m4",
|
||||||
|
"lightmap_light",
|
||||||
|
"lightmap_light_m2",
|
||||||
|
"lightmap_light_m4",
|
||||||
|
"detail_map",
|
||||||
|
"sphere_map",
|
||||||
|
"reflection_2layer",
|
||||||
|
"trans_add",
|
||||||
|
"trans_alphach",
|
||||||
|
"trans_alphach_ref",
|
||||||
|
"trans_vertex_alpha",
|
||||||
|
"trans_reflection_2layer",
|
||||||
|
"normalmap_solid",
|
||||||
|
"normalmap_trans_add",
|
||||||
|
"normalmap_trans_vertexalpha",
|
||||||
|
"parallaxmap_solid",
|
||||||
|
"parallaxmap_trans_add",
|
||||||
|
"parallaxmap_trans_vertexalpha",
|
||||||
|
"onetexture_blend",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end namespace video
|
||||||
|
} // end namespace irr
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __E_MATERIAL_TYPES_H_INCLUDED__
|
||||||
|
|
|
@ -10,7 +10,6 @@ namespace irr
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
//! An enumeration for all supported types of built-in mesh writers
|
//! An enumeration for all supported types of built-in mesh writers
|
||||||
/** A scene mesh writers is represented by a four character code
|
/** A scene mesh writers is represented by a four character code
|
||||||
such as 'irrm' or 'coll' instead of simple numbers, to avoid
|
such as 'irrm' or 'coll' instead of simple numbers, to avoid
|
||||||
|
@ -41,7 +40,6 @@ namespace scene
|
||||||
EMWF_WRITE_COMPRESSED = 0x2
|
EMWF_WRITE_COMPRESSED = 0x2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // end namespace scene
|
} // end namespace scene
|
||||||
} // end namespace irr
|
} // end namespace irr
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ namespace irr
|
||||||
{
|
{
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
|
|
||||||
//! An enumeration for all types of built-in scene node animators
|
//! An enumeration for all types of built-in scene node animators
|
||||||
enum ESCENE_NODE_ANIMATOR_TYPE
|
enum ESCENE_NODE_ANIMATOR_TYPE
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,6 +11,7 @@ namespace irr
|
||||||
{
|
{
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
|
|
||||||
//! An enumeration for all types of built-in scene nodes
|
//! An enumeration for all types of built-in scene nodes
|
||||||
/** A scene node type is represented by a four character code
|
/** A scene node type is represented by a four character code
|
||||||
such as 'cube' or 'mesh' instead of simple numbers, to avoid
|
such as 'cube' or 'mesh' instead of simple numbers, to avoid
|
||||||
|
|
|
@ -9,6 +9,7 @@ namespace irr
|
||||||
{
|
{
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
|
|
||||||
//! enumeration for patch sizes specifying the size of patches in the TerrainSceneNode
|
//! enumeration for patch sizes specifying the size of patches in the TerrainSceneNode
|
||||||
enum E_TERRAIN_PATCH_SIZE
|
enum E_TERRAIN_PATCH_SIZE
|
||||||
{
|
{
|
||||||
|
|
|
@ -100,7 +100,7 @@ define out. */
|
||||||
//! to remove the dependencies such that Irrlicht will compile on those systems, too.
|
//! to remove the dependencies such that Irrlicht will compile on those systems, too.
|
||||||
#if defined(_IRR_LINUX_PLATFORM_)
|
#if defined(_IRR_LINUX_PLATFORM_)
|
||||||
#define _IRR_LINUX_X11_VIDMODE_
|
#define _IRR_LINUX_X11_VIDMODE_
|
||||||
#define _IRR_LINUX_X11_RANDR_
|
//#define _IRR_LINUX_X11_RANDR_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Define _IRR_COMPILE_WITH_GUI_ to compile the engine with the built-in GUI
|
//! Define _IRR_COMPILE_WITH_GUI_ to compile the engine with the built-in GUI
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "SColor.h"
|
#include "SColor.h"
|
||||||
#include "matrix4.h"
|
#include "matrix4.h"
|
||||||
#include "irrArray.h"
|
#include "irrArray.h"
|
||||||
|
#include "EMaterialTypes.h"
|
||||||
|
#include "EMaterialFlags.h"
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
{
|
{
|
||||||
|
@ -15,212 +17,6 @@ namespace video
|
||||||
{
|
{
|
||||||
class ITexture;
|
class ITexture;
|
||||||
|
|
||||||
//! Abstracted and easy to use fixed function/programmable pipeline material modes.
|
|
||||||
enum E_MATERIAL_TYPE
|
|
||||||
{
|
|
||||||
//! Standard solid material. Only first texture is used, which is
|
|
||||||
//! supposed to be the diffuse material.
|
|
||||||
EMT_SOLID = 0,
|
|
||||||
|
|
||||||
//! Solid material with 2 texture layers. The second is blended onto the
|
|
||||||
//! first using the alpha value of the vertex colors.
|
|
||||||
//! This material is currently not implemented in OpenGL, but it
|
|
||||||
//! works with DirectX.
|
|
||||||
EMT_SOLID_2_LAYER,
|
|
||||||
|
|
||||||
//! Material type with standard lightmap technique:
|
|
||||||
//! There should be 2 textures: The first texture layer is a diffuse map,
|
|
||||||
//! the second is a light map. Vertex light is ignored.
|
|
||||||
EMT_LIGHTMAP,
|
|
||||||
|
|
||||||
//! Material type with lightmap technique like EMT_LIGHTMAP, but
|
|
||||||
//! lightmap and diffuse texture are not modulated, but added instead.
|
|
||||||
EMT_LIGHTMAP_ADD,
|
|
||||||
|
|
||||||
//! Material type with standard lightmap technique:
|
|
||||||
//! There should be 2 textures: The first texture layer is a diffuse map,
|
|
||||||
//! the second is a light map. Vertex light is ignored.
|
|
||||||
//! The texture colors are effectively multiplyied by 2 for brightening.
|
|
||||||
//! like known in DirectX as D3DTOP_MODULATE2X.
|
|
||||||
EMT_LIGHTMAP_M2,
|
|
||||||
|
|
||||||
//! Material type with standard lightmap technique:
|
|
||||||
//! There should be 2 textures: The first texture layer is a diffuse map,
|
|
||||||
//! the second is a light map. Vertex light is ignored.
|
|
||||||
//! The texture colors are effectively multiplyied by 4 for brightening.
|
|
||||||
//! like known in DirectX as D3DTOP_MODULATE4X.
|
|
||||||
EMT_LIGHTMAP_M4,
|
|
||||||
|
|
||||||
//! Like EMT_LIGHTMAP, but also supports dynamic lighting.
|
|
||||||
EMT_LIGHTMAP_LIGHTING,
|
|
||||||
|
|
||||||
//! Like EMT_LIGHTMAP_M2, but also supports dynamic lighting.
|
|
||||||
EMT_LIGHTMAP_LIGHTING_M2,
|
|
||||||
|
|
||||||
//! Like EMT_LIGHTMAP_4, but also supports dynamic lighting.
|
|
||||||
EMT_LIGHTMAP_LIGHTING_M4,
|
|
||||||
|
|
||||||
//! Detail mapped material. The first texture is diffuse color map, the
|
|
||||||
//! second is added to this and usually displayed with a bigger scale value
|
|
||||||
//! so that it adds more detail. The detail map is added to the diffuse map using
|
|
||||||
//! ADD_SIGNED, so that it is possible to add and substract color from the diffuse
|
|
||||||
//! map. For example a value of (127,127,127) will not change the appearance of
|
|
||||||
//! the diffuse map at all.
|
|
||||||
//! Often used for terrain rendering.
|
|
||||||
EMT_DETAIL_MAP,
|
|
||||||
|
|
||||||
//! Makes the material look like it was reflection the environment
|
|
||||||
//! around it. To make this possible, a texture called 'sphere map'
|
|
||||||
//! is used, which must be set as Textures[0].
|
|
||||||
EMT_SPHERE_MAP,
|
|
||||||
|
|
||||||
//! A reflecting material with an
|
|
||||||
//! optional additional non reflecting texture layer. The reflection
|
|
||||||
//! map should be set as Texture 1.
|
|
||||||
EMT_REFLECTION_2_LAYER,
|
|
||||||
|
|
||||||
//! A transparent material. Only the first texture is used.
|
|
||||||
//! The new color is calculated by simply adding the source color and
|
|
||||||
//! the dest color. This means if for example a billboard using a texture with
|
|
||||||
//! black background and a red circle on it is drawn with this material, the
|
|
||||||
//! result is that only the red circle will be drawn a little bit transparent,
|
|
||||||
//! and everything which was black is 100% transparent and not visible.
|
|
||||||
//! This material type is useful for e.g. particle effects.
|
|
||||||
EMT_TRANSPARENT_ADD_COLOR,
|
|
||||||
|
|
||||||
//! Makes the material transparent based on the texture alpha channel.
|
|
||||||
//! The final color is blended together from the destination color and the
|
|
||||||
//! texture color, using the alpha channel value as blend factor.
|
|
||||||
//! Only first texture is used. If you are using this material with small
|
|
||||||
//! textures, it is a good idea to load the texture in 32 bit
|
|
||||||
//! mode (video::IVideoDriver::setTextureCreationFlag()).
|
|
||||||
//! Also, an alpha ref is used, which can be manipulated using SMaterial::MaterialTypeParam.
|
|
||||||
//! If set to 0, the alpha ref gets its default value which is 0.5f and which means
|
|
||||||
//! that pixels with an alpha value >127 will be written, others not. In other, simple
|
|
||||||
//! words: this value controls how sharp the edges become when going from a
|
|
||||||
//! transparent to a solid spot on the texture.
|
|
||||||
EMT_TRANSPARENT_ALPHA_CHANNEL,
|
|
||||||
|
|
||||||
//! Makes the material transparent based on the texture alpha channel.
|
|
||||||
//! If the alpha channel value is greater than 127, a pixel is written to the
|
|
||||||
//! target, otherwise not. This material does not use alpha blending
|
|
||||||
//! and is a lot faster than EMT_TRANSPARENT_ALPHA_CHANNEL. It
|
|
||||||
//! is ideal for drawing stuff like leafes of plants, because the borders
|
|
||||||
//! are not blurry but sharp.
|
|
||||||
//! Only first texture is used. If you are using this material with small
|
|
||||||
//! textures and 3d object, it is a good idea to load the texture in 32 bit
|
|
||||||
//! mode (video::IVideoDriver::setTextureCreationFlag()).
|
|
||||||
EMT_TRANSPARENT_ALPHA_CHANNEL_REF,
|
|
||||||
|
|
||||||
//! Makes the material transparent based on the vertex alpha value.
|
|
||||||
EMT_TRANSPARENT_VERTEX_ALPHA,
|
|
||||||
|
|
||||||
//! A transparent reflecting material with an
|
|
||||||
//! optional additional non reflecting texture layer. The reflection
|
|
||||||
//! map should be set as Texture 1. The transparency depends on the
|
|
||||||
//! alpha value in the vertex colors. A texture which will not reflect
|
|
||||||
//! can be set als Texture 2.
|
|
||||||
//! Please note that this material type is currently not 100% implemented
|
|
||||||
//! in OpenGL. It works in Direct3D.
|
|
||||||
EMT_TRANSPARENT_REFLECTION_2_LAYER,
|
|
||||||
|
|
||||||
//! A solid normal map renderer. First texture is the color map, the
|
|
||||||
//! second should be the normal map. Note that you should use this material
|
|
||||||
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
|
||||||
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
|
||||||
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
|
||||||
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
|
||||||
//! falls back on a fixed function lighted material if this hardware is not available.
|
|
||||||
//! Only two lights are supported by this shader, if there are more, the nearest two
|
|
||||||
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
|
||||||
EMT_NORMAL_MAP_SOLID,
|
|
||||||
|
|
||||||
//! A transparent normal map renderer. First texture is the color map, the
|
|
||||||
//! second should be the normal map. Note that you should use this material
|
|
||||||
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
|
||||||
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
|
||||||
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
|
||||||
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
|
||||||
//! falls back on a fixed function lighted material if this hardware is not available.
|
|
||||||
//! Only two lights are supported by this shader, if there are more, the nearest two
|
|
||||||
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
|
||||||
EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR,
|
|
||||||
|
|
||||||
//! A transparent (based on the vertex alpha value) normal map renderer.
|
|
||||||
//! First texture is the color map, the
|
|
||||||
//! second should be the normal map. Note that you should use this material
|
|
||||||
//! only when drawing geometry consisting of vertices of type S3DVertexTangents
|
|
||||||
//! (EVT_TANGENTS). You can convert any mesh into this format using
|
|
||||||
//! IMeshManipulator::createMeshWithTangents() (See SpecialFX2 Tutorial).
|
|
||||||
//! This shader runs on vertex shader 1.1 and pixel shader 1.1 capable hardware and
|
|
||||||
//! falls back on a fixed function lighted material if this hardware is not available.
|
|
||||||
//! Only two lights are supported by this shader, if there are more, the nearest two
|
|
||||||
//! are chosen. Currently, this shader is only implemented for the D3D8 and D3D9 renderers.
|
|
||||||
EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA,
|
|
||||||
|
|
||||||
//! Just like EMT_NORMAL_MAP_SOLID, but uses parallax mapping too, which
|
|
||||||
//! looks a lot more realistic. This only works when the hardware supports at
|
|
||||||
//! least vertex shader 1.1 and pixel shader 1.4.
|
|
||||||
//! First texture is the color map, the second should be the normal map.
|
|
||||||
//! The normal map texture should contain the height value in the
|
|
||||||
//! alpha component. The IVideoDriver::makeNormalMapTexture() method writes
|
|
||||||
//! this value automaticly when creating normal maps from a heightmap when using a 32 bit
|
|
||||||
//! texture.
|
|
||||||
//! The height scale of the material (affecting the bumpiness) is being controlled
|
|
||||||
//! by the SMaterial::MaterialTypeParam member.
|
|
||||||
//! If set to zero, the default value (0.02f) will be applied. Otherwise
|
|
||||||
//! the value set in SMaterial::MaterialTypeParam is taken. This value depends on with which
|
|
||||||
//! scale the texture is mapped on the material. Too high or low values of MaterialTypeParam
|
|
||||||
//! can result in strange artifacts.
|
|
||||||
EMT_PARALLAX_MAP_SOLID,
|
|
||||||
|
|
||||||
//! A material just like EMT_PARALLAX_MAP_SOLID, but it is transparent, using
|
|
||||||
//! EMT_TRANSPARENT_ADD_COLOR as base material.
|
|
||||||
EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR,
|
|
||||||
|
|
||||||
//! A material just like EMT_PARALLAX_MAP_SOLID, but it is transparent, using
|
|
||||||
//! EMT_TRANSPARENT_VERTEX_ALPHA as base material.
|
|
||||||
EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA,
|
|
||||||
|
|
||||||
//! BlendFunc = source * sourceFactor + dest * destFactor ( E_BLEND_FUNC )
|
|
||||||
//! Using only Textures[0]. generic Blender
|
|
||||||
EMT_ONETEXTURE_BLEND,
|
|
||||||
|
|
||||||
//! This value is not used. It only forces this enumeration to compile in 32 bit.
|
|
||||||
EMT_FORCE_32BIT = 0x7fffffff
|
|
||||||
};
|
|
||||||
|
|
||||||
//! Array holding the built in material type names
|
|
||||||
const char* const sBuiltInMaterialTypeNames[] =
|
|
||||||
{
|
|
||||||
"solid",
|
|
||||||
"solid_2layer",
|
|
||||||
"lightmap",
|
|
||||||
"lightmap_add",
|
|
||||||
"lightmap_m2",
|
|
||||||
"lightmap_m4",
|
|
||||||
"lightmap_light",
|
|
||||||
"lightmap_light_m2",
|
|
||||||
"lightmap_light_m4",
|
|
||||||
"detail_map",
|
|
||||||
"sphere_map",
|
|
||||||
"reflection_2layer",
|
|
||||||
"trans_add",
|
|
||||||
"trans_alphach",
|
|
||||||
"trans_alphach_ref",
|
|
||||||
"trans_vertex_alpha",
|
|
||||||
"trans_reflection_2layer",
|
|
||||||
"normalmap_solid",
|
|
||||||
"normalmap_trans_add",
|
|
||||||
"normalmap_trans_vertexalpha",
|
|
||||||
"parallaxmap_solid",
|
|
||||||
"parallaxmap_trans_add",
|
|
||||||
"parallaxmap_trans_vertexalpha",
|
|
||||||
"onetexture_blend",
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//! Flag for EMT_ONETEXTURE_BLEND, ( BlendFactor )
|
//! Flag for EMT_ONETEXTURE_BLEND, ( BlendFactor )
|
||||||
//! BlendFunc = source * sourceFactor + dest * destFactor
|
//! BlendFunc = source * sourceFactor + dest * destFactor
|
||||||
enum E_BLEND_FACTOR
|
enum E_BLEND_FACTOR
|
||||||
|
@ -282,62 +78,6 @@ namespace video
|
||||||
dstFact = E_BLEND_FACTOR ( ( state & 0x000000FF ) );
|
dstFact = E_BLEND_FACTOR ( ( state & 0x000000FF ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Material flags
|
|
||||||
enum E_MATERIAL_FLAG
|
|
||||||
{
|
|
||||||
//! Draw as wireframe or filled triangles? Default: false
|
|
||||||
EMF_WIREFRAME = 0,
|
|
||||||
|
|
||||||
//! Draw as point cloud or filled triangles? Default: false
|
|
||||||
EMF_POINTCLOUD,
|
|
||||||
|
|
||||||
//! Flat or Gouraud shading? Default: true
|
|
||||||
EMF_GOURAUD_SHADING,
|
|
||||||
|
|
||||||
//! Will this material be lighted? Default: true
|
|
||||||
EMF_LIGHTING,
|
|
||||||
|
|
||||||
//! Is the ZBuffer enabled? Default: true
|
|
||||||
EMF_ZBUFFER,
|
|
||||||
|
|
||||||
//! May be written to the zbuffer or is it readonly. Default: true
|
|
||||||
//! This flag is ignored, if the material type is a transparent type.
|
|
||||||
EMF_ZWRITE_ENABLE,
|
|
||||||
|
|
||||||
//! Is backfaceculling enabled? Default: true
|
|
||||||
EMF_BACK_FACE_CULLING,
|
|
||||||
|
|
||||||
//! Is bilinear filtering enabled? Default: true
|
|
||||||
EMF_BILINEAR_FILTER,
|
|
||||||
|
|
||||||
//! Is trilinear filtering enabled? Default: false
|
|
||||||
//! If the trilinear filter flag is enabled,
|
|
||||||
//! the bilinear filtering flag is ignored.
|
|
||||||
EMF_TRILINEAR_FILTER,
|
|
||||||
|
|
||||||
//! Is anisotropic filtering? Default: false
|
|
||||||
//! In Irrlicht you can use anisotropic texture filtering in
|
|
||||||
//! conjunction with bilinear or trilinear texture filtering
|
|
||||||
//! to improve rendering results. Primitives will look less
|
|
||||||
//! blurry with this flag switched on.
|
|
||||||
EMF_ANISOTROPIC_FILTER,
|
|
||||||
|
|
||||||
//! Is fog enabled? Default: false
|
|
||||||
EMF_FOG_ENABLE,
|
|
||||||
|
|
||||||
//! Normalizes normals.You can enable this if you need
|
|
||||||
//! to scale a dynamic lighted model. Usually, its normals will get scaled
|
|
||||||
//! too then and it will get darker. If you enable the EMF_NORMALIZE_NORMALS flag,
|
|
||||||
//! the normals will be normalized again, and the model will look as bright as it should.
|
|
||||||
EMF_NORMALIZE_NORMALS,
|
|
||||||
|
|
||||||
//! Access to all layers texture wrap settings. Overwrites separate layer settings.
|
|
||||||
EMF_TEXTURE_WRAP,
|
|
||||||
|
|
||||||
//! This is not a flag, but a value indicating how much flags there are.
|
|
||||||
EMF_MATERIAL_FLAG_COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
//! Maximum number of texture an SMaterial can have.
|
//! Maximum number of texture an SMaterial can have.
|
||||||
const u32 MATERIAL_MAX_TEXTURES = 4;
|
const u32 MATERIAL_MAX_TEXTURES = 4;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue