diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9ce6cc9b25..cd3875521a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5140,10 +5140,7 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se } { - PerformanceTimer perfTimer("SceneProcessTransaction"); _main3DScene->enqueueTransaction(transaction); - - _main3DScene->processTransactionQueue(); } // For now every frame pass the renderContext diff --git a/libraries/render/src/render/Engine.cpp b/libraries/render/src/render/Engine.cpp index b3372a9305..19fececa4b 100644 --- a/libraries/render/src/render/Engine.cpp +++ b/libraries/render/src/render/Engine.cpp @@ -18,6 +18,8 @@ #include #include "EngineStats.h" +#include "SceneTask.h" + #include "Logging.h" using namespace render; @@ -31,6 +33,7 @@ public: void build(JobModel& task, const Varying& in, Varying& out) { task.addJob("Stats"); + task.addJob("PerformSceneTransaction"); } }; diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index fc0a8c1fca..48d09a9d52 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -128,7 +128,6 @@ protected: void removeItems(const ItemIDs& ids); void updateItems(const ItemIDs& ids, UpdateFunctors& functors); - // The Selection map mutable std::mutex _selectionsMutex; // mutable so it can be used in the thread safe getSelection const method SelectionMap _selections; @@ -139,6 +138,11 @@ protected: // void appendToSelection(const Selection& selection); // void mergeWithSelection(const Selection& selection); + // The Stages + StageMap _stages; + + + friend class Engine; }; diff --git a/libraries/render/src/render/SceneTask.cpp b/libraries/render/src/render/SceneTask.cpp new file mode 100644 index 0000000000..56010f246e --- /dev/null +++ b/libraries/render/src/render/SceneTask.cpp @@ -0,0 +1,21 @@ +// +// SceneTask.cpp +// render/src/render +// +// Created by Sam Gateau on 6/14/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "SceneTask.h" + + +using namespace render; + +void PerformSceneTransaction::configure(const Config& config) { +} + +void PerformSceneTransaction::run(const RenderContextPointer& renderContext) { + renderContext->_scene->processTransactionQueue(); +} diff --git a/libraries/render/src/render/SceneTask.h b/libraries/render/src/render/SceneTask.h new file mode 100644 index 0000000000..0cf2dda395 --- /dev/null +++ b/libraries/render/src/render/SceneTask.h @@ -0,0 +1,41 @@ +// +// SceneTask.h +// render/src/render +// +// Created by Sam Gateau on 6/14/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_render_SceneTask_h +#define hifi_render_SceneTask_h + +#include "Engine.h" + +namespace render { + + class PerformSceneTransactionConfig : public Job::Config { + Q_OBJECT + public: + signals: + void dirty(); + + protected: + }; + + class PerformSceneTransaction { + public: + using Config = PerformSceneTransactionConfig; + using JobModel = Job::Model; + + void configure(const Config& config); + void run(const RenderContextPointer& renderContext); + protected: + }; + + +} + +#endif // hifi_render_SceneTask_h diff --git a/libraries/render/src/render/Stage.cpp b/libraries/render/src/render/Stage.cpp new file mode 100644 index 0000000000..1ee9b1d6ff --- /dev/null +++ b/libraries/render/src/render/Stage.cpp @@ -0,0 +1,26 @@ +// +// Stage.cpp +// render/src/render +// +// Created by Sam Gateau on 6/14/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "Stage.h" + + +using namespace render; + + + +Stage::~Stage() { + +} + +Stage::Stage() : + _name() +{ +} + diff --git a/libraries/render/src/render/Stage.h b/libraries/render/src/render/Stage.h new file mode 100644 index 0000000000..5145810671 --- /dev/null +++ b/libraries/render/src/render/Stage.h @@ -0,0 +1,38 @@ +// +// Stage.h +// render/src/render +// +// Created by Sam Gateau on 6/14/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_render_Stage_h +#define hifi_render_Stage_h + +#include +#include +#include + +namespace render { + + class Stage { + public: + using Name = std::string; + + Stage(); + virtual ~Stage(); + + protected: + Name _name; + }; + + using StagePointer = std::shared_ptr; + + using StageMap = std::map; + +} + +#endif // hifi_render_Stage_h