ArborX icon indicating copy to clipboard operation
ArborX copied to clipboard

Use lower-precision data for bounding volumes

Open aprokop opened this issue 6 years ago • 1 comments

Some things to consider:

  • Does the box size has to be aligned with the word size?
  • For correctness, the lower-precision AABB bounds must fully enclose the volume of the higher-precision AABB or object The lower bound of the AABB should be computed by rounding down to the nearest representable single-precision value. The upper bound should be computed by rounding up. There is also an issue that the range of values represented by float is smaller than that represented by double. Thus, scaling would be required.
  • Floats may not be the final answer For example, this paper considers quantized bounds. The scene bounding box is partitioned in $2^{10}$ bins in each direction, and the bounding boxes are snapped to bin boundaries. This allows to store each bound using only 10 bits, resulting in the overall bounding volume of the node taking 64 bits (4 unused), i.e. 8 bytes, compared to 24 required by 4 floats. Together with 2 ints the node size is 16 bytes.

aprokop avatar Oct 28 '19 13:10 aprokop

The move to float was addressed in #235. Other options remain to be investigated.

aprokop avatar Mar 04 '20 22:03 aprokop