Skip to main content

Looking ahead to DIRSIG5

The transition from DIRSIG 3 to DIRSIG 4 was a major shift towards a more modern code architecture and a more flexible simulation design. The goal was to address the development challenges faced at that time and to be ready for the new features and capabilities that would come.

During the past few years, we have added new modalities (particularly LiDAR), new platform support (Windows), an entirely new GUI interface, native 3D radiative transfer code, extensive sensor and platform modeling, support for more complex scene radiometry, and many other features to support user needs. Every new piece of code has expanded, and in some cases, stressed, the underlying DIRSIG 4 framework and its original design. While this evolution has been successful functionally, we have made sacrifices to execution speed and our agility adapting to new challenges and projects well beyond the scope of what was imagined, or even possible, when that framework was constructed.

DIRSIG 5 (D5) represents another major shift in architecture, moving to a more modular design to support faster, isolated turnaround of new or improved features and allowing plugin functionality. We are also vigorously addressing simulation speed -- from the load time of scene properties and geometry, to the computation of radiometry -- exploiting hardware (GPU, multiple cores, etc..) wherever possible. We also recognize that the field of computer graphics has advanced significantly since the early days of DIRSIG when most of what is now considered to be fundamental technique had to be homegrown. In addition to having these ideas influence our design and tools, we are also attempting to use optimized and mature libraries to fulfill fundamental needs in the code (when licenses allow) -- giving us more time to focus on our fundamental goal of being a premier remote sensing simulation tool.

Development of D5 is still in its infancy, though we have made some significant headway during the past month. The architecture design is goal-oriented and we are letting it evolve as we attempt to find the best way to meet those goals (the following is not exhaustive):

A Short List of Specific Goals:

• Stable core with fewer major revision cycles

• Modular non-core design for platform/scene development and external plugins

• Shorter development cycles for new and improved, modular functionality

• Faster geometry intersections and rad solver solutions with GPU exploitation

• Better handling of large data files (property maps, dems, geometry/image files)

• Improved modeling of multiple, independent instruments and platforms

• Top-level scheduling of complex tasking and temporal interactions

• Optimized, universal matrix math library

• Top level, scriptable data model for all simulation component properties

• Improved extensibility of the GUI for advanced simulation interfaces

• Geocentric atmosphere, scene, and space models.

• Support for multiple scenes, atmospheric objects, and a background planet DEM

As D5 progresses, we will be posting occasional status messages here with performance statistics and demonstrations of new features and interfaces. We'd also like to use this space as a place for users to provide comments about the direction we are going in. Are we meeting your needs? Is there something you'd like to see in D5 that we aren't addressing? Keep in mind that we are mostly interested in the big picture goals right now -- we'll care more about new, specific functionality later on.

Comments

Dave Pogorzala said…
Very cool! If I had to give any input it would be two things:

-- "Yes" to the idea of better handling of large data sets, in particular large texture maps, in particular large texture maps that happen to depict desert-like regions of Southern California, that may or may not contain the town of Trona. Loading those maps always killed the runtime.

-- Multi threaded! Any way you can auto-magically take advantage of multiple cores and/or multiple nodes on a network would rock. Manually keeping track of 12+ sime on 12+ computers is taxing.
Dave A. said…
GPU rendering which takes advantage of CUDA cores, along with tiling the scene across multiple nodes and then reassembling tiles into finished image. a couple of my thoughts.
Adam Goodenough said…
@Dave P.:

The handling of large data sets is what I'm working on right now -- for large texture maps and large DEM-based geometry. All of these files will be used on demand, with only a minimal amount of data loaded into memory at any given time. You should see improvements in both load time and memory usage.

Wherever possible, we're trying to take advantage of multiple cores and GPU processing. I hadn't thought about managing multiple sims on multiple nodes yet, but I will keep that in mind going forward.

@Dave A.:

GPU rendering and general processing is one of our top priorities. I've done some preliminary prototyping with OpenCL (which works with CUDA GPUs and multiple CPU cores) with some pretty promising results.

This is one of those components of D5 that will be a "module." As we continue to develop new approaches to computation, you will hopefully get better turnaround of specific new code, without dealing with an entire new version of DIRSIG.

Thanks for your comments!

Popular posts from this blog

LIDAR Point Cloud Visualization

A common question we get asked is how to visualize the point cloud data produced by either the Linear-mode or Geiger-mode LIDAR simulations. First, you should remember that the point cloud files produced by the "APD Processor" are simple ASCII/text files. Each line is the entry for a single return or "point" in the point cloud, including the point location and some attributes that vary depending on whether you modeled a Linear-mode or Geiger-mode system. For a Linear-mode system, a point cloud file will generally look like the example below: 12.7388 -45.3612 -0.0256 5.0290 0 0 0 0 12.8169 -45.3612 -0.0264 4.8362 0 1 0 0 12.8950 -45.3612 -0.0271 4.8362 0 2 0 0 ... 32.4008 -25.5446 10.5945 4.6783 0 65533 0 0 32.4781 -25.5446 10.5953 5.8959 0 65534 0 0 32.5360 -25.5640 12.5408 5.9185 0 65535 0 0 The first three columns are the X/Y/Z location of the point return. The 4th column is the intensity (in photons). Since Linear mode can support multiple returns per pulse, t

Viewing and Importing DIRSIG Output Images

We are often asked what programs can view DIRSIG's image outputs and how to import the raw DIRSIG image data files into other tools for further processing. For basic image viewing, DIRSIG-4.4.0 now includes a very simple viewing tool. Launch it from the main simulation editor window by selecting the "Start image viewer" option from the "Tools" menu. If you run your simulation from the GUI simulation editor, new image files are automatically added to the list in the image viewer as they are generated. If you want to manually add files to the list, simply select the "Open" item from the "File" menu or the toolbar. Here is a screenshot of the main image viewer window. The top part contains the list of currently opened files and the bands within those image files. To view a single band as a gray-scale image, choose "Single Band Display" from the combo box and then click on the image band that you want. Finally, click "Load Band

Using MODTRAN6 with DIRSIG

It has been a pretty exciting year for the team at Spectral Sciences, Inc.  with the release of MODTRAN6 . This latest version marks a major milestone in the continued development of one of the most popular and trusted codes for simulating radiative transfer in the atmosphere. In addition to important science related advancements, this latest code also includes significant improvements to the general usability of the software. This includes a new graphical user interface (GUI) and the introduction of a formal application programmer interface (API), which let's codes like DIRSIG interact with MODTRAN in a far more robust way than previous versions allowed. New MODTRAN, new interfaces The major development in the interface area is a shift from the old "tape5" style inputs to a new JSON (JavaScript Object Notation) style input. In addition to improving the general readability of the input, the JSON document format is much easier to read in, modify and write back out. The