[Bf-blender-cvs] [f297153] temp-cycles-microdisplacement: Revert geometry cache

Mai Lavelle noreply at git.blender.org
Wed Jun 8 10:08:22 CEST 2016


Commit: f297153267ca070ec9528906cc1db79c4038199c
Author: Mai Lavelle
Date:   Tue Jun 7 08:14:57 2016 -0400
Branches: temp-cycles-microdisplacement
https://developer.blender.org/rBf297153267ca070ec9528906cc1db79c4038199c

Revert geometry cache

Reverting the geometry cache for now, there's still a lot of work to be done on
the other parts of the subdivision code and the added complexity of the cache
is slowing down development. Will add it back later after things are more
functional. For now this means scenes will potentially use much more memory, so
care should be taken when using the feature.

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

M	CMakeLists.txt
M	intern/cycles/CMakeLists.txt
M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/addon/ui.py
M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/bvh/bvh.cpp
M	intern/cycles/bvh/bvh_build.cpp
M	intern/cycles/bvh/bvh_params.h
M	intern/cycles/device/device.h
M	intern/cycles/device/device_cpu.cpp
M	intern/cycles/kernel/CMakeLists.txt
M	intern/cycles/kernel/geom/geom.h
M	intern/cycles/kernel/geom/geom_attribute.h
M	intern/cycles/kernel/geom/geom_bvh_shadow.h
M	intern/cycles/kernel/geom/geom_bvh_subsurface.h
M	intern/cycles/kernel/geom/geom_bvh_traversal.h
M	intern/cycles/kernel/geom/geom_bvh_volume.h
M	intern/cycles/kernel/geom/geom_bvh_volume_all.h
D	intern/cycles/kernel/geom/geom_cache.cpp
D	intern/cycles/kernel/geom/geom_cache.h
D	intern/cycles/kernel/geom/geom_cache_triangle.h
M	intern/cycles/kernel/geom/geom_object.h
M	intern/cycles/kernel/geom/geom_primitive.h
M	intern/cycles/kernel/geom/geom_qbvh_shadow.h
M	intern/cycles/kernel/geom/geom_qbvh_subsurface.h
M	intern/cycles/kernel/geom/geom_qbvh_traversal.h
M	intern/cycles/kernel/geom/geom_qbvh_volume.h
M	intern/cycles/kernel/geom/geom_qbvh_volume_all.h
D	intern/cycles/kernel/geom/geom_subpatch.h
D	intern/cycles/kernel/geom/geom_subpatch_bvh.h
M	intern/cycles/kernel/kernel_bake.h
M	intern/cycles/kernel/kernel_emission.h
M	intern/cycles/kernel/kernel_globals.h
M	intern/cycles/kernel/kernel_shader.h
M	intern/cycles/kernel/kernel_subsurface.h
M	intern/cycles/kernel/kernel_types.h
M	intern/cycles/kernel/osl/osl_services.cpp
M	intern/cycles/kernel/osl/osl_services.h
M	intern/cycles/kernel/shaders/node_bump.osl
M	intern/cycles/kernel/shaders/node_output_displacement.osl
M	intern/cycles/kernel/svm/svm.h
M	intern/cycles/kernel/svm/svm_attribute.h
M	intern/cycles/kernel/svm/svm_displace.h
M	intern/cycles/kernel/svm/svm_types.h
M	intern/cycles/kernel/svm/svm_wireframe.h
M	intern/cycles/render/CMakeLists.txt
M	intern/cycles/render/attribute.cpp
M	intern/cycles/render/attribute.h
M	intern/cycles/render/graph.cpp
M	intern/cycles/render/mesh.cpp
M	intern/cycles/render/mesh.h
M	intern/cycles/render/mesh_displace.cpp
D	intern/cycles/render/mesh_subdivision.cpp
M	intern/cycles/render/nodes.cpp
M	intern/cycles/render/nodes.h
M	intern/cycles/render/object.cpp
M	intern/cycles/render/scene.h
M	intern/cycles/subd/CMakeLists.txt
M	intern/cycles/subd/subd_dice.cpp
M	intern/cycles/subd/subd_dice.h
M	intern/cycles/subd/subd_patch.cpp
M	intern/cycles/subd/subd_split.cpp
M	intern/cycles/subd/subd_split.h
M	intern/cycles/util/CMakeLists.txt
D	intern/cycles/util/util_bvh.cpp
D	intern/cycles/util/util_bvh.h
D	intern/cycles/util/util_lru.h
M	intern/cycles/util/util_math.h
M	intern/cycles/util/util_thread.h
M	release/datafiles/locale
M	release/scripts/addons
M	release/scripts/addons_contrib

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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71c6425..af457de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -388,7 +388,6 @@ option(WITH_CYCLES					"Enable Cycles Render Engine" ON)
 option(WITH_CYCLES_STANDALONE		"Build Cycles standalone application" OFF)
 option(WITH_CYCLES_STANDALONE_GUI	"Build Cycles standalone with GUI" OFF)
 option(WITH_CYCLES_OSL				"Build Cycles with OSL support" ${_init_CYCLES_OSL})
