mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-23 20:49:00 -06:00
Added mod file control for billboard max size.
This commit is contained in:
@@ -27,7 +27,9 @@ return {
|
||||
-- Fade in value in the same unit as "Unit"
|
||||
--FadeInThreshould = 5.5,
|
||||
FadeInThreshould = 1.0,
|
||||
Unit = "Mpc"
|
||||
Unit = "Mpc",
|
||||
-- Max size in pixels
|
||||
BillboardMaxSize = 200.0,
|
||||
},
|
||||
GuiPath = "/Universe/Galaxies"
|
||||
},
|
||||
|
||||
@@ -178,6 +178,13 @@ namespace {
|
||||
"Disable Fade-in effect",
|
||||
"Enables/Disables the Fade-in effect."
|
||||
};
|
||||
|
||||
static const openspace::properties::Property::PropertyInfo BillboardMaxSizeInfo = {
|
||||
"BillboardMaxSize",
|
||||
"Billboard Max Size in Pixels",
|
||||
"The max size (in pixels) for the billboard representing the astronomical "
|
||||
"object."
|
||||
};
|
||||
} // namespace
|
||||
|
||||
namespace openspace {
|
||||
@@ -296,6 +303,12 @@ documentation::Documentation RenderableBillboardsCloud::Documentation() {
|
||||
Optional::Yes,
|
||||
DisableFadeInInfo.description
|
||||
},
|
||||
{
|
||||
BillboardMaxSizeInfo.identifier,
|
||||
new DoubleVerifier,
|
||||
Optional::Yes,
|
||||
BillboardMaxSizeInfo.description
|
||||
},
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -331,6 +344,7 @@ RenderableBillboardsCloud::RenderableBillboardsCloud(const ghoul::Dictionary& di
|
||||
, _colorOption(ColorOptionInfo, properties::OptionProperty::DisplayType::Dropdown)
|
||||
, _fadeInDistance(FadeInThreshouldInfo, 0.0, 0.1, 100.0)
|
||||
, _disableFadeInDistance(DisableFadeInInfo, true)
|
||||
, _billboardMaxSize(BillboardMaxSizeInfo, 400.0, 0.0, 1000.0)
|
||||
, _renderOption(RenderOptionInfo, properties::OptionProperty::DisplayType::Dropdown)
|
||||
, _polygonTexture(nullptr)
|
||||
, _spriteTexture(nullptr)
|
||||
@@ -520,7 +534,12 @@ RenderableBillboardsCloud::RenderableBillboardsCloud(const ghoul::Dictionary& di
|
||||
_disableFadeInDistance.set(false);
|
||||
addProperty(_fadeInDistance);
|
||||
addProperty(_disableFadeInDistance);
|
||||
}
|
||||
}
|
||||
|
||||
if (dictionary.hasKey(BillboardMaxSizeInfo.identifier)) {
|
||||
_billboardMaxSize = static_cast<float>(dictionary.value<double>(BillboardMaxSizeInfo.identifier));
|
||||
addProperty(_billboardMaxSize);
|
||||
}
|
||||
}
|
||||
|
||||
bool RenderableBillboardsCloud::isReady() const {
|
||||
@@ -641,6 +660,7 @@ void RenderableBillboardsCloud::renderBillboards(const RenderData& data, const g
|
||||
_program->setUniform("centerScreenInWorldPosition", centerScreenWorld);
|
||||
|
||||
_program->setUniform("minBillboardSize", 1.f); // in pixels
|
||||
_program->setUniform("maxBillboardSize", _billboardMaxSize); // in pixels
|
||||
_program->setUniform("color", _pointColor);
|
||||
_program->setUniform("sides", 4);
|
||||
_program->setUniform("alphaValue", _alphaValue);
|
||||
|
||||
@@ -127,6 +127,7 @@ private:
|
||||
properties::OptionProperty _colorOption;
|
||||
properties::FloatProperty _fadeInDistance;
|
||||
properties::BoolProperty _disableFadeInDistance;
|
||||
properties::FloatProperty _billboardMaxSize;
|
||||
|
||||
// DEBUG:
|
||||
properties::OptionProperty _renderOption;
|
||||
|
||||
@@ -39,6 +39,7 @@ uniform dvec3 cameraLookUp;
|
||||
uniform dvec4 centerScreenInWorldPosition;
|
||||
uniform int renderOption;
|
||||
uniform vec2 screenSize;
|
||||
uniform float maxBillboardSize;
|
||||
|
||||
|
||||
in vec4 colorMap[];
|
||||
@@ -143,7 +144,7 @@ void main() {
|
||||
vec4 bottomLeft = initialPosition/initialPosition.w;
|
||||
bottomLeft = ((bottomLeft + vec4(1.0)) / vec4(2.0)) * vec4(screenSize.x, screenSize.y, 1.0, 1.0);
|
||||
|
||||
if ((topLeft.y - bottomLeft.y) > (0.2 * screenSize.y)) {
|
||||
if ((topLeft.y - bottomLeft.y) > maxBillboardSize) {
|
||||
return;
|
||||
} else {
|
||||
// Build primitive
|
||||
|
||||
Reference in New Issue
Block a user