BVH Hit tests

TLAS Hit Testing: closest_hit vs any_hit

This document tests and visualizes the difference between closest_hit and any_hit functions in the TLAS implementation using the trace_rays API.

Test Setup

TLAS{KernelAbstractions.CPU}(KernelAbstractions.CPU(false), BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 6.0], 0x00000003, 0x00000002, 0xffffffff), BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x00000004, 0x00000005, 0x00000001), BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000002, 0x00000001), BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000001, 0x00000002), BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000000, 0x00000002)], InstanceDescriptor[InstanceDescriptor(0x00000001, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000), InstanceDescriptor(0x00000002, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000), InstanceDescriptor(0x00000003, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000)], BLAS{Vector{BVHNode2}, Vector{Triangle{UInt32}}}[BLAS{Vector{BVHNode2}, Vector{Triangle{UInt32}}}(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.0, 0.99534297, 6.0], Float32[-0.06808332, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], Float32[-0.6887426, -0.6674398, 4.42332], Float32[-0.47113046, -0.5155799, 4.539935], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.5155799, 4.42332], Float32[-0.6337328, -0.597071, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 4.42332], Float32[-0.47113046, -0.56033367, 4.539935], Float32[-0.6887426, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.539935], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.6651206], Float32[-0.73092246, -0.39006817, 4.9317575], Float32[-0.77390295, -0.8150653, 4.539935], Float32[-0.51202595, -0.56033367, 4.9317575], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39747232, 4.9317575], Float32[-0.9150731, -0.61788815, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 4.6651206], Float32[-0.73092246, -0.39006817, 4.796544], Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 4.539935], Float32[-0.51202595, -0.56033367, 4.796544], Float32[-0.77390295, -0.8150653, 4.796544], Float32[-0.5646185, -0.61788815, 4.9317575], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 4.539935], Float32[-0.51202595, -0.5946495, 4.6651206], Float32[-0.73092246, -0.7253755, 4.539935], Float32[-0.51202595, -0.56033367, 4.6651206], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 4.6651206], Float32[-0.54338336, -0.61788815, 4.796544], Float32[-0.75948656, -0.7697988, 4.6651206], Float32[-0.54338336, -0.5946495, 4.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 5.3348794], Float32[0.45044234, 0.8693143, 5.203456], Float32[0.4335013, 0.83661956, 5.3348794], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 5.3348794], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.45044234, 0.8693143, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 5.203456], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 5.203456], Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.85242754, 0.51837265, 4.9317575], Float32[0.68096197, 0.72913224, 4.9317575], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.68096197, 0.72913224, 4.9317575], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 5.3348794], Float32[0.83654845, 0.5087164, 5.203456], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 5.57668], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.40848494, 0.78834015, 5.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 5.57668], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.55762535, 0.597071, 5.57668], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 5.57668], Float32[0.75862634, 0.46133092, 5.460065], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.47113046, -0.6674398, 4.42332], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.42145872, -0.597071, 4.3174467], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.5669177, -0.46122175, 4.3174467], [-0.42145872, -0.597071, 4.3174467]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.6337328, -0.5155799, 4.42332], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 4.796544], [-0.73092246, -0.5946495, 4.6651206], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.75948656, -0.61788815, 4.796544], [-0.77390295, -0.62961674, 4.9317575]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.898027, -0.39006817, 4.796544], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.51202595, -0.7253755, 4.539935], [-0.54338336, -0.7697988, 4.6651206]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.6887426, -0.56033367, 4.539935], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 4.796544], [-0.54338336, -0.7697988, 4.6651206], [-0.5646185, -0.79988223, 4.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 5.3348794], [0.45044234, 0.8693143, 5.203456], [0.4335013, 0.83661956, 5.3348794]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 5.3348794], [0.6682769, 0.7155499, 5.203456], [0.45044234, 0.8693143, 5.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 5.203456], [0.68096197, 0.72913224, 5.0682425], [0.6682769, 0.7155499, 5.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 5.203456], [0.85242754, 0.51837265, 5.0682425], [0.68096197, 0.72913224, 5.0682425]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 5.0682425], [0.85242754, 0.51837265, 4.9317575], [0.68096197, 0.72913224, 4.9317575]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 5.0682425], [0.68096197, 0.72913224, 4.9317575], [0.68096197, 0.72913224, 5.0682425]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 5.3348794], [0.83654845, 0.5087164, 5.203456], [0.6682769, 0.7155499, 5.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 5.57668], [0.60602885, 0.6488984, 5.460065], [0.40848494, 0.78834015, 5.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 5.57668], [0.60602885, 0.6488984, 5.460065], [0.55762535, 0.597071, 5.57668]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 5.57668], [0.75862634, 0.46133092, 5.460065], [0.60602885, 0.6488984, 5.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)], Bounds3(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0])), BLAS{Vector{BVHNode2}, Vector{Triangle{UInt32}}}(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.0, 0.99534297, 4.0], Float32[-0.06808332, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 2.317447], Float32[-0.42145872, -0.46122175, 2.4233196], Float32[-0.6887426, -0.6674398, 2.4233196], Float32[-0.47113046, -0.5155799, 2.5399349], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 2.317447], Float32[-0.42145872, -0.5155799, 2.4233196], Float32[-0.6337328, -0.597071, 2.317447], Float32[-0.42145872, -0.46122175, 2.4233196], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 2.4233196], Float32[-0.47113046, -0.56033367, 2.5399349], Float32[-0.6887426, -0.6674398, 2.317447], Float32[-0.42145872, -0.46122175, 2.5399349], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 2.6651204], Float32[-0.73092246, -0.39006817, 2.9317577], Float32[-0.77390295, -0.8150653, 2.5399349], Float32[-0.51202595, -0.56033367, 2.9317577], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 2.796544], Float32[-0.75948656, -0.39747232, 2.9317577], Float32[-0.9150731, -0.61788815, 2.796544], Float32[-0.75948656, -0.39006817, 2.9317577], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 2.6651204], Float32[-0.73092246, -0.39006817, 2.796544], Float32[-0.9150731, -0.62961674, 2.796544], Float32[-0.75948656, -0.39006817, 2.9317577], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 2.5399349], Float32[-0.51202595, -0.56033367, 2.796544], Float32[-0.77390295, -0.8150653, 2.796544], Float32[-0.5646185, -0.61788815, 2.9317577], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 2.5399349], Float32[-0.51202595, -0.5946495, 2.6651204], Float32[-0.73092246, -0.7253755, 2.5399349], Float32[-0.51202595, -0.56033367, 2.6651204], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 2.6651204], Float32[-0.54338336, -0.61788815, 2.796544], Float32[-0.75948656, -0.7697988, 2.6651204], Float32[-0.54338336, -0.5946495, 2.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 3.3348796], Float32[0.45044234, 0.8693143, 3.203456], Float32[0.4335013, 0.83661956, 3.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 3.3348796], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.45044234, 0.8693143, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 3.203456], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 3.203456], Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.85242754, 0.51837265, 2.9317577], Float32[0.68096197, 0.72913224, 2.9317577], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.68096197, 0.72913224, 2.9317577], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 3.3348796], Float32[0.83654845, 0.5087164, 3.203456], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 3.5766804], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.40848494, 0.78834015, 3.4600651], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 3.5766804], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.55762535, 0.597071, 3.5766804], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 3.5766804], Float32[0.75862634, 0.46133092, 3.4600651], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 2.5399349], [-0.47113046, -0.6674398, 2.4233196], [-0.51202595, -0.7253755, 2.5399349]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 2.4233196], [-0.42145872, -0.597071, 2.317447], [-0.47113046, -0.6674398, 2.4233196]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 2.4233196], [-0.5669177, -0.46122175, 2.317447], [-0.42145872, -0.597071, 2.317447]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 2.5399349], [-0.6337328, -0.5155799, 2.4233196], [-0.47113046, -0.6674398, 2.4233196]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 2.796544], [-0.73092246, -0.5946495, 2.6651204], [-0.75948656, -0.61788815, 2.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 2.9317577], [-0.75948656, -0.61788815, 2.796544], [-0.77390295, -0.62961674, 2.9317577]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 2.9317577], [-0.898027, -0.39006817, 2.796544], [-0.75948656, -0.61788815, 2.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 2.6651204], [-0.51202595, -0.7253755, 2.5399349], [-0.54338336, -0.7697988, 2.6651204]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 2.6651204], [-0.6887426, -0.56033367, 2.5399349], [-0.51202595, -0.7253755, 2.5399349]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 2.796544], [-0.54338336, -0.7697988, 2.6651204], [-0.5646185, -0.79988223, 2.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 3.3348796], [0.45044234, 0.8693143, 3.203456], [0.4335013, 0.83661956, 3.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 3.3348796], [0.6682769, 0.7155499, 3.203456], [0.45044234, 0.8693143, 3.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 3.203456], [0.68096197, 0.72913224, 3.0682423], [0.6682769, 0.7155499, 3.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 3.203456], [0.85242754, 0.51837265, 3.0682423], [0.68096197, 0.72913224, 3.0682423]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 3.0682423], [0.85242754, 0.51837265, 2.9317577], [0.68096197, 0.72913224, 2.9317577]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 3.0682423], [0.68096197, 0.72913224, 2.9317577], [0.68096197, 0.72913224, 3.0682423]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 3.3348796], [0.83654845, 0.5087164, 3.203456], [0.6682769, 0.7155499, 3.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 3.5766804], [0.60602885, 0.6488984, 3.4600651], [0.40848494, 0.78834015, 3.4600651]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 3.5766804], [0.60602885, 0.6488984, 3.4600651], [0.55762535, 0.597071, 3.5766804]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 3.5766804], [0.75862634, 0.46133092, 3.4600651], [0.60602885, 0.6488984, 3.4600651]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)], Bounds3(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0])), BLAS{Vector{BVHNode2}, Vector{Triangle{UInt32}}}(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.0, 0.99534297, 2.0], Float32[-0.06808332, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 0.31744686], Float32[-0.42145872, -0.46122175, 0.42331967], Float32[-0.6887426, -0.6674398, 0.42331967], Float32[-0.47113046, -0.5155799, 0.53993493], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 0.31744686], Float32[-0.42145872, -0.5155799, 0.42331967], Float32[-0.6337328, -0.597071, 0.31744686], Float32[-0.42145872, -0.46122175, 0.42331967], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 0.42331967], Float32[-0.47113046, -0.56033367, 0.53993493], Float32[-0.6887426, -0.6674398, 0.31744686], Float32[-0.42145872, -0.46122175, 0.53993493], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 0.66512036], Float32[-0.73092246, -0.39006817, 0.93175757], Float32[-0.77390295, -0.8150653, 0.53993493], Float32[-0.51202595, -0.56033367, 0.93175757], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 0.796544], Float32[-0.75948656, -0.39747232, 0.93175757], Float32[-0.9150731, -0.61788815, 0.796544], Float32[-0.75948656, -0.39006817, 0.93175757], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 0.66512036], Float32[-0.73092246, -0.39006817, 0.796544], Float32[-0.9150731, -0.62961674, 0.796544], Float32[-0.75948656, -0.39006817, 0.93175757], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 0.53993493], Float32[-0.51202595, -0.56033367, 0.796544], Float32[-0.77390295, -0.8150653, 0.796544], Float32[-0.5646185, -0.61788815, 0.93175757], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 0.53993493], Float32[-0.51202595, -0.5946495, 0.66512036], Float32[-0.73092246, -0.7253755, 0.53993493], Float32[-0.51202595, -0.56033367, 0.66512036], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 0.66512036], Float32[-0.54338336, -0.61788815, 0.796544], Float32[-0.75948656, -0.7697988, 0.66512036], Float32[-0.54338336, -0.5946495, 0.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.4335013, 0.83661956, 1.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.85242754, 0.51837265, 0.93175757], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 1.3348796], Float32[0.83654845, 0.5087164, 1.203456], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.40848494, 0.78834015, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.55762535, 0.597071, 1.5766803], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.75862634, 0.46133092, 1.460065], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 0.53993493], [-0.47113046, -0.6674398, 0.42331967], [-0.51202595, -0.7253755, 0.53993493]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 0.42331967], [-0.42145872, -0.597071, 0.31744686], [-0.47113046, -0.6674398, 0.42331967]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 0.42331967], [-0.5669177, -0.46122175, 0.31744686], [-0.42145872, -0.597071, 0.31744686]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 0.53993493], [-0.6337328, -0.5155799, 0.42331967], [-0.47113046, -0.6674398, 0.42331967]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 0.796544], [-0.73092246, -0.5946495, 0.66512036], [-0.75948656, -0.61788815, 0.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 0.93175757], [-0.75948656, -0.61788815, 0.796544], [-0.77390295, -0.62961674, 0.93175757]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 0.93175757], [-0.898027, -0.39006817, 0.796544], [-0.75948656, -0.61788815, 0.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 0.66512036], [-0.51202595, -0.7253755, 0.53993493], [-0.54338336, -0.7697988, 0.66512036]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 0.66512036], [-0.6887426, -0.56033367, 0.53993493], [-0.51202595, -0.7253755, 0.53993493]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 0.796544], [-0.54338336, -0.7697988, 0.66512036], [-0.5646185, -0.79988223, 0.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.45044234, 0.8693143, 1.203456], [0.4335013, 0.83661956, 1.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.6682769, 0.7155499, 1.203456], [0.45044234, 0.8693143, 1.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.68096197, 0.72913224, 1.0682424], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.85242754, 0.51837265, 0.93175757], [0.68096197, 0.72913224, 0.93175757]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 0.93175757], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 1.3348796], [0.83654845, 0.5087164, 1.203456], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.40848494, 0.78834015, 1.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.55762535, 0.597071, 1.5766803]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.75862634, 0.46133092, 1.460065], [0.60602885, 0.6488984, 1.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)], Bounds3(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0]))], Bounds3(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 6.0]), Dict{TLASHandle, UnitRange{Int64}}(TLASHandle(0x00000002) => 2:2, TLASHandle(0x00000003) => 3:3, TLASHandle(0x00000001) => 1:1), Set{TLASHandle}(), Raycore.BLASArrays[Raycore.BLASArrays(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.0, 0.99534297, 6.0], Float32[-0.06808332, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], Float32[-0.6887426, -0.6674398, 4.42332], Float32[-0.47113046, -0.5155799, 4.539935], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.5155799, 4.42332], Float32[-0.6337328, -0.597071, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 4.42332], Float32[-0.47113046, -0.56033367, 4.539935], Float32[-0.6887426, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.539935], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.6651206], Float32[-0.73092246, -0.39006817, 4.9317575], Float32[-0.77390295, -0.8150653, 4.539935], Float32[-0.51202595, -0.56033367, 4.9317575], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39747232, 4.9317575], Float32[-0.9150731, -0.61788815, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 4.6651206], Float32[-0.73092246, -0.39006817, 4.796544], Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 4.539935], Float32[-0.51202595, -0.56033367, 4.796544], Float32[-0.77390295, -0.8150653, 4.796544], Float32[-0.5646185, -0.61788815, 4.9317575], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 4.539935], Float32[-0.51202595, -0.5946495, 4.6651206], Float32[-0.73092246, -0.7253755, 4.539935], Float32[-0.51202595, -0.56033367, 4.6651206], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 4.6651206], Float32[-0.54338336, -0.61788815, 4.796544], Float32[-0.75948656, -0.7697988, 4.6651206], Float32[-0.54338336, -0.5946495, 4.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 5.3348794], Float32[0.45044234, 0.8693143, 5.203456], Float32[0.4335013, 0.83661956, 5.3348794], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 5.3348794], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.45044234, 0.8693143, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 5.203456], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 5.203456], Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.85242754, 0.51837265, 4.9317575], Float32[0.68096197, 0.72913224, 4.9317575], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 5.0682425], Float32[0.68096197, 0.72913224, 4.9317575], Float32[0.68096197, 0.72913224, 5.0682425], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 5.3348794], Float32[0.83654845, 0.5087164, 5.203456], Float32[0.6682769, 0.7155499, 5.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 5.57668], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.40848494, 0.78834015, 5.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 5.57668], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.55762535, 0.597071, 5.57668], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 5.57668], Float32[0.75862634, 0.46133092, 5.460065], Float32[0.60602885, 0.6488984, 5.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.47113046, -0.6674398, 4.42332], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.42145872, -0.597071, 4.3174467], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.5669177, -0.46122175, 4.3174467], [-0.42145872, -0.597071, 4.3174467]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.6337328, -0.5155799, 4.42332], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 4.796544], [-0.73092246, -0.5946495, 4.6651206], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.75948656, -0.61788815, 4.796544], [-0.77390295, -0.62961674, 4.9317575]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.898027, -0.39006817, 4.796544], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.51202595, -0.7253755, 4.539935], [-0.54338336, -0.7697988, 4.6651206]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.6887426, -0.56033367, 4.539935], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 4.796544], [-0.54338336, -0.7697988, 4.6651206], [-0.5646185, -0.79988223, 4.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 5.3348794], [0.45044234, 0.8693143, 5.203456], [0.4335013, 0.83661956, 5.3348794]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 5.3348794], [0.6682769, 0.7155499, 5.203456], [0.45044234, 0.8693143, 5.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 5.203456], [0.68096197, 0.72913224, 5.0682425], [0.6682769, 0.7155499, 5.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 5.203456], [0.85242754, 0.51837265, 5.0682425], [0.68096197, 0.72913224, 5.0682425]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 5.0682425], [0.85242754, 0.51837265, 4.9317575], [0.68096197, 0.72913224, 4.9317575]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 5.0682425], [0.68096197, 0.72913224, 4.9317575], [0.68096197, 0.72913224, 5.0682425]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 5.3348794], [0.83654845, 0.5087164, 5.203456], [0.6682769, 0.7155499, 5.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 5.57668], [0.60602885, 0.6488984, 5.460065], [0.40848494, 0.78834015, 5.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 5.57668], [0.60602885, 0.6488984, 5.460065], [0.55762535, 0.597071, 5.57668]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 5.57668], [0.75862634, 0.46133092, 5.460065], [0.60602885, 0.6488984, 5.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)]), Raycore.BLASArrays(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.0, 0.99534297, 4.0], Float32[-0.06808332, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 2.317447], Float32[-0.42145872, -0.46122175, 2.4233196], Float32[-0.6887426, -0.6674398, 2.4233196], Float32[-0.47113046, -0.5155799, 2.5399349], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 2.317447], Float32[-0.42145872, -0.5155799, 2.4233196], Float32[-0.6337328, -0.597071, 2.317447], Float32[-0.42145872, -0.46122175, 2.4233196], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 2.4233196], Float32[-0.47113046, -0.56033367, 2.5399349], Float32[-0.6887426, -0.6674398, 2.317447], Float32[-0.42145872, -0.46122175, 2.5399349], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 2.6651204], Float32[-0.73092246, -0.39006817, 2.9317577], Float32[-0.77390295, -0.8150653, 2.5399349], Float32[-0.51202595, -0.56033367, 2.9317577], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 2.796544], Float32[-0.75948656, -0.39747232, 2.9317577], Float32[-0.9150731, -0.61788815, 2.796544], Float32[-0.75948656, -0.39006817, 2.9317577], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 2.6651204], Float32[-0.73092246, -0.39006817, 2.796544], Float32[-0.9150731, -0.62961674, 2.796544], Float32[-0.75948656, -0.39006817, 2.9317577], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 2.5399349], Float32[-0.51202595, -0.56033367, 2.796544], Float32[-0.77390295, -0.8150653, 2.796544], Float32[-0.5646185, -0.61788815, 2.9317577], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 2.5399349], Float32[-0.51202595, -0.5946495, 2.6651204], Float32[-0.73092246, -0.7253755, 2.5399349], Float32[-0.51202595, -0.56033367, 2.6651204], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 2.6651204], Float32[-0.54338336, -0.61788815, 2.796544], Float32[-0.75948656, -0.7697988, 2.6651204], Float32[-0.54338336, -0.5946495, 2.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 3.3348796], Float32[0.45044234, 0.8693143, 3.203456], Float32[0.4335013, 0.83661956, 3.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 3.3348796], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.45044234, 0.8693143, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 3.203456], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 3.203456], Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.85242754, 0.51837265, 2.9317577], Float32[0.68096197, 0.72913224, 2.9317577], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 3.0682423], Float32[0.68096197, 0.72913224, 2.9317577], Float32[0.68096197, 0.72913224, 3.0682423], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 3.3348796], Float32[0.83654845, 0.5087164, 3.203456], Float32[0.6682769, 0.7155499, 3.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 3.5766804], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.40848494, 0.78834015, 3.4600651], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 3.5766804], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.55762535, 0.597071, 3.5766804], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 3.5766804], Float32[0.75862634, 0.46133092, 3.4600651], Float32[0.60602885, 0.6488984, 3.4600651], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 2.5399349], [-0.47113046, -0.6674398, 2.4233196], [-0.51202595, -0.7253755, 2.5399349]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 2.4233196], [-0.42145872, -0.597071, 2.317447], [-0.47113046, -0.6674398, 2.4233196]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 2.4233196], [-0.5669177, -0.46122175, 2.317447], [-0.42145872, -0.597071, 2.317447]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 2.5399349], [-0.6337328, -0.5155799, 2.4233196], [-0.47113046, -0.6674398, 2.4233196]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 2.796544], [-0.73092246, -0.5946495, 2.6651204], [-0.75948656, -0.61788815, 2.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 2.9317577], [-0.75948656, -0.61788815, 2.796544], [-0.77390295, -0.62961674, 2.9317577]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 2.9317577], [-0.898027, -0.39006817, 2.796544], [-0.75948656, -0.61788815, 2.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 2.6651204], [-0.51202595, -0.7253755, 2.5399349], [-0.54338336, -0.7697988, 2.6651204]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 2.6651204], [-0.6887426, -0.56033367, 2.5399349], [-0.51202595, -0.7253755, 2.5399349]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 2.796544], [-0.54338336, -0.7697988, 2.6651204], [-0.5646185, -0.79988223, 2.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 3.3348796], [0.45044234, 0.8693143, 3.203456], [0.4335013, 0.83661956, 3.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 3.3348796], [0.6682769, 0.7155499, 3.203456], [0.45044234, 0.8693143, 3.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 3.203456], [0.68096197, 0.72913224, 3.0682423], [0.6682769, 0.7155499, 3.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 3.203456], [0.85242754, 0.51837265, 3.0682423], [0.68096197, 0.72913224, 3.0682423]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 3.0682423], [0.85242754, 0.51837265, 2.9317577], [0.68096197, 0.72913224, 2.9317577]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 3.0682423], [0.68096197, 0.72913224, 2.9317577], [0.68096197, 0.72913224, 3.0682423]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 3.3348796], [0.83654845, 0.5087164, 3.203456], [0.6682769, 0.7155499, 3.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 3.5766804], [0.60602885, 0.6488984, 3.4600651], [0.40848494, 0.78834015, 3.4600651]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 3.5766804], [0.60602885, 0.6488984, 3.4600651], [0.55762535, 0.597071, 3.5766804]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 3.5766804], [0.75862634, 0.46133092, 3.4600651], [0.60602885, 0.6488984, 3.4600651]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)]), Raycore.BLASArrays(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.0, 0.99534297, 2.0], Float32[-0.06808332, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 0.31744686], Float32[-0.42145872, -0.46122175, 0.42331967], Float32[-0.6887426, -0.6674398, 0.42331967], Float32[-0.47113046, -0.5155799, 0.53993493], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 0.31744686], Float32[-0.42145872, -0.5155799, 0.42331967], Float32[-0.6337328, -0.597071, 0.31744686], Float32[-0.42145872, -0.46122175, 0.42331967], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 0.42331967], Float32[-0.47113046, -0.56033367, 0.53993493], Float32[-0.6887426, -0.6674398, 0.31744686], Float32[-0.42145872, -0.46122175, 0.53993493], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 0.66512036], Float32[-0.73092246, -0.39006817, 0.93175757], Float32[-0.77390295, -0.8150653, 0.53993493], Float32[-0.51202595, -0.56033367, 0.93175757], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 0.796544], Float32[-0.75948656, -0.39747232, 0.93175757], Float32[-0.9150731, -0.61788815, 0.796544], Float32[-0.75948656, -0.39006817, 0.93175757], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 0.66512036], Float32[-0.73092246, -0.39006817, 0.796544], Float32[-0.9150731, -0.62961674, 0.796544], Float32[-0.75948656, -0.39006817, 0.93175757], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 0.53993493], Float32[-0.51202595, -0.56033367, 0.796544], Float32[-0.77390295, -0.8150653, 0.796544], Float32[-0.5646185, -0.61788815, 0.93175757], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 0.53993493], Float32[-0.51202595, -0.5946495, 0.66512036], Float32[-0.73092246, -0.7253755, 0.53993493], Float32[-0.51202595, -0.56033367, 0.66512036], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 0.66512036], Float32[-0.54338336, -0.61788815, 0.796544], Float32[-0.75948656, -0.7697988, 0.66512036], Float32[-0.54338336, -0.5946495, 0.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.4335013, 0.83661956, 1.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.85242754, 0.51837265, 0.93175757], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 1.3348796], Float32[0.83654845, 0.5087164, 1.203456], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.40848494, 0.78834015, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.55762535, 0.597071, 1.5766803], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.75862634, 0.46133092, 1.460065], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 0.53993493], [-0.47113046, -0.6674398, 0.42331967], [-0.51202595, -0.7253755, 0.53993493]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 0.42331967], [-0.42145872, -0.597071, 0.31744686], [-0.47113046, -0.6674398, 0.42331967]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 0.42331967], [-0.5669177, -0.46122175, 0.31744686], [-0.42145872, -0.597071, 0.31744686]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 0.53993493], [-0.6337328, -0.5155799, 0.42331967], [-0.47113046, -0.6674398, 0.42331967]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 0.796544], [-0.73092246, -0.5946495, 0.66512036], [-0.75948656, -0.61788815, 0.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 0.93175757], [-0.75948656, -0.61788815, 0.796544], [-0.77390295, -0.62961674, 0.93175757]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 0.93175757], [-0.898027, -0.39006817, 0.796544], [-0.75948656, -0.61788815, 0.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 0.66512036], [-0.51202595, -0.7253755, 0.53993493], [-0.54338336, -0.7697988, 0.66512036]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 0.66512036], [-0.6887426, -0.56033367, 0.53993493], [-0.51202595, -0.7253755, 0.53993493]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 0.796544], [-0.54338336, -0.7697988, 0.66512036], [-0.5646185, -0.79988223, 0.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.45044234, 0.8693143, 1.203456], [0.4335013, 0.83661956, 1.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.6682769, 0.7155499, 1.203456], [0.45044234, 0.8693143, 1.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.68096197, 0.72913224, 1.0682424], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.85242754, 0.51837265, 0.93175757], [0.68096197, 0.72913224, 0.93175757]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 0.93175757], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 1.3348796], [0.83654845, 0.5087164, 1.203456], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.40848494, 0.78834015, 1.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.55762535, 0.597071, 1.5766803]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.75862634, 0.46133092, 1.460065], [0.60602885, 0.6488984, 1.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)])], BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.0, 0.99534297, 6.0], Float32[-0.06808332, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], Float32[-0.6887426, -0.6674398, 4.42332], Float32[-0.47113046, -0.5155799, 4.539935], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.5155799, 4.42332], Float32[-0.6337328, -0.597071, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 4.42332], Float32[-0.47113046, -0.56033367, 4.539935], Float32[-0.6887426, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.539935], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.6651206], Float32[-0.73092246, -0.39006817, 4.9317575], Float32[-0.77390295, -0.8150653, 4.539935], Float32[-0.51202595, -0.56033367, 4.9317575], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39747232, 4.9317575], Float32[-0.9150731, -0.61788815, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 4.6651206], Float32[-0.73092246, -0.39006817, 4.796544], Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 4.539935], Float32[-0.51202595, -0.56033367, 4.796544], Float32[-0.77390295, -0.8150653, 4.796544], Float32[-0.5646185, -0.61788815, 4.9317575], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 4.539935], Float32[-0.51202595, -0.5946495, 4.6651206], Float32[-0.73092246, -0.7253755, 4.539935], Float32[-0.51202595, -0.56033367, 4.6651206], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 4.6651206], Float32[-0.54338336, -0.61788815, 4.796544], Float32[-0.75948656, -0.7697988, 4.6651206], Float32[-0.54338336, -0.5946495, 4.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.4335013, 0.83661956, 1.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.85242754, 0.51837265, 0.93175757], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 1.3348796], Float32[0.83654845, 0.5087164, 1.203456], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.40848494, 0.78834015, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.55762535, 0.597071, 1.5766803], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.75862634, 0.46133092, 1.460065], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.47113046, -0.6674398, 4.42332], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.42145872, -0.597071, 4.3174467], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.5669177, -0.46122175, 4.3174467], [-0.42145872, -0.597071, 4.3174467]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.6337328, -0.5155799, 4.42332], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 4.796544], [-0.73092246, -0.5946495, 4.6651206], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.75948656, -0.61788815, 4.796544], [-0.77390295, -0.62961674, 4.9317575]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.898027, -0.39006817, 4.796544], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.51202595, -0.7253755, 4.539935], [-0.54338336, -0.7697988, 4.6651206]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.6887426, -0.56033367, 4.539935], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 4.796544], [-0.54338336, -0.7697988, 4.6651206], [-0.5646185, -0.79988223, 4.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.45044234, 0.8693143, 1.203456], [0.4335013, 0.83661956, 1.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.6682769, 0.7155499, 1.203456], [0.45044234, 0.8693143, 1.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.68096197, 0.72913224, 1.0682424], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.85242754, 0.51837265, 0.93175757], [0.68096197, 0.72913224, 0.93175757]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 0.93175757], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 1.3348796], [0.83654845, 0.5087164, 1.203456], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.40848494, 0.78834015, 1.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.55762535, 0.597071, 1.5766803]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.75862634, 0.46133092, 1.460065], [0.60602885, 0.6488984, 1.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)], BLASDescriptor[BLASDescriptor(0x00000000, 0x00000000, Bounds3(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0])), BLASDescriptor(0x000007e9, 0x000003f5, Bounds3(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0])), BLASDescriptor(0x00000fd2, 0x000007ea, Bounds3(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0]))], StaticTLAS{Vector{BVHNode2}, Vector{InstanceDescriptor}, Vector{BVHNode2}, Vector{Triangle{UInt32}}, Vector{BLASDescriptor}}(BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 6.0], 0x00000003, 0x00000002, 0xffffffff), BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x00000004, 0x00000005, 0x00000001), BVHNode2(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000002, 0x00000001), BVHNode2(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000001, 0x00000002), BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], Float32[0.0, 0.0, 0.0], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x00000000, 0x00000002)], InstanceDescriptor[InstanceDescriptor(0x00000001, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000), InstanceDescriptor(0x00000002, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000), InstanceDescriptor(0x00000003, 0x00000000, Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 0.0 0.0 0.0], Float32[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; -0.0 -0.0 -0.0], 0x00000000)], BVHNode2[BVHNode2(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.0, 0.99534297, 6.0], Float32[-0.06808332, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0], 0x000001e4, 0x000001e5, 0xffffffff), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], Float32[-0.6887426, -0.6674398, 4.42332], Float32[-0.47113046, -0.5155799, 4.539935], 0x00000003, 0x000003f8, 0x00000004), BVHNode2(Float32[-0.6337328, -0.6674398, 4.3174467], Float32[-0.42145872, -0.5155799, 4.42332], Float32[-0.6337328, -0.597071, 4.3174467], Float32[-0.42145872, -0.46122175, 4.42332], 0x000003f6, 0x000003f7, 0x00000002), BVHNode2(Float32[-0.6887426, -0.7253755, 4.42332], Float32[-0.47113046, -0.56033367, 4.539935], Float32[-0.6887426, -0.6674398, 4.3174467], Float32[-0.42145872, -0.46122175, 4.539935], 0x000003f5, 0x00000002, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.6651206], Float32[-0.73092246, -0.39006817, 4.9317575], Float32[-0.77390295, -0.8150653, 4.539935], Float32[-0.51202595, -0.56033367, 4.9317575], 0x00000007, 0x00000008, 0x0000000d), BVHNode2(Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39747232, 4.9317575], Float32[-0.9150731, -0.61788815, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003fa, 0x000003fb, 0x00000007), BVHNode2(Float32[-0.898027, -0.61788815, 4.6651206], Float32[-0.73092246, -0.39006817, 4.796544], Float32[-0.9150731, -0.62961674, 4.796544], Float32[-0.75948656, -0.39006817, 4.9317575], 0x000003f9, 0x00000006, 0x00000005), BVHNode2(Float32[-0.75948656, -0.79988223, 4.539935], Float32[-0.51202595, -0.56033367, 4.796544], Float32[-0.77390295, -0.8150653, 4.796544], Float32[-0.5646185, -0.61788815, 4.9317575], 0x0000000b, 0x0000000c, 0x00000005), BVHNode2(Float32[-0.73092246, -0.7697988, 4.539935], Float32[-0.51202595, -0.5946495, 4.6651206], Float32[-0.73092246, -0.7253755, 4.539935], Float32[-0.51202595, -0.56033367, 4.6651206], 0x000003fc, 0x000003fd, 0x0000000b), BVHNode2(Float32[-0.75948656, -0.79988223, 4.6651206], Float32[-0.54338336, -0.61788815, 4.796544], Float32[-0.75948656, -0.7697988, 4.6651206], Float32[-0.54338336, -0.5946495, 4.796544], 0x000003fe, 0x000003ff, 0x0000000b) … BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.4335013, 0.83661956, 1.3348796], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ec, 0x000003ec), BVHNode2(Float32[0.6431432, 0.68863815, 1.3348796], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.45044234, 0.8693143, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ed, 0x000003ec), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ee, 0x000003ef), BVHNode2(Float32[0.83654845, 0.5087164, 1.203456], Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003ef, 0x000003ef), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.85242754, 0.51837265, 0.93175757], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f0, 0x000003f0), BVHNode2(Float32[0.85242754, 0.51837265, 1.0682424], Float32[0.68096197, 0.72913224, 0.93175757], Float32[0.68096197, 0.72913224, 1.0682424], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f1, 0x000003f0), BVHNode2(Float32[0.805086, 0.48958364, 1.3348796], Float32[0.83654845, 0.5087164, 1.203456], Float32[0.6682769, 0.7155499, 1.203456], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f2, 0x000003ee), BVHNode2(Float32[0.55762535, 0.597071, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.40848494, 0.78834015, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f3, 0x000003f3), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.55762535, 0.597071, 1.5766803], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f4, 0x000003f4), BVHNode2(Float32[0.69803494, 0.42448443, 1.5766803], Float32[0.75862634, 0.46133092, 1.460065], Float32[0.60602885, 0.6488984, 1.460065], Float32[0.0, 0.0, 0.0], 0xffffffff, 0x000003f5, 0x000003f4)], Triangle{UInt32}[Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.47113046, -0.6674398, 4.42332], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.47113046, -0.6674398, -0.5766803], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a4), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.42145872, -0.597071, 4.3174467], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.42145872, -0.597071, -0.6825532], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a6), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6337328, -0.5155799, 4.42332], [-0.5669177, -0.46122175, 4.3174467], [-0.42145872, -0.597071, 4.3174467]], Normal3f[[-0.6337328, -0.5155799, -0.5766803], [-0.5669177, -0.46122175, -0.6825532], [-0.42145872, -0.597071, -0.6825532]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a5), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.6887426, -0.56033367, 4.539935], [-0.6337328, -0.5155799, 4.42332], [-0.47113046, -0.6674398, 4.42332]], Normal3f[[-0.6887426, -0.56033367, -0.46006504], [-0.6337328, -0.5155799, -0.5766803], [-0.47113046, -0.6674398, -0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a3), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.898027, -0.39006817, 4.796544], [-0.73092246, -0.5946495, 4.6651206], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.898027, -0.39006817, -0.20345601], [-0.73092246, -0.5946495, -0.3348796], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000272), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.75948656, -0.61788815, 4.796544], [-0.77390295, -0.62961674, 4.9317575]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.75948656, -0.61788815, -0.20345601], [-0.77390295, -0.62961674, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000270), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.9150731, -0.39747232, 4.9317575], [-0.898027, -0.39006817, 4.796544], [-0.75948656, -0.61788815, 4.796544]], Normal3f[[-0.9150731, -0.39747232, -0.068242416], [-0.898027, -0.39006817, -0.20345601], [-0.75948656, -0.61788815, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000026f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.51202595, -0.7253755, 4.539935], [-0.54338336, -0.7697988, 4.6651206]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.51202595, -0.7253755, -0.46006504], [-0.54338336, -0.7697988, -0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a2), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.73092246, -0.5946495, 4.6651206], [-0.6887426, -0.56033367, 4.539935], [-0.51202595, -0.7253755, 4.539935]], Normal3f[[-0.73092246, -0.5946495, -0.3348796], [-0.6887426, -0.56033367, -0.46006504], [-0.51202595, -0.7253755, -0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a1), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[-0.75948656, -0.61788815, 4.796544], [-0.54338336, -0.7697988, 4.6651206], [-0.5646185, -0.79988223, 4.796544]], Normal3f[[-0.75948656, -0.61788815, -0.20345601], [-0.54338336, -0.7697988, -0.3348796], [-0.5646185, -0.79988223, -0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x000002a0) … Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.45044234, 0.8693143, 1.203456], [0.4335013, 0.83661956, 1.3348796]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.45044234, 0.8693143, 0.20345601], [0.4335013, 0.83661956, 0.3348796]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009e), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.6431432, 0.68863815, 1.3348796], [0.6682769, 0.7155499, 1.203456], [0.45044234, 0.8693143, 1.203456]], Normal3f[[0.6431432, 0.68863815, 0.3348796], [0.6682769, 0.7155499, 0.20345601], [0.45044234, 0.8693143, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000009d), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.68096197, 0.72913224, 1.0682424], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.68096197, 0.72913224, 0.068242416], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000072), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.83654845, 0.5087164, 1.203456], [0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.83654845, 0.5087164, 0.20345601], [0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000071), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.85242754, 0.51837265, 0.93175757], [0.68096197, 0.72913224, 0.93175757]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.85242754, 0.51837265, -0.068242416], [0.68096197, 0.72913224, -0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000073), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.85242754, 0.51837265, 1.0682424], [0.68096197, 0.72913224, 0.93175757], [0.68096197, 0.72913224, 1.0682424]], Normal3f[[0.85242754, 0.51837265, 0.068242416], [0.68096197, 0.72913224, -0.068242416], [0.68096197, 0.72913224, 0.068242416]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000074), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.805086, 0.48958364, 1.3348796], [0.83654845, 0.5087164, 1.203456], [0.6682769, 0.7155499, 1.203456]], Normal3f[[0.805086, 0.48958364, 0.3348796], [0.83654845, 0.5087164, 0.20345601], [0.6682769, 0.7155499, 0.20345601]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006f), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.55762535, 0.597071, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.40848494, 0.78834015, 1.460065]], Normal3f[[0.55762535, 0.597071, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.40848494, 0.78834015, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x00000099), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.60602885, 0.6488984, 1.460065], [0.55762535, 0.597071, 1.5766803]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.60602885, 0.6488984, 0.46006504], [0.55762535, 0.597071, 0.5766803]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006c), Triangle{UInt32}(GeometryBasics.Point{3, Float32}[[0.69803494, 0.42448443, 1.5766803], [0.75862634, 0.46133092, 1.460065], [0.60602885, 0.6488984, 1.460065]], Normal3f[[0.69803494, 0.42448443, 0.5766803], [0.75862634, 0.46133092, 0.46006504], [0.60602885, 0.6488984, 0.46006504]], GeometryBasics.Vec{3, Float32}[[NaN, NaN, NaN], [NaN, NaN, NaN], [NaN, NaN, NaN]], GeometryBasics.Point{2, Float32}[[0.0, 0.0], [1.0, 0.0], [1.0, 1.0]], 0x0000006b)], BLASDescriptor[BLASDescriptor(0x00000000, 0x00000000, Bounds3(Float32[-0.98837644, -0.99534297, 4.0], Float32[0.99766874, 0.99534297, 6.0])), BLASDescriptor(0x000007e9, 0x000003f5, Bounds3(Float32[-0.98837644, -0.99534297, 2.0], Float32[0.99766874, 0.99534297, 4.0])), BLASDescriptor(0x00000fd2, 0x000007ea, Bounds3(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 2.0]))], Bounds3(Float32[-0.98837644, -0.99534297, 0.0], Float32[0.99766874, 0.99534297, 6.0])), false, false, 0x00000004)

