Code cleanup and refactoring

This commit is contained in:
Christian Adamsson
2020-07-23 12:34:16 +02:00
parent a5c7d2243f
commit 672fd67e8a
4 changed files with 90 additions and 169 deletions

View File

@@ -69,13 +69,13 @@ local Keybindings = {
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.NodeGroup.skippingNodesByFlux', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.NodeGroup.skippingNodesByRadius', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.thresholdFlux', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.filteringlower', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.filterLower', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Earthfocus.distancePlanetThreshold', 0.000000);"..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '');"..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Sun');"..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);"..
"openspace.navigation.loadNavigationState('Sun');"..
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.filteringupper', 5.000000);",
"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.filterUpper', 5.000000);",
--"Todo, fix the last one which is on the z axis"
--"openspace.setPropertyValueSingle('Scene.MAS_MHD_StreamNodes.Renderable.Streams.limitsZLower', {--358139527168.969971,953488375808.000000});",
Documentation = "Resets the visualisation of streamnodes",

View File

@@ -138,12 +138,12 @@ namespace {
"This value specifies the threshold that will be changed with the flux value."
};
constexpr openspace::properties::Property::PropertyInfo FilteringInfo = {
"filteringLower",
"filterLower",
"Filtering Lower Value in AU",
"Use filtering to show nodes within a given range."
};
constexpr openspace::properties::Property::PropertyInfo FilteringUpperInfo = {
"filteringUpper",
"filterUpper",
"Filtering Upper Value in AU",
"Use filtering to show nodes within a given range."
};
@@ -223,9 +223,9 @@ namespace {
"The misalignement number for sequence for streamnodes vs Fieldlines"
};
constexpr openspace::properties::Property::PropertyInfo FlowColorInfo = {
"color",
"Color",
"Color of particles."
"flowcolor",
"Color of Flow",
"Color of Flow."
};
constexpr openspace::properties::Property::PropertyInfo FlowEnabledInfo = {
"flowEnabled",
@@ -248,7 +248,7 @@ namespace {
"Speed",
"Speed of the flow."
};
constexpr openspace::properties::Property::PropertyInfo FlowColoringInfo = {
constexpr openspace::properties::Property::PropertyInfo UseFlowColorInfo = {
"coloring",
"Color either by Flowcolor or Flow colortable",
"If set to true the flow will be colored by Flowcolor."
@@ -372,7 +372,7 @@ RenderableStreamNodes::RenderableStreamNodes(const ghoul::Dictionary& dictionary
, _pDomainZ(DomainZInfo)
, _pFluxColorAlpha(FluxColorAlphaInfo, 1.f, 0.f, 1.f)
, _pThresholdFlux(ThresholdFluxInfo, 0.f, -50.f, 10.f)
, _pFiltering(FilteringInfo, 0.f, 0.f, 5.f)
, _pFilteringLower(FilteringInfo, 0.f, 0.f, 5.f)
, _pFilteringUpper(FilteringUpperInfo, 5.f, 0.f, 5.f)
, _pAmountofNodes(AmountofNodesInfo, 1, 1, 100)
, _pDefaultNodeSkip(DefaultNodeSkipInfo, 1, 1, 100)
@@ -393,7 +393,7 @@ RenderableStreamNodes::RenderableStreamNodes(const ghoul::Dictionary& dictionary
, _pFlowParticleSize(FlowParticleSizeInfo, 5, 0, 500)
, _pFlowParticleSpacing(FlowParticleSpacingInfo, 60, 0, 500)
, _pFlowSpeed(FlowSpeedInfo, 20, 0, 1000)
, _pFlowColoring(FlowColoringInfo, false)
, _pUseFlowColor(UseFlowColorInfo, false)
, _scaleFactor(TempInfo1, 150.f, 1.f, 500.f)
//, _pMinNodeDistanceSize(MinNodeDistanceSizeInfo, 1.f, 1.f, 7.f)
, _pMaxNodeDistanceSize(MaxNodeDistanceSizeInfo, 1.f, 1.f, 10.f)
@@ -1096,7 +1096,7 @@ void RenderableStreamNodes::setupProperties() {
_pColorGroup.addProperty(_pFluxColorAlpha);
_pStreamGroup.addProperty(_pThresholdFlux);
_pStreamGroup.addProperty(_pFiltering);
_pStreamGroup.addProperty(_pFilteringLower);
_pStreamGroup.addProperty(_pFilteringUpper);
_pStreamGroup.addProperty(_pDomainZ);
@@ -1121,7 +1121,7 @@ void RenderableStreamNodes::setupProperties() {
_pFlowGroup.addProperty(_pFlowParticleSize);
_pFlowGroup.addProperty(_pFlowParticleSpacing);
_pFlowGroup.addProperty(_pFlowSpeed);
_pFlowGroup.addProperty(_pFlowColoring);
_pFlowGroup.addProperty(_pUseFlowColor);
// --------------------- Add Options to OptionProperties --------------------- //
_pGoesEnergyBins.addOption(static_cast<int>(GoesEnergyBins::Emin01), "Emin01");
@@ -1258,8 +1258,8 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
const glm::dmat4 modelViewMat = data.camera.combinedViewMatrix() * modelMat;
//not in use atm.
// _shaderProgram->setUniform("modelViewProjection",
// data.camera.sgctInternal.projectionMatrix() * glm::mat4(modelViewMat));
_shaderProgram->setUniform("modelViewProjection",
data.camera.sgctInternal.projectionMatrix() * glm::mat4(modelViewMat));
//glm::vec3 earthPos = glm::vec3(94499869340, -115427843118, 11212075887.3);
@@ -1278,7 +1278,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
_shaderProgram->setUniform(_uniformCache.nodeSizeLargerFlux, _pNodeSizeLargerFlux);
_shaderProgram->setUniform(_uniformCache.thresholdFlux, _pThresholdFlux);
_shaderProgram->setUniform("colorMode", _pColorMode);
_shaderProgram->setUniform("filterRadius", _pFiltering);
_shaderProgram->setUniform("filterLower", _pFilteringLower);
_shaderProgram->setUniform("filterUpper", _pFilteringUpper);
_shaderProgram->setUniform("scalingMode", _pScalingmethod);
_shaderProgram->setUniform("colorTableRange", _pColorTableRange.value());
@@ -1303,7 +1303,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
"time",
global::windowDelegate.applicationTime() * -1
);
_shaderProgram->setUniform("flowColoring", _pFlowColoring);
_shaderProgram->setUniform("flowColoring", _pUseFlowColor);
//_shaderProgram->setUniform("minNodeDistanceSize", _pMinNodeDistanceSize);
_shaderProgram->setUniform("maxNodeDistanceSize", _pMaxNodeDistanceSize);
//_shaderProgram->setUniform("nodeDistanceThreshold", _pNodeDistanceThreshold);
@@ -1314,6 +1314,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
_shaderProgram->setUniform("usingRadiusPerspective", _pRadiusPerspective);
//////// test for camera perspective:
/*
glm::dmat4 modelMatrix =
glm::translate(glm::dmat4(1.0), data.modelTransform.translation) * // Translation
glm::dmat4(data.modelTransform.rotation) * // Spice rotation
@@ -1338,12 +1339,14 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
orthoRight = glm::normalize(glm::cross(otherVector, cameraViewDirectionWorld));
}
glm::dvec3 orthoUp = glm::normalize(glm::cross(cameraViewDirectionWorld, orthoRight));
*/
glm::vec3 cameraPos = data.camera.positionVec3();
//this gives the same referenceframe as the nodes and makes it possible to see the
//the distance between the camera and the nodes.
cameraPos = cameraPos * data.modelTransform.rotation;
_shaderProgram->setUniform("cameraPos", cameraPos);
//glm::vec3 cameraPos = data.camera.unsynchedPositionVec3();
//LDEBUG("camerapos x: " + std::to_string(cameraPos.x));
//LDEBUG("camerapos y: " + std::to_string(cameraPos.z));
@@ -1356,9 +1359,9 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
// cameraPos.x = cameraPostemp.x;
// cameraPos.y = cameraPostemp.y;
// cameraPos.z = cameraPostemp.z;
_shaderProgram->setUniform("cameraPos", cameraPos);
_shaderProgram->setUniform("scaleFactor", _scaleFactor);
_shaderProgram->setUniform(
// _shaderProgram->setUniform("scaleFactor", _scaleFactor);
/* _shaderProgram->setUniform(
"up",
glm::vec3(data.camera.lookUpVectorWorldSpace())
);
@@ -1369,6 +1372,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
glm::dmat4(data.camera.projectionMatrix()) * data.camera.combinedViewMatrix()
)
);
//_shaderProgram->setUniform("minPointSize", 3.f); // in pixels
//_shaderProgram->setUniform("maxPointSize", 30.f); // in pixels
_shaderProgram->setUniform("up", glm::vec3(orthoUp));
@@ -1380,6 +1384,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
);
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
*/
// _shaderProgram->setUniform("screenSize", glm::vec2(viewport[2], viewport[3]));
//_shaderProgram->setUniform("camerapos", data.camera.)
@@ -1406,63 +1411,7 @@ void RenderableStreamNodes::render(const RenderData& data, RendererTasks&) {
const std::vector<glm::vec3>& vertPos = _vertexPositions;
glBindVertexArray(_vertexArrayObject);
/*
glBegin(GL_LINE_LOOP); //start drawing a line loop
glVertex3f(-1.0f, 0.0f, 0.0f); //left of window
glVertex3f(0.0f, -1.0f, 0.0f); //bottom of window
glVertex3f(1.0f, 0.0f, 0.0f); //right of window
glVertex3f(0.0f, 1.0f, 0.0f); //top of window
glEnd(); //end drawing of line loop
*/
/*glColor3f(1, 0, 0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.60, 0.77, 0); // <--- -0.60 instead of -0.68
glVertex3f(-0.68, 0.77, 0); // <--- -0.68 instead of -0.60
glVertex3f(-0.7, 0.68, 0);
glVertex3f(-0.64, 0.63, 0);
glVertex3f(-0.58, 0.68, 0);
glEnd();*/
/*glTranslatef(0.0f, 0.0f, -4.0f);//move forward 4 units
glColor3f(0.0f, 0.0f, 1.0f); //blue color
glBegin(GL_POLYGON);//begin drawing of polygon
glVertex3f(-0.5f, 0.5f, 0.0f);//first vertex
glVertex3f(0.5f, 0.5f, 0.0f);//second vertex
glVertex3f(1.0f, 0.0f, 0.0f);//third vertex
glVertex3f(0.5f, -0.5f, 0.0f);//fourth vertex
glVertex3f(-0.5f, -0.5f, 0.0f);//fifth vertex
glVertex3f(-1.0f, 0.0f, 0.0f);//sixth vertex
glEnd();//end drawing of polygon*/
/*static float arrowCoordinates[] = {
-0.3f, 0.2f, 0.0f, // left swing
0.0f, 0.5f, 0.0f, // top
0.0f, -0.5f, 0.0f, // bottom
0.0f, 0.5f, 0.0f, // back to top again
0.3f, 0.2f, 0.0f // right swing
};
*/
/*int COORDS_PER_VERTEX = 3;
int vertexCount = 364 * 3 / COORDS_PER_VERTEX;
int vertexStride = COORDS_PER_VERTEX * 4; // 4 bytes per vertex
glEnableVertexAttribArray(Arrow);
//glVertexAttribPointer(Arrow, 3, GL_FLOAT, GL_FALSE, 0, 0);
//glVertexAttribPointer(Arrow, COORDS_PER_VERTEX, GL_FLOAT, GL_FALSE, vertexStride, vertexBuffer);
glVertexAttribPointer(Arrow, COORDS_PER_VERTEX, GL_FLOAT, GL_FALSE, vertexStride, 0);
glDrawArrays(GL_LINE_STRIP, 0, vertexCount);*/
//glBindBuffer(GL_ARRAY_BUFFER, _vertexPositionBuffer);
/*glMultiDrawArrays(
GL_LINE_STRIP, //_drawingOutputType,
_lineStart.data(),
_lineCount.data(),
static_cast<GLsizei>(_lineStart.size())
);*/
_shaderProgram->setUniform("firstRender", true);
GLint temp = 0;

View File

@@ -236,7 +236,7 @@ private:
// Threshold flux value
properties::FloatProperty _pThresholdFlux;
// Filtering nodes within a range
properties::FloatProperty _pFiltering;
properties::FloatProperty _pFilteringLower;
// Filtering nodes with a upper range
properties::FloatProperty _pFilteringUpper;
// Amount of nodes to show
@@ -273,7 +273,7 @@ private:
// Speed of simulated flow
properties::IntProperty _pFlowSpeed;
//Either use flowcolortable or FlowColor.
properties::BoolProperty _pFlowColoring;
properties::BoolProperty _pUseFlowColor;
properties::PropertyOwner _pCameraPerspectiveGroup;
properties::BoolProperty _pCameraPerspective;

View File

@@ -27,7 +27,7 @@
// General Uniforms that's always needed
uniform vec4 lineColor;
//old not in use atm
//uniform mat4 modelViewProjection;
uniform mat4 modelViewProjection;
// Uniforms needed to color by quantity
uniform int colorMode;
@@ -60,7 +60,7 @@ uniform float nodeSize;
uniform float nodeSizeLargerFlux;
uniform vec4 streamColor;
uniform float thresholdFlux;
uniform float filterRadius;
uniform float filterLower;
uniform float filterUpper;
uniform int scalingMode;
uniform int nodeSkipMethod;
@@ -77,23 +77,24 @@ uniform bool firstRender;
uniform int enhanceMethod;
uniform double time;
//uniform float interestingStreams[4];
// Speicific uniforms for cameraperspective
uniform float scaleFactor;
//uniform float scaleFactor;
//uniform float minNodeDistanceSize;
uniform float maxNodeDistanceSize;
uniform float nodeDistanceThreshold;
uniform mat4 cameraViewProjectionMatrix;
uniform dmat4 modelMatrix;
//uniform mat4 cameraViewProjectionMatrix;
//uniform dmat4 modelMatrix;
uniform float correctionSizeFactor;
uniform float correctionSizeEndDistance;
uniform vec3 cameraPos;
uniform vec3 up;
uniform vec3 right;
uniform float correctionSizeFactor;
//uniform float correctionSizeEndDistance;
//uniform vec3 up;
//uniform vec3 right;
uniform vec3 cameraLookUp; // in world space (no SGCT View was considered)
uniform vec3 cameraPos;
//uniform vec2 screenSize;
uniform bool usingCameraPerspective;
uniform bool usingRadiusPerspective;
@@ -351,7 +352,7 @@ void main() {
if(CheckvertexIndex()){
//Filtering by radius and z-axis
if(rValue > filterRadius && rValue < filterUpper){ //if(rValue > filterRadius){
if(rValue > filterLower && rValue < filterUpper){ //if(rValue > filterLower){
if(in_position.z > domainLimZ.x && in_position.z < domainLimZ.y){
//Uniform coloring
if(colorMode == 0){
@@ -384,7 +385,53 @@ void main() {
vs_color = vec4(0);
}
/*
if(usingCameraPerspective){
float rtemp = 1.0;
if(rValue > 1.0){
rtemp = 1.0;
}
else{
rtemp = rValue;
}
float maxdist = 600000000000.f;
float distancevec = distance(cameraPos, in_position.xyz);
if(distancevec < maxdist){
float distScale = 1 - smoothstep(0, maxdist, distancevec);
//float distMinScale = 1 - smoothstep(0, nodeDistanceThreshold, distancevec);
float factorS = 1.f;
if(usingRadiusPerspective){
factorS = pow(distScale, 9) * 100.f * pow(rtemp, 2);
}
else{
factorS = pow(distScale, 9) * 100.f;
}
gl_PointSize = factorS * maxNodeDistanceSize * 0.8;
}
// else{
// gl_PointSize = nodeSize;
// }
if(gl_PointSize > 40){
gl_PointSize = 40;
}
if(gl_PointSize < 1.f){
gl_PointSize = 1.f;
}
}
vec4 position_in_meters = vec4(in_position, 1);
vec4 positionClipSpace = modelViewProjection * position_in_meters;
//vs_gPosition = vec4(modelViewTransform * dvec4(in_point_position, 1));
gl_Position = vec4(positionClipSpace.xy, 0, positionClipSpace.w);
vs_depth = gl_Position.w;
}
//------------ OLD CODE, MAYBE USEFUL FOR CAMERAPERSPECTIVE
/*
if(distance(in_position, cameraPos) < 100000000000.f){
gl_PointSize = nodeSize * 5;
}
@@ -393,6 +440,7 @@ void main() {
}
*/
//test for camera perspective::
/*
dvec4 dpos = dvec4(in_position, 1.0);
dpos = modelMatrix * dpos;
@@ -409,7 +457,7 @@ void main() {
float expVar = float(-distCamera) / pow(10.f, correctionSizeEndDistance);
float factorVar = pow(10.f, correctionSizeFactor);
scaleMultiply *= 1.f / (1.f + factorVar * exp(expVar));
*/
//vec2 halfViewSize = vec2(screenSize.x, screenSize.y) * 0.5f;
// vec2 topRight = crossCorner.xy/crossCorner.w;
// vec2 bottomLeft = initialPosition.xy/initialPosition.w;
@@ -430,7 +478,7 @@ void main() {
gl_PointSize = ta;
}
*/
/*
vec3 scaledRight = scaleMultiply * right * 0.5f;
vec3 scaledUp = scaleMultiply * up * 0.5f;
@@ -441,80 +489,4 @@ void main() {
vec4 initialPosition = z_normalization(dposClip - scaledRightClip - scaledUpClip);
gl_Position = initialPosition;
vs_depth = initialPosition.w;
if(usingCameraPerspective){
float rtemp = 1.0;
if(rValue > 1.0){
rtemp = 1.0;
}
else{
rtemp = rValue;
}
float maxdist = 600000000000.f;
float distancevec = distance(cameraPos, in_position.xyz);
float distScale = 1 - smoothstep(0, maxdist, distancevec);
float factorS = pow(distScale, 9) * rValue * 15.f;
//distancevec = distance(newpos, in_position.xyz);
if(distancevec < maxdist){
float distScale = 1 - smoothstep(0, maxdist, distancevec);
//float distMinScale = 1 - smoothstep(0, nodeDistanceThreshold, distancevec);
float factorS = 1.f;
if(usingRadiusPerspective){
factorS = pow(distScale, 9) * 100.f * pow(rtemp, 2);
}
else{
factorS = pow(distScale, 9) * 100.f;
}
gl_PointSize = factorS * maxNodeDistanceSize * 0.8;
}
else{
gl_PointSize = nodeSize;
}
if(gl_PointSize > 40){
gl_PointSize = 40;
}
if(gl_PointSize < nodeSize){
gl_PointSize = nodeSize;
}
}
/*
float factorS = pow(distScale, 5) * 80.f; //* pow(rValue, 2);
if(gl_PointSize * factorS > 30){
gl_PointSize = 30;
}
else{
gl_PointSize = gl_PointSize * factorS;
}
}
else{
gl_PointSize = 2.f;
}
*/
//if(!firstRender){
//CheckdistanceMethod();
// }
//temporary things for trying out point sprites.
/* if(!firstRender && vs_color.w != 0){
vs_st = in_st;
}
else{
vs_st = vec2(-1);
}
*/
vec4 position_in_meters = vec4(in_position, 1);
//vec4 positionClipSpace = modelViewProjection * position_in_meters;
//vs_gPosition = vec4(modelViewTransform * dvec4(in_point_position, 1));
// gl_PointSize = nodeSize;
//gl_Position = vec4(positionClipSpace.xy, 0, positionClipSpace.w);
// vs_depth = gl_Position.w;
// if(distance(positionClipSpace.xyz, cameraPos) < 0.f){
}
*/