[Bf-blender-cvs] [5dbc69c] opensubdiv-modifier: OpenSubdiv: Can't really avoid passing subdiv level to GL mesh construction

Sergey Sharybin noreply at git.blender.org
Fri Jul 17 10:34:25 CEST 2015


Commit: 5dbc69caad5e441aade6ce6ed9ea90c8c2d7f0d5
Author: Sergey Sharybin
Date:   Fri Jul 17 10:32:17 2015 +0200
Branches: opensubdiv-modifier
https://developer.blender.org/rB5dbc69caad5e441aade6ce6ed9ea90c8c2d7f0d5

OpenSubdiv: Can't really avoid passing subdiv level to GL mesh construction

Topology is not refined at that point yet and does not contain any information
about subdivision level.

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

M	intern/opensubdiv/opensubdiv_capi.cc
M	intern/opensubdiv/opensubdiv_capi.h
M	source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c

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

diff --git a/intern/opensubdiv/opensubdiv_capi.cc b/intern/opensubdiv/opensubdiv_capi.cc
index 1d50d32..717af4f 100644
--- a/intern/opensubdiv/opensubdiv_capi.cc
+++ b/intern/opensubdiv/opensubdiv_capi.cc
@@ -145,6 +145,7 @@ typedef PartitionedMesh<GLVertexBuffer,
 struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
         OpenSubdiv_TopologyRefinerDescr *topology_refiner,
         int evaluator_type,
+        int level,
         int /*subdivide_uvs*/)
 {
 	using OpenSubdiv::Far::TopologyRefiner;
@@ -173,7 +174,7 @@ struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
 			mesh = new class(refiner, \
 			                 num_vertex_elements, \
 			                 num_varying_elements, \
-			                 refiner->GetMaxLevel(), \
+			                 level, \
 			                 bits); \
 			break;
 
diff --git a/intern/opensubdiv/opensubdiv_capi.h b/intern/opensubdiv/opensubdiv_capi.h
index 770bd58..c86e739 100644
--- a/intern/opensubdiv/opensubdiv_capi.h
+++ b/intern/opensubdiv/opensubdiv_capi.h
@@ -64,9 +64,10 @@ enum {
 
 /* TODO(sergey): Re-name and avoid bad level data access. */
 OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
-    struct OpenSubdiv_TopologyRefinerDescr *topology_refiner,
-    int evaluator_type,
-    int subdivide_uvs);
+        struct OpenSubdiv_TopologyRefinerDescr *topology_refiner,
+        int evaluator_type,
+        int level,
+        int subdivide_uvs);
 
 void openSubdiv_deleteOsdGLMesh(OpenSubdiv_GLMesh *gl_mesh);
 unsigned int openSubdiv_getOsdGLMeshPatchIndexBuffer(
diff --git a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
index 5a93279..65053df 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
+++ b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
@@ -243,6 +243,7 @@ bool ccgSubSurf_prepareGLMesh(CCGSubSurf *ss, bool use_osd_glsl)
 		ss->osd_mesh = openSubdiv_createOsdGLMeshFromTopologyRefiner(
 		        ss->osd_topology_refiner,
 		        compute_type,
+		        ss->subdivLevels,
 		        ss->osd_subsurf_uv);
 		ss->osd_topology_refiner = NULL;




More information about the Bf-blender-cvs mailing list