Giter Club home page Giter Club logo

unistuttgart-visus / megamol Goto Github PK

View Code? Open in Web Editor NEW
49.0 10.0 34.0 150.16 MB

A cross-platform visualization prototyping framework

Home Page: https://megamol.org/

License: BSD 3-Clause "New" or "Revised" License

CMake 0.49% Shell 0.04% C++ 80.27% C 8.17% GLSL 4.98% Perl 0.26% Python 0.16% TeX 0.02% Cuda 4.74% Roff 0.04% NASL 0.74% Lua 0.02% Dockerfile 0.01% Jupyter Notebook 0.06%
visualization framework frameworks prototyping gpu ospray optix cuda data-visualization

megamol's People

Contributors

aiosin avatar braunms avatar crowbar27 avatar dependabot[bot] avatar fernanor avatar florianfriess avatar gegell avatar geringsj avatar gralkapk avatar invor avatar jstaib-tud avatar kroneml avatar marukyu avatar moritz-h avatar r3sox avatar reinago avatar schatzkn avatar schulzch avatar sellendk avatar straubar avatar thinkpiet avatar tobiasrau avatar vetinari89 avatar voei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

megamol's Issues

Remoteconsole compile Errors

Compile errors for MSVC and GCC.

[ 63%] Building CXX object core/remoteconsole/CMakeFiles/remoteconsole.dir/src/ConClient.cpp.o
/data/megamol/core/remoteconsole/src/ConClient.cpp: In Funktion »int main(int, char**)«:
/data/megamol/core/remoteconsole/src/ConClient.cpp:39:17: Fehler: »class cxxopts::Options« hat kein Element namens »count«
     if (options.count("help")) {
                 ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:47:19: Fehler: no match for »operator[]« (operand types are »cxxopts::Options« and »const char [5]«)
     host = options["open"].as<std::string>();
                   ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:47:42: Fehler: expected primary-expression before »>« token
     host = options["open"].as<std::string>();
                                          ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:47:44: Fehler: expected primary-expression before »)« token
     host = options["open"].as<std::string>();
                                            ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:48:19: Fehler: no match for »operator[]« (operand types are »cxxopts::Options« and »const char [7]«)
     file = options["source"].as<std::string>();
                   ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:48:44: Fehler: expected primary-expression before »>« token
     file = options["source"].as<std::string>();
                                            ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:48:46: Fehler: expected primary-expression before »)« token
     file = options["source"].as<std::string>();
                                              ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:49:23: Fehler: no match for »operator[]« (operand types are »cxxopts::Options« and »const char [10]«)
     keepOpen = options["keep-open"].as<bool>();
                       ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:49:40: Fehler: expected primary-expression before »bool«
     keepOpen = options["keep-open"].as<bool>();
                                        ^
/data/megamol/core/remoteconsole/src/ConClient.cpp:49:40: Fehler: expected »;« before »bool«
make[2]: *** [core/remoteconsole/CMakeFiles/remoteconsole.dir/src/ConClient.cpp.o] Fehler 1
make[1]: *** [core/remoteconsole/CMakeFiles/remoteconsole.dir/all] Fehler 2
make: *** [all] Fehler 2

FlexEnum extension bug

Two identical modules with FlexEnums in the same MegaMol instance seem to share some data.
Changes to one of them goes to dev/null.

Remote / In-Situ design

Weird thought: can we distribute a MegaMol graph properly across devices? Similar to the HPC execution but without a local view module at the head? This might allow us to have proper web-based visualization where there are Javascript modules that do reasonable work and rendering. So like the FBO connection idea but with a more general transmission / call format? Actually the transmission should work based on a specific call, like a call wormhole ;)

CMake build script: LibPNG

CMake script does not accept LibPNG built from Github repo immediately.
Not clear whether to provide Static or Shared library to the build script.

