Commit 3708c5d1 authored by hybrid's avatar hybrid

Global override material. Set and enable Material flags which will override...

Global override material. Set and enable Material flags which will override materials of each scene node in the enabled render passes.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2195 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 9ef56225
...@@ -102,6 +102,60 @@ namespace video ...@@ -102,6 +102,60 @@ namespace video
ERT_AUX_BUFFER4 ERT_AUX_BUFFER4
}; };
struct SOverrideMaterial
{
//! The Material values
SMaterial Material;
//! Which values are taken for override
/** OR'ed values from E_MATERIAL_FLAGS. */
u32 EnableFlags;
//! Set in which render passes the material override is active.
/** OR'ed values from E_SCENE_NODE_RENDER_PASS. */
u16 EnablePasses;
//! Global enable flag, overwritten by the SceneManager in each pass
/** The Scenemanager uses the EnablePass array and sets Enabled to
true if the Override material is enabled in the current pass. */
bool Enabled;
//! Default constructor
SOverrideMaterial() : EnableFlags(0), EnablePasses(0), Enabled(false) {}
//! Apply the enabled overrides
void apply(SMaterial& material)
{
if (Enabled)
{
for (u32 i=0; i<32; ++i)
{
const u32 num=(1<<i);
if (EnableFlags & num)
{
switch (num)
{
case EMF_WIREFRAME: material.Wireframe = Material.Wireframe; break;
case EMF_POINTCLOUD: material.PointCloud = Material.PointCloud; break;
case EMF_GOURAUD_SHADING: material.GouraudShading = Material.GouraudShading; break;
case EMF_LIGHTING: material.Lighting = Material.Lighting; break;
case EMF_ZBUFFER: material.ZBuffer = Material.ZBuffer; break;
case EMF_ZWRITE_ENABLE: material.ZWriteEnable = Material.ZWriteEnable; break;
case EMF_BACK_FACE_CULLING: material.BackfaceCulling = Material.BackfaceCulling; break;
case EMF_FRONT_FACE_CULLING: material.FrontfaceCulling = Material.FrontfaceCulling; break;
case EMF_FOG_ENABLE: material.FogEnable = Material.FogEnable; break;
case EMF_NORMALIZE_NORMALS: material.NormalizeNormals = Material.NormalizeNormals; break;
case EMF_ANTI_ALIASING: material.AntiAliasing = Material.AntiAliasing; break;
case EMF_COLOR_MASK: material.ColorMask = Material.ColorMask; break;
case EMF_BILINEAR_FILTER: material.TextureLayer[0].BilinearFilter = Material.TextureLayer[0].BilinearFilter;
case EMF_TRILINEAR_FILTER: material.TextureLayer[0].TrilinearFilter = Material.TextureLayer[0].TrilinearFilter;
case EMF_ANISOTROPIC_FILTER: material.TextureLayer[0].AnisotropicFilter = Material.TextureLayer[0].AnisotropicFilter;
case EMF_TEXTURE_WRAP: material.TextureLayer[0].TextureWrap = Material.TextureLayer[0].TextureWrap;
}
}
}
}
}
};
//! Interface to driver which is able to perform 2d and 3d graphics functions. //! Interface to driver which is able to perform 2d and 3d graphics functions.
/** This interface is one of the most important interfaces of /** This interface is one of the most important interfaces of
the Irrlicht Engine: All rendering and texture manipulation is done with the Irrlicht Engine: All rendering and texture manipulation is done with
...@@ -1082,6 +1136,13 @@ namespace video ...@@ -1082,6 +1136,13 @@ namespace video
/** \param count Number of vertices to set as minimum. */ /** \param count Number of vertices to set as minimum. */
virtual void setMinHardwareBufferVertexCount(u32 count) =0; virtual void setMinHardwareBufferVertexCount(u32 count) =0;
//! Get the global Material, which might override local materials.
/** Depending on the enable flags, values from this Material
are used to override those of local materials of some
meshbuffer being rendered.
\return Reference to the Override Material. */
virtual SOverrideMaterial& getOverrideMaterial() =0;
//! Returns the graphics card vendor name. //! Returns the graphics card vendor name.
virtual core::stringc getVendorInfo() =0; virtual core::stringc getVendorInfo() =0;
......
...@@ -663,6 +663,7 @@ bool CD3D8Driver::setTexture(s32 stage, const video::ITexture* texture) ...@@ -663,6 +663,7 @@ bool CD3D8Driver::setTexture(s32 stage, const video::ITexture* texture)
void CD3D8Driver::setMaterial(const SMaterial& material) void CD3D8Driver::setMaterial(const SMaterial& material)
{ {
Material = material; Material = material;
OverrideMaterial.apply(Material);
for (u32 i=0; i<MaxTextureUnits; ++i) for (u32 i=0; i<MaxTextureUnits; ++i)
{ {
......
...@@ -692,6 +692,7 @@ bool CD3D9Driver::setTexture(s32 stage, const video::ITexture* texture) ...@@ -692,6 +692,7 @@ bool CD3D9Driver::setTexture(s32 stage, const video::ITexture* texture)
void CD3D9Driver::setMaterial(const SMaterial& material) void CD3D9Driver::setMaterial(const SMaterial& material)
{ {
Material = material; Material = material;
OverrideMaterial.apply(Material);
for (u32 i=0; i<MaxTextureUnits; ++i) for (u32 i=0; i<MaxTextureUnits; ++i)
{ {
......
...@@ -29,7 +29,6 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde ...@@ -29,7 +29,6 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde
: pID3DDevice(d3ddev), Driver(driver), CallBack(callback), BaseMaterial(baseMaterial), : pID3DDevice(d3ddev), Driver(driver), CallBack(callback), BaseMaterial(baseMaterial),
VertexShader(0), OldVertexShader(0), PixelShader(0), UserData(userData) VertexShader(0), OldVertexShader(0), PixelShader(0), UserData(userData)
{ {
#ifdef _DEBUG #ifdef _DEBUG
setDebugName("CD3D9ShaderMaterialRenderer"); setDebugName("CD3D9ShaderMaterialRenderer");
#endif #endif
...@@ -44,18 +43,15 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde ...@@ -44,18 +43,15 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde
} }
//! constructor only for use by derived classes who want to //! constructor only for use by derived classes who want to
//! create a fall back material for example. //! create a fall back material for example.
CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3ddev, CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3ddev,
video::IVideoDriver* driver, video::IVideoDriver* driver,
IShaderConstantSetCallBack* callback, IShaderConstantSetCallBack* callback,
IMaterialRenderer* baseMaterial, IMaterialRenderer* baseMaterial, s32 userData)
s32 userData)
: pID3DDevice(d3ddev), Driver(driver), CallBack(callback), BaseMaterial(baseMaterial), : pID3DDevice(d3ddev), Driver(driver), CallBack(callback), BaseMaterial(baseMaterial),
VertexShader(0), OldVertexShader(0), PixelShader(0), UserData(userData) VertexShader(0), OldVertexShader(0), PixelShader(0), UserData(userData)
{ {
#ifdef _DEBUG #ifdef _DEBUG
setDebugName("CD3D9ShaderMaterialRenderer"); setDebugName("CD3D9ShaderMaterialRenderer");
#endif #endif
...@@ -68,8 +64,8 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde ...@@ -68,8 +64,8 @@ CD3D9ShaderMaterialRenderer::CD3D9ShaderMaterialRenderer(IDirect3DDevice9* d3dde
} }
void CD3D9ShaderMaterialRenderer::init(s32& outMaterialTypeNr, const c8* vertexShaderProgram, void CD3D9ShaderMaterialRenderer::init(s32& outMaterialTypeNr,
const c8* pixelShaderProgram) const c8* vertexShaderProgram, const c8* pixelShaderProgram)
{ {
outMaterialTypeNr = -1; outMaterialTypeNr = -1;
...@@ -86,7 +82,6 @@ void CD3D9ShaderMaterialRenderer::init(s32& outMaterialTypeNr, const c8* vertexS ...@@ -86,7 +82,6 @@ void CD3D9ShaderMaterialRenderer::init(s32& outMaterialTypeNr, const c8* vertexS
} }
//! Destructor //! Destructor
CD3D9ShaderMaterialRenderer::~CD3D9ShaderMaterialRenderer() CD3D9ShaderMaterialRenderer::~CD3D9ShaderMaterialRenderer()
{ {
...@@ -100,9 +95,10 @@ CD3D9ShaderMaterialRenderer::~CD3D9ShaderMaterialRenderer() ...@@ -100,9 +95,10 @@ CD3D9ShaderMaterialRenderer::~CD3D9ShaderMaterialRenderer()
PixelShader->Release(); PixelShader->Release();
if (BaseMaterial) if (BaseMaterial)
BaseMaterial->drop (); BaseMaterial->drop();
} }
bool CD3D9ShaderMaterialRenderer::OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype) bool CD3D9ShaderMaterialRenderer::OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype)
{ {
// call callback to set shader constants // call callback to set shader constants
...@@ -112,6 +108,7 @@ bool CD3D9ShaderMaterialRenderer::OnRender(IMaterialRendererServices* service, E ...@@ -112,6 +108,7 @@ bool CD3D9ShaderMaterialRenderer::OnRender(IMaterialRendererServices* service, E
return true; return true;
} }
void CD3D9ShaderMaterialRenderer::OnSetMaterial(const video::SMaterial& material, const video::SMaterial& lastMaterial, void CD3D9ShaderMaterialRenderer::OnSetMaterial(const video::SMaterial& material, const video::SMaterial& lastMaterial,
bool resetAllRenderstates, video::IMaterialRendererServices* services) bool resetAllRenderstates, video::IMaterialRendererServices* services)
{ {
...@@ -145,6 +142,7 @@ void CD3D9ShaderMaterialRenderer::OnSetMaterial(const video::SMaterial& material ...@@ -145,6 +142,7 @@ void CD3D9ShaderMaterialRenderer::OnSetMaterial(const video::SMaterial& material
services->setBasicRenderStates(material, lastMaterial, resetAllRenderstates); services->setBasicRenderStates(material, lastMaterial, resetAllRenderstates);
} }
void CD3D9ShaderMaterialRenderer::OnUnsetMaterial() void CD3D9ShaderMaterialRenderer::OnUnsetMaterial()
{ {
if (VertexShader) if (VertexShader)
...@@ -165,6 +163,7 @@ bool CD3D9ShaderMaterialRenderer::isTransparent() const ...@@ -165,6 +163,7 @@ bool CD3D9ShaderMaterialRenderer::isTransparent() const
return BaseMaterial ? BaseMaterial->isTransparent() : false; return BaseMaterial ? BaseMaterial->isTransparent() : false;
} }
bool CD3D9ShaderMaterialRenderer::createPixelShader(const c8* pxsh) bool CD3D9ShaderMaterialRenderer::createPixelShader(const c8* pxsh)
{ {
if (!pxsh) if (!pxsh)
...@@ -224,7 +223,6 @@ bool CD3D9ShaderMaterialRenderer::createPixelShader(const c8* pxsh) ...@@ -224,7 +223,6 @@ bool CD3D9ShaderMaterialRenderer::createPixelShader(const c8* pxsh)
} }
bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh) bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh)
{ {
if (!vtxsh) if (!vtxsh)
...@@ -259,7 +257,6 @@ bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh) ...@@ -259,7 +257,6 @@ bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh)
#endif #endif
if (errors) if (errors)
{ {
// print out compilation errors. // print out compilation errors.
...@@ -285,9 +282,10 @@ bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh) ...@@ -285,9 +282,10 @@ bool CD3D9ShaderMaterialRenderer::createVertexShader(const char* vtxsh)
return true; return true;
} }
HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShader(LPCSTR pSrcData, UINT SrcDataLen,
CONST D3DXMACRO* pDefines, LPD3DXINCLUDE pInclude, HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShader(LPCSTR pSrcData,
DWORD Flags, LPD3DXBUFFER* ppShader, UINT SrcDataLen, CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude, DWORD Flags, LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs) LPD3DXBUFFER* ppErrorMsgs)
{ {
// Because Irrlicht needs to be able to start up even without installed d3d dlls, it // Because Irrlicht needs to be able to start up even without installed d3d dlls, it
...@@ -354,6 +352,7 @@ HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShader(LPCSTR pSrcData, UI ...@@ -354,6 +352,7 @@ HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShader(LPCSTR pSrcData, UI
return 0; return 0;
} }
HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShaderFromFile(LPCSTR pSrcFile, HRESULT CD3D9ShaderMaterialRenderer::stubD3DXAssembleShaderFromFile(LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines, LPD3DXINCLUDE pInclude, DWORD Flags, CONST D3DXMACRO* pDefines, LPD3DXINCLUDE pInclude, DWORD Flags,
LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs) LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs)
...@@ -539,4 +538,3 @@ HRESULT CD3D9ShaderMaterialRenderer::stubD3DXCompileShaderFromFile(LPCSTR pSrcFi ...@@ -539,4 +538,3 @@ HRESULT CD3D9ShaderMaterialRenderer::stubD3DXCompileShaderFromFile(LPCSTR pSrcFi
} // end namespace irr } // end namespace irr
#endif // _IRR_COMPILE_WITH_DIRECT3D_9_ #endif // _IRR_COMPILE_WITH_DIRECT3D_9_
...@@ -2006,5 +2006,11 @@ void CNullDriver::setMinHardwareBufferVertexCount(u32 count) ...@@ -2006,5 +2006,11 @@ void CNullDriver::setMinHardwareBufferVertexCount(u32 count)
MinVertexCountForVBO = count; MinVertexCountForVBO = count;
} }
SOverrideMaterial& CNullDriver::getOverrideMaterial()
{
return OverrideMaterial;
}
} // end namespace } // end namespace
} // end namespace } // end namespace
...@@ -538,6 +538,12 @@ namespace video ...@@ -538,6 +538,12 @@ namespace video
/** \param count Number of vertices to set as minimum. */ /** \param count Number of vertices to set as minimum. */
virtual void setMinHardwareBufferVertexCount(u32 count); virtual void setMinHardwareBufferVertexCount(u32 count);
//! Get the global Material, which might override local materials.
/** Depending on the enable flags, values from this Material
are used to override those of local materials of some
meshbuffer being rendered. */
virtual SOverrideMaterial& getOverrideMaterial();
//! Only used by the engine internally. //! Only used by the engine internally.
virtual void setAllowZWriteOnTransparent(bool flag) virtual void setAllowZWriteOnTransparent(bool flag)
{ AllowZWriteOnTransparent=flag; } { AllowZWriteOnTransparent=flag; }
...@@ -658,6 +664,8 @@ namespace video ...@@ -658,6 +664,8 @@ namespace video
SColor FogColor; SColor FogColor;
SExposedVideoData ExposedData; SExposedVideoData ExposedData;
SOverrideMaterial OverrideMaterial;
bool LinearFog; bool LinearFog;
bool PixelFog; bool PixelFog;
bool RangeFog; bool RangeFog;
......
...@@ -1768,17 +1768,16 @@ video::ITexture* COpenGLDriver::createDeviceDependentTexture(IImage* surface, co ...@@ -1768,17 +1768,16 @@ video::ITexture* COpenGLDriver::createDeviceDependentTexture(IImage* surface, co
} }
//! Sets a material. All 3d drawing functions draw geometry now //! Sets a material. All 3d drawing functions draw geometry now using this material.
//! using this material.
//! \param material: Material to be used from now on.
void COpenGLDriver::setMaterial(const SMaterial& material) void COpenGLDriver::setMaterial(const SMaterial& material)
{ {
Material = material; Material = material;
OverrideMaterial.apply(Material);
for (s32 i = MaxTextureUnits-1; i>= 0; --i) for (s32 i = MaxTextureUnits-1; i>= 0; --i)
{ {
setTransform ((E_TRANSFORMATION_STATE) (ETS_TEXTURE_0 + i), setTransform ((E_TRANSFORMATION_STATE) (ETS_TEXTURE_0 + i),
material.getTextureMatrix(i)); Material.getTextureMatrix(i));
} }
} }
......
...@@ -1299,6 +1299,7 @@ void CSceneManager::drawAll() ...@@ -1299,6 +1299,7 @@ void CSceneManager::drawAll()
//render camera scenes //render camera scenes
{ {
CurrentRendertime = ESNRP_CAMERA; CurrentRendertime = ESNRP_CAMERA;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
if(LightManager) if(LightManager)
LightManager->OnRenderPassPreRender(CurrentRendertime); LightManager->OnRenderPassPreRender(CurrentRendertime);
...@@ -1315,6 +1316,7 @@ void CSceneManager::drawAll() ...@@ -1315,6 +1316,7 @@ void CSceneManager::drawAll()
//render lights scenes //render lights scenes
{ {
CurrentRendertime = ESNRP_LIGHT; CurrentRendertime = ESNRP_LIGHT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
if(LightManager) if(LightManager)
{ {
...@@ -1339,7 +1341,6 @@ void CSceneManager::drawAll() ...@@ -1339,7 +1341,6 @@ void CSceneManager::drawAll()
LightList[light] = static_cast<ILightSceneNode*>(SortedLights[light].Node); LightList[light] = static_cast<ILightSceneNode*>(SortedLights[light].Node);
} }
Driver->deleteAllDynamicLights(); Driver->deleteAllDynamicLights();
Driver->setAmbientLight(AmbientLight); Driver->setAmbientLight(AmbientLight);
...@@ -1359,6 +1360,8 @@ void CSceneManager::drawAll() ...@@ -1359,6 +1360,8 @@ void CSceneManager::drawAll()
// render skyboxes // render skyboxes
{ {
CurrentRendertime = ESNRP_SKY_BOX; CurrentRendertime = ESNRP_SKY_BOX;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
if(LightManager) if(LightManager)
{ {
LightManager->OnRenderPassPreRender(CurrentRendertime); LightManager->OnRenderPassPreRender(CurrentRendertime);
...@@ -1386,6 +1389,7 @@ void CSceneManager::drawAll() ...@@ -1386,6 +1389,7 @@ void CSceneManager::drawAll()
// render default objects // render default objects
{ {
CurrentRendertime = ESNRP_SOLID; CurrentRendertime = ESNRP_SOLID;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
SolidNodeList.sort(); // sort by textures SolidNodeList.sort(); // sort by textures
...@@ -1416,6 +1420,7 @@ void CSceneManager::drawAll() ...@@ -1416,6 +1420,7 @@ void CSceneManager::drawAll()
// render shadows // render shadows
{ {
CurrentRendertime = ESNRP_SHADOW; CurrentRendertime = ESNRP_SHADOW;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
if(LightManager) if(LightManager)
{ {
...@@ -1447,6 +1452,7 @@ void CSceneManager::drawAll() ...@@ -1447,6 +1452,7 @@ void CSceneManager::drawAll()
// render transparent objects. // render transparent objects.
{ {
CurrentRendertime = ESNRP_TRANSPARENT; CurrentRendertime = ESNRP_TRANSPARENT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
TransparentNodeList.sort(); // sort by distance from camera TransparentNodeList.sort(); // sort by distance from camera
if(LightManager) if(LightManager)
...@@ -1477,6 +1483,7 @@ void CSceneManager::drawAll() ...@@ -1477,6 +1483,7 @@ void CSceneManager::drawAll()
// render transparent effect objects. // render transparent effect objects.
{ {
CurrentRendertime = ESNRP_TRANSPARENT_EFFECT; CurrentRendertime = ESNRP_TRANSPARENT_EFFECT;
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
TransparentEffectNodeList.sort(); // sort by distance from camera TransparentEffectNodeList.sort(); // sort by distance from camera
......
...@@ -168,7 +168,6 @@ bool CSoftwareDriver::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const ...@@ -168,7 +168,6 @@ bool CSoftwareDriver::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
} }
//! sets transformation //! sets transformation
void CSoftwareDriver::setTransform(E_TRANSFORMATION_STATE state, const core::matrix4& mat) void CSoftwareDriver::setTransform(E_TRANSFORMATION_STATE state, const core::matrix4& mat)
{ {
...@@ -176,8 +175,6 @@ void CSoftwareDriver::setTransform(E_TRANSFORMATION_STATE state, const core::mat ...@@ -176,8 +175,6 @@ void CSoftwareDriver::setTransform(E_TRANSFORMATION_STATE state, const core::mat
} }
//! sets the current Texture //! sets the current Texture
bool CSoftwareDriver::setTexture(video::ITexture* texture) bool CSoftwareDriver::setTexture(video::ITexture* texture)
{ {
...@@ -200,11 +197,11 @@ bool CSoftwareDriver::setTexture(video::ITexture* texture) ...@@ -200,11 +197,11 @@ bool CSoftwareDriver::setTexture(video::ITexture* texture)
} }
//! sets a material //! sets a material
void CSoftwareDriver::setMaterial(const SMaterial& material) void CSoftwareDriver::setMaterial(const SMaterial& material)
{ {
Material = material; Material = material;
OverrideMaterial.apply(Material);
for (u32 i = 0; i < 1; ++i) for (u32 i = 0; i < 1; ++i)
{ {
...@@ -305,7 +302,6 @@ void CSoftwareDriver::setRenderTarget(video::CImage* image) ...@@ -305,7 +302,6 @@ void CSoftwareDriver::setRenderTarget(video::CImage* image)
} }
//! sets a viewport //! sets a viewport
void CSoftwareDriver::setViewPort(const core::rect<s32>& area) void CSoftwareDriver::setViewPort(const core::rect<s32>& area)
{ {
...@@ -324,6 +320,7 @@ void CSoftwareDriver::setViewPort(const core::rect<s32>& area) ...@@ -324,6 +320,7 @@ void CSoftwareDriver::setViewPort(const core::rect<s32>& area)
CurrentTriangleRenderer->setRenderTarget(RenderTargetSurface, ViewPort); CurrentTriangleRenderer->setRenderTarget(RenderTargetSurface, ViewPort);
} }
void CSoftwareDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCount, void CSoftwareDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCount,
const void* indexList, u32 primitiveCount, const void* indexList, u32 primitiveCount,
E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType, E_INDEX_TYPE iType) E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType, E_INDEX_TYPE iType)
...@@ -346,6 +343,7 @@ void CSoftwareDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCo ...@@ -346,6 +343,7 @@ void CSoftwareDriver::drawVertexPrimitiveList(const void* vertices, u32 vertexCo
} }
//! draws a vertex primitive list //! draws a vertex primitive list
void CSoftwareDriver::drawVertexPrimitiveList16(const void* vertices, u32 vertexCount, const u16* indexList, u32 primitiveCount, E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType) void CSoftwareDriver::drawVertexPrimitiveList16(const void* vertices, u32 vertexCount, const u16* indexList, u32 primitiveCount, E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType)
{ {
...@@ -471,7 +469,6 @@ void CSoftwareDriver::drawVertexPrimitiveList16(const void* vertices, u32 vertex ...@@ -471,7 +469,6 @@ void CSoftwareDriver::drawVertexPrimitiveList16(const void* vertices, u32 vertex
} }
template<class VERTEXTYPE> template<class VERTEXTYPE>
void CSoftwareDriver::drawClippedIndexedTriangleListT(const VERTEXTYPE* vertices, void CSoftwareDriver::drawClippedIndexedTriangleListT(const VERTEXTYPE* vertices,
s32 vertexCount, const u16* indexList, s32 triangleCount) s32 vertexCount, const u16* indexList, s32 triangleCount)
......
...@@ -363,6 +363,7 @@ void CBurningVideoDriver::setTransform(E_TRANSFORMATION_STATE state, const core: ...@@ -363,6 +363,7 @@ void CBurningVideoDriver::setTransform(E_TRANSFORMATION_STATE state, const core:
void CBurningVideoDriver::setMaterial(const SMaterial& material) void CBurningVideoDriver::setMaterial(const SMaterial& material)
{ {
Material.org = material; Material.org = material;
OverrideMaterial.apply(Material.org);
Material.AmbientColor.setA8R8G8B8 ( Material.org.AmbientColor.color ); Material.AmbientColor.setA8R8G8B8 ( Material.org.AmbientColor.color );
Material.DiffuseColor.setA8R8G8B8 ( Material.org.DiffuseColor.color ); Material.DiffuseColor.setA8R8G8B8 ( Material.org.DiffuseColor.color );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment