Research:Salsa Development
From Astronomy Facility Wiki
This page is to keep up to date with Salsa development progress.
Contents |
[edit]
GL Issues
These are problems with rendering with the GL client.
- GL rendering is upside down compared to AWI rendering. The pre GL client renders the picture upside down compared to the GL client. Perhaps we just toss the pre GL client, but (my fault) the code as currently checked in works for the preGL client and is upside down for the GL client.
- Fixed but it is now incompatible with the pre GL client
- There are still issues about screen to simulations coordinate transformations. The the unzoom mouse click gives surprising results. Zoom seems to work. Making a box goes badly.
- Fixed
- Non-GL fallback. It's really satisfying to render a billion particle simulation on my netbook.
- Probably detecting ARB_fragment_program and doing a simple non-GLSL 2D fallback path is the right solution.
- Tom has tested the GL client on his $200 netbook. This should be our absolute lower bound of the capabilities we support. The GL client actually runs but:
- The resize issue below is a problem: the screen size is only 400 high, and the image gets centered out of view.
- The voxel rendering shows up as grey-scale.
- Rendering of the voxels is a few frames/second. If it were just a factor of a few faster, it would be very usable.
- Voxel rendering in general is slow.
- Resizing doesn't change the image size.
- Fixed Note that changing the image size to zero kills the server.
- Clipping planes are confusing at the moment when zoomed in.
- Centering the depth coordinate on the minimum potential (see Worker::calculateDepth()) would help here.
- Change Z on each click / zoom.
- Fixed
- Edges of voxels get rendered to green
- Redo order of color table?
[edit]
User Interface
Problems and feature requests for the user interface.
- Mouse actions are now controlled by a toolbar: rotate, zoom, "makebox", "makesphere", and "ruler". This takes a little getting used to for tipsy users, but it seems to work OK. Feedback is appreciated.
- Option to turn on more standard "alpha" blending. That is, an option to use GL_FUNC_ADD in glBlendEquation instead of GL_MAX. This would be particularly useful in the Family plots where most particles are the same color, and GL_MAX gives a solid cube for a large particle count. Scaling so that pixels aren't saturated or under exposed needs thought.
- Better "splatter visual". This is a 2D projection where the particles are smoothed over several pixels. See the code under "drawSplatter" in Workers.cpp. Could this be done on the GL card?
- Download particle list, and use client GPU. Or write OpenGL on server, run on server GPUs. Gasoline/ChaNGa uses splatter mode for the YouTube videos.
- Make a special group stand out. A "marked" group could be rendered in green and thereby be easily seen with our standard colormap.
- Sunset colormap never shows green. Can use these for bounding box, axes, orientation, or to show a selected particle set.
- Vector/velocity plots: it is useful to show a vector field on the particles as lines starting at the particle position. I'm not sure how this would work in GL, but there is already some code for the still images, it is just not being called at the moment.
[edit]
Analysis Features
Non-graphics analysis features.
- The tipsy "profile" command is being implemented.
Since many Salsa users will be former Tipsy users, many of the tipsy commands will be sought after. Here is a partial list.
- makebox: select a region using a mouse: this has been implemented
- setsphere, setbox: createGroup_AttributeRange() and createGroupAttributeSphere() are supersets of these commands.
- markbox: makes a particular group stand out. We don't have this display capability yet.
- markgal: Once "mark" display capability is there, then this can be made from two createGroup_AttributeRange() calls.
- boxstat: displays statistics of a group. This can be done with particleReduce calls, and is partially implemented.
- markstat: This becomes redundant with subgroups.
- readarray: reads in an ascii file and assigns it to an attribute. This is implented.
- markarray: again, createGroup_AttributeRange() can do this.
- writemark: writes indices of marked particles: being implemented as writing an attribute of a given group. For writemark, we write the "index" attribute.
- readmark: being implemented.
[edit]
Impostor Ideas
These are ideas to improve the interactivity of the rendering.