CinematicCamera

  • KeyframeKeeper needs an explicit "load" button - because autoloading whenever you change the file name is not what you want if you put a lot of effort into placing keys
  • it would be nice to be able to specify at least a prefix for the rendered images. appdir or wherever it is usually located could be read-only

Crash when MegaMol is closed

When we close the MegaMol that is running on the operator (minyou) it crashes, also see attached image.
megamol crash

We use the MegaMol (\vesta1\megamol20160815) for the powerwall.

mmstd_datatools - FloatTableToParticles crashes

FloatTableToParticles crashes while the colormode is set to Intensity in the project file.
Setting the colormode to another value for starting and switching to Intensity while running, can be used as a workaround.

OSPRay indirection over OpenGL

OSPRay images get always blitted into OpenGL FBOs.
This requires a running X server on the respective machine, even on HPC nodes.
We need an OpenGL free render mode that has OSPRay render into main memory.
Something like a "render job".
This is required for true in situ capability.

Configurator fails assertion when modules are named in specific way

The configurator fails an assertion when the name of one module instance is a direct substring starting at index 0 of the name of another module instance.
This bug occured for me by naming the data loader "Solvent" and the associated renderer module "SolventAccumulator". The behaviour seems to be independet from the module type.
The assertion fails, when a project file with the described naming convention in it is loaded.
One additional example where the bug occurs is shown in the next figure:

bug

I do not know, if this behaviour is intended or not.

OSPRayStructure

... should actually be AbstractOSPRayStructure and have subclasses like OSPRayVolumetricStructure and so on. Less messy that way, less overhead.

Leveling all the plugin names

We should refactor several plugin names to reduce confusion. This can be done painlessly by splitting the refactoring into 2 commits for conflict-freeness: 1. git mv 2. modify files). Proposed changes:

The mmstd-family:

  • mmstd_datatools -> data_tools: remove stupid prefix (possibly, we want to split this into table_tools and particle_tools at some point?)
  • mmstd_moldyn -> moldyn: remove stupid prefix
  • mmstd_trisoup -> trisoup: remove stupid prefix
  • mmstd_volume -> volume: remove stupid prefix

The outliers:

  • adios_plugin -> adios_tools: be more specific, align with data_tools
  • cinematiccamera -> cinematic: contains more than the camera
  • imageviewer2 -> image: version one is long dead and align to and _calls
  • OSPRay_plugin -> ospray_backend: be more specific

The toy plugins:

  • template -> doc_template: indicate that this is a non-production plugin
  • megamol101 -> doc_tutorial: indicate that this is a non-production plugin

Let's the bikeshedding begin :)

libpng causes issues in CI

All our CI tests fail with the same error:

[ 32%] Performing download step (git clone) for 'libpng_ext'
Cloning into 'libpng_ext'...
fatal: unable to access 'https://git.code.sf.net/p/libpng/code/': gnutls_handshake() failed: Handshake failed
Cloning into 'libpng_ext'...
fatal: unable to access 'https://git.code.sf.net/p/libpng/code/': gnutls_handshake() failed: Handshake failed
Cloning into 'libpng_ext'...
fatal: unable to access 'https://git.code.sf.net/p/libpng/code/': gnutls_handshake() failed: Handshake failed
-- Had to git clone more than once:
      3 times.
CMake Error at /home/travis/build/UniStuttgart-VISUS/megamol-dev/build/core/libpng_ext-prefix/tmp/libpng_ext-gitclone.cmake:66 (message):
Failed to clone repository: 'https://git.code.sf.net/p/libpng/code'

Linker Error in InfoVis Plugin when switching between Release and Debug

The linking of bhtsne.lib seems to be somewhat corrupted if you want to switch the compilation in Visual Studio between already existing Debug and Release builds. If you have the Release version of megamol installed and then try to install an already compiled Debug version, the following error occurs:

image

Completely rebuilding the project in Debug mode fixes the issue, but takes an unnecessary amount of time. Switching the builds the other way around does not lead to the shown errors.

I tested everything under Windows 10 with Visual Studio 2017.