-option(WITH_CYCLES_OPENSUBDIV		"Build Cycles with OpenSubdiv support" ON)
 option(WITH_CYCLES_CUDA_BINARIES	"Build Cycles CUDA binaries" OFF)
 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_37 sm_50 sm_52 CACHE STRING "CUDA architectures to build binaries for")
 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
@@ -2352,11 +2351,6 @@ if(WITH_CYCLES)
 			message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
 		endif()
 	endif()
-
-	if(WITH_CYCLES_OPENSUBDIV AND NOT WITH_OPENSUBDIV)
-		message(STATUS "WITH_CYCLES_OPENSUBDIV requires WITH_OPENSUBDIV to be ON, turning OFF")
-		set(WITH_CYCLES_OPENSUBDIV OFF)
-	endif()
 endif()
 
 if(WITH_INTERNATIONAL)
diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt
index 4876725..3b6c25c 100644
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@ -146,10 +146,6 @@ if(WITH_CYCLES_OSL)
 	)
 endif()
 
-if(WITH_CYCLES_OPENSUBDIV)
-	add_definitions(-DWITH_OPENSUBDIV)
-endif()
-
 set(WITH_CYCLES_DEVICE_OPENCL TRUE)
 set(WITH_CYCLES_DEVICE_CUDA TRUE)
 set(WITH_CYCLES_DEVICE_MULTI TRUE)
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 2e4437f..eed86a6 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -518,12 +518,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
                             "but time can be saved by manually stopping the render when the noise is low enough)",
                 default=False,
                 )
-        cls.geom_cache_max_size = IntProperty(
-                name="Geometry Cache Size",
-                description="Maximum size of the geometry cache in MB",
-                min=128,
-                default=1024,
-                )
 
         cls.bake_type = EnumProperty(
             name="Bake Type",
@@ -965,12 +959,6 @@ class CyclesMeshSettings(bpy.types.PropertyGroup):
                 items=enum_displacement_methods,
                 default='BUMP',
                 )
-        cls.displacement_scale = FloatProperty(
-                name="Displacement Scale",
-                description="",
-                min=-1000, max=1000.0,
-                default=1.0,
-                )
         cls.subdivision_type = EnumProperty(
                 name="Subdivision Type",
                 description="Type of subdivision to use",
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index dcb58fe..023841a 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -404,11 +404,6 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel):
         col.label(text="Acceleration structure:")
         col.prop(cscene, "debug_use_spatial_splits")
 
-        col.separator()
-
-        col.label(text="Geometry Cache:")
-        col.prop(cscene, "geom_cache_max_size", text="Max Size")
-
 
 class CyclesRender_PT_layer_options(CyclesButtonsPanel, Panel):
     bl_label = "Layer"
@@ -711,7 +706,6 @@ class Cycles_PT_mesh_displacement(CyclesButtonsPanel, Panel):
         sub = col.column(align=True)
         sub.label(text="Displacment:")
         sub.prop(cdata, "displacement_method", text="")
