From ee93bf215d0c9b726003379a451c87e28d2231b6 Mon Sep 17 00:00:00 2001 From: George ElKoura Date: Fri, 10 Apr 2015 19:10:50 -0700 Subject: [PATCH] Renamed vtr_regression to far_regression Renamed the existing vtr_regression test to far_regression as the public API is meant to be the far library, and vtr_regression was really testing through the far API. Deleted the old far_regression as it is no longer relevant. --- regression/CMakeLists.txt | 4 +- regression/far_regression/CMakeLists.txt | 10 +- .../far_regression.cpp} | 0 .../init_shapes.h | 0 regression/far_regression/main.cpp | 636 ------------------ regression/vtr_regression/CMakeLists.txt | 44 -- 6 files changed, 8 insertions(+), 686 deletions(-) rename regression/{vtr_regression/vtr_regression.cpp => far_regression/far_regression.cpp} (100%) rename regression/{vtr_regression => far_regression}/init_shapes.h (100%) delete mode 100644 regression/far_regression/main.cpp delete mode 100644 regression/vtr_regression/CMakeLists.txt diff --git a/regression/CMakeLists.txt b/regression/CMakeLists.txt index ccff7192..26149b87 100644 --- a/regression/CMakeLists.txt +++ b/regression/CMakeLists.txt @@ -28,9 +28,7 @@ if (NOT NO_REGRESSION) add_subdirectory(hbr_regression) - #add_subdirectory(far_regression) - - add_subdirectory(vtr_regression) + add_subdirectory(far_regression) if(OPENGL_FOUND AND (GLEW_FOUND OR APPLE) AND GLFW_FOUND) add_subdirectory(osd_regression) diff --git a/regression/far_regression/CMakeLists.txt b/regression/far_regression/CMakeLists.txt index 40aea3e8..3c7c267a 100644 --- a/regression/far_regression/CMakeLists.txt +++ b/regression/far_regression/CMakeLists.txt @@ -25,16 +25,20 @@ include_directories("${PROJECT_SOURCE_DIR}/opensubdiv") set(SOURCE_FILES - main.cpp + far_regression.cpp ) +set(PLATFORM_LIBRARIES + "${OSD_LINK_TARGET}" +) _add_executable(far_regression ${SOURCE_FILES} + $ + $ + $ $ ) -target_link_libraries(far_regression) - install(TARGETS far_regression DESTINATION "${CMAKE_BINDIR_BASE}") diff --git a/regression/vtr_regression/vtr_regression.cpp b/regression/far_regression/far_regression.cpp similarity index 100% rename from regression/vtr_regression/vtr_regression.cpp rename to regression/far_regression/far_regression.cpp diff --git a/regression/vtr_regression/init_shapes.h b/regression/far_regression/init_shapes.h similarity index 100% rename from regression/vtr_regression/init_shapes.h rename to regression/far_regression/init_shapes.h diff --git a/regression/far_regression/main.cpp b/regression/far_regression/main.cpp deleted file mode 100644 index dd7e8999..00000000 --- a/regression/far_regression/main.cpp +++ /dev/null @@ -1,636 +0,0 @@ -// -// 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. -// - -#include - -#include -#include - -#include "../../regression/common/hbr_utils.h" - -// -// Regression testing matching Far to Hbr (default CPU implementation) -// -// Notes: -// - precision is currently held at 1e-6 -// -// - results cannot be bitwise identical as some vertex interpolations -// are not happening in the same order. -// -// - only vertex interpolation is being tested at the moment. -// -#define PRECISION 1e-6 - -//------------------------------------------------------------------------------ -// Vertex class implementation -struct xyzVV { - - xyzVV() { } - - xyzVV( int /*i*/ ) { } - - xyzVV( float x, float y, float z ) { _pos[0]=x; _pos[1]=y; _pos[2]=z; } - - xyzVV( const xyzVV & src ) { _pos[0]=src._pos[0]; _pos[1]=src._pos[1]; _pos[2]=src._pos[2]; } - - ~xyzVV( ) { } - - void AddWithWeight(const xyzVV& src, float weight) { - _pos[0]+=weight*src._pos[0]; - _pos[1]+=weight*src._pos[1]; - _pos[2]+=weight*src._pos[2]; - } - - void AddVaryingWithWeight(const xyzVV& , float) { } - - void Clear( void * =0 ) { _pos[0]=_pos[1]=_pos[2]=0.0f; } - - void SetPosition(float x, float y, float z) { _pos[0]=x; _pos[1]=y; _pos[2]=z; } - - void ApplyVertexEdit(const OpenSubdiv::HbrVertexEdit & edit) { - const float *src = edit.GetEdit(); - switch(edit.GetOperation()) { - case OpenSubdiv::HbrHierarchicalEdit::Set: - _pos[0] = src[0]; - _pos[1] = src[1]; - _pos[2] = src[2]; - break; - case OpenSubdiv::HbrHierarchicalEdit::Add: - _pos[0] += src[0]; - _pos[1] += src[1]; - _pos[2] += src[2]; - break; - case OpenSubdiv::HbrHierarchicalEdit::Subtract: - _pos[0] -= src[0]; - _pos[1] -= src[1]; - _pos[2] -= src[2]; - break; - } - } - - void ApplyVertexEdit(OpenSubdiv::FarVertexEdit const & edit) { - const float *src = edit.GetEdit(); - switch(edit.GetOperation()) { - case OpenSubdiv::FarVertexEdit::Set: - _pos[0] = src[0]; - _pos[1] = src[1]; - _pos[2] = src[2]; - break; - case OpenSubdiv::FarVertexEdit::Add: - _pos[0] += src[0]; - _pos[1] += src[1]; - _pos[2] += src[2]; - break; - } - } - - void ApplyMovingVertexEdit(const OpenSubdiv::HbrMovingVertexEdit &) { } - - const float * GetPos() const { return _pos; } - -private: - float _pos[3]; -}; - -//------------------------------------------------------------------------------ -class xyzFV; -typedef OpenSubdiv::HbrMesh xyzmesh; -typedef OpenSubdiv::HbrFace xyzface; -typedef OpenSubdiv::HbrVertex xyzvertex; -typedef OpenSubdiv::HbrHalfedge xyzhalfedge; -typedef OpenSubdiv::HbrFaceOperator xyzFaceOperator; -typedef OpenSubdiv::HbrVertexOperator xyzVertexOperator; - -typedef OpenSubdiv::FarMesh fMesh; -typedef OpenSubdiv::FarMeshFactory fMeshFactory; -typedef OpenSubdiv::FarSubdivisionTables fSubdivision; -typedef OpenSubdiv::FarPatchTables fPatches; - -static bool g_debugmode = false; -static bool g_dumphbr = false; - -//------------------------------------------------------------------------------ -// visual debugging using Maya -// python dictionary dump - requires the script createMesh.py to read into Maya -// format is : [ { 'verts':[(1, 0, 0),(2, 0, 0)], -// 'faces':[[1 2 3 4],[5,6,7,8]] }, ... ] -//------------------------------------------------------------------------------ -static void dumpVerts( xyzmesh * mesh, int level ) { - printf("\t'verts':[\t"); - for (int i=0, counter=0; iGetNumVertices(); ++i) { - xyzvertex * v = mesh->GetVertex(i); - if ( v->GetFace()->GetDepth()==level) { - printf("(%10f, %10f, %10f), ",v->GetData().GetPos()[0], - v->GetData().GetPos()[1], - v->GetData().GetPos()[2] ); - counter++; - } - if (counter!=0 and (counter+1)%6==0) printf("\n\t\t\t"); - } - printf("],\n"); -} - -//------------------------------------------------------------------------------ -static void dumpFaces( xyzmesh * mesh, int level ) { - int vertofs = 0; - for (int i=0; iGetNumVertices(); ++i) - if (mesh->GetVertex(i)->GetFace()->GetDepth()==level) { - vertofs = i; - break; - } - - printf("\t'faces':[\t"); - int nfaces = mesh->GetNumFaces(); - - for (int i=0, counter=0; iGetFace(i); - if (f->IsHole()) - continue; - if (f->GetDepth()==level) { - if (f->GetNumVertices()==4) - printf("[%6d, %6d, %6d, %6d], ", f->GetVertex(0)->GetID()-vertofs, - f->GetVertex(1)->GetID()-vertofs, - f->GetVertex(2)->GetID()-vertofs, - f->GetVertex(3)->GetID()-vertofs ); - else if (f->GetNumVertices()==3) - printf("[%6d, %6d, %6d], ", f->GetVertex(0)->GetID()-vertofs, - f->GetVertex(1)->GetID()-vertofs, - f->GetVertex(2)->GetID()-vertofs ); - - ++counter; - if (counter!=0 and (counter+4)%32==0) - printf("\n\t\t\t"); - } - } - printf("]\n"); -} - -//------------------------------------------------------------------------------ -// dump an Hbr mesh to console -static void dumpXYZMesh( xyzmesh * mesh, int level, Scheme /* loop */ =kCatmark ) { - printf("{ "); - dumpVerts(mesh, level); - dumpFaces(mesh, level); - printf("},\n"); -} - -//------------------------------------------------------------------------------ -static void dumpVerts( fMesh * mesh, int level ) { - std::vector & verts = mesh->GetVertices(); - - int firstvert = mesh->GetSubdivisionTables()->GetFirstVertexOffset(level), - numverts = mesh->GetSubdivisionTables()->GetNumVertices(level); - - printf("\t'verts':[\t"); - for (int i=firstvert; i<(firstvert+numverts); ++i) { - printf("(%10f, %10f, %10f), ",verts[i].GetPos()[0], - verts[i].GetPos()[1], - verts[i].GetPos()[2] ); - if (i!=0 and (i+1)%6==0) - printf("\n\t\t\t"); - } - printf("],\n"); -} - -//------------------------------------------------------------------------------ -static void dumpQuadFaces( fMesh * mesh, int level ) { - - unsigned int const * fverts = mesh->GetPatchTables()->GetFaceVertices(level); - - int nverts = mesh->GetPatchTables()->GetNumFaces(level) * 4; - - int ofs = mesh->GetSubdivisionTables()->GetFirstVertexOffset(level); - - printf("\t'faces':[\t"); - for (int i=0; iGetPatchTables()->GetFaceVertices(level); - - int nverts = mesh->GetPatchTables()->GetNumFaces(level) * 3; - - int ofs = mesh->GetSubdivisionTables()->GetFirstVertexOffset(level); - - printf("\t'faces':[\t"); - for (int i=0; iOnBoundary()) - return true; - - xyzvertex const * pv = v->GetParentVertex(); - if (pv) - return VertexOnBoundary(pv); - else { - xyzhalfedge const * pe = v->GetParentEdge(); - if (pe) { - return VertexOnBoundary(pe->GetOrgVertex()) or - VertexOnBoundary(pe->GetDestVertex()); - } else { - xyzface const * pf = v->GetParentFace(), * rootf = pf; - while (pf) { - pf = pf->GetParent(); - if (pf) - rootf=pf; - } - if (rootf) - for (int i=0; iGetNumVertices(); ++i) - if (rootf->GetVertex(i)->OnBoundary()) - return true; - } - } - return false; -} - -//------------------------------------------------------------------------------ -int checkMesh( char const * msg, xyzmesh * hmesh, int levels, Scheme scheme=kCatmark ) { - - assert(msg); - - int count=0; - float deltaAvg[3] = {0.0f, 0.0f, 0.0f}, - deltaCnt[3] = {0.0f, 0.0f, 0.0f}; - - fMeshFactory fact( hmesh, levels ); - fMesh * m = fact.Create( ); - static OpenSubdiv::FarComputeController computeController; - computeController.Refine(m); - - if (g_debugmode) { - for (int i=1; i<=levels; ++i) - if (g_dumphbr) - dumpXYZMesh( hmesh, i, scheme ); - else - dumpMesh( m, i, scheme ); - } else - printf("- %s (scheme=%d)\n", msg, scheme); - - std::vector const & remap = fact.GetRemappingTable(); - - int nverts = m->GetNumVertices(); - - // compare vertex results (only position for now - we need to expand w/ some vertex data) - for (int i=1; iGetVertex(i); - xyzVV & nv = m->GetVertex( remap[hv->GetID()] ); - - // boundary interpolation rules set to "none" produce "undefined" vertices on - // boundary vertices : far does not match hbr for those, so skip comparison. - if ( hmesh->GetInterpolateBoundaryMethod()==xyzmesh::k_InterpolateBoundaryNone and - VertexOnBoundary(hv) ) - continue; - -#ifdef __INTEL_COMPILER // remark #1572: floating-point equality and inequality comparisons are unreliable -#pragma warning disable 1572 -#endif - if ( hv->GetData().GetPos()[0] != nv.GetPos()[0] ) - deltaCnt[0]++; - if ( hv->GetData().GetPos()[1] != nv.GetPos()[1] ) - deltaCnt[1]++; - if ( hv->GetData().GetPos()[2] != nv.GetPos()[2] ) - deltaCnt[2]++; -#ifdef __INTEL_COMPILER -#pragma warning enable 1572 -#endif - - float delta[3] = { hv->GetData().GetPos()[0] - nv.GetPos()[0], - hv->GetData().GetPos()[1] - nv.GetPos()[1], - hv->GetData().GetPos()[2] - nv.GetPos()[2] }; - - deltaAvg[0]+=delta[0]; - deltaAvg[1]+=delta[1]; - deltaAvg[2]+=delta[2]; - - float dist = sqrtf( delta[0]*delta[0]+delta[1]*delta[1]+delta[2]*delta[2]); - if ( dist > PRECISION ) { - if (not g_debugmode) - printf("// HbrVertex %d fails : dist=%.10f (%.10f %.10f %.10f)" - " (%.10f %.10f %.10f)\n", i, dist, hv->GetData().GetPos()[0], - hv->GetData().GetPos()[1], - hv->GetData().GetPos()[2], - nv.GetPos()[0], - nv.GetPos()[1], - nv.GetPos()[2] ); - count++; - } - } - - if (deltaCnt[0]) - deltaAvg[0]/=deltaCnt[0]; - if (deltaCnt[1]) - deltaAvg[1]/=deltaCnt[1]; - if (deltaCnt[2]) - deltaAvg[2]/=deltaCnt[2]; - - if (not g_debugmode) { - printf(" delta ratio : (%d/%d %d/%d %d/%d)\n", (int)deltaCnt[0], nverts, - (int)deltaCnt[1], nverts, - (int)deltaCnt[2], nverts ); - printf(" average delta : (%.10f %.10f %.10f)\n", deltaAvg[0], - deltaAvg[1], - deltaAvg[2] ); - if (count==0) - printf(" success !\n"); - } - - delete hmesh; - delete m; - - return count; -} - -//------------------------------------------------------------------------------ -static void parseArgs(int argc, char ** argv) { - if (argc>1) { - for (int i=1; i(catmark_edgeonly.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_edgecorner -#include "../shapes/catmark_edgecorner.h" - total += checkMesh( "test_catmark_edgeonly", simpleHbr(catmark_edgecorner.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_pyramid -#include "../shapes/catmark_pyramid.h" - total += checkMesh( "test_catmark_pyramid", simpleHbr(catmark_pyramid.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_pyramid_creases0 -#include "../shapes/catmark_pyramid_creases0.h" - total += checkMesh( "test_catmark_pyramid_creases0", simpleHbr(catmark_pyramid_creases0.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_pyramid_creases1 -#include "../shapes/catmark_pyramid_creases1.h" - total += checkMesh( "test_catmark_pyramid_creases1", simpleHbr(catmark_pyramid_creases1.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube -#include "../shapes/catmark_cube.h" - total += checkMesh( "test_catmark_cube", simpleHbr(catmark_cube.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_creases0 -#include "../shapes/catmark_cube_creases0.h" - total += checkMesh( "test_catmark_cube_creases0", simpleHbr(catmark_cube_creases0.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_creases1 -#include "../shapes/catmark_cube_creases1.h" - total += checkMesh( "test_catmark_cube_creases1", simpleHbr(catmark_cube_creases1.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_corner0 -#include "../shapes/catmark_cube_corner0.h" - total += checkMesh( "test_catmark_cube_corner0", simpleHbr(catmark_cube_corner0.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_corner1 -#include "../shapes/catmark_cube_corner1.h" - total += checkMesh( "test_catmark_cube_corner1", simpleHbr(catmark_cube_corner1.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_corner2 -#include "../shapes/catmark_cube_corner2.h" - total += checkMesh( "test_catmark_cube_corner2", simpleHbr(catmark_cube_corner2.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_corner3 -#include "../shapes/catmark_cube_corner3.h" - total += checkMesh( "test_catmark_cube_corner3", simpleHbr(catmark_cube_corner3.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_cube_corner4 -#include "../shapes/catmark_cube_corner4.h" - total += checkMesh( "test_catmark_cube_corner4", simpleHbr(catmark_cube_corner4.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_dart_edgecorner -#include "../shapes/catmark_dart_edgecorner.h" - total += checkMesh( "test_catmark_dart_edgecorner", simpleHbr(catmark_dart_edgecorner.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_dart_edgeonly -#include "../shapes/catmark_dart_edgeonly.h" - total += checkMesh( "test_catmark_dart_edgeonly", simpleHbr(catmark_dart_edgeonly.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_flap -#include "../shapes/catmark_flap.h" - total += checkMesh( "test_catmark_flap", simpleHbr(catmark_flap.c_str(), kCatmark, 0), levels); -#endif - -#ifdef test_catmark_tent -#include "../shapes/catmark_tent.h" - total += checkMesh( "test_catmark_tent", simpleHbr(catmark_tent.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_tent_creases0 -#include "../shapes/catmark_tent_creases0.h" - total += checkMesh( "test_catmark_tent_creases0", simpleHbr(catmark_tent_creases0.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_tent_creases1 -#include "../shapes/catmark_tent_creases1.h" - total += checkMesh( "test_catmark_tent_creases1", simpleHbr(catmark_tent_creases1.c_str(), kCatmark, NULL), levels ); -#endif - -#ifdef test_catmark_square_hedit0 -#include "../shapes/catmark_square_hedit0.h" - total += checkMesh( "test_catmark_square_hedit0", simpleHbr(catmark_square_hedit0.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_square_hedit1 -#include "../shapes/catmark_square_hedit1.h" - total += checkMesh( "test_catmark_square_hedit1", simpleHbr(catmark_square_hedit1.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_square_hedit2 -#include "../shapes/catmark_square_hedit2.h" - total += checkMesh( "test_catmark_square_hedit2", simpleHbr(catmark_square_hedit2.c_str(), kCatmark, 0), levels ); -#endif - -#ifdef test_catmark_square_hedit3 -#include "../shapes/catmark_square_hedit3.h" - total += checkMesh( "test_catmark_square_hedit3", simpleHbr(catmark_square_hedit3.c_str(), kCatmark, 0), levels ); -#endif - - - -#ifdef test_loop_triangle_edgeonly -#include "../shapes/loop_triangle_edgeonly.h" - total += checkMesh( "test_loop_triangle_edgeonly", simpleHbr(loop_triangle_edgeonly.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_triangle_edgecorner -#include "../shapes/loop_triangle_edgecorner.h" - total += checkMesh( "test_loop_triangle_edgecorner", simpleHbr(loop_triangle_edgecorner.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_saddle_edgeonly -#include "../shapes/loop_saddle_edgeonly.h" - total += checkMesh( "test_loop_saddle_edgeonly", simpleHbr(loop_saddle_edgeonly.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_saddle_edgecorner -#include "../shapes/loop_saddle_edgecorner.h" - total += checkMesh( "test_loop_saddle_edgecorner", simpleHbr(loop_saddle_edgecorner.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_icosahedron -#include "../shapes/loop_icosahedron.h" - total += checkMesh( "test_loop_icosahedron", simpleHbr(loop_icosahedron.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_cube -#include "../shapes/loop_cube.h" - total += checkMesh( "test_loop_cube", simpleHbr(loop_cube.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_cube_creases0 -#include "../shapes/loop_cube_creases0.h" - total += checkMesh( "test_loop_cube_creases0", simpleHbr(loop_cube_creases0.c_str(), kLoop, 0), levels, kLoop ); -#endif - -#ifdef test_loop_cube_creases1 -#include "../shapes/loop_cube_creases1.h" - total += checkMesh( "test_loop_cube_creases1", simpleHbr(loop_cube_creases1.c_str(), kLoop, 0), levels, kLoop ); -#endif - - - -#ifdef test_bilinear_cube -#include "../shapes/bilinear_cube.h" - total += checkMesh( "test_bilinear_cube", simpleHbr(bilinear_cube.c_str(), kBilinear, 0), levels, kBilinear ); -#endif - - - if (g_debugmode) - printf("]\n"); - else { - if (total==0) - printf("All tests passed.\n"); - else - printf("Total failures : %d\n", total); - } -} - -//------------------------------------------------------------------------------ diff --git a/regression/vtr_regression/CMakeLists.txt b/regression/vtr_regression/CMakeLists.txt deleted file mode 100644 index c2a1331f..00000000 --- a/regression/vtr_regression/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -# -# 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. -# - -include_directories("${PROJECT_SOURCE_DIR}/opensubdiv") - -set(SOURCE_FILES - vtr_regression.cpp -) - -set(PLATFORM_LIBRARIES - "${OSD_LINK_TARGET}" -) - -_add_executable(vtr_regression - ${SOURCE_FILES} - $ - $ - $ - $ -) - -install(TARGETS vtr_regression DESTINATION "${CMAKE_BINDIR_BASE}") -