ComputationalRadiationPhysics / isaac

In Situ Animation of Accelerated Computations :microscope:
http://ComputationalRadiationPhysics.github.io/isaac/
GNU Lesser General Public License v3.0
25 stars 15 forks source link

Making ISAAC way more generic and universal using even more templates #44

Open theZiz opened 8 years ago

theZiz commented 8 years ago

At the moment ISAAC is "only" suitable to render gas and iso raycastings of 3D volumes described as a couple of disjunct cubiods distributed over the computation nodes. However there are way more ways to render 3D fields, more ways of 3D volume adresses like tetrahedron meshes or even 2D simulation data, not suitable to be converted to a 3D volume with it's own ways of rendering like a 40,000 x 40,000 scalar field per gpu. This needs a whole knew approach of live visualization.

So imo ISAAC should put

to own functors, integrated as template parameters as it is now happening with the render controller and compositor especially for stereographic rendering. For the last one an mpl::list probably makes sense and to choose at runtime which of the preselected rendering algorithms to use - like now with the choice between iso surface and glowing gas rendering. Unfortunately I still doubt, that a rendering selection per source works with the ISAAC approach. The template parameters can also implement constant atributes for metaprogramming, stating that the volumes don't need to be disjunct at all, which is e.g. not needed for iso surfaces when a z-buffer is used. With this one of the biggest disadvantages of ISAAC would vanish - at least for some renderings - without the need to think about sending data over network until the data is disjunct.

In the very end ISAAC should be some kind of compile time construction kit to get the most fitting visualization for every simulation with an easy way to extened the template implementations for new needs of simulations.

ax3l commented 8 years ago

Since this is a great future labeled issue, let me give you some examples that would make wonderful use cases:

Back-Transform

m+1 is the number of 2D fields for the scalar field E_z to take into account ("modes") and theta is a variable we have to render from 0 to 2pi during the back-transformation.