[Bf-blender-cvs] [0cd4b39] openvdb: Cleanup: reorder operations in the loop over the vdb tree nodes.

Kévin Dietrich noreply at git.blender.org
Tue Jun 23 11:31:01 CEST 2015


Commit: 0cd4b39f583f6ff0e1af64b8d7ce8979dad8dda9
Author: Kévin Dietrich
Date:   Tue Jun 23 00:13:39 2015 +0200
Branches: openvdb
https://developer.blender.org/rB0cd4b39f583f6ff0e1af64b8d7ce8979dad8dda9

Cleanup: reorder operations in the loop over the vdb tree nodes.

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

M	intern/openvdb/intern/openvdb_render.cpp

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

diff --git a/intern/openvdb/intern/openvdb_render.cpp b/intern/openvdb/intern/openvdb_render.cpp
index 05cd6a5..50c66e6 100644
--- a/intern/openvdb/intern/openvdb_render.cpp
+++ b/intern/openvdb/intern/openvdb_render.cpp
@@ -200,10 +200,10 @@ void OpenVDBPrimitive_draw_tree(OpenVDBPrimitive *vdb_prim, const bool draw_root
 	 * "VDB: High-Resolution Sparse Volumes With Dynamic Topology",
 	 * K. Museth, 2013 */
 	Vec3f node_color[4] = {
-	    Vec3f(0.0060f, 0.2790f, 0.6250f), // leaf nodes
-	    Vec3f(0.8710f, 0.3940f, 0.0191f), // intermediate internal node levels
+	    Vec3f(0.0450f, 0.0450f, 0.0450f), // root node
 	    Vec3f(0.0432f, 0.3300f, 0.0411f), // first internal node level
-	    Vec3f(0.0450f, 0.0450f, 0.0450f)  // root node
+	    Vec3f(0.8710f, 0.3940f, 0.0191f), // intermediate internal node levels
+	    Vec3f(0.0060f, 0.2790f, 0.6250f)  // leaf nodes
 	};
 
 	CoordBBox bbox;
@@ -211,42 +211,33 @@ void OpenVDBPrimitive_draw_tree(OpenVDBPrimitive *vdb_prim, const bool draw_root
 	Vec3f wmin, wmax, color;
 
 	for (FloatTree::NodeCIter node_iter = grid->tree().cbeginNode(); node_iter; ++node_iter) {
-		node_iter.getBoundingBox(bbox);
-
-		const Vec3f min(bbox.min().x() - 0.5f, bbox.min().y() - 0.5f, bbox.min().z() - 0.5f);
-		const Vec3f max(bbox.max().x() + 0.5f, bbox.max().y() + 0.5f, bbox.max().z() + 0.5f);
-
-		wmin = grid->indexToWorld(min);
-		wmax = grid->indexToWorld(max);
-
 		const int level = node_iter.getLevel();
 
-		if (level == 0) {
-			if (!draw_leaves) {
-				continue;
-			}
-			color = node_color[0];
+		if (level == 0 && !draw_leaves) {
+			continue;
 		}
-		else if (level == 1) {
-			if (!draw_level_2) {
-				continue;
-			}
-			color = node_color[1];
+		else if (level == 1 && !draw_level_2) {
+			continue;
 		}
-		else if (level == 2) {
-			if (!draw_level_1) {
-				continue;
-			}
-			color = node_color[2];
+		else if (level == 2 && !draw_level_1) {
+			continue;
 		}
-		else {
-			if (!draw_root) {
-				continue;
-			}
-			color = node_color[3];
+		else if (level == 3 && !draw_root) {
+			continue;
 		}
+		else {
+			node_iter.getBoundingBox(bbox);
 
-		add_box(&vertices, &colors, NULL, wmin, wmax, color, false);
+			const Vec3f min(bbox.min().x() - 0.5f, bbox.min().y() - 0.5f, bbox.min().z() - 0.5f);
+			const Vec3f max(bbox.max().x() + 0.5f, bbox.max().y() + 0.5f, bbox.max().z() + 0.5f);
+
+			wmin = grid->indexToWorld(min);
+			wmax = grid->indexToWorld(max);
+
+			color = node_color[std::max(3 - level, 0)];
+
+			add_box(&vertices, &colors, NULL, wmin, wmax, color, false);
+		}
 	}
 
 	glDisable(GL_CULL_FACE);




More information about the Bf-blender-cvs mailing list