[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61359] trunk/lib/darwin-9.x.universal: OSX: initial opensubdiv libs and headers

jens verwiebe info at jensverwiebe.de
Tue May 20 14:41:27 CEST 2014


Revision: 61359
          https://developer.blender.org/rBL61359
Author:   jensverwiebe
Date:     2014-05-20 12:41:26 +0000 (Tue, 20 May 2014)
Log Message:
-----------
OSX: initial opensubdiv libs and headers

Added Paths:
-----------
    trunk/lib/darwin-9.x.universal/opensubdiv/
    trunk/lib/darwin-9.x.universal/opensubdiv/README.txt
    trunk/lib/darwin-9.x.universal/opensubdiv/include/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/bilinearSubdivisionTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/catmarkSubdivisionTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/dispatcher.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/kernelBatch.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/kernelBatchFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/loopSubdivisionTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/mesh.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/meshFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/patchMap.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/patchParam.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/patchTables.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/patchTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/stencilTables.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/stencilTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/subdivisionTables.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/subdivisionTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/vertexEditTables.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/vertexEditTablesFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/allocator.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/bilinear.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/catmark.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/cornerEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/creaseEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/face.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/faceEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/fvarData.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/fvarEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/halfedge.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/hierarchicalEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/holeEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/loop.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/mesh.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/subdivision.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/vertex.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/hbr/vertexEdit.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/computeController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuComputeContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuComputeController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuEvalLimitContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuEvalLimitController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuEvalStencilsContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuEvalStencilsController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuGLVertexBuffer.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuSmoothNormalContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuSmoothNormalController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/cpuVertexBuffer.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/drawContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/drawRegistry.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/error.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/evalLimitContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/gcdComputeController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/gcdKernel.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/glDrawContext.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/glDrawRegistry.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/glMesh.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/glVertexBuffer.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/mesh.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/nonCopyable.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/opengl.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/vertex.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osd/vertexDescriptor.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/adaptiveEvaluator.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/batch.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/drawController.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/drawItem.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/evaluator_capi.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/mesh.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/multiMeshFactory.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/patchPartitioner.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/refiner.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/topology.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/osdutil/uniformEvaluator.h
    trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/version.h
    trunk/lib/darwin-9.x.universal/opensubdiv/lib/
    trunk/lib/darwin-9.x.universal/opensubdiv/lib/libosdCPU.a
    trunk/lib/darwin-9.x.universal/opensubdiv/lib/libosdGPU.a
    trunk/lib/darwin-9.x.universal/opensubdiv/lib/libosdutil.a

Added: trunk/lib/darwin-9.x.universal/opensubdiv/README.txt
===================================================================
--- trunk/lib/darwin-9.x.universal/opensubdiv/README.txt	                        (rev 0)
+++ trunk/lib/darwin-9.x.universal/opensubdiv/README.txt	2014-05-20 12:41:26 UTC (rev 61359)
@@ -0,0 +1,4 @@
+Opensubdiv compiled with opencl, gcd, without cuda for now.
+64bit only atm..
+
+Jens
\ No newline at end of file