Test 1: Single Ray Through Center

Test a ray through the center that passes through all three spheres.

Test 2: Multiple Rays from Different Positions

Test multiple rays to ensure both functions work correctly.

Test 3: Complex Scene

Demonstrate ray tracing through a complex scene with many overlapping objects.

Key Findings:

  • closest_hit continues searching and updates ray's t_max to find the nearest intersection

  • any_hit exits on the first intersection during TLAS traversal (useful for shadow rays)

  • Both always agree on whether a hit occurred (hit vs miss)

  • any_hit is typically faster than closest_hit due to early termination

Performance Comparison

Compare the performance of closest_hit vs any_hit.

render_io (generic function with 1 method)
MethodTime_μs
closest_hit
BenchmarkTools.Trial: 10000 samples with 175 evaluations per sample.
 Range (min … max):  609.914 ns … 771.126 ns  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     611.400 ns               ┊ GC (median):    0.00%
 Time  (mean ± σ):   614.732 ns ±   9.965 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

  ▃▇█▆▂                                   ▁▁▂▁▂▁▁▁▁             ▂
  █████▄▄▁▁▃▁▁▃▅▆▆▆▆▆▇▇▅▅▄▃▁▁▃▄▃▄▃▃▁▃▁▃▅████████████████▆▇▆▇▆▅▅ █
  610 ns        Histogram: log(frequency) by time        648 ns <

 Memory estimate: 0 bytes, allocs estimate: 0.