Hotkeys for the lulz

'r' is used for the cinematiceditor to output the movie. But 'r' also switches through the simplesphere rendering backends, does it? You cannot render movies anymore... :)

Bottom line: we need to check for hotkey conflicts globally. somehow.

We need to get the locking straight

  • this is especially important when we use OSPRay, which continues rendering stuff in a separate thread until we change the scene graph, right?
  • many other renderers do not properly unlock
  • none of the newer datasources, especially transformers/generators, care about lockedness: we probably need an array of data that can needs to be checked and freed every time getdata comes around

Overall TODOs

  • Matrices in CallRender3D
  • Powerwall-Lua-Test
  • Special instantiation templates to Lua projects
  • Parameter files must be deprecated: replace by lua "projects" (they can be loaded on top of each other anyway). core should serialize these scripts instead
  • Camera as a Module
  • NGPF 0.1 serial
  • VTK Data
  • Showcase / In Situ
  • Core cleanup
  • New test case for core
  • Shader Factory based on snippets only
  • Reworked Sphere Shader (less goo, deferred, ray setup in vertex shader)
  • New HTML-based GUI
  • OpenGL state (observer?)

Sphere Shaders Conundrum

These lines of code in the fragment shader of our Sphere Ray-Casting programs:

#extension GL_ARB_conservative_depth:require
layout (depth_greater) out float gl_FragDepth; // we think this is right

Actually, it may be wrong.
At least outside of MegaMol, they have not the desired effect on the depth test.

OSPRay and other renderers

OSPRay should write a depth buffer to be correctly combined with other OpenGL output. See, for example, in combination with the CinematicCamera, where manipulators and the OSPRay output fight for depth.

libEXPAT

Self-compiled or downloaded EXPAT versions are causing compile or runtime errors.

What does the ButtomParamUILayer actually do?

It cannot be used for circumventing the down-pause-repeat input of hotkeys - I could not observe it being called. That makes the following WASD-fix impractical:

fa55923e4ff6bcbc89a922c80b640a631cffb95d
 console/src/ButtonParamUILayer.cpp | 35 +++++++++++++++++++++++++++++++++++
 console/src/ButtonParamUILayer.h   |  5 +++++
 2 files changed, 40 insertions(+)

diff --git a/console/src/ButtonParamUILayer.cpp b/console/src/ButtonParamUILayer.cpp
index f6800d453..8cd87df16 100644
--- a/console/src/ButtonParamUILayer.cpp
+++ b/console/src/ButtonParamUILayer.cpp
@@ -7,9 +7,11 @@
 #include "stdafx.h"
 #include "ButtonParamUILayer.h"
 #include "mmcore/api/MegaMolCore.h"
+#include "utility/HotFixes.h"
 #include "CoreHandle.h"
 #include <cstdint>
 #include <vector>
+#include "vislib/sys/Log.h"
 
 using namespace megamol;
 using namespace megamol::console;
