ebassi / graphene

A thin layer of graphic data types
http://ebassi.github.io/graphene
Other
373 stars 80 forks source link

ray: Nudge ray direction of axis when intersecting #217

Closed jadahl closed 3 years ago

jadahl commented 3 years ago

The formula used to calculate the inverse of the direction vector doesn't handle the direction vector aligning with an axis. Depending on the SIMD (or not SIMD) implementation used, a axis aligned vector would either remain the same, or e.g. end up with NaN components messing up any future calculations.

Fixing the math to handle this is non-trivial, so for now work around this by nudging the direction vector slightly off axis so that it has a better hand of hitting the right box even when the direction is axis aligned.

Closes: #214

Fixes #...

Proposed changes:

Benchmark results:

Test suite changes: