- 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);
|
||||
}
|
||||
|
||||
// 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
|
||||
{
|
||||
CurrentRendertime = ESNRP_SHADOW;
|
||||
|
@ -1539,37 +1570,6 @@ void CSceneManager::drawAll()
|
|||
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.
|
||||
{
|
||||
CurrentRendertime = ESNRP_TRANSPARENT_EFFECT;
|
||||
|
|
Loading…
Reference in New Issue