@@ -17,6 +19,7 @@ using namespace megamol::console;
 ButtonParamUILayer::ButtonParamUILayer(gl::Window& wnd, void * coreHandle, void * viewHandle)
         : AbstractUILayer(wnd), hCore(coreHandle), hView(viewHandle), last_update(), hotkeys(), maskingLayer(nullptr){
     last_update = std::chrono::system_clock::now() - std::chrono::hours(1);
+    this->wasdHotfixed = utility::HotFixes::Instance().IsHotFixed("wasdnorepeat");
 }
 
 ButtonParamUILayer::~ButtonParamUILayer() {
@@ -36,6 +39,24 @@ bool ButtonParamUILayer::onKey(Key key, int scancode, KeyAction action, Modifier
         last_update = std::chrono::system_clock::now();
     }
 
+    if (wasdHotfixed) {
+        bool down = action != KeyAction::RELEASE;
+        switch (scancode) {
+            case 'w':
+                this->fwd = down;
+                break;
+            case 'a':
+                this->left = down;
+                break;
+            case 's':
+                this->back = down;
+                break;
+            case 'd':
+                this->right = down;
+                break;
+        }
+    }
+
     if (action == KeyAction::RELEASE) return false;
 
     uint16_t cleanKey;
@@ -86,6 +107,20 @@ bool ButtonParamUILayer::onKey(Key key, int scancode, KeyAction action, Modifier
     return true;
 }
 
+void megamol::console::ButtonParamUILayer::onDraw() {
+    if (wasdHotfixed) {
+        CoreHandle hParam;
+        if (this->fwd) {
+            const vislib::sys::KeyCode kc('w');
+            const auto hot = hotkeys.find(kc);
+            if (::mmcGetParameter(hCore, hot->second.PeekBuffer(), hParam)) {
+                vislib::sys::Log::DefaultLog.WriteInfo("feeding fwd");
+                ::mmcSetParameterValue(hParam, _T("click"));
+            }
+        }
+    }
+}
+
 namespace {
 
     struct enumData {
diff --git a/console/src/ButtonParamUILayer.h b/console/src/ButtonParamUILayer.h
index 3a6ebe5ab..c40a0ec6b 100644
--- a/console/src/ButtonParamUILayer.h
+++ b/console/src/ButtonParamUILayer.h
@@ -29,6 +29,8 @@ namespace console {
         virtual bool Enabled();
 
         virtual bool onKey(Key key, int scancode, KeyAction action, Modifiers mods);
+
+        virtual void onDraw();
     private:
         void updateHotkeyList();
 
@@ -38,6 +40,9 @@ namespace console {
         std::chrono::system_clock::time_point last_update;
         std::map<vislib::sys::KeyCode, vislib::TString> hotkeys;
         AbstractUILayer *maskingLayer;
+
+        bool fwd = false, back = false, left = false, right = false;
+        bool wasdHotfixed = false;
     };
 
 }

Eyedist

When we start a demo, that supports stereo, on the Powerwall the eye distance on the operator (minyou) is not the same as the eye distance on the display nodes. We have to change the eye distance on the operator in order to sync the value for the display nodes. This only works after the display nodes display the first frame. That indicates that on the first sync between the operator and the display nodes the eye distance is not transferred properly.

We use the MegaMol (\vesta1\megamol20160815) for the powerwall.

Merge 2D/3D calls where possible

  • remove 3D GetCapabilities(Call& call);
  • replace 2D GetBoundingBox (hacky?) with GetExtents and/or GetViewport
  • refactor 2D GetBackgroundColour (remove if useless?)

OSPRay Structures crash when no material is connected

operations like this

bool OSPRaySphereGeometry::InterfaceIsDirty() {
    CallOSPRayMaterial *cm = this->getMaterialSlot.CallAs<CallOSPRayMaterial>();
    cm->getMaterialParameter();

always need to check whether cm is not null. Question is: what is supposed to happen when no material is connected? At least an error needs to be thrown, maybe rendering nothing. But crashing is not nice.

The current implementation keeps Lua state in between Lua executions

Is this what we want?
This implies:

  • the user can use globals to keep state across calls, i.e. Lua executions are not sandboxed from each other.
  • function pointers can be overwritten by data, thus hiding the MegaMol API. This could probably be fixed by just re-registering API on each execution.

The easiest solution would be to generate a new LuaState for each call.

Otherwise we would probably need to do it like this (see comments!):
https://stackoverflow.com/questions/10042744/lua-metatables-and-global-variables
or look closely at this:
https://gamedev.stackexchange.com/questions/81082/how-to-run-multiple-lua-scripts-within-the-same-lua-state-without-conflict

Powerwall MPI

This is mainly a reminder for me (Florian) to look into the following error message.

[0] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=0, new_comm=0x000000A6211DF788) failed
[ch3:sock] rank 0 unable to connect to rank 19 using business card <port=55198 description="10.35.1.20 KESHIKI20 " shm_host=KESHIKI20 shm_queue=6880:1256 >
unable to connect to 10.35.1.20 KESHIKI20 on port 55198, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[1] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=1, new_comm=0x0000008DC8CFF3D8) failed
[ch3:sock] rank 1 unable to connect to rank 0 using business card <port=55354 description="10.35.1.1 KESHIKI01 " shm_host=KESHIKI01 shm_queue=6864:1292 >
unable to connect to 10.35.1.1 KESHIKI01 on port 55354, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[2] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=2, new_comm=0x000000156FAFF118) failed
[ch3:sock] rank 2 unable to connect to rank 1 using business card <port=55383 description="10.35.1.2 KESHIKI02 " shm_host=KESHIKI02 shm_queue=6800:1244 >
unable to connect to 10.35.1.2 KESHIKI02 on port 55383, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[3] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=3, new_comm=0x000000C7A94FF3A8) failed
[ch3:sock] rank 3 unable to connect to rank 2 using business card <port=55200 description="10.35.1.3 KESHIKI03 " shm_host=KESHIKI03 shm_queue=3076:1248 >
unable to connect to 10.35.1.3 KESHIKI03 on port 55200, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[4] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=4, new_comm=0x000000C53AD0F688) failed
[ch3:sock] rank 4 unable to connect to rank 3 using business card <port=55168 description="10.35.1.4 KESHIKI04 " shm_host=KESHIKI04 shm_queue=1736:1244 >
unable to connect to 10.35.1.4 KESHIKI04 on port 55168, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[5] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=5, new_comm=0x000000F8B92FF6E8) failed
[ch3:sock] rank 5 unable to connect to rank 4 using business card <port=55372 description="10.35.1.5 KESHIKI05 " shm_host=KESHIKI05 shm_queue=2196:1256 >
unable to connect to 10.35.1.5 KESHIKI05 on port 55372, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[6] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=6, new_comm=0x000000ED057FF458) failed
[ch3:sock] rank 6 unable to connect to rank 5 using business card <port=57310 description="10.35.1.6 KESHIKI06 " shm_host=KESHIKI06 shm_queue=6168:1248 >
unable to connect to 10.35.1.6 KESHIKI06 on port 57310, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[7] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=7, new_comm=0x000000135E0FF2A8) failed
[ch3:sock] rank 7 unable to connect to rank 6 using business card <port=55097 description="10.35.1.7 KESHIKI07 " shm_host=KESHIKI07 shm_queue=5412:1248 >
unable to connect to 10.35.1.7 KESHIKI07 on port 55097, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[8] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=8, new_comm=0x0000008D1B8FF6B8) failed
[ch3:sock] rank 8 unable to connect to rank 7 using business card <port=54919 description="10.35.1.8 KESHIKI08 " shm_host=KESHIKI08 shm_queue=4236:1256 >
unable to connect to 10.35.1.8 KESHIKI08 on port 54919, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[9] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=9, new_comm=0x00000023396FF668) failed
[ch3:sock] rank 9 unable to connect to rank 8 using business card <port=55147 description="10.35.1.9 KESHIKI09 " shm_host=KESHIKI09 shm_queue=2248:1248 >
unable to connect to 10.35.1.9 KESHIKI09 on port 55147, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[10] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=10, new_comm=0x000000111E8FF268) failed
[ch3:sock] rank 10 unable to connect to rank 9 using business card <port=55120 description="10.35.1.10 KESHIKI10 " shm_host=KESHIKI10 shm_queue=4352:1248 >
unable to connect to 10.35.1.10 KESHIKI10 on port 55120, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[11] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=11, new_comm=0x00000034A3B8F2B8) failed
[ch3:sock] rank 11 unable to connect to rank 10 using business card <port=55126 description="10.35.1.11 KESHIKI11 " shm_host=KESHIKI11 shm_queue=6276:1248 >
unable to connect to 10.35.1.11 KESHIKI11 on port 55126, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[12] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=12, new_comm=0x0000000BDB2FF238) failed
[ch3:sock] rank 12 unable to connect to rank 11 using business card <port=55369 description="10.35.1.12 KESHIKI12 " shm_host=KESHIKI12 shm_queue=3636:1248 >
unable to connect to 10.35.1.12 KESHIKI12 on port 55369, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[13] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=13, new_comm=0x000000CC328FF588) failed
[ch3:sock] rank 13 unable to connect to rank 12 using business card <port=55228 description="10.35.1.13 KESHIKI13 " shm_host=KESHIKI13 shm_queue=5680:1252 >
unable to connect to 10.35.1.13 KESHIKI13 on port 55228, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[14] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=14, new_comm=0x000000946E8FF248) failed
[ch3:sock] rank 14 unable to connect to rank 13 using business card <port=55122 description="10.35.1.14 KESHIKI14 " shm_host=KESHIKI14 shm_queue=3292:1240 >
unable to connect to 10.35.1.14 KESHIKI14 on port 55122, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[15] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=15, new_comm=0x00000060F2FEF688) failed
[ch3:sock] rank 15 unable to connect to rank 14 using business card <port=57509 description="10.35.1.15 KESHIKI15 " shm_host=KESHIKI15 shm_queue=3668:1252 >
unable to connect to 10.35.1.15 KESHIKI15 on port 57509, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[16] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=16, new_comm=0x000000DAEF8FF098) failed
[ch3:sock] rank 16 unable to connect to rank 15 using business card <port=54958 description="10.35.1.16 KESHIKI16 " shm_host=KESHIKI16 shm_queue=1776:1248 >
unable to connect to 10.35.1.16 KESHIKI16 on port 54958, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[17] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=17, new_comm=0x000000219C6FF6A8) failed
[ch3:sock] rank 17 unable to connect to rank 16 using business card <port=55177 description="10.35.1.17 KESHIKI17 " shm_host=KESHIKI17 shm_queue=1320:1252 >
unable to connect to 10.35.1.17 KESHIKI17 on port 55177, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[18] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=18, new_comm=0x000000211A52F2D8) failed
[ch3:sock] rank 18 unable to connect to rank 17 using business card <port=54909 description="10.35.1.18 KESHIKI18 " shm_host=KESHIKI18 shm_queue=7092:1252 >
unable to connect to 10.35.1.18 KESHIKI18 on port 54909, no endpoint matches the netmask 10.37.0.0/255.255.0.0

