[Bf-blender-cvs] [579edb1510d] master: Cycles: Add maximum depth stat to bvh builder

Mai Lavelle noreply at git.blender.org
Wed Aug 23 12:55:22 CEST 2017


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;



More information about the Bf-blender-cvs mailing list