diff --git a/include/openspace/engine/wrapper/sgctwindowwrapper.h b/include/openspace/engine/wrapper/sgctwindowwrapper.h index d76ec15a94..229c832baf 100644 --- a/include/openspace/engine/wrapper/sgctwindowwrapper.h +++ b/include/openspace/engine/wrapper/sgctwindowwrapper.h @@ -78,6 +78,7 @@ public: void sendMessageToExternalControl(const std::vector& message) const override; bool isSimpleRendering() const override; + bool isFisheyeRendering() const override; void takeScreenshot(bool applyWarping = false) const override; diff --git a/include/openspace/engine/wrapper/windowwrapper.h b/include/openspace/engine/wrapper/windowwrapper.h index 6bec15b1e0..ce8bdaf396 100644 --- a/include/openspace/engine/wrapper/windowwrapper.h +++ b/include/openspace/engine/wrapper/windowwrapper.h @@ -282,6 +282,13 @@ public: */ virtual bool isSimpleRendering() const; + /** + * Returns true if the rendering is being done using a Fisheye lens; + * false otherwise. On default, this method returns + * false + */ + virtual bool isFisheyeRendering() const; + /** * Advises the windowing system to take a screenshot. This method defaults to a no-op. */ diff --git a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp index 871ebe6419..0e0c6af1c3 100644 --- a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp +++ b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include @@ -465,7 +465,13 @@ namespace openspace { // DEBUG: _renderOption.addOption(0, "Camera View Direction"); _renderOption.addOption(1, "Camera Position Normal"); - _renderOption.set(1); + if (OsEng.windowWrapper().isFisheyeRendering()) { + _renderOption.set(1); + } + else { + _renderOption.set(0); + } + addProperty(_renderOption); if (dictionary.hasKey(keyUnit)) { diff --git a/modules/digitaluniverse/rendering/renderabledumeshes.cpp b/modules/digitaluniverse/rendering/renderabledumeshes.cpp index 1a07926055..cd696eb7c9 100644 --- a/modules/digitaluniverse/rendering/renderabledumeshes.cpp +++ b/modules/digitaluniverse/rendering/renderabledumeshes.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -285,7 +286,12 @@ RenderableDUMeshes::RenderableDUMeshes(const ghoul::Dictionary& dictionary) _renderOption.addOption(0, "Camera View Direction"); _renderOption.addOption(1, "Camera Position Normal"); - _renderOption.set(1); + if (OsEng.windowWrapper().isFisheyeRendering()) { + _renderOption.set(1); + } + else { + _renderOption.set(0); + } addProperty(_renderOption); if (dictionary.hasKey(keyUnit)) { diff --git a/src/engine/wrapper/sgctwindowwrapper.cpp b/src/engine/wrapper/sgctwindowwrapper.cpp index e85923bb70..a313d2d554 100644 --- a/src/engine/wrapper/sgctwindowwrapper.cpp +++ b/src/engine/wrapper/sgctwindowwrapper.cpp @@ -275,6 +275,12 @@ bool SGCTWindowWrapper::isSimpleRendering() const { sgct::Engine::NonLinearBuffer); } +bool SGCTWindowWrapper::isFisheyeRendering() const { + return dynamic_cast( + sgct::Engine::instance()->getCurrentWindowPtr()->getViewport(0)->getNonLinearProjectionPtr() + ); +} + void SGCTWindowWrapper::takeScreenshot(bool applyWarping) const { sgct::SGCTSettings::instance()->setCaptureFromBackBuffer(applyWarping); sgct::Engine::instance()->takeScreenshot(); diff --git a/src/engine/wrapper/windowwrapper.cpp b/src/engine/wrapper/windowwrapper.cpp index db77a37077..df420cb2c2 100644 --- a/src/engine/wrapper/windowwrapper.cpp +++ b/src/engine/wrapper/windowwrapper.cpp @@ -190,6 +190,10 @@ bool WindowWrapper::isSimpleRendering() const { return true; } +bool WindowWrapper::isFisheyeRendering() const { + return false; +} + void WindowWrapper::takeScreenshot(bool) const {} void WindowWrapper::swapBuffer() const {}