[19] fatal error
Fatal error in MPI_Comm_split: Other MPI error, error stack:
MPI_Comm_split(MPI_COMM_WORLD, color=0, key=19, new_comm=0x00000066F833F668) failed
[ch3:sock] rank 19 unable to connect to rank 18 using business card <port=54909 description="10.35.1.19 KESHIKI19 " shm_host=KESHIKI19 shm_queue=5436:1240 >
unable to connect to 10.35.1.19 KESHIKI19 on port 54909, no endpoint matches the netmask 10.37.0.0/255.255.0.0

Breaks on linux

/home1/05799/fernanor/software/megamol-dev/core/include/mmcore/CoreInstance.h:519:41: error: expected primary-expression before ‘>’ token
cb(*sl->CallAs());
^
/home1/05799/fernanor/software/megamol-dev/core/include/mmcore/CoreInstance.h:519:43: error: expected primary-expression before ‘)’ token
cb(*sl->CallAs());

Configurator communication

Configurator does not receive parameter, e.g. flexenum column names, data but is able to send parameter to the MegaMol instance.

Configurator Module-Connector Scaling

On high resolution displays, the red and green arrows shown on module nodes are very hard to click due to their limited size. The Configurator should scale these arrows depending on the resolution of the display to ease this interaction.

CMake build script: Console

