Skip to content
  • loring's avatar
    depth sort update · eaf68626
    loring authored
    this patch modernizes VTK's depth sorting code. The following improvements
    were made:
    
    * transfrom GetCell to GetCellPoints. Building the cells one by one
      is expensive and we only need points to determine the depth. We
      can also then access the points in place.
    
    * transform qsort to std::sort. Comparisons in std::sort get inlined
      so std::sort is much faster. I also reduced the overhead of swaps
      by using a functor so that only cell id is swapped.
    
    * use templates to deal with point types instead of going through
      virtual GetValue API that converts them to double.
    
    * restructure depth computations so that they can be vectorized by
      the compiler.
    
    * I added a Cxx test to improve test coverage of the various sorting
      modes supported by this class.
    
    In tests the improved class is 2 x faster when sorting by first point
    and cell bounds, and 1.5 x faster when sorting by parametric center.
    The tests made use of a 900M cell iso-surface computed from a cosmology
    simulation, and gcc 4.9.2 with -DNDEBUG -Ofast -march=native -mavx
    
    
    git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@27619 18c085ea-50e0-402c-830e-de6fd14e8384
    eaf68626