VisIt 2.0 Wish List

Wishlist Items

Here is a list of proposed items / wish list for the 2.0 release. Note that this is an area where developers are communicating and users should not infer that any of these things are necessarily going to be in 2.0.

  • Qt4
    • More macro/menu customization
    • Faster menus – Files with 1K variables in nested menus can cause several minutes of delay just to update menus Brad
      • Share menus where possible
      • Possibly create menu levels on demand
      • If that's not enough, switch to different widget for variable selection.
    • Using Phonon, provide video tutorials for using various VisIt features. I (Sean) am willing to create the videos.
    • Possible render path for latex or MathML via SVG
    • Direct manipulation of annotation objects (ala "Powerpoint VisIt") possibly using a Qt4 graphics view.
    • Math ML Annotation object using LGPL Qt Solution [1]
  • 2x rendering performance
    • Vertex arrays/objects
      • Alternate polydata representation that directly maps to vertex arrays/objects?
      • Use of VTK decorators to mediate OpenGL translation?
    • More fastpaths through the code
    • Antialiasing Options
    • Can raycasting VR be optimized more?
  • Python Filters
  • First class support for Materials & Species, etc via a Sparse Data Array (Remove special case db caching for these guys!)
  • CMFE wizard
  • ECF wizard - I know they aren't a perfect fit with operators, but I think DDF/ECFs could be very powerful in an operator package Cyrus
  • A "Mac-like" VisIt client and installer
  • New host profile management system
  • Configuration (session files) broken out into pieces:
    • Host profiles
    • Directly saveable pipelines
    • User preferences
  • Expression enhancements
    • Plugins
    • Ability to read meshless array data from file and assemble into meshes via expressions to support exotic history vars.
    • Time iterating expressions
    • Query/Expression Hybrids (for example using something like "v/max(v)" to create a normalized field)
  • libsim V2 (see wiki)
  • Fully updated docs
  • Cross platform build (cmake)
  • Cross platform testing
  • Improved database plugin system
  • Network diagnosis tool
  • GL diagnosis tool
  • Parallel error handling
    • Avoid hangs in situations where a proc has bad data or can't complete its pipeline
    • Allow for interruption of pipeline in parallel
  • Factor out MPI calls into separate lib that can be compiled to make VisIt parallel
  • View-dependent multi-res processing using AMR data.
  • Open Bug/Task Tracking
  • Higher level wrappers for GLSL (to reduce redundancy w/ use of shaders)
  • Major library upgrades
    • Python 3.0
    • Mesa, etc.?
  • Add hierarchy or multi-set categories for operators. (maybe plots, too??)
  • Undo/Redo
  • Context-sensitive help
    • Help text box in expression window that gets populated with useful text during an Insert->... operation
  • Save-as shouldn't default to TIFF, but maybe PNG instead.
  • Revisit Save Window vs Export Database. Type of save really depends on if it is done before or after implicit plot filters (facelist filter, etc) - better yet allow export at any point in the pipeline.
  • Provide option for merging of datasets when exporting (across domains for example)
  • When saving a window, have a single option to increase quality, e.g. turn on antia-aliasing, increase atom and vector plot geometric # polygons, etc.
  • Change the default color tables to something less garish. Maybe even rename them and add new ones. (Jeremy sent the SCI ones out to the developers list for inspiration, e.g. the Mixed ones.)
    • both fixed r6347: NOTE: there's currently (feb 20 '09) a spectrum bar interpolation bug when the number of control points is O(pixels), and there are performance problems with Jeremy's new alpha addition.
  • Rename "lock view" to "link views" or something other than "lock". (Lock implies something like "maintain".)


