diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4659e58d37..87da8e6aa1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5098,6 +5098,7 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se renderArgs->setViewFrustum(_displayViewFrustum); } renderArgs->_cameraMode = (int8_t)theCamera.getMode(); // HACK + renderArgs->_scene = getMain3DScene(); _renderEngine->getRenderContext()->args = renderArgs; // Before the deferred pass, let's try to use the render engine diff --git a/interface/src/Application.h b/interface/src/Application.h index c8856f1026..9f429b0433 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -268,7 +268,7 @@ public: int getMaxOctreePacketsPerSecond() const; render::ScenePointer getMain3DScene() override { return _main3DScene; } - render::ScenePointer getMain3DScene() const { return _main3DScene; } + const render::ScenePointer& getMain3DScene() const { return _main3DScene; } render::EnginePointer getRenderEngine() override { return _renderEngine; } gpu::ContextPointer getGPUContext() const { return _gpuContext; } @@ -278,7 +278,7 @@ public: float getAvatarSimrate() const { return _avatarSimCounter.rate(); } float getAverageSimsPerSecond() const { return _simCounter.rate(); } - + void takeSnapshot(bool notify, bool includeAnimated = false, float aspectRatio = 0.0f); void shareSnapshot(const QString& filename, const QUrl& href = QUrl("")); diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index cf9bb45bc0..73ca149461 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -72,7 +72,7 @@ namespace render { if (avatarPtr->isInitialized() && args) { PROFILE_RANGE_BATCH(*args->_batch, "renderAvatarPayload"); // TODO AVATARS_RENDERER: remove need for qApp - avatarPtr->render(args, qApp->getMain3DScene()); + avatarPtr->render(args); } } template <> uint32_t metaFetchMetaSubItems(const AvatarSharedPointer& avatar, ItemIDs& subItems) { @@ -579,7 +579,7 @@ void Avatar::postUpdate(float deltaTime) { } } -void Avatar::render(RenderArgs* renderArgs, const render::ScenePointer& scene) { +void Avatar::render(RenderArgs* renderArgs) { auto& batch = *renderArgs->_batch; PROFILE_RANGE_BATCH(batch, __FUNCTION__); @@ -651,7 +651,7 @@ void Avatar::render(RenderArgs* renderArgs, const render::ScenePointer& scene) { float distanceToTarget = glm::length(toTarget); { - fixupModelsInScene(scene); + fixupModelsInScene(renderArgs->_scene); if (renderArgs->_renderMode != RenderArgs::SHADOW_RENDER_MODE) { // add local lights diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index 816e800641..50edb4e947 100644 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -81,7 +81,7 @@ public: void simulate(float deltaTime, bool inView); virtual void simulateAttachments(float deltaTime); - virtual void render(RenderArgs* renderArgs, const render::ScenePointer& scene); + virtual void render(RenderArgs* renderArgs); void addToScene(AvatarSharedPointer self, std::shared_ptr scene, render::Transaction& transaction); diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 1e491eaea2..8ff93660ac 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -752,13 +752,12 @@ controller::Pose MyAvatar::getRightHandTipPose() const { } // virtual -void MyAvatar::render(RenderArgs* renderArgs, const render::ScenePointer& scene) { +void MyAvatar::render(RenderArgs* renderArgs) { // don't render if we've been asked to disable local rendering if (!_shouldRender) { return; // exit early } - - Avatar::render(renderArgs, scene); + Avatar::render(renderArgs); } void MyAvatar::overrideAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 599411e38a..b5d26b435e 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -525,7 +525,7 @@ private: void simulate(float deltaTime); void updateFromTrackers(float deltaTime); - virtual void render(RenderArgs* renderArgs, const render::ScenePointer& scene) override; + virtual void render(RenderArgs* renderArgs) override; virtual bool shouldRenderHead(const RenderArgs* renderArgs) const override; void setShouldRenderLocally(bool shouldRender) { _shouldRender = shouldRender; setEnableMeshVisible(shouldRender); } bool getShouldRenderLocally() const { return _shouldRender; } diff --git a/libraries/shared/src/RenderArgs.h b/libraries/shared/src/RenderArgs.h index 29cd007a4c..10a9a20287 100644 --- a/libraries/shared/src/RenderArgs.h +++ b/libraries/shared/src/RenderArgs.h @@ -23,6 +23,10 @@ class AABox; class OctreeRenderer; +namespace render { + class Scene; + using ScenePointer = std::shared_ptr; +} namespace gpu { class Batch; @@ -126,6 +130,7 @@ public: bool _enableTexturing { true }; RenderDetails _details; + render::ScenePointer _scene; // HACK int8_t _cameraMode { -1 }; // HACK };