Added: trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/bilinearSubdivisionTablesFactory.h
===================================================================
--- trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/bilinearSubdivisionTablesFactory.h	                        (rev 0)
+++ trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/bilinearSubdivisionTablesFactory.h	2014-05-20 12:41:26 UTC (rev 61359)
@@ -0,0 +1,199 @@
+//
+//   Copyright 2013 Pixar
+//
+//   Licensed under the Apache License, Version 2.0 (the "Apache License")
+//   with the following modification; you may not use this file except in
+//   compliance with the Apache License and the following modification to it:
+//   Section 6. Trademarks. is deleted and replaced with:
+//
+//   6. Trademarks. This License does not grant permission to use the trade
+//      names, trademarks, service marks, or product names of the Licensor
+//      and its affiliates, except as required to comply with Section 4(c) of
+//      the License and to reproduce the content of the NOTICE file.
+//
+//   You may obtain a copy of the Apache License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the Apache License with the above modification is
+//   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//   KIND, either express or implied. See the Apache License for the specific
+//   language governing permissions and limitations under the Apache License.
+//
+
+#ifndef FAR_BILINEAR_SUBDIVISION_TABLES_FACTORY_H
+#define FAR_BILINEAR_SUBDIVISION_TABLES_FACTORY_H
+
+#include "../version.h"
+
+#include "../far/subdivisionTables.h"
+#include "../far/meshFactory.h"
+#include "../far/subdivisionTablesFactory.h"
+
+#include <cassert>
+#include <vector>
+
+namespace OpenSubdiv {
+namespace OPENSUBDIV_VERSION {
+
+template <class T, class U> class FarMeshFactory;
+
+/// \brief A specialized factory for bilinear FarSubdivisionTables
+///
+/// Separating the factory allows us to isolate Far data structures from Hbr dependencies.
+///
+template <class T, class U> class FarBilinearSubdivisionTablesFactory {
+protected:
+    template <class X, class Y> friend class FarMeshFactory;
+
+    /// \brief Creates a FarSubdivisiontables instance.
+    ///
+    /// @param meshFactory  a valid FarMeshFactory instance
+    ///
+    /// @param batches      a vector of Kernel refinement batches : the factory 
+    ///                     will reserve and append refinement tasks
+    ///
+    static FarSubdivisionTables * Create( FarMeshFactory<T,U> * meshFactory, FarKernelBatchVector *batches );
+};
+
+// This factory walks the Hbr vertices and accumulates the weights and adjacency
+// (valance) information specific to the bilinear subdivision scheme. The results
+// are stored in a FarSubdivisionTable
+template <class T, class U> FarSubdivisionTables * 
+FarBilinearSubdivisionTablesFactory<T,U>::Create( FarMeshFactory<T,U> * meshFactory, FarKernelBatchVector * batches ) {
+
+    assert( meshFactory );
+     
+    int maxlevel = meshFactory->GetMaxLevel();
+    
+    std::vector<int> & remap = meshFactory->getRemappingTable();
+    
+    FarSubdivisionTablesFactory<T,U> tablesFactory( meshFactory->GetHbrMesh(),  maxlevel, remap );
+
+    FarSubdivisionTables * result = new FarSubdivisionTables(maxlevel, FarSubdivisionTables::BILINEAR);
+
+    // Allocate memory for the indexing tables
+    result->_F_ITa.resize(tablesFactory.GetNumFaceVerticesTotal(maxlevel)*2);
+    result->_F_IT.resize(tablesFactory.GetFaceVertsValenceSum());
+
+    result->_E_IT.resize(tablesFactory.GetNumEdgeVerticesTotal(maxlevel)*2);
+
+    result->_V_ITa.resize((tablesFactory.GetNumVertexVerticesTotal(maxlevel)
+                           - tablesFactory.GetNumVertexVerticesTotal(0))); // subtract corase cage vertices
+
+    // Prepare batch table
+    batches->reserve(maxlevel*5);
+
+    int vertexOffset = 0;
+    int F_IT_offset = 0;
+    int faceTableOffset = 0;
+    int edgeTableOffset = 0;
+    int vertTableOffset = 0;
+
+    int * F_ITa = result->_F_ITa.empty() ? 0 : &result->_F_ITa[0];
+    unsigned int * F_IT = result->_F_IT.empty() ? 0 : &result->_F_IT[0];
+    int * E_IT = result->_E_IT.empty() ? 0 : &result->_E_IT[0];
+    int * V_ITa = result->_V_ITa.empty() ? 0 : &result->_V_ITa[0];
+
+    for (int level=1; level<=maxlevel; ++level) {
+
+        // pointer to the first vertex corresponding to this level
+        vertexOffset = tablesFactory._faceVertIdx[level];
+        result->_vertsOffsets[level] = vertexOffset;
+
+        // Face vertices
+        // "For each vertex, gather all the vertices from the parent face."
+        int nFaceVertices = (int)tablesFactory._faceVertsList[level].size();
+        if (nFaceVertices > 0)
+            batches->push_back(FarKernelBatch( FarKernelBatch::BILINEAR_FACE_VERTEX,
+                                               level,
+                                               /*tableIndex=*/0,
+                                               /*start=*/0,
+                                               /*end=*/nFaceVertices,
+                                               faceTableOffset,
+                                               vertexOffset) );
+        vertexOffset += nFaceVertices;
+        faceTableOffset += nFaceVertices;
+
+        for (int i=0; i < nFaceVertices; ++i) {
+
+            HbrVertex<T> * v = tablesFactory._faceVertsList[level][i];
+            assert(v);
+
+            HbrFace<T> * f=v->GetParentFace();
+            assert(f);
+
+            int valence = f->GetNumVertices();
+
+            F_ITa[2*i+0] = F_IT_offset;
+            F_ITa[2*i+1] = valence;
+
+            for (int j=0; j<valence; ++j)
+                F_IT[F_IT_offset++] = remap[f->GetVertex(j)->GetID()];
+        }
+        F_ITa += nFaceVertices*2;
+
+        // Edge vertices
+
+        // "Average the end-points of the parent edge"
+        int nEdgeVertices = (int)tablesFactory._edgeVertsList[level].size();
+        if (nEdgeVertices > 0)
+            batches->push_back(FarKernelBatch( FarKernelBatch::BILINEAR_EDGE_VERTEX,
+                                               level,
+                                               /*tableIndex=*/0,
+                                               /*start=*/0,
+                                               /*end=*/nEdgeVertices,
+                                               edgeTableOffset,
+                                               vertexOffset) );
+        vertexOffset += nEdgeVertices;
+        edgeTableOffset += nEdgeVertices;
+        for (int i=0; i < nEdgeVertices; ++i) {
+
+            HbrVertex<T> * v = tablesFactory._edgeVertsList[level][i];
+            assert(v);
+            HbrHalfedge<T> * e = v->GetParentEdge();
+            assert(e);
+
+            // get the indices 2 vertices from the parent edge
+            E_IT[2*i+0] = remap[e->GetOrgVertex()->GetID()];
+            E_IT[2*i+1] = remap[e->GetDestVertex()->GetID()];
+
+        }
+        E_IT += nEdgeVertices*2;
+
+        // Vertex vertices
+
+        // "Pass down the parent vertex"
+        int nVertVertices = (int)tablesFactory._vertVertsList[level].size();
+        batches->push_back(FarKernelBatch( FarKernelBatch::BILINEAR_VERT_VERTEX,
+                                           level,
+                                           /*tableIndex=*/0,
+                                           /*start=*/0,
+                                           /*end=*/nVertVertices,
+                                           vertTableOffset,
+                                           vertexOffset));
+        vertexOffset += nVertVertices;
+        vertTableOffset += nVertVertices;
+        
+        for (int i=0; i < nVertVertices; ++i) {
+
+            HbrVertex<T> * v = tablesFactory._vertVertsList[level][i],
+                         * pv = v->GetParentVertex();
+            assert(v and pv);
+
+            V_ITa[i] = remap[pv->GetID()];
+
+        }
+        V_ITa += nVertVertices;
+    }
+    result->_vertsOffsets[maxlevel+1] = vertexOffset;
+    return result;
+}
+
+} // end namespace OPENSUBDIV_VERSION
+using namespace OPENSUBDIV_VERSION;
+
+} // end namespace OpenSubdiv
+
+#endif /* FAR_BILINEAR_SUBDIVISION_TABLES_FACTORY_H */

Added: trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/catmarkSubdivisionTablesFactory.h
===================================================================
--- trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/catmarkSubdivisionTablesFactory.h	                        (rev 0)
+++ trunk/lib/darwin-9.x.universal/opensubdiv/include/opensubdiv/far/catmarkSubdivisionTablesFactory.h	2014-05-20 12:41:26 UTC (rev 61359)
@@ -0,0 +1,347 @@
+//
+//   Copyright 2013 Pixar
+//
+//   Licensed under the Apache License, Version 2.0 (the "Apache License")
+//   with the following modification; you may not use this file except in
+//   compliance with the Apache License and the following modification to it:
+//   Section 6. Trademarks. is deleted and replaced with:
+//
+//   6. Trademarks. This License does not grant permission to use the trade
+//      names, trademarks, service marks, or product names of the Licensor
+//      and its affiliates, except as required to comply with Section 4(c) of
+//      the License and to reproduce the content of the NOTICE file.
+//
+//   You may obtain a copy of the Apache License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the Apache License with the above modification is
+//   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+//   KIND, either express or implied. See the Apache License for the specific
+//   language governing permissions and limitations under the Apache License.
+//
+

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list