-        sub.prop(cdata, "displacement_scale", text="Scale")
 
         col = split.column()
         sub = col.column(align=True)
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 199270f..0178bfb 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -411,7 +411,7 @@ void ExportCurveTrianglePlanes(Mesh *mesh, ParticleCurveData *CData,
 		}
 	}
 
-	mesh->reserve(mesh->verts.size(), mesh->triangles.size(), 0, 0, 0);
+	mesh->reserve(mesh->verts.size(), mesh->triangles.size(), 0, 0);
 	mesh->attributes.remove(ATTR_STD_VERTEX_NORMAL);
 	mesh->attributes.remove(ATTR_STD_FACE_NORMAL);
 	mesh->add_face_normals();
@@ -547,7 +547,7 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
 		}
 	}
 
-	mesh->reserve(mesh->verts.size(), mesh->triangles.size(), 0, 0, 0);
+	mesh->reserve(mesh->verts.size(), mesh->triangles.size(), 0, 0);
 	mesh->attributes.remove(ATTR_STD_VERTEX_NORMAL);
 	mesh->attributes.remove(ATTR_STD_FACE_NORMAL);
 	mesh->add_face_normals();
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 08c833f..55ef913 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -24,6 +24,7 @@
 #include "blender_session.h"
 #include "blender_util.h"
 
+#include "subd_mesh.h"
 #include "subd_patch.h"
 #include "subd_split.h"
 