any_hit
BenchmarkTools.Trial: 10000 samples with 187 evaluations per sample.
 Range (min … max):  553.348 ns … 844.481 ns  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     554.989 ns               ┊ GC (median):    0.00%
 Time  (mean ± σ):   557.996 ns ±   9.867 ns  ┊ GC (mean ± σ):  0.00% ± 0.00%

  ▂▇█▇▄                                 ▁▁▂▁▂▁▁▁▁               ▂
  █████▇▄▃▁▃▄▃▄▆▇▇▇▆▅▅▅▄▁▄▄▃▁▃▁▃▁▁▁▁▃▃▆██████████████▇▇▇▇▇▆▇▆▆▆ █
  553 ns        Histogram: log(frequency) by time        590 ns <

 Memory estimate: 0 bytes, allocs estimate: 0.

Summary

This document demonstrated:

  1. trace_rays - A convenient function for tracing rays against a TLAS and collecting results for visualization

    • Returns a RayIntersectionResult bundling rays, hit data, and the TLAS

    • Automatically builds a StaticTLAS for traversal

  2. Makie visualization recipe - Automatic visualization via plot(result)

    • Automatically renders TLAS geometry, rays, and hit points

    • Customizable colors, transparency, markers, and labels

    • Works with any Makie backend (GLMakie, WGLMakie, CairoMakie)

  3. closest_hit correctly identifies the nearest intersection among multiple overlapping primitives

    • Returns: (hit_found::Bool, triangle::Triangle, distance::Float32, bary_coords::SVector{3,Float32}, instance_id::UInt32)

    • Use sum(bary_coords .* triangle.vertices) to convert to world-space hit point

  4. any_hit efficiently determines if any intersection exists, exiting early

    • Returns: Same format as closest_hit

    • Can exit early on first hit found, making it faster for occlusion testing

  5. Both functions handle miss cases correctly (returning hit_found=false)

  6. any_hit is typically faster than closest_hit due to early termination

All tests passed! ✓