From fa9b0930d2a87909b9cb5ee20e44febf912f78c9 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 21 Sep 2015 14:25:32 -0700 Subject: [PATCH] Bring back the procedural skybox --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 10 +++++----- libraries/model/src/model/Skybox.cpp | 2 +- libraries/model/src/model/Skybox.h | 5 ----- libraries/model/src/model/Stage.cpp | 1 - .../procedural/src/procedural/ProceduralSkybox.cpp | 6 ++++++ libraries/procedural/src/procedural/ProceduralSkybox.h | 3 +++ .../script-engine/src/SceneScriptingInterface.cpp | 9 +++++++-- libraries/script-engine/src/SceneScriptingInterface.h | 2 +- 8 files changed, 23 insertions(+), 15 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 02af1ee950..c57d1e5d23 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include "EntityTreeRenderer.h" @@ -294,17 +294,17 @@ void EntityTreeRenderer::applyZonePropertiesToScene(std::shared_ptrendOverrideEnvironmentData(); auto stage = scene->getSkyStage(); if (zone->getBackgroundMode() == BACKGROUND_MODE_SKYBOX) { - auto skybox = stage->getSkybox(); + auto skybox = std::dynamic_pointer_cast(stage->getSkybox()); skybox->setColor(zone->getSkyboxProperties().getColorVec3()); static QString userData; if (userData != zone->getUserData()) { userData = zone->getUserData(); - /* QSharedPointer procedural(new Procedural(userData)); + ProceduralPointer procedural(new Procedural(userData)); if (procedural->_enabled) { skybox->setProcedural(procedural); } else { - skybox->setProcedural(QSharedPointer()); - }*/ + skybox->setProcedural(ProceduralPointer()); + } } if (zone->getSkyboxProperties().getURL().isEmpty()) { skybox->setCubemap(gpu::TexturePointer()); diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index c931b78128..e27a0d25ce 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -48,7 +48,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky static gpu::BufferPointer theBuffer; static gpu::Stream::FormatPointer theFormat; - if (skybox._procedural || skybox.getCubemap()) { + if (skybox.getCubemap()) { if (!theBuffer) { const float CLIP = 1.0f; const glm::vec2 vertices[4] = { { -CLIP, -CLIP }, { CLIP, -CLIP }, { -CLIP, CLIP }, { CLIP, CLIP } }; diff --git a/libraries/model/src/model/Skybox.h b/libraries/model/src/model/Skybox.h index 68352e4309..fb20aadbac 100755 --- a/libraries/model/src/model/Skybox.h +++ b/libraries/model/src/model/Skybox.h @@ -16,8 +16,6 @@ #include "Light.h" class ViewFrustum; -struct Procedural; -typedef std::shared_ptr ProceduralPointer; namespace gpu { class Batch; } @@ -37,13 +35,10 @@ public: void setCubemap(const gpu::TexturePointer& cubemap); const gpu::TexturePointer& getCubemap() const { return _cubemap; } - void setProcedural(const ProceduralPointer& procedural); - static void render(gpu::Batch& batch, const ViewFrustum& frustum, const Skybox& skybox); protected: gpu::TexturePointer _cubemap; - ProceduralPointer _procedural; Color _color{1.0f, 1.0f, 1.0f}; }; typedef std::shared_ptr< Skybox > SkyboxPointer; diff --git a/libraries/model/src/model/Stage.cpp b/libraries/model/src/model/Stage.cpp index fa086d0d2b..386569dd08 100644 --- a/libraries/model/src/model/Stage.cpp +++ b/libraries/model/src/model/Stage.cpp @@ -204,7 +204,6 @@ SunSkyStage::SunSkyStage() : // Begining of march setYearTime(60.0f); - _skybox = std::make_shared(); _skybox->setColor(Color(1.0f, 0.0f, 0.0f)); } diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index e237bd3d7d..0f1e0536c1 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -21,6 +21,12 @@ ProceduralSkybox::ProceduralSkybox() : model::Skybox() { } +ProceduralSkybox::ProceduralSkybox(const ProceduralSkybox& skybox) : + model::Skybox(skybox), + _procedural(skybox._procedural) { + +} + void ProceduralSkybox::setProcedural(const ProceduralPointer& procedural) { _procedural = procedural; if (_procedural) { diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.h b/libraries/procedural/src/procedural/ProceduralSkybox.h index 32d8200079..c7543dad93 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.h +++ b/libraries/procedural/src/procedural/ProceduralSkybox.h @@ -17,9 +17,12 @@ #include "Procedural.h" +typedef std::shared_ptr ProceduralPointer; + class ProceduralSkybox: public model::Skybox { public: ProceduralSkybox(); + ProceduralSkybox(const ProceduralSkybox& skybox); ProceduralSkybox& operator= (const ProceduralSkybox& skybox); virtual ~ProceduralSkybox() {}; diff --git a/libraries/script-engine/src/SceneScriptingInterface.cpp b/libraries/script-engine/src/SceneScriptingInterface.cpp index debba309c5..a8d602e6aa 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.cpp +++ b/libraries/script-engine/src/SceneScriptingInterface.cpp @@ -9,12 +9,17 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include "SceneScriptingInterface.h" + #include -#include "SceneScriptingInterface.h" -#include "SceneScriptingInterface.h" +#include +SceneScriptingInterface::SceneScriptingInterface() { + // Let's make sure the sunSkyStage is using a proceduralSKybox + _skyStage->setSkybox(model::SkyboxPointer(new ProceduralSkybox())); +} void SceneScriptingInterface::setStageOrientation(const glm::quat& orientation) { _skyStage->setOriginOrientation(orientation); diff --git a/libraries/script-engine/src/SceneScriptingInterface.h b/libraries/script-engine/src/SceneScriptingInterface.h index cb2f6b7b79..95919d6c0c 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.h +++ b/libraries/script-engine/src/SceneScriptingInterface.h @@ -117,7 +117,7 @@ signals: void shouldRenderAvatarsChanged(bool shouldRenderAvatars); void shouldRenderEntitiesChanged(bool shouldRenderEntities); protected: - SceneScriptingInterface() {}; + SceneScriptingInterface(); ~SceneScriptingInterface() {}; model::SunSkyStagePointer _skyStage = std::make_shared();