- Fixed D3D9 shadow bug visible in Example no. 8.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@4313 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
0755c18c3b
commit
f84412dc66
|
@ -1507,6 +1507,37 @@ void CSceneManager::drawAll()
|
||||||
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// render transparent objects.
|
||||||
|
{
|
||||||
|
CurrentRendertime = ESNRP_TRANSPARENT;
|
||||||
|
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
|
||||||
|
|
||||||
|
TransparentNodeList.sort(); // sort by distance from camera
|
||||||
|
if (LightManager)
|
||||||
|
{
|
||||||
|
LightManager->OnRenderPassPreRender(CurrentRendertime);
|
||||||
|
|
||||||
|
for (i=0; i<TransparentNodeList.size(); ++i)
|
||||||
|
{
|
||||||
|
ISceneNode* node = TransparentNodeList[i].Node;
|
||||||
|
LightManager->OnNodePreRender(node);
|
||||||
|
node->render();
|
||||||
|
LightManager->OnNodePostRender(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i=0; i<TransparentNodeList.size(); ++i)
|
||||||
|
TransparentNodeList[i].Node->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
Parameters.setAttribute ( "drawn_transparent", (s32) TransparentNodeList.size() );
|
||||||
|
TransparentNodeList.set_used(0);
|
||||||
|
|
||||||
|
if (LightManager)
|
||||||
|
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
||||||
|
}
|
||||||
|
|
||||||
// render shadows
|
// render shadows
|
||||||
{
|
{
|
||||||
CurrentRendertime = ESNRP_SHADOW;
|
CurrentRendertime = ESNRP_SHADOW;
|
||||||
|
@ -1539,37 +1570,6 @@ void CSceneManager::drawAll()
|
||||||
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// render transparent objects.
|
|
||||||
{
|
|
||||||
CurrentRendertime = ESNRP_TRANSPARENT;
|
|
||||||
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRendertime) != 0);
|
|
||||||
|
|
||||||
TransparentNodeList.sort(); // sort by distance from camera
|
|
||||||
if (LightManager)
|
|
||||||
{
|
|
||||||
LightManager->OnRenderPassPreRender(CurrentRendertime);
|
|
||||||
|
|
||||||
for (i=0; i<TransparentNodeList.size(); ++i)
|
|
||||||
{
|
|
||||||
ISceneNode* node = TransparentNodeList[i].Node;
|
|
||||||
LightManager->OnNodePreRender(node);
|
|
||||||
node->render();
|
|
||||||
LightManager->OnNodePostRender(node);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i=0; i<TransparentNodeList.size(); ++i)
|
|
||||||
TransparentNodeList[i].Node->render();
|
|
||||||
}
|
|
||||||
|
|
||||||
Parameters.setAttribute ( "drawn_transparent", (s32) TransparentNodeList.size() );
|
|
||||||
TransparentNodeList.set_used(0);
|
|
||||||
|
|
||||||
if (LightManager)
|
|
||||||
LightManager->OnRenderPassPostRender(CurrentRendertime);
|
|
||||||
}
|
|
||||||
|
|
||||||
// render transparent effect objects.
|
// render transparent effect objects.
|
||||||
{
|
{
|
||||||
CurrentRendertime = ESNRP_TRANSPARENT_EFFECT;
|
CurrentRendertime = ESNRP_TRANSPARENT_EFFECT;
|
||||||
|
|
Loading…
Reference in New Issue