Skip to content

Use lower-precision data for bounding volumes #165

@aprokop

Description

@aprokop

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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestperformanceSomething is slower than it should be

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions