projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed BBBZZZT
[carveJwlIkooP6JGAAIwe30JlM.git]
/
bvh.h
diff --git
a/bvh.h
b/bvh.h
index e79e3ddc6866ab7d012bfd30952d0fc8eebc3230..52ce24ab75e39175923ab95a00e508882349afe8 100644
(file)
--- a/
bvh.h
+++ b/
bvh.h
@@
-90,7
+90,6
@@
VG_STATIC void bh_subdivide( bh_tree *bh, u32 inode )
if( extent[2] > extent[axis] ) axis = 2;
float split = node->bbx[0][axis] + extent[axis]*0.5f;
if( extent[2] > extent[axis] ) axis = 2;
float split = node->bbx[0][axis] + extent[axis]*0.5f;
-
float avg = 0.0;
for( u32 t=0; t<node->count; t++ )
{
float avg = 0.0;
for( u32 t=0; t<node->count; t++ )
{
@@
-98,9
+97,9
@@
VG_STATIC void bh_subdivide( bh_tree *bh, u32 inode )
avg += bh->system->item_centroid( bh->user, idx, axis );
}
avg /= (float)node->count;
avg += bh->system->item_centroid( bh->user, idx, axis );
}
avg /= (float)node->count;
-
split = avg;
split = avg;
+
i32 i = node->start,
j = i + node->count-1;
i32 i = node->start,
j = i + node->count-1;
@@
-232,11
+231,16
@@
VG_STATIC int bh_ray( bh_tree *bh, v3f co, v3f dir, ray_hit *hit )
stack[0] = 0;
stack[1] = bh->nodes[0].il;
stack[2] = bh->nodes[0].ir;
stack[0] = 0;
stack[1] = bh->nodes[0].il;
stack[2] = bh->nodes[0].ir;
+
+ v3f dir_inv;
+ dir_inv[0] = 1.0f/dir[0];
+ dir_inv[1] = 1.0f/dir[1];
+ dir_inv[2] = 1.0f/dir[2];
while(depth)
{
bh_node *inode = &bh->nodes[ stack[depth] ];
while(depth)
{
bh_node *inode = &bh->nodes[ stack[depth] ];
- if( ray_aabb
( inode->bbx, co, dir
, hit->dist ) )
+ if( ray_aabb
1( inode->bbx, co, dir_inv
, hit->dist ) )
{
if( inode->count )
{
{
if( inode->count )
{