X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=bvh.h;fp=bvh.h;h=94ea69bdf91d95c8ea86b0f79a44c3a33b940848;hb=000297f007a08b25f458656bfb8dfe4345f2ec32;hp=52ce24ab75e39175923ab95a00e508882349afe8;hpb=a9e3181f697ab37fc74f072cfcfdf44e2d659468;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/bvh.h b/bvh.h index 52ce24a..94ea69b 100644 --- a/bvh.h +++ b/bvh.h @@ -143,16 +143,9 @@ VG_STATIC bh_tree *bh_create( void *lin_alloc, bh_system *system, { assert( max_per_leaf > 0 ); - if( item_count == 0 ) - { - bh_tree *bh = vg_linear_alloc( lin_alloc, sizeof(bh_tree) ); - bh->node_count = 0; - bh->system = system; - bh->user = user; - return bh; - } + u32 alloc_count = VG_MAX( 1, item_count ); - u32 totsize = sizeof(bh_tree) + sizeof(bh_node)*(item_count*2-1); + u32 totsize = sizeof(bh_tree) + sizeof(bh_node)*(alloc_count*2-1); bh_tree *bh = vg_linear_alloc( lin_alloc, vg_align8(totsize) ); bh->system = system; bh->user = user; @@ -167,7 +160,9 @@ VG_STATIC bh_tree *bh_create( void *lin_alloc, bh_system *system, root->start = 0; bh_update_bounds( bh, 0 ); - bh_subdivide( bh, 0 ); + + if( item_count > 2 ) + bh_subdivide( bh, 0 ); totsize = sizeof(bh_tree) + sizeof(bh_node) * bh->node_count; bh = vg_linear_resize( lin_alloc, bh, totsize );