Merge remote-tracking branch 'origin/master' into thesis/2021/skybrowser

# Conflicts:
#	include/openspace/rendering/screenspacerenderable.h
#	src/rendering/screenspacerenderable.cpp
This commit is contained in:
Ylva Selling
2022-04-08 11:46:09 -04:00
110 changed files with 3755 additions and 81787 deletions

View File

@@ -51,6 +51,18 @@ namespace {
"completely transparent."
};
constexpr openspace::properties::Property::PropertyInfo FadeInfo = {
"Fade",
"Fade",
"This value is used by the system to be able to fade out renderables "
"independently from the Opacity value selected by the user. This value should "
"not be directly manipulated through a user interface, but instead used by other "
"components of the system programmatically",
// The Developer mode should be used once the properties in the UI listen to this
// openspace::properties::Property::Visibility::Developer
openspace::properties::Property::Visibility::Hidden
};
constexpr openspace::properties::Property::PropertyInfo RenderableTypeInfo = {
"Type",
"Renderable Type",
@@ -58,7 +70,8 @@ namespace {
openspace::properties::Property::Visibility::Hidden
};
constexpr openspace::properties::Property::PropertyInfo RenderableRenderBinModeInfo = {
constexpr openspace::properties::Property::PropertyInfo RenderableRenderBinModeInfo =
{
"RenderBinMode",
"Render Bin Mode",
"This value specifies if the renderable should be rendered in the Background,"
@@ -128,6 +141,7 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary)
: properties::PropertyOwner({ "Renderable" })
, _enabled(EnabledInfo, true)
, _opacity(OpacityInfo, 1.f, 0.f, 1.f)
, _fade(FadeInfo, 1.f, 0.f, 1.f)
, _renderableType(RenderableTypeInfo, "Renderable")
{
ZoneScoped
@@ -158,6 +172,8 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary)
// We don't add the property here as subclasses should decide on their own whether
// they to expose the opacity or not
addProperty(_fade);
// set type for UI
_renderableType = p.type.value_or(_renderableType);
addProperty(_renderableType);
@@ -224,7 +240,7 @@ bool Renderable::matchesRenderBinMask(int binMask) {
}
bool Renderable::isVisible() const {
return _enabled;
return _enabled && _opacity > 0.f && _fade > 0.f;
}
bool Renderable::isReady() const {
@@ -249,7 +265,8 @@ void Renderable::setRenderBinFromOpacity() {
if ((_renderBin != Renderable::RenderBin::PostDeferredTransparent) &&
(_renderBin != Renderable::RenderBin::Overlay))
{
if (_opacity >= 0.f && _opacity < 1.f) {
const float v = opacity();
if (v >= 0.f && v < 1.f) {
setRenderBin(Renderable::RenderBin::PreDeferredTransparent);
}
else {
@@ -262,4 +279,8 @@ void Renderable::registerUpdateRenderBinFromOpacity() {
_opacity.onChange([this]() { setRenderBinFromOpacity(); });
}
float Renderable::opacity() const {
return _opacity * _fade;
}
} // namespace openspace

View File

@@ -94,11 +94,11 @@ namespace {
constexpr const char* KeyFontMono = "Mono";
constexpr const char* KeyFontLight = "Light";
constexpr openspace::properties::Property::PropertyInfo ShowOverlaySlavesInfo = {
"ShowOverlayOnSlaves",
"Show Overlay Information on Slaves",
constexpr openspace::properties::Property::PropertyInfo ShowOverlayClientsInfo = {
"ShowOverlayOnClients",
"Show Overlay Information on Clients",
"If this value is enabled, the overlay information text is also automatically "
"rendered on the slave nodes. This values is disabled by default."
"rendered on client nodes. This values is disabled by default."
};
constexpr openspace::properties::Property::PropertyInfo ShowLogInfo = {
@@ -280,7 +280,7 @@ namespace openspace {
RenderEngine::RenderEngine()
: properties::PropertyOwner({ "RenderEngine" })
, _showOverlayOnSlaves(ShowOverlaySlavesInfo, false)
, _showOverlayOnClients(ShowOverlayClientsInfo, false)
, _showLog(ShowLogInfo, true)
, _verticalLogOffset(VerticalLogOffsetInfo, 0.f, 0.f, 1.f)
, _showVersionInfo(ShowVersionInfo, true)
@@ -321,7 +321,7 @@ RenderEngine::RenderEngine()
, _enabledFontColor(EnabledFontColorInfo, glm::vec4(0.2f, 0.75f, 0.2f, 1.f))
, _disabledFontColor(DisabledFontColorInfo, glm::vec4(0.55f, 0.2f, 0.2f, 1.f))
{
addProperty(_showOverlayOnSlaves);
addProperty(_showOverlayOnClients);
addProperty(_showLog);
addProperty(_verticalLogOffset);
addProperty(_showVersionInfo);
@@ -804,7 +804,7 @@ void RenderEngine::renderOverlays(const ShutdownInformation& shutdownInfo) {
ZoneScoped
const bool isMaster = global::windowDelegate->isMaster();
if (isMaster || _showOverlayOnSlaves) {
if (isMaster || _showOverlayOnClients) {
renderScreenLog();
renderVersionInformation();
renderDashboard();
@@ -1072,7 +1072,8 @@ scripting::LuaLibrary RenderEngine::luaLibrary() {
{
codegen::lua::AddScreenSpaceRenderable,
codegen::lua::RemoveScreenSpaceRenderable,
codegen::lua::TakeScreenshot
codegen::lua::TakeScreenshot,
codegen::lua::DpiScaling
}
};
}

View File

@@ -67,6 +67,12 @@ namespace {
return static_cast<int>(screenshotNumber);
}
// Extracts the DPI scaling for either the GUI window or if there is no dedicated GUI
// window, the first window.
[[codegen::luawrap]] float dpiScaling() {
return openspace::global::windowDelegate->osDpiScaling();
}
#include "renderengine_lua_codegen.cpp"
} // namespace

View File

@@ -124,6 +124,16 @@ namespace {
"completely transparent."
};
constexpr openspace::properties::Property::PropertyInfo FadeInfo = {
"Fade",
"Fade",
"This value is used by the system to be able to fade out renderables "
"independently from the Opacity value selected by the user. This value should "
"not be directly manipulated through a user interface, but instead used by other "
"components of the system programmatically",
openspace::properties::Property::Visibility::Developer
};
constexpr openspace::properties::Property::PropertyInfo DeleteInfo = {
"Delete",
"Delete",
@@ -272,6 +282,7 @@ ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary
glm::vec4(1.f)
)
, _opacity(OpacityInfo, 1.f, 0.f, 1.f)
, _fade(FadeInfo, 1.f, 0.f, 1.f)
, _delete(DeleteInfo)
{
const Parameters p = codegen::bake<Parameters>(dictionary);
@@ -305,6 +316,7 @@ ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary
addProperty(_multiplyColor);
addProperty(_backgroundColor);
addProperty(_opacity);
addProperty(_fade);
addProperty(_localRotation);
@@ -463,7 +475,7 @@ glm::mat4 ScreenSpaceRenderable::scaleMatrix() {
glm::mat4(1.f),
glm::vec3(_scale, textureRatio*_scale, 1.f)
);
return scale;
}
@@ -490,7 +502,7 @@ bool ScreenSpaceRenderable::isIntersecting(glm::vec2 coord) {
bool isRightToLeftBorder = coord.x > lowerLeftCornerScreenSpace().x;
bool isOverBottomBorder = coord.y > lowerLeftCornerScreenSpace().y;
return isUnderTopBorder && isLeftToRightBorder &&
return isUnderTopBorder && isLeftToRightBorder &&
isRightToLeftBorder && isOverBottomBorder;
}
@@ -571,7 +583,7 @@ void ScreenSpaceRenderable::draw(glm::mat4 modelTransform) {
_shader->activate();
_shader->setUniform(_uniformCache.color, _multiplyColor);
_shader->setUniform(_uniformCache.opacity, _opacity);
_shader->setUniform(_uniformCache.opacity, opacity());
_shader->setUniform(_uniformCache.backgroundColor, _backgroundColor);
_shader->setUniform(
@@ -675,4 +687,7 @@ glm::vec3 ScreenSpaceRenderable::sphericalToRae(glm::vec3 spherical) const {
}
float ScreenSpaceRenderable::opacity() const {
return _opacity * _fade;
}
} // namespace openspace