Added mod file control for billboard max size.

This commit is contained in:
Jonathas Costa
2017-11-10 14:20:32 -05:00
parent bca64bdcb1
commit ee4f65dab7
4 changed files with 27 additions and 3 deletions

View File

@@ -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"
},

View File

@@ -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);

View File

@@ -127,6 +127,7 @@ private:
properties::OptionProperty _colorOption;
properties::FloatProperty _fadeInDistance;
properties::BoolProperty _disableFadeInDistance;
properties::FloatProperty _billboardMaxSize;
// DEBUG:
properties::OptionProperty _renderOption;

View File

@@ -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