Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] Re: information about the acceleration structures?


Chronological Thread 
  • From: Thiago Ize < >
  • To:
  • Subject: [Manta] Re: information about the acceleration structures?
  • Date: Fri, 09 Apr 2010 17:30:04 -0600

BSP and CellSkipper you probably would never want to use since the BSP has a super slow build for relatively minor speed gains and CellSkipper is slow and just interesting from an academic view.

RecursiveGrid is a very good choice when the rays are very incoherent and single ray traversal is just as good (or better) than packet traversal. This happens with path tracing for instance. The number of levels to use is described in my dissertation, but 3 is usually the right amount. The build is decent, but could be made much faster if someone spent the time to optimize it.

KDTree is ok, but the version in manta is not as optimized as it could be, so I'd probably use DynBVH over it.

DynBVH is usually a good acceleration structure to use. The build can be made faster by going into cmake and turning
MANTA_USE_DYNBVH_APPROXIMATE   to  ON
however that will result in slower traversal performance. Faster build algorithms exist and someone should implement it as well as parallelizing the build.

The poor scaling with increasing triangles could be a result of the packet size being too big. Trying turning it down to see if it improves performance. The exception to this rule is RecursiveGrid which already does a single ray traversal so packet size is not an issue.

If possible, I'd recommend flattening the groups so that there is just a single group and then building a tree over this since this will give the best performance. Otherwise, the type of structures to use would depend on how the objects are distributed within a group and how the groups are distributed.

Thiago

David E DeMarle wrote:
Can anyone tell me about, or point me to descriptions of, the ?five?
different acceleration structures (BSP, CellSkipper, RecursiveGrid,
KDTree, RecursiveGrid) in Manta?

vtkManta uses DynBVH, and it appears to be the fastest so far, but it
doesn't seem to scale all that well when the number of triangles
increases. I am wondering if one of the others (with well chosen
settings) would be a better choice.

So far, vtkManta isn't changing the contents of the DynBVH, so the
Dynamic nature of it isn't that important (but quick build times are
important).

We do want to be able to have (groups of) triangles, cylinders and
spheres in the acceleration structure so a non-homogenous acceleration
structure is preferable.

thanks for any pointers,

David E DeMarle
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x109



Archive powered by MHonArc 2.6.16.

Top of page