From ef2d8a0dbe32a80371606cdd1cca835cedd51afd Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 2 Jun 2015 10:58:56 -0700 Subject: [PATCH] tuesday morning rendering poor performances networking issue --- interface/src/Application.cpp | 39 ++++++++++++------------ libraries/render-utils/src/Model.cpp | 2 +- libraries/render/src/render/DrawTask.cpp | 8 ++++- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index fdb7277a0c..f483f0bacc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3464,6 +3464,26 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se }); } + if (!billboard) { + DependencyManager::get()->setAmbientLightMode(getRenderAmbientLight()); + auto skyStage = DependencyManager::get()->getSkyStage(); + DependencyManager::get()->setGlobalLight(skyStage->getSunLight()->getDirection(), skyStage->getSunLight()->getColor(), skyStage->getSunLight()->getIntensity(), skyStage->getSunLight()->getAmbientIntensity()); + DependencyManager::get()->setGlobalAtmosphere(skyStage->getAtmosphere()); + + auto skybox = model::SkyboxPointer(); + if (skyStage->getBackgroundMode() == model::SunSkyStage::SKY_BOX) { + skybox = skyStage->getSkybox(); + } + DependencyManager::get()->setGlobalSkybox(skybox); + + // Not needed anymore here, taken care off by the Engine + /* + PROFILE_RANGE("DeferredLighting"); + PerformanceTimer perfTimer("lighting"); + DependencyManager::get()->render();*/ + + } + { PerformanceTimer perfTimer("SceneProcessPendingChanges"); _main3DScene->enqueuePendingChanges(pendingChanges); @@ -3489,25 +3509,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se } - if (!billboard) { - DependencyManager::get()->setAmbientLightMode(getRenderAmbientLight()); - auto skyStage = DependencyManager::get()->getSkyStage(); - DependencyManager::get()->setGlobalLight(skyStage->getSunLight()->getDirection(), skyStage->getSunLight()->getColor(), skyStage->getSunLight()->getIntensity(), skyStage->getSunLight()->getAmbientIntensity()); - DependencyManager::get()->setGlobalAtmosphere(skyStage->getAtmosphere()); - - auto skybox = model::SkyboxPointer(); - if (skyStage->getBackgroundMode() == model::SunSkyStage::SKY_BOX) { - skybox = skyStage->getSkybox(); - } - DependencyManager::get()->setGlobalSkybox(skybox); - - // Not needed anymore here, taken care off by the Engine - /* - PROFILE_RANGE("DeferredLighting"); - PerformanceTimer perfTimer("lighting"); - DependencyManager::get()->render();*/ - - } //Render the sixense lasers if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseLasers)) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 72857476cb..80e7e4cae7 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -2313,7 +2313,7 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran model::MaterialPointer material = part._material; if (material == nullptr) { - qCDebug(renderutils) << "WARNING: material == nullptr!!!"; + // qCDebug(renderutils) << "WARNING: material == nullptr!!!"; } if (material != nullptr) { diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 37180ff0aa..6a092bf7d9 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -94,6 +94,7 @@ bool LODManager::shouldRenderMesh(float largestDimension, float distanceToCamera }*/ void render::cullItems(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const ItemIDs& inItems, ItemIDs& outItems) { + PerformanceTimer perfTimer("cullItems"); assert(renderContext->args); assert(renderContext->args->_viewFrustum); @@ -156,6 +157,7 @@ struct BackToFrontSort { }; void render::depthSortItems(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, bool frontToBack, const ItemIDs& inItems, ItemIDs& outItems) { + PerformanceTimer perfTimer("depthSortItems"); assert(renderContext->args); assert(renderContext->args->_viewFrustum); @@ -194,6 +196,7 @@ void render::depthSortItems(const SceneContextPointer& sceneContext, const Rende } void render::renderItems(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const ItemIDs& inItems) { + PerformanceTimer perfTimer("renderItems"); auto& scene = sceneContext->_scene; RenderArgs* args = renderContext->args; // render @@ -300,7 +303,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo ItemIDs inItems; inItems.reserve(items.size()); for (auto id : items) { - inItems.push_back(id); + // inItems.push_back(id); } ItemIDs& renderedItems = inItems; @@ -397,4 +400,7 @@ template <> void render::jobRun(const DrawBackground& job, const SceneContextPoi renderItems(sceneContext, renderContext, inItems); args->_context->render((*args->_batch)); args->_batch = nullptr; + + // Force the context sync + args->_context->syncCache(); }