BVH seems to perform better than KD-tree if the scene contains a very large object and lots of small objects, since the large object tends to be contained and tested in more subdivided regions than BVH. In the case where objects are non-uniformly distributed, BVH seems to also perform better because its bounding boxes might only cover a small portion of the scene and thus fewer ray intersections are evaluated.
han20192019
I think the reason why object partition may be better than spatial partition in some situation is that one object will be in only one grid in object partition. This avoids checking the same object several times when checking different grids. But can this also be realized by using the "mailbox" of node in KD-tree? Then will spatial partition with mailbox be better than object partition?
shomilj
In the recording, Angjoo asked a question about using both of these methods simultaneously (e.g. maintaining both a KD-tree & BVH). I'm curious as to when that would potentially help w/ performance (and how it would work in practice) - does anyone have any thoughts on that?
j316chuck
You could divide first by the x-axis median element, then split those two sub rectangles into BVH, then in those individual BVH then split by y-axis, then alternate to splitting by rectangles, etc.
BVH seems to perform better than KD-tree if the scene contains a very large object and lots of small objects, since the large object tends to be contained and tested in more subdivided regions than BVH. In the case where objects are non-uniformly distributed, BVH seems to also perform better because its bounding boxes might only cover a small portion of the scene and thus fewer ray intersections are evaluated.
I think the reason why object partition may be better than spatial partition in some situation is that one object will be in only one grid in object partition. This avoids checking the same object several times when checking different grids. But can this also be realized by using the "mailbox" of node in KD-tree? Then will spatial partition with mailbox be better than object partition?
In the recording, Angjoo asked a question about using both of these methods simultaneously (e.g. maintaining both a KD-tree & BVH). I'm curious as to when that would potentially help w/ performance (and how it would work in practice) - does anyone have any thoughts on that?
You could divide first by the x-axis median element, then split those two sub rectangles into BVH, then in those individual BVH then split by y-axis, then alternate to splitting by rectangles, etc.