From 1dbb0b5b29c5f49422275ef790401b932cfebf44 Mon Sep 17 00:00:00 2001 From: Kollberg Date: Wed, 26 Jun 2019 08:58:20 -0400 Subject: [PATCH] Added direction to fl-shader, to be able to have different directions in field lines --- .gitignore | 5 ++ data/assets/test.scene | 42 +++++++++++------ data/assets/testwsa/pfss_io.asset | 12 +++-- data/assets/testwsa/pfss_io_25.asset | 13 ++--- data/assets/testwsa/pfss_oi.asset | 12 +++-- data/assets/testwsa/pfss_oi_25.asset | 10 ++-- data/assets/testwsa/pfss_oi_540.asset | 43 +++++++++++++++++ data/assets/testwsa/pfss_oi_boundary.asset | 47 +++++++++++++++++++ data/assets/testwsa/scs_oi.asset | 13 +++-- data/assets/testwsa/scs_oi_25.asset | 10 ++-- data/assets/testwsa/scs_oi_540.asset | 43 +++++++++++++++++ data/assets/testwsa/scs_oi_boundary.asset | 47 +++++++++++++++++++ .../testwsa/transferfunctions/pfss_spec.txt | 7 +++ .../testwsa/transferfunctions/scs_spec.txt | 9 ++++ modules/base/rendering/suntexturemanager.cpp | 5 +- .../renderablefieldlinessequence.cpp | 1 + .../shaders/fieldlinessequence_vs.glsl | 10 +++- 17 files changed, 285 insertions(+), 44 deletions(-) create mode 100644 data/assets/testwsa/pfss_oi_540.asset create mode 100644 data/assets/testwsa/pfss_oi_boundary.asset create mode 100644 data/assets/testwsa/scs_oi_540.asset create mode 100644 data/assets/testwsa/scs_oi_boundary.asset create mode 100644 data/assets/testwsa/transferfunctions/pfss_spec.txt create mode 100644 data/assets/testwsa/transferfunctions/scs_spec.txt diff --git a/.gitignore b/.gitignore index 28937f06f0..258205ef7b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ Thumbs.db customization.lua # The COMMIT info is generated everytime CMake is run COMMIT.md + + +# Ignore osfls + +*.osfls \ No newline at end of file diff --git a/data/assets/test.scene b/data/assets/test.scene index 04d76205f4..acc01d1343 100644 --- a/data/assets/test.scene +++ b/data/assets/test.scene @@ -6,17 +6,17 @@ local propertyHelper = asset.require('util/property_helper') asset.require('spice/base') assetHelper.requestAll(asset, 'scene/solarsystem/sun') asset.require('scene/solarsystem/planets') ---asset.require('scene/solarsystem/planets/mars/moons/phobos') ---asset.require('scene/solarsystem/planets/mars/moons/deimos') ---asset.require('scene/solarsystem/dwarf_planets/pluto/system') ---assetHelper.requestAll(asset, 'scene/digitaluniverse') +asset.require('scene/solarsystem/planets/mars/moons/phobos') +asset.require('scene/solarsystem/planets/mars/moons/deimos') +asset.require('scene/solarsystem/dwarf_planets/pluto/system') +assetHelper.requestAll(asset, 'scene/digitaluniverse') -- Load default key bindings applicable to most scenes asset.require('util/default_keybindings') asset.require('util/default_dashboard') ---asset.require('util/default_joystick') +asset.require('util/default_joystick') --- asset.require('util/webgui') +asset.require('util/webgui') --asset.request('customization/globebrowsing') @@ -26,22 +26,34 @@ local sunAsset = asset.require('scene/solarsystem/sun/sun') local sunRadius = 695508000 -- The actual fieldlines --- asset.require('./bastille_day/fieldlines') ---asset.require('./testwsa/scs_oi') ---asset.require('./testwsa/pfss_oi') ---asset.require('./testwsa/pfss_io') -asset.require('./testwsa/scs_oi_25') -asset.require('./testwsa/pfss_oi_25') -asset.require('./testwsa/pfss_io_25') +--asset.require('./bastille_day/fieldlines') + +-- Selected field lines + some additional field lines +asset.require('./testwsa/scs_oi') +asset.require('./testwsa/pfss_oi') +asset.require('./testwsa/pfss_io') + +-- Sun earth connection +-- asset.require('./testwsa/scs_oi_540') +-- asset.require('./testwsa/pfss_oi_540') + +-- Only selected field lines +-- asset.require('./testwsa/scs_oi_boundary') +-- asset.require('./testwsa/pfss_oi_boundary') + +-- Every N:th WSA field line +-- asset.require('./testwsa/scs_oi_25') +-- asset.require('./testwsa/pfss_oi_25') +-- asset.require('./testwsa/pfss_io_25') asset.onInitialize(function () local now = openspace.time.currentWallTime() -- Jump to bastille day - -- openspace.time.setTime("2000 JUL 14 08:33:37.100") + --openspace.time.setTime("2000 JUL 14 08:33:37.100") -- Sun magnetogram texture testing - openspace.time.setTime("2019 MAY 11 14:15:30.000") + openspace.time.setTime("2019 MAY 2 7:59:57.000") openspace.setDefaultGuiSorting() diff --git a/data/assets/testwsa/pfss_io.asset b/data/assets/testwsa/pfss_io.asset index 0e7c11c494..4d74efa056 100755 --- a/data/assets/testwsa/pfss_io.asset +++ b/data/assets/testwsa/pfss_io.asset @@ -2,6 +2,8 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') local fieldlinesDirectory = asset.localResource("fl_pfss_io") +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/pfss_spec.txt" local sunRadius = 695508000 @@ -14,10 +16,12 @@ local fieldlines = { SourceFolder = fieldlinesDirectory, FlowEnabled = false, AlphaBlendlingEnabled = false, - InputFileType = "json", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + InputFileType = "osfls", + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.6, 0.6 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, diff --git a/data/assets/testwsa/pfss_io_25.asset b/data/assets/testwsa/pfss_io_25.asset index 01ac0436cc..6ce0b01c87 100755 --- a/data/assets/testwsa/pfss_io_25.asset +++ b/data/assets/testwsa/pfss_io_25.asset @@ -1,6 +1,8 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/pfss_spec.txt" local fieldlinesDirectory = asset.localResource("fl_pfss_io_25") local sunRadius = 695508000 @@ -15,18 +17,17 @@ local fieldlines = { FlowEnabled = false, AlphaBlendlingEnabled = false, InputFileType = "osfls", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.6, 0.6 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, SecondsBefore = 24*60*60, SecondsAfter = 24*60*60, SimulationModel = "wsa", - Color = { - Uniform = {0.1, 0.725, 0, 1} - } }, GUI = { Path = "/Solar System/Heliosphere", diff --git a/data/assets/testwsa/pfss_oi.asset b/data/assets/testwsa/pfss_oi.asset index 78c5b7c165..0a5e231922 100755 --- a/data/assets/testwsa/pfss_oi.asset +++ b/data/assets/testwsa/pfss_oi.asset @@ -2,6 +2,8 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') local fieldlinesDirectory = asset.localResource("fl_pfss_oi") +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/pfss_spec.txt" local sunRadius = 695508000 @@ -14,10 +16,12 @@ local fieldlines = { SourceFolder = fieldlinesDirectory, FlowEnabled = false, AlphaBlendlingEnabled = false, - InputFileType = "json", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + InputFileType = "osfls", + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.6, 0.6 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, diff --git a/data/assets/testwsa/pfss_oi_25.asset b/data/assets/testwsa/pfss_oi_25.asset index 90eb58e02c..af07aaed7a 100755 --- a/data/assets/testwsa/pfss_oi_25.asset +++ b/data/assets/testwsa/pfss_oi_25.asset @@ -1,7 +1,9 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') +local transferFunctions = asset.localResource("transferfunctions") local fieldlinesDirectory = asset.localResource("fl_pfss_oi_25") +local polarityColorTable = transferFunctions .. "/pfss_spec.txt" local sunRadius = 695508000 @@ -15,9 +17,11 @@ local fieldlines = { FlowEnabled = false, AlphaBlendlingEnabled = false, InputFileType = "osfls", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.6, 0.6 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, diff --git a/data/assets/testwsa/pfss_oi_540.asset b/data/assets/testwsa/pfss_oi_540.asset new file mode 100644 index 0000000000..bf5d40b49f --- /dev/null +++ b/data/assets/testwsa/pfss_oi_540.asset @@ -0,0 +1,43 @@ +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require('./transforms') + +local fieldlinesDirectory = asset.localResource("fl_pfss_oi_540") + +local sunRadius = 695508000 + +-- Fieldlies from json +local fieldlines = { + Identifier = "WSA_Fieldlines_PFSS_OI_540", + Parent = transforms.HNMReferenceFrame.Identifier, + Renderable = { + Type = "RenderableFieldlinesSequence", + SourceFolder = fieldlinesDirectory, + FlowEnabled = false, + AlphaBlendlingEnabled = false, + InputFileType = "osfls", + ColorTableMinMax = { + { 0, 1000000 }, + { 100, 2000 } + }, + LoadAtRuntime = false, + ScaleToMeters = 1.0, + SecondsBefore = 24*60*60, + SecondsAfter = 24*60*60, + SimulationModel = "wsa", + Color = { + Uniform = {0.725, 0.1, 0, 1} + } + }, + GUI = { + Path = "/Solar System/Heliosphere", + Name = "WSA PFSS Out to In Sun-Earth Connection" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = sunRadius + }, + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { fieldlines }) \ No newline at end of file diff --git a/data/assets/testwsa/pfss_oi_boundary.asset b/data/assets/testwsa/pfss_oi_boundary.asset new file mode 100644 index 0000000000..abef04bc78 --- /dev/null +++ b/data/assets/testwsa/pfss_oi_boundary.asset @@ -0,0 +1,47 @@ +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require('./transforms') + +local fieldlinesDirectory = asset.localResource("fl_pfss_oi_boundary") +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/pfss_spec.txt" + +local sunRadius = 695508000 + +-- Fieldlies from json +local fieldlines = { + Identifier = "WSA_Fieldlines_PFSS_OI_BOUNDARY", + Parent = transforms.HNMReferenceFrame.Identifier, + Renderable = { + Type = "RenderableFieldlinesSequence", + SourceFolder = fieldlinesDirectory, + FlowEnabled = false, + AlphaBlendlingEnabled = false, + InputFileType = "osfls", + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.6, 0.6 }, + }, + LoadAtRuntime = false, + ScaleToMeters = 1.0, + SecondsBefore = 24*60*60, + SecondsAfter = 24*60*60, + SimulationModel = "wsa", + Color = { + Uniform = {0.725, 0.1, 0, 1} + } + }, + GUI = { + Path = "/Solar System/Heliosphere", + Name = "WSA PFSS Out to In Only Boundary Lines" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = sunRadius + }, + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { fieldlines }) \ No newline at end of file diff --git a/data/assets/testwsa/scs_oi.asset b/data/assets/testwsa/scs_oi.asset index 67af1dfef9..3526201ce6 100755 --- a/data/assets/testwsa/scs_oi.asset +++ b/data/assets/testwsa/scs_oi.asset @@ -2,6 +2,8 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') local fieldlinesDirectory = asset.localResource("fl_scs_oi") +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/scs_spec.txt" local sunRadius = 695508000 @@ -14,10 +16,12 @@ local fieldlines = { SourceFolder = fieldlinesDirectory, FlowEnabled = false, AlphaBlendlingEnabled = false, - InputFileType = "json", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + InputFileType = "osfls", + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.02, 0.02 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, @@ -27,7 +31,6 @@ local fieldlines = { Color = { Uniform = {0, 0.725, 0.75, 1} }, - --OutputFolder = asset.localResource("TestMedSCSOI") }, GUI = { Path = "/Solar System/Heliosphere", diff --git a/data/assets/testwsa/scs_oi_25.asset b/data/assets/testwsa/scs_oi_25.asset index f55157f27f..29546d8d57 100755 --- a/data/assets/testwsa/scs_oi_25.asset +++ b/data/assets/testwsa/scs_oi_25.asset @@ -1,7 +1,9 @@ local assetHelper = asset.require('util/asset_helper') local transforms = asset.require('./transforms') +local transferFunctions = asset.localResource("transferfunctions") local fieldlinesDirectory = asset.localResource("fl_scs_oi_25") +local polarityColorTable = transferFunctions .. "/scs_spec.txt" local sunRadius = 695508000 @@ -15,9 +17,11 @@ local fieldlines = { FlowEnabled = false, AlphaBlendlingEnabled = false, InputFileType = "osfls", - ColorTableMinMax = { - { 0, 1000000 }, - { 100, 2000 } + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.02, 0.02 }, }, LoadAtRuntime = true, ScaleToMeters = 1.0, diff --git a/data/assets/testwsa/scs_oi_540.asset b/data/assets/testwsa/scs_oi_540.asset new file mode 100644 index 0000000000..ac9a2d4285 --- /dev/null +++ b/data/assets/testwsa/scs_oi_540.asset @@ -0,0 +1,43 @@ +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require('./transforms') + +local fieldlinesDirectory = asset.localResource("fl_scs_oi_540") + +local sunRadius = 695508000 + +-- Fieldlies from json +local fieldlines = { + Identifier = "WSA_Fieldlines_SCS_OI_540", + Parent = transforms.HNMReferenceFrame.Identifier, + Renderable = { + Type = "RenderableFieldlinesSequence", + SourceFolder = fieldlinesDirectory, + FlowEnabled = false, + AlphaBlendlingEnabled = false, + InputFileType = "osfls", + ColorTableMinMax = { + { 0, 1000000 }, + { 100, 2000 } + }, + LoadAtRuntime = false, + ScaleToMeters = 1.0, + SecondsBefore = 24*60*60, + SecondsAfter = 24*60*60, + SimulationModel = "wsa", + Color = { + Uniform = {0.725, 0.1, 0, 1} + } + }, + GUI = { + Path = "/Solar System/Heliosphere", + Name = "WSA SCS Out to In Sun-Earth Connection" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = sunRadius + }, + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { fieldlines }) \ No newline at end of file diff --git a/data/assets/testwsa/scs_oi_boundary.asset b/data/assets/testwsa/scs_oi_boundary.asset new file mode 100644 index 0000000000..3e1a3ac3f1 --- /dev/null +++ b/data/assets/testwsa/scs_oi_boundary.asset @@ -0,0 +1,47 @@ +local assetHelper = asset.require('util/asset_helper') +local transforms = asset.require('./transforms') + +local fieldlinesDirectory = asset.localResource("fl_scs_oi_boundary") +local transferFunctions = asset.localResource("transferfunctions") +local polarityColorTable = transferFunctions .. "/scs_spec.txt" + +local sunRadius = 695508000 + +-- Fieldlies from json +local fieldlines = { + Identifier = "WSA_Fieldlines_SCS_OI_BOUNDARY", + Parent = transforms.HNMReferenceFrame.Identifier, + Renderable = { + Type = "RenderableFieldlinesSequence", + SourceFolder = fieldlinesDirectory, + FlowEnabled = false, + AlphaBlendlingEnabled = false, + InputFileType = "osfls", + ColorTablePaths = { + polarityColorTable + }, + ColorTableRanges = { + { -0.02, 0.02 }, + }, + LoadAtRuntime = false, + ScaleToMeters = 1.0, + SecondsBefore = 24*60*60, + SecondsAfter = 24*60*60, + SimulationModel = "wsa", + Color = { + Uniform = {0.725, 0.1, 0, 1} + } + }, + GUI = { + Path = "/Solar System/Heliosphere", + Name = "WSA SCS Out to In Only Boundary Lines" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = sunRadius + }, + } +} + +assetHelper.registerSceneGraphNodesAndExport(asset, { fieldlines }) \ No newline at end of file diff --git a/data/assets/testwsa/transferfunctions/pfss_spec.txt b/data/assets/testwsa/transferfunctions/pfss_spec.txt new file mode 100644 index 0000000000..b91e18e08f --- /dev/null +++ b/data/assets/testwsa/transferfunctions/pfss_spec.txt @@ -0,0 +1,7 @@ +width 4 +lower 0.0 +upper 1.0 + +mappingkey 0.0 0 0 255 255 +mappingkey 1.0 255 0 0 255 + diff --git a/data/assets/testwsa/transferfunctions/scs_spec.txt b/data/assets/testwsa/transferfunctions/scs_spec.txt new file mode 100644 index 0000000000..925fb96819 --- /dev/null +++ b/data/assets/testwsa/transferfunctions/scs_spec.txt @@ -0,0 +1,9 @@ +width 4 +lower 0.0 +upper 1.0 + +mappingkey 0.0 0 0 255 255 +mappingkey 0.49 0 0 255 255 +mappingkey 0.51 255 0 0 255 +mappingkey 1.0 255 0 0 255 + diff --git a/modules/base/rendering/suntexturemanager.cpp b/modules/base/rendering/suntexturemanager.cpp index cc90b12eda..0936fa2514 100644 --- a/modules/base/rendering/suntexturemanager.cpp +++ b/modules/base/rendering/suntexturemanager.cpp @@ -44,8 +44,8 @@ namespace openspace SunTextureManager::SunTextureManager() { - _syncDir = "../../../../../sync/magnetograms/"; //mac - //_syncDir = absPath("../../../sync/magnetograms/"); //pc; + //_syncDir = "../../../../../sync/magnetograms/"; //mac + _syncDir = absPath("../../../sync/magnetograms/"); //pc; } void SunTextureManager::update(std::unique_ptr &texture) { @@ -147,7 +147,6 @@ void SunTextureManager::update(std::unique_ptr &texture) //LERROR("in case 3"); if (((_textureListGPU.find(_textureToUpload) != _textureListGPU.end()))) { - LERROR("changing to texture " + _textureToUpload); _textureListGPU[_activeTextureDate] = std::move(texture); texture = std::move(_textureListGPU[_textureToUpload]); _activeTextureDate = _textureToUpload; diff --git a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp index 28983c4457..861fd8e1da 100644 --- a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp +++ b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp @@ -857,6 +857,7 @@ void RenderableFieldlinesSequence::extractTriggerTimesFromFileNames() { const double triggerTime = Time::convertTime(timeString); _startTimes.push_back(triggerTime); } + } void RenderableFieldlinesSequence::addStateToSequence(FieldlinesState& state) { diff --git a/modules/fieldlinessequence/shaders/fieldlinessequence_vs.glsl b/modules/fieldlinessequence/shaders/fieldlinessequence_vs.glsl index 822c401516..cf0f39eba9 100644 --- a/modules/fieldlinessequence/shaders/fieldlinessequence_vs.glsl +++ b/modules/fieldlinessequence/shaders/fieldlinessequence_vs.glsl @@ -100,7 +100,11 @@ void main() { } if (hasColor) { - bool isParticle = usingParticles && isPartOfParticle(time, gl_VertexID, + int direction = 1; + if(in_color_scalar < 0){ + direction = -1; + } + bool isParticle = usingParticles && isPartOfParticle(time * direction, gl_VertexID, particleSize, particleSpeed, particleSpacing); @@ -113,6 +117,10 @@ void main() { if (colorMethod == colorByQuantity) { vec4 quantityColor = getTransferFunctionColor(); + bool isParticle = usingParticles && isPartOfParticle(time, gl_VertexID, + particleSize, + particleSpeed, + particleSpacing); vs_color = vec4(quantityColor.xyz, vs_color.a * quantityColor.a); } } else {