@@ -190,8 +191,7 @@ static void mikk_compute_tangents(BL::Mesh& b_mesh,
                                   const vector<int>& nverts,
                                   const vector<int>& face_flags,
                                   bool need_sign,
-                                  bool active_render,
-                                  bool subdivision)
+                                  bool active_render)
 {
 	/* setup userdata */
 	MikkUserData userdata(b_mesh, b_layer, nverts.size());
@@ -216,7 +216,6 @@ static void mikk_compute_tangents(BL::Mesh& b_mesh,
 	genTangSpaceDefault(&context);
 
 	/* create tangent attributes */
-	AttributeSet& mesh_attributes = subdivision? mesh->subd_attributes: mesh->attributes;
 	Attribute *attr;
 	ustring name;
 	if(b_layer != NULL)
@@ -225,9 +224,9 @@ static void mikk_compute_tangents(BL::Mesh& b_mesh,
 		name = ustring("orco.tangent");
 
 	if(active_render)
-		attr = mesh_attributes.add(ATTR_STD_UV_TANGENT, name);
+		attr = mesh->attributes.add(ATTR_STD_UV_TANGENT, name);
 	else
-		attr = mesh_attributes.add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
+		attr = mesh->attributes.add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
 
 	float3 *tangent = attr->data_float3();
 
@@ -243,59 +242,40 @@ static void mikk_compute_tangents(BL::Mesh& b_mesh,
 			name_sign = ustring("orco.tangent_sign");
 
 		if(active_render)
-			attr_sign = mesh_attributes.add(ATTR_STD_UV_TANGENT_SIGN, name_sign);
+			attr_sign = mesh->attributes.add(ATTR_STD_UV_TANGENT_SIGN, name_sign);
 		else
-			attr_sign = mesh_attributes.add(name_sign, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
+			attr_sign = mesh->attributes.add(name_sign, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
 
 		tangent_sign = attr_sign->data_float();
 	}
 
-	if(!subdivision) {
-		for(int i = 0; i < nverts.size(); i++) {
-			int tri_a[3], tri_b[3];
-			face_split_tri_indices(nverts[i], face_flags[i], tri_a, tri_b);
-
-			tangent[0] = float4_to_float3(userdata.tangent[i*4 + tri_a[0]]);
-			tangent[1] = float4_to_float3(userdata.tangent[i*4 + tri_a[1]]);
-			tangent[2] = float4_to_float3(userdata.tangent[i*4 + tri_a[2]]);
-			tangent += 3;
+	for(int i = 0; i < nverts.size(); i++) {
+		int tri_a[3], tri_b[3];
+		face_split_tri_indices(nverts[i], face_flags[i], tri_a, tri_b);
 
-			if(tangent_sign) {
-				tangent_sign[0] = userdata.tangent[i*4 + tri_a[0]].w;
-				tangent_sign[1] = userdata.tangent[i*4 + tri_a[1]].w;
-				tangent_sign[2] = userdata.tangent[i*4 + tri_a[2]].w;
-				tangent_sign += 3;
-			}
+		tangent[0] = float4_to_float3(userdata.tangent[i*4 + tri_a[0]]);
+		tangent[1] = float4_to_float3(userdata.tangent[i*4 + tri_a[1]]);
+		tangent[2] = float4_to_float3(userdata.tangent[i*4 + tri_a[2]]);
+		tangent += 3;
 
-			if(nverts[i] == 4) {
-				tangent[0] = float4_to_float3(userdata.tangent[i*4 + tri_b[0]]);
-				tangent[1] = float4_to_float3(userdata.tangent[i*4 + tri_b[1]]);
-				tangent[2] = float4_to_float3(userdata.tangent[i*4 + tri_b[2]]);
-				tangent += 3;
-
-				if(tangent_sign) {
-					tangent_sign[0] = userdata.tangent[i*4 + tri_b[0]].w;
-					tangent_sign[1] = userdata.tangent[i*4 + tri_b[1]].w;
-					tangent_sign[2] = userdata.tangent[i*4 + tri_b[2]].w;
-					tangent_sign += 3;
-				}
-			}
+		if(tangent_sign) {
+			tangent_sign[0] = userdata.tangent[i*4 + tri_a[0]].w;
+			tangent_sign[1] = userdata.tangent[i*4 + tri_a[1]].w;
+			tangent_sign[2] = userdata.tangent[i*4 + tri_a[2]].w;
+			tangent_sign += 3;
 		}
-	}
-	else {
-		for(int i = 0; i < nverts.size(); i++) {
-			tangent[0] = float4_to_float3(userdata.tangent[i*4 + 0]);
-			tangent[1] = float4_to_float3(userdata.tangent[i*4 + 1]);
-			tangent[2] = float4_to_float3(userdata.tangent[i*4 + 2]);
-			tangent[3] = float4_to_float3(userdata.tangent[i*4 + 3]);
-			tangent += 4;
+
+		if(nverts[i] == 4) {
+			tangent[0] = float4_to_float3(userdata.tangent[i*4 + tri_b[0]]);
+			tangent[1] = float4_to_float3(userdata.tangent[i*4 + tri_b[1]]);
+			tangent[2] = float4_to_float3(userdata.tangent[i*4 + tri_b[2]]);
+			tangent += 3;
 
 			if(tangent_sign) {
-				tangent_sign[0] = userdata.tangent[i*4 + 0].w;
-				tangent_sign[1] = userdata.tangent[i*4 + 1].w;
-				tangent_sign[2] = userdata.tangent[i*4 + 2].w;
-				tangent_sign[3] = userdata.tangent[i*4 + 3].w;
-				tangent_sign += 4;
+				tangent_sign[0] = userdata.tangent[i*4 + tri_b[0]].w;
+				tangent_sign[1] = userdata.tangent[i*4 + tri_b[1]].w;
+				tangent_sign[2] = userdata.tangent[i*4 + tri_b[2]].w;
+				tangent_sign += 3;
 			}
 		}
 	}
@@ -355,15 +335,14 @@ static void attr_create_vertex_color(Scene *scene,
                                      Mesh *mesh,
                                      BL::Mesh& b_mesh,
                                      const vector<int>& nverts,
-                                     const vector<int>& face_flags,
-                                     bool subdivision)
+                                     const vector<int>& face_flags)
 {
 	BL::Mesh::tessface_vertex_colors_iterator l;
 	for(b_mesh.tessface_vertex_colors.begin(l); 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list