CMake configuration aborted due to:

CMake Error at CMakeLists.txt:56 (set_target_properties):
  set_target_properties Can not find target to add properties to: console

Maybe this occurs, if AntTweakbar option is disabled?

MegaMol cluster operation does not work on KAUST zone 2

  • udp broadcast is disallowed, so broadcast address is manually set to master node
  • the configuration might require two executables to run per node, what happens to the ports there?

setup:
module load gcc locallibs mpich-x86_64

simple configuration with a single client:
mpiexec -hosts z2-0 /home/x_reinag/src/megamol-dev/bin/client-new

server:
./megamol.sh -p mini-lua.mmprj.lua -o role boss

after connection, the client reports:

0200|Called: /home/x_reinag/src/megamol-dev/bin/mmconsole -p mpiclusterview.lua
 200|I am running on z2-0.z2.vis.kaust.edu.sa
 200|node is z2-0
 200|I am running on zone 2
 200|I am at index 0 and rank 0
 250|Configuration value "consolegui" set to "off".
 250|Configuration value "*-window" set to "x0y0w2732h1536".
 250|Configuration value "tvview" set to "13660;3072".
 250|Configuration value "t1-tvtile" set to "0;0;2732;1536".
 250|Directory "application" resolved to "/home/x_reinag/src/megamol-dev/bin"
 200|Configuration sucessfully loaded from "/home/x_reinag/src/megamol-dev/bin/megamolconfig.lua"
 200|Default LRHostAddress = "tcp://*:33333"
 200|Default LRHostEnable = "true"
 200|Installed service "LuaRemote" [1]
 200|LRH Server socket opened on "tcp://*:33333"
 200|Auto-enabled service "LuaRemote" [1]
 200|Loading project file "mpiclusterview.lua"
 550|Created module "N7megamol4core7cluster3mpi4ViewE"
 550|Created module "MpiClusterView" (::t1::mcview)
 200|ATB GUI Layer in Window 't1' disabled. F12 to toggle.
 400|Starting UDP receiver on endpoint 0.0.0.0:30201
 550|Created module "N7megamol4core7cluster6simple6ClientE"
 550|Created module "SimpleClusterClient" (::mcc)
 550|Created module "N7megamol4core7cluster3mpi11MpiProviderE"
 550|Created module "MpiProvider" (::mpi)
 550|Call "SimpleClusterClientViewRegistration" instantiated from "::t1::mcview::register" to "::mcc::registerView"
 550|Call "MpiCall" instantiated from "::t1::mcview::requestMpi" to "::mpi::provideMpi"
 200|Setting parameter "::mcc::udpechoaddr" to "109.171.138.145".
 200|UDP Receiver started
 200|Command line used for MPI initialisation is "/home/x_reinag/src/megamol-dev/bin/mmconsole -p mpiclusterview.lua ".
 200|Initialising MPI ...
 200|Performing node colouring with colour 0 ...
 200|MPI is ready, retrieving communicator properties ...
 200|This view on z2-0.z2.vis.kaust.edu.sa is 0 of 1.
 400|UDP receive answered ...
 400|UDP echo requested ...
 400|UDP echo scheduled to 109.171.138.145:30201
 200|Trying connect to new server "109.171.138.145:30301"
 400|Wait 419 milliseconds before connecting to 109.171.138.145:30301 ...
 200|Guessed remote end point 109.171.138.145:30301 with wildness 0.333333
 400|TCP connection to 109.171.138.145:30301 established
 100|Client: Receiver failed: The peer end point of "1" disconnected gracefully.
 200|TCP Connection started to "109.171.138.145:30301"
   1|Failed to connect: Bad file descriptor

