diff options
-rw-r--r-- | intern/cycles/bvh/bvh_build.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/bvh/bvh_params.h | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/intern/cycles/bvh/bvh_build.cpp b/intern/cycles/bvh/bvh_build.cpp index d283cdaf9d7..48f1d063fd1 100644 --- a/intern/cycles/bvh/bvh_build.cpp +++ b/intern/cycles/bvh/bvh_build.cpp @@ -435,6 +435,7 @@ bool BVHBuild::range_within_max_leaf_size(const BVHRange& range, return false; size_t num_triangles = 0; + size_t num_motion_triangles = 0; size_t num_curves = 0; size_t num_motion_curves = 0; @@ -445,13 +446,16 @@ bool BVHBuild::range_within_max_leaf_size(const BVHRange& range, num_curves++; if(ref.prim_type() & PRIMITIVE_MOTION_CURVE) num_motion_curves++; - else if(ref.prim_type() & PRIMITIVE_ALL_TRIANGLE) + else if(ref.prim_type() & PRIMITIVE_TRIANGLE) num_triangles++; + else if(ref.prim_type() & PRIMITIVE_MOTION_TRIANGLE) + num_motion_triangles++; } return (num_triangles <= params.max_triangle_leaf_size) && + (num_motion_triangles <= params.max_motion_triangle_leaf_size) && (num_curves <= params.max_curve_leaf_size) && - (num_motion_curves <= params.max_curve_leaf_size); + (num_motion_curves <= params.max_motion_curve_leaf_size); } /* multithreaded binning builder */ diff --git a/intern/cycles/bvh/bvh_params.h b/intern/cycles/bvh/bvh_params.h index 431e42a0d6a..38a2e557a5d 100644 --- a/intern/cycles/bvh/bvh_params.h +++ b/intern/cycles/bvh/bvh_params.h @@ -43,7 +43,9 @@ public: /* number of primitives in leaf */ int min_leaf_size; int max_triangle_leaf_size; + int max_motion_triangle_leaf_size; int max_curve_leaf_size; + int max_motion_curve_leaf_size; /* object or mesh level bvh */ bool top_level; @@ -80,7 +82,9 @@ public: min_leaf_size = 1; max_triangle_leaf_size = 8; + max_motion_triangle_leaf_size = 8; max_curve_leaf_size = 1; + max_motion_curve_leaf_size = 1; top_level = false; use_qbvh = false; |