Jeremy's more reasonable suggestions:

  • make Expressions and Queries plugins
  • create new meshes in expressions (e.g. a = range1d(0,1,100) creates a 1D curve with values [0,.01,.02,...,1.0], and then you could create a curve "a^2-2a+1" for easy plotting of simple functions)
  • create of new database sources from plots/operators without having to save to a file (see ddf, query results, lineouts)
  • clean up plugins, e.g. kill "GetVectorVar", add "GetMaterial". Have DB plugins recognize file names types better. Rename functions that could use better names, even if it breaks compatibility for user-developed ones (but keep track of these changes so we can document them!!)
  • "finish" keyframing, whatever that means. Probably add operators, make some things more intuitive.
  • some sort of level of detail more integrated with other plots
  • done r5951 for plots and operators (any single attribute window observer): "all" windows could have Save/Load buttons on them. The Volume Plot is an obvious example where users want to save/load transfer functions, but it applies to most other plot/operator windows.
  • any gui changes we've been wanting to do but might be riskier in terms of irritating users via change. some possible examples:
    • make opening files and hiding the selected file panel the default mode
    • use the super-awesome Qt dock widgets more, like for notepads or something
    • audit all the gui windows to make sure they're of reasonable size for "small" resolutions
    • relocate plot and operator menus, avoid such obvious duplication with their "atts" menus (which are no longer necessary since we have other ways of getting to those now)
  • unify-over-time filter
  • Merge color tables and transfer functions; be able to specify opacity as part of the color table for use in the Pseudocolor plot.
    • Note (Jeremy): mostly done as of Feb 20 '09. They're not unified, exactly, but you can now specify alpha in a color table, and use that alpha in the pseudocolor and volume plots (so far, though other plots could follow).
  • starting this at 1.12: have more pre-built (linux) binaries. e.g. I have an ubuntu 8.04 x86-64 system, and I'd happily contribute one every release. it may not be vastly different than one of the rhel ones, but I think this is a case where more variety couldn't possibly hurt. I suspect there are other developers out there or other machines we have access to. (e.g. Lens runs SL5. Contributing back a build would also be an additional incentive to do these builds as soon as a new version is released.....)
  • misc tasks to do:
    • Add XZ and YZ Cartesian options to the Project operator (and maybe YX, ZX, and ZY as well).
    • Allow negative eye angles in the gui (view window) (noting that eye angle is in view window but stereo mode is in rendering window!)
    • full-screen viewer mode isn't happy about a couple things: (1) we set the size, so layout buttons, even 1x1 cause problems, and it might not even initialize correctly, and (2) multi-monitor configs; on my windows system, e.g. it shows up split between the two monitors.
    • done r9703 for MTSD, 9706 for MTMD. Allow MT databases to be merged into longer time sequences at a higher level. E.g. XYZ files are used in two ways: one step per file with cycle numbers in filenames, and concatenating all XYZ files into one long one. Or both: each XYZ file has 100 time steps, and you have 100 files. Right now it can actually group MT files, but it assumes these are domains for an MT database, which means it plots them all at once, which is just wrong for any case I've ever seen.


... And Jeremy's more ambitious, but still possibly feasible, suggestions -- for the full list, see Jeremy's page:

  • create plots from database forward
  • clean up expression language, e.g. comparators as symbols, more intuitive quoting
  • real-time fog (depth cueing) and shadows
  • create plots from DBs forward
  • and separate some of the plot rendering from the operators, but that may be too ambitious
  • intermediate results (progressive updates)
  • allow multiple "primary variables" (or, even better, none!). E.g. multivariate volume plot; contour plot using one variable for isosurf and a second for color; neither of these are "primary" or "secondary" varables
  • "small multiples"

Hank's changes:

  • (small) The input to ModifyContract, of type avtContract_p, should be const qualified
  • (medium) avtGhostNodes should be deprecated, to be replaced by avtGhostFaces, which is a cell-based array which is bit-indexed for each face.

Mark Miller

  • Extend .visit file to xml format, add support for time/cycles/extents
  • Metadata 'bootstraps': for formats that don't support random access (e.g. NASTRAN), store away results from having scanned file for stuff like materials, variable names/centering, etc. so opening the file in the future doesn't incur same, large scan cost.