does this also happen on the VISUS powerwall?

kaust-error.zip

Color and Radius for SOME of the Sphere renderers

  • run regression before pushing Release 1.3
  • SimpleSphere & NGSphere: Color seems to be taken magically from GL state. Probably a driver update from team green broke this. Use an attribute like SimpleGeoSphere does.
  • SimpleSphere does not care about radii from TestSphereDataSource. Is this a similar effect?
  • Color = None gives arbitrary results for all renderers but Geo. This uses a global color.

use utils\MMPLD\GenTestFiles.pl to reproduce
(run ..\utils\MMPLD\SphereTest.bat from bin)

We need a prototype View3D_2

  • plus a CallRender3D_2 that
    • exposes the matrices
    • has the new bounding boxes (chunk object-aligned, chunk axis-aligned, global dataset) all in world coordinates
    • has none of the weird-ass makescaledworld
  • plus a new Renderer3DModule_2 that already implements daisychaining and does the boxes union and NOTHING ELSE - the camera is View3D_2's responsibility
  • plus the Watermarkrenderer rewritten to be such a new module
  • plus the compositor
  • we need to use that as a test bed for replacing the camera
  • a renderer needs to communicate isNewFrame on CallRender3D_2 if the incoming data has changed in any way and ONLY render in that case (or camera changes etc.). View3D should keep the previous result around (likely making render-to-FBO the default strategy for everything). This allows Hooks or Transmitters or Compositors to save time and bandwidth if the output is the same anyway.
  • does this allow us to write all Views in a way that the GUI is refreshed all the time and the latest incoming FBOs are used to keep frame rates higher?
  • we need a proper way for transporting the simulation time stamps to the view or anywhere else where it can be displayed. Currently, this requires a separate dataTime parameter and EVERY renderer in existence to move the current timestamp into the incoming CallRender. Also, since there is no class hierarchy for calls, this cannot be resolved generically.

