Store only normal and hit fraction for each ray-rigid pair.
Add first hit raycast; 1 kernel for ray collision and BVH traverse.
Fix first hit raycast lag from false AABB hits.

Since nearestHitFraction starts with 1.f, and rayIntersectsAabb() returns
1.f when there is no intersection, the expression

(aabbHitFraction <= nearestHitFraction)

can cause non-intersecting AABBs to be processed.
As a result, the performance can decrease by a factor of over 100.