public GpuSmitsBVHNode[] BuildTopData(AABB[] bounds) { using ( BBoxData data = new BBoxData( bounds.Select( item => new Box(new VertInfo(item.Min.x, item.Min.y, item.Min.z), new VertInfo(item.Max.x, item.Max.y, item.Max.z))).ToArray())) { using (TopBVHHandle handle = new TopBVHHandle(data, 2u, 4, 60, 20, 0.5f)) { var resdata = handle.GetData(); Tracer.TraceLine("Complete!"); return resdata. //Except(new[]{data.First()}). Select(item => new GpuSmitsBVHNode() { bbox = new AABBInfo(new Point(item.bbox.pMin.x, item.bbox.pMin.y, item.bbox.pMin.z), new Point(item.bbox.pMax.x, item.bbox.pMax.y, item.bbox.pMax.z)), primitive = item.primitive, skipIndex = item.skipIndex }).ToArray(); } } }