Use lower-precision data for bounding volumes
Created by: aprokop
Some things to consider:
- Does the box size has to be aligned with 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 computed by rounding up.
There is also an issue that the range of values represented by
float
is smaller than that represented bydouble
. 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 overall bounding volume of the node taking 64 bit (4 unused), i.e. 8 bytes, compared to 24 required by 4 floats. Together with 2 ints the node size is 16 bytes.