We plan to do an update round for acceleration structures. As this part of the renderer is fairly old, it is now a good time to review the code and see what we can improve. Here is a list of things to do:
[x] Flag for whether the primitive is planar or not.
Add an interface for avoiding self-intersection for planar primitives using the previously intersected primitive's pointer.
[x] See this scene can render without self-intersection or not (currently we need to adjust epsilon).
[x] Add the self-intersection avoidance method from ray tracing gems.
[x] Add option for using epsilon or ray tracing gems method for avoiding self-intersection.
[x] Add N-ary BVH (and incorporate the old BVH implementation into the same interface).
[x] Expose new acceleration structures to TLAS SDL interface & Blender.
User interface:
[ ] SDL interface for common/additional parameters of acceleration structures
[ ] Blender interface for the above parameters
Some optimizations that should be attempted:
[x] BVH4 with basic SIMD support
[ ] Implement mailboxing for kd-tree (with compile time switch)
Additional issues found during the process, should also be fixed:
[ ] TBasicTriangle::getAABB() should not include epsilon already. This should be done by the primitive or acceleration structure.
We plan to do an update round for acceleration structures. As this part of the renderer is fairly old, it is now a good time to review the code and see what we can improve. Here is a list of things to do:
Add an interface for avoiding self-intersection for planar primitives using the previously intersected primitive's pointer.User interface:
Some optimizations that should be attempted:
Additional issues found during the process, should also be fixed:
TBasicTriangle::getAABB()
should not include epsilon already. This should be done by the primitive or acceleration structure.