#include "IMaterialRenderer.h"\r
#include "IReadFile.h"\r
#include "IWriteFile.h"\r
-#include "EProfileIDs.h"\r
-#include "IProfiler.h"\r
\r
#include "os.h"\r
\r
#ifdef _IRR_COMPILE_WITH_B3D_LOADER_\r
MeshLoaderList.push_back(new CB3DMeshFileLoader(this));\r
#endif\r
-\r
- IRR_PROFILE(\r
- static bool initProfile = false;\r
- if (!initProfile )\r
- {\r
- initProfile = true;\r
- getProfiler().add(EPID_SM_DRAW_ALL, L"drawAll", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_ANIMATE, L"animate", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_CAMERAS, L"cameras", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_LIGHTS, L"lights", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_SKYBOXES, L"skyboxes", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_DEFAULT, L"defaultnodes", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_SHADOWS, L"shadows", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_TRANSPARENT, L"transp.nodes", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_EFFECT, L"effectnodes", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_RENDER_GUI_NODES, L"guinodes", L"Irrlicht scene");\r
- getProfiler().add(EPID_SM_REGISTER, L"reg.render.node", L"Irrlicht scene");\r
- }\r
- )\r
}\r
\r
\r
//! registers a node for rendering it at a specific time.\r
u32 CSceneManager::registerNodeForRendering(ISceneNode* node, E_SCENE_NODE_RENDER_PASS pass)\r
{\r
- IRR_PROFILE(CProfileScope p1(EPID_SM_REGISTER);)\r
u32 taken = 0;\r
\r
switch(pass)\r
//! draws all scene nodes\r
void CSceneManager::drawAll()\r
{\r
- IRR_PROFILE(CProfileScope psAll(EPID_SM_DRAW_ALL);)\r
-\r
if (!Driver)\r
return;\r
\r
Driver->setAllowZWriteOnTransparent(Parameters->getAttributeAsBool(ALLOW_ZWRITE_ON_TRANSPARENT));\r
\r
// do animations and other stuff.\r
- IRR_PROFILE(getProfiler().start(EPID_SM_ANIMATE));\r
OnAnimate(os::Timer::getTime());\r
- IRR_PROFILE(getProfiler().stop(EPID_SM_ANIMATE));\r
\r
/*!\r
First Scene Node for prerendering should be the active camera\r
consistent Camera is needed for culling\r
*/\r
- IRR_PROFILE(getProfiler().start(EPID_SM_RENDER_CAMERAS));\r
camWorldPos.set(0,0,0);\r
if (ActiveCamera)\r
{\r
ActiveCamera->render();\r
camWorldPos = ActiveCamera->getAbsolutePosition();\r
}\r
- IRR_PROFILE(getProfiler().stop(EPID_SM_RENDER_CAMERAS));\r
\r
// let all nodes register themselves\r
OnRegisterSceneNode();\r
\r
//render camera scenes\r
{\r
- IRR_PROFILE(CProfileScope psCam(EPID_SM_RENDER_CAMERAS);)\r
CurrentRenderPass = ESNRP_CAMERA;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r
\r
// render skyboxes\r
{\r
- IRR_PROFILE(CProfileScope psSkyBox(EPID_SM_RENDER_SKYBOXES);)\r
CurrentRenderPass = ESNRP_SKY_BOX;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r
\r
// render default objects\r
{\r
- IRR_PROFILE(CProfileScope psDefault(EPID_SM_RENDER_DEFAULT);)\r
CurrentRenderPass = ESNRP_SOLID;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r
\r
// render transparent objects.\r
{\r
- IRR_PROFILE(CProfileScope psTrans(EPID_SM_RENDER_TRANSPARENT);)\r
CurrentRenderPass = ESNRP_TRANSPARENT;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r
\r
// render transparent effect objects.\r
{\r
- IRR_PROFILE(CProfileScope psEffect(EPID_SM_RENDER_EFFECT);)\r
CurrentRenderPass = ESNRP_TRANSPARENT_EFFECT;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r
\r
// render custom gui nodes\r
{\r
- IRR_PROFILE(CProfileScope psEffect(EPID_SM_RENDER_GUI_NODES);)\r
CurrentRenderPass = ESNRP_GUI;\r
Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);\r
\r