Ubuntu checks

Ubuntu build does not check for

  • GL/glu.h
  • X11/extensions/XInput2.h

Ubuntu missing compile flags

  • -lGLU

Ubuntu build errors

  • UINT_MAX not declared
  • .size() on C-like array

GRIMRenderer broken

Indeed the GRIMRenderer can still be faster than NGSphere if bricking is done properly, I observed 2x FPS for laser.big, but in the current state it's broken since the referenced shader snippets were renamed and possibly changed around a little bit when all the sphere shaders were combined into one.

For reference, the ISC_Demo_IceT tag has a fully working GRIM renderer, just capture the shaders from there and check what's broken.

This helps getting rid of the warnings, but I think I still mislinked some snippet:

$ git diff core/Shaders/mipdepth6.btf
diff --git a/core/Shaders/mipdepth6.btf b/core/Shaders/mipdepth6.btf
index bb4662034..7df6dd1fe 100644
--- a/core/Shaders/mipdepth6.btf
+++ b/core/Shaders/mipdepth6.btf
@@ -11,12 +11,12 @@
 #define DEFERRED_SHADING
 ]]>
     </snippet>
-    <snippet name="simplesphere::vertex::attributes" />
-    <snippet name="simplesphere::vertex::MainParams" />
-    <snippet name="simplesphere::vertex::posTrans" />
-    <snippet name="simplesphere::vertex::clippingPlane" />
+    <snippet name="simplesphere::vertex::Attributes" />
+    <snippet name="simplesphere::vertex::MainStart" />
+    <snippet name="simplesphere::vertex::PosTrans" />
+    <snippet name="simplesphere::vertex::ClippingPlane" />
     <snippet name="simplesphere::vertex::SphereTouchPlane" />
-    <snippet name="simplesphere::vertex::Output" />
+    <snippet name="simplesphere::vertex::PosOutput" />
     <snippet type="string">
       <![CDATA[
 }]]>
@@ -323,8 +323,8 @@ void main(void) {
 varying float pointSize;
 ]]>
     </snippet>
-    <snippet name="simplesphere::fragment::body1" />
-    <snippet name="simplesphere::fragment::out-depth" />
+    <snippet name="simplesphere::fragment::MainStart" />
+    <snippet name="simplesphere::fragment::OutDepth" />
     <snippet type="string">
       <![CDATA[
   gl_FragData[0] = vec4(color.rgb, 1.0);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.