Commit: 579edb1510d22571b5e10a55d1cc7be9d6fcf9f8
Author: Mai Lavelle
Date:   Wed Aug 23 00:40:35 2017 -0400
Branches: master
https://developer.blender.org/rB579edb1510d22571b5e10a55d1cc7be9d6fcf9f8

Cycles: Add maximum depth stat to bvh builder

===================================================================

M       intern/cycles/bvh/bvh_build.cpp
M       intern/cycles/bvh/bvh_node.cpp
M       intern/cycles/bvh/bvh_node.h

===================================================================

diff --git a/intern/cycles/bvh/bvh_build.cpp b/intern/cycles/bvh/bvh_build.cpp
index eb1d89729fb..d7098806569 100644
--- a/intern/cycles/bvh/bvh_build.cpp
+++ b/intern/cycles/bvh/bvh_build.cpp
@@ -529,7 +529,9 @@ BVHNode* BVHBuild::run()
                                << "  Allocation slop factor: "
                                       << ((prim_type.capacity() != 0)
                                               ? (float)prim_type.size() / 
prim_type.capacity()
-                                              : 1.0f) << "\n";
+                                              : 1.0f) << "\n"
+                               << "  Maximum depth: "
+                               << 
string_human_readable_number(rootnode->getSubtreeSize(BVH_STAT_DEPTH))  << "\n";
                }
        }
 
diff --git a/intern/cycles/bvh/bvh_node.cpp b/intern/cycles/bvh/bvh_node.cpp
index 4237c62ab5b..ab6df4d265d 100644
--- a/intern/cycles/bvh/bvh_node.cpp
+++ b/intern/cycles/bvh/bvh_node.cpp
@@ -132,6 +132,17 @@ int BVHNode::getSubtreeSize(BVH_STAT stat) const
                case BVH_STAT_UNALIGNED_LEAF_COUNT:
                        cnt = (is_leaf() && is_unaligned) ? 1 : 0;
                        break;
+               case BVH_STAT_DEPTH:
+                       if(is_leaf()) {
+                               cnt = 1;
+                       }
+                       else {
+                               for(int i = 0; i < num_children(); i++) {
+                                       cnt = max(cnt, 
get_child(i)->getSubtreeSize(stat));
+                               }
+                               cnt += 1;
+                       }
+                       return cnt;
                default:
                        assert(0); /* unknown mode */
        }
diff --git a/intern/cycles/bvh/bvh_node.h b/intern/cycles/bvh/bvh_node.h
index 1c875f5a524..94cf5ab730c 100644
--- a/intern/cycles/bvh/bvh_node.h
+++ b/intern/cycles/bvh/bvh_node.h
@@ -38,6 +38,7 @@ enum BVH_STAT {
        BVH_STAT_UNALIGNED_INNER_QNODE_COUNT,
        BVH_STAT_ALIGNED_LEAF_COUNT,
        BVH_STAT_UNALIGNED_LEAF_COUNT,
+       BVH_STAT_DEPTH,
 };
 
 class BVHParams;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to