mirror of
https://github.com/PixarAnimationStudios/OpenSubdiv
synced 2025-01-11 17:10:08 +00:00
Remove FarMesh dependency from Osd*Context. The context constructor takes
subdivision tables and vertex edit tables directly.
This commit is contained in:
parent
061c861dbf
commit
d960990063
@ -69,7 +69,8 @@ public:
|
|||||||
|
|
||||||
int numVertices = farMesh->GetNumVertices();
|
int numVertices = farMesh->GetNumVertices();
|
||||||
_vertexBuffer = OpenSubdiv::OsdCpuGLVertexBuffer::Create(3, numVertices);
|
_vertexBuffer = OpenSubdiv::OsdCpuGLVertexBuffer::Create(3, numVertices);
|
||||||
_computeContext = OpenSubdiv::OsdCpuComputeContext::Create(farMesh);
|
_computeContext = OpenSubdiv::OsdCpuComputeContext::Create(
|
||||||
|
farMesh->GetSubdivisionTables(), farMesh->GetVertexEditTables());
|
||||||
_kernelBatches = farMesh->GetKernelBatches();
|
_kernelBatches = farMesh->GetKernelBatches();
|
||||||
|
|
||||||
OpenSubdiv::OsdUtilPatchPartitioner partitioner(farMesh->GetPatchTables(), partitionPerFace);
|
OpenSubdiv::OsdUtilPatchPartitioner partitioner(farMesh->GetPatchTables(), partitionPerFace);
|
||||||
|
@ -518,7 +518,7 @@ createOsdMesh( const std::string &shape, int level, Scheme scheme=kCatmark ) {
|
|||||||
|
|
||||||
// Create a Compute context, used to "pose" the vertices
|
// Create a Compute context, used to "pose" the vertices
|
||||||
delete g_computeCtx;
|
delete g_computeCtx;
|
||||||
g_computeCtx = OsdCpuComputeContext::Create(g_fmesh);
|
g_computeCtx = OsdCpuComputeContext::Create(g_fmesh->GetSubdivisionTables(), g_fmesh->GetVertexEditTables());
|
||||||
|
|
||||||
g_computeCtrl.Refine( g_computeCtx, g_fmesh->GetKernelBatches(), g_vertexData, g_varyingData );
|
g_computeCtrl.Refine( g_computeCtx, g_fmesh->GetKernelBatches(), g_vertexData, g_varyingData );
|
||||||
|
|
||||||
@ -526,7 +526,7 @@ createOsdMesh( const std::string &shape, int level, Scheme scheme=kCatmark ) {
|
|||||||
|
|
||||||
// Create eval context & data buffers
|
// Create eval context & data buffers
|
||||||
delete g_evalCtx;
|
delete g_evalCtx;
|
||||||
g_evalCtx = OsdCpuEvalLimitContext::Create(g_fmesh, /*requireFVarData*/ true);
|
g_evalCtx = OsdCpuEvalLimitContext::Create(g_fmesh->GetPatchTables(), /*requireFVarData*/ true);
|
||||||
|
|
||||||
delete g_Q;
|
delete g_Q;
|
||||||
g_Q = OsdCpuGLVertexBuffer::Create(6,nsamples);
|
g_Q = OsdCpuGLVertexBuffer::Create(6,nsamples);
|
||||||
|
@ -843,7 +843,7 @@ MStatus OsdPolySmooth::compute( const MPlug& plug, MDataBlock& data ) {
|
|||||||
static OpenSubdiv::OsdCpuComputeController computeController = OpenSubdiv::OsdCpuComputeController();
|
static OpenSubdiv::OsdCpuComputeController computeController = OpenSubdiv::OsdCpuComputeController();
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuComputeController::ComputeContext *computeContext =
|
OpenSubdiv::OsdCpuComputeController::ComputeContext *computeContext =
|
||||||
OpenSubdiv::OsdCpuComputeController::ComputeContext::Create(farMesh);
|
OpenSubdiv::OsdCpuComputeController::ComputeContext::Create(farMesh->GetSubdivisionTables(), farMesh->GetVertexEditTables());
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuVertexBuffer *vertexBuffer =
|
OpenSubdiv::OsdCpuVertexBuffer *vertexBuffer =
|
||||||
OpenSubdiv::OsdCpuVertexBuffer::Create(numVertexElements, numFarVerts );
|
OpenSubdiv::OsdCpuVertexBuffer::Create(numVertexElements, numFarVerts );
|
||||||
|
@ -338,7 +338,8 @@ createOsdContext(int level)
|
|||||||
|
|
||||||
g_farmesh = meshFactory.Create();
|
g_farmesh = meshFactory.Create();
|
||||||
|
|
||||||
g_osdComputeContext = OpenSubdiv::OsdCpuComputeContext::Create(g_farmesh);
|
g_osdComputeContext = OpenSubdiv::OsdCpuComputeContext::Create(
|
||||||
|
g_farmesh->GetSubdivisionTables(), g_farmesh->GetVertexEditTables());
|
||||||
|
|
||||||
delete hmesh;
|
delete hmesh;
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ FarComputeController::ApplyVertexEdits(FarKernelBatch const &batch, CONTEXT *con
|
|||||||
|
|
||||||
typename CONTEXT::VertexType *vsrc = &context->GetVertices().at(0);
|
typename CONTEXT::VertexType *vsrc = &context->GetVertices().at(0);
|
||||||
|
|
||||||
FarVertexEditTables const * vertEdit = context->GetVertexEdit();
|
FarVertexEditTables const * vertEdit = context->GetVertexEditTables();
|
||||||
|
|
||||||
if (vertEdit)
|
if (vertEdit)
|
||||||
vertEdit->computeVertexEdits( batch.GetTableIndex(),
|
vertEdit->computeVertexEdits( batch.GetTableIndex(),
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
U & GetVertex(int index) { return _vertices[index]; }
|
U & GetVertex(int index) { return _vertices[index]; }
|
||||||
|
|
||||||
/// \brief Returns vertex edit tables
|
/// \brief Returns vertex edit tables
|
||||||
FarVertexEditTables const * GetVertexEdit() const { return _vertexEditTables; }
|
FarVertexEditTables const * GetVertexEditTables() const { return _vertexEditTables; }
|
||||||
|
|
||||||
/// \brief True if the mesh tables support the feature-adaptive mode.
|
/// \brief True if the mesh tables support the feature-adaptive mode.
|
||||||
bool IsFeatureAdaptive() const { return _patchTables->IsFeatureAdaptive(); }
|
bool IsFeatureAdaptive() const { return _patchTables->IsFeatureAdaptive(); }
|
||||||
|
@ -565,8 +565,8 @@ FarSubdivisionTablesFactory<T,U>::Splice(FarMeshVector const &meshes, FarKernelB
|
|||||||
}
|
}
|
||||||
batches->push_back(batch);
|
batches->push_back(batch);
|
||||||
}
|
}
|
||||||
editTableIndexOffset += meshes[i]->GetVertexEdit() ?
|
editTableIndexOffset += meshes[i]->GetVertexEditTables() ?
|
||||||
meshes[i]->GetVertexEdit()->GetNumBatches() : 0;
|
meshes[i]->GetVertexEditTables()->GetNumBatches() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// count verts offsets
|
// count verts offsets
|
||||||
|
@ -215,7 +215,7 @@ FarVertexEditTablesFactory<T, U>::Splice(FarMeshVector const &meshes) {
|
|||||||
|
|
||||||
// at this moment, don't merge vertex edit tables (separate batch)
|
// at this moment, don't merge vertex edit tables (separate batch)
|
||||||
for (size_t i = 0; i < meshes.size(); ++i) {
|
for (size_t i = 0; i < meshes.size(); ++i) {
|
||||||
const FarVertexEditTables *vertexEditTables = meshes[i]->GetVertexEdit();
|
const FarVertexEditTables *vertexEditTables = meshes[i]->GetVertexEditTables();
|
||||||
if (not vertexEditTables) continue;
|
if (not vertexEditTables) continue;
|
||||||
|
|
||||||
// copy each edit batch XXX:inefficient copy
|
// copy each edit batch XXX:inefficient copy
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
// language governing permissions and limitations under the Apache License.
|
// language governing permissions and limitations under the Apache License.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../osd/clComputeContext.h"
|
#include "../osd/clComputeContext.h"
|
||||||
#include "../osd/clKernelBundle.h"
|
#include "../osd/clKernelBundle.h"
|
||||||
|
|
||||||
@ -100,34 +99,32 @@ OsdCLHEditTable::GetPrimvarWidth() const {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
OsdCLComputeContext::OsdCLComputeContext(FarMesh<OsdVertex> const *farMesh,
|
OsdCLComputeContext::OsdCLComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
cl_context clContext)
|
FarVertexEditTables const *vertexEditTables,
|
||||||
|
cl_context clContext)
|
||||||
: _clQueue(NULL), _kernelBundle(NULL) {
|
: _clQueue(NULL), _kernelBundle(NULL) {
|
||||||
|
|
||||||
FarSubdivisionTables const * farTables = farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
_tables.resize(farTables->GetNumTables(), 0);
|
_tables.resize(subdivisionTables->GetNumTables(), 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = new OsdCLTable(farTables->Get_E_IT(), clContext);
|
_tables[FarSubdivisionTables::E_IT] = new OsdCLTable(subdivisionTables->Get_E_IT(), clContext);
|
||||||
_tables[FarSubdivisionTables::V_IT] = new OsdCLTable(farTables->Get_V_IT(), clContext);
|
_tables[FarSubdivisionTables::V_IT] = new OsdCLTable(subdivisionTables->Get_V_IT(), clContext);
|
||||||
_tables[FarSubdivisionTables::V_ITa] = new OsdCLTable(farTables->Get_V_ITa(), clContext);
|
_tables[FarSubdivisionTables::V_ITa] = new OsdCLTable(subdivisionTables->Get_V_ITa(), clContext);
|
||||||
_tables[FarSubdivisionTables::E_W] = new OsdCLTable(farTables->Get_E_W(), clContext);
|
_tables[FarSubdivisionTables::E_W] = new OsdCLTable(subdivisionTables->Get_E_W(), clContext);
|
||||||
_tables[FarSubdivisionTables::V_W] = new OsdCLTable(farTables->Get_V_W(), clContext);
|
_tables[FarSubdivisionTables::V_W] = new OsdCLTable(subdivisionTables->Get_V_W(), clContext);
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
_tables[FarSubdivisionTables::F_IT] = new OsdCLTable(farTables->Get_F_IT(), clContext);
|
_tables[FarSubdivisionTables::F_IT] = new OsdCLTable(subdivisionTables->Get_F_IT(), clContext);
|
||||||
_tables[FarSubdivisionTables::F_ITa] = new OsdCLTable(farTables->Get_F_ITa(), clContext);
|
_tables[FarSubdivisionTables::F_ITa] = new OsdCLTable(subdivisionTables->Get_F_ITa(), clContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit =
|
const FarVertexEditTables::VertexEditBatch & edit =
|
||||||
editTables->GetBatch(i);
|
vertexEditTables->GetBatch(i);
|
||||||
_editTables.push_back(new OsdCLHEditTable(edit, clContext));
|
_editTables.push_back(new OsdCLHEditTable(edit, clContext));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -198,9 +195,11 @@ OsdCLComputeContext::GetCommandQueue() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdCLComputeContext *
|
OsdCLComputeContext *
|
||||||
OsdCLComputeContext::Create(FarMesh<OsdVertex> const *farmesh, cl_context clContext) {
|
OsdCLComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
|
cl_context clContext) {
|
||||||
|
|
||||||
return new OsdCLComputeContext(farmesh, clContext);
|
return new OsdCLComputeContext(subdivisionTables, vertexEditTables, clContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace OPENSUBDIV_VERSION
|
} // end namespace OPENSUBDIV_VERSION
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
#include "../osd/nonCopyable.h"
|
#include "../osd/nonCopyable.h"
|
||||||
@ -103,11 +103,14 @@ class OsdCLComputeContext : public OsdNonCopyable<OsdCLComputeContext> {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdCLComputeContext instance
|
/// Creates an OsdCLComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
|
///
|
||||||
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
///
|
///
|
||||||
/// @param clContext a valid active OpenCL context
|
/// @param clContext a valid active OpenCL context
|
||||||
///
|
///
|
||||||
static OsdCLComputeContext * Create(FarMesh<OsdVertex> const *farmesh,
|
static OsdCLComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
cl_context clContext);
|
cl_context clContext);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
@ -170,7 +173,8 @@ public:
|
|||||||
void SetCommandQueue(cl_command_queue queue);
|
void SetCommandQueue(cl_command_queue queue);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdCLComputeContext(FarMesh<OsdVertex> const *farMesh,
|
explicit OsdCLComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
cl_context clContext);
|
cl_context clContext);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
// language governing permissions and limitations under the Apache License.
|
// language governing permissions and limitations under the Apache License.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../far/dispatcher.h"
|
#include "../far/dispatcher.h"
|
||||||
#include "../far/subdivisionTables.h"
|
#include "../far/subdivisionTables.h"
|
||||||
|
|
||||||
@ -103,33 +102,30 @@ OsdCpuHEditTable::GetPrimvarWidth() const {
|
|||||||
return _primvarWidth;
|
return _primvarWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
OsdCpuComputeContext::OsdCpuComputeContext(FarMesh<OsdVertex> const *farMesh) {
|
OsdCpuComputeContext::OsdCpuComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
FarSubdivisionTables const * farTables =
|
|
||||||
farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
_tables.resize(farTables->GetNumTables(), 0);
|
_tables.resize(subdivisionTables->GetNumTables(), 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = new OsdCpuTable(farTables->Get_E_IT());
|
_tables[FarSubdivisionTables::E_IT] = new OsdCpuTable(subdivisionTables->Get_E_IT());
|
||||||
_tables[FarSubdivisionTables::V_IT] = new OsdCpuTable(farTables->Get_V_IT());
|
_tables[FarSubdivisionTables::V_IT] = new OsdCpuTable(subdivisionTables->Get_V_IT());
|
||||||
_tables[FarSubdivisionTables::V_ITa] = new OsdCpuTable(farTables->Get_V_ITa());
|
_tables[FarSubdivisionTables::V_ITa] = new OsdCpuTable(subdivisionTables->Get_V_ITa());
|
||||||
_tables[FarSubdivisionTables::E_W] = new OsdCpuTable(farTables->Get_E_W());
|
_tables[FarSubdivisionTables::E_W] = new OsdCpuTable(subdivisionTables->Get_E_W());
|
||||||
_tables[FarSubdivisionTables::V_W] = new OsdCpuTable(farTables->Get_V_W());
|
_tables[FarSubdivisionTables::V_W] = new OsdCpuTable(subdivisionTables->Get_V_W());
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
_tables[FarSubdivisionTables::F_IT] = new OsdCpuTable(farTables->Get_F_IT());
|
_tables[FarSubdivisionTables::F_IT] = new OsdCpuTable(subdivisionTables->Get_F_IT());
|
||||||
_tables[FarSubdivisionTables::F_ITa] = new OsdCpuTable(farTables->Get_F_ITa());
|
_tables[FarSubdivisionTables::F_ITa] = new OsdCpuTable(subdivisionTables->Get_F_ITa());
|
||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit =
|
const FarVertexEditTables::VertexEditBatch & edit =
|
||||||
editTables->GetBatch(i);
|
vertexEditTables->GetBatch(i);
|
||||||
|
|
||||||
_editTables.push_back(new OsdCpuHEditTable(edit));
|
_editTables.push_back(new OsdCpuHEditTable(edit));
|
||||||
}
|
}
|
||||||
@ -179,9 +175,10 @@ OsdCpuComputeContext::GetCurrentVaryingBuffer() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdCpuComputeContext *
|
OsdCpuComputeContext *
|
||||||
OsdCpuComputeContext::Create(FarMesh<OsdVertex> const *farmesh) {
|
OsdCpuComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
|
|
||||||
return new OsdCpuComputeContext(farmesh);
|
return new OsdCpuComputeContext(subdivisionTables, vertexEditTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end namespace OPENSUBDIV_VERSION
|
} // end namespace OPENSUBDIV_VERSION
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../far/subdivisionTables.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
@ -97,9 +96,12 @@ class OsdCpuComputeContext : OsdNonCopyable<OsdCpuComputeContext> {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdCpuComputeContext instance
|
/// Creates an OsdCpuComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
///
|
///
|
||||||
static OsdCpuComputeContext * Create(FarMesh<OsdVertex> const *farmesh);
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
|
///
|
||||||
|
static OsdCpuComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
virtual ~OsdCpuComputeContext();
|
virtual ~OsdCpuComputeContext();
|
||||||
@ -160,7 +162,8 @@ public:
|
|||||||
float * GetCurrentVaryingBuffer() const;
|
float * GetCurrentVaryingBuffer() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdCpuComputeContext(FarMesh<OsdVertex> const *farMesh);
|
explicit OsdCpuComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<OsdCpuTable*> _tables;
|
std::vector<OsdCpuTable*> _tables;
|
||||||
|
@ -34,21 +34,20 @@ namespace OpenSubdiv {
|
|||||||
namespace OPENSUBDIV_VERSION {
|
namespace OPENSUBDIV_VERSION {
|
||||||
|
|
||||||
OsdCpuEvalLimitContext *
|
OsdCpuEvalLimitContext *
|
||||||
OsdCpuEvalLimitContext::Create(FarMesh<OsdVertex> const * farmesh, bool requireFVarData) {
|
OsdCpuEvalLimitContext::Create(FarPatchTables const *patchTables, bool requireFVarData) {
|
||||||
|
|
||||||
assert(farmesh);
|
assert(patchTables);
|
||||||
|
|
||||||
// we do not support uniform yet
|
// we do not support uniform yet
|
||||||
if (not farmesh->GetPatchTables())
|
if (not patchTables->IsFeatureAdaptive())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return new OsdCpuEvalLimitContext(farmesh, requireFVarData);
|
return new OsdCpuEvalLimitContext(patchTables, requireFVarData);
|
||||||
}
|
}
|
||||||
|
|
||||||
OsdCpuEvalLimitContext::OsdCpuEvalLimitContext(FarMesh<OsdVertex> const * farmesh, bool requireFVarData) :
|
OsdCpuEvalLimitContext::OsdCpuEvalLimitContext(FarPatchTables const *patchTables, bool requireFVarData) :
|
||||||
OsdEvalLimitContext(farmesh) {
|
OsdEvalLimitContext(patchTables) {
|
||||||
|
|
||||||
FarPatchTables const * patchTables = farmesh->GetPatchTables();
|
|
||||||
assert(patchTables);
|
assert(patchTables);
|
||||||
|
|
||||||
// copy the data from the FarTables
|
// copy the data from the FarTables
|
||||||
|
@ -42,15 +42,15 @@ class OsdCpuEvalLimitContext : public OsdEvalLimitContext {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
/// \brief Factory
|
/// \brief Factory
|
||||||
/// Returns an EvalLimitContext from the given farmesh.
|
/// Returns an EvalLimitContext from the given far patch tables.
|
||||||
/// Note : the farmesh is expected to be feature-adaptive and have ptex
|
/// Note : the patchtables is expected to be feature-adaptive and have ptex
|
||||||
/// coordinates tables.
|
/// coordinates tables.
|
||||||
///
|
///
|
||||||
/// @param farmesh a pointer to an initialized farmesh
|
/// @param patchTables a pointer to an initialized FarPatchTables
|
||||||
///
|
///
|
||||||
/// @param requireFVarData flag for generating face-varying data
|
/// @param requireFVarData flag for generating face-varying data
|
||||||
///
|
///
|
||||||
static OsdCpuEvalLimitContext * Create(FarMesh<OsdVertex> const * farmesh,
|
static OsdCpuEvalLimitContext * Create(FarPatchTables const *patchTables,
|
||||||
bool requireFVarData=false);
|
bool requireFVarData=false);
|
||||||
|
|
||||||
virtual ~OsdCpuEvalLimitContext();
|
virtual ~OsdCpuEvalLimitContext();
|
||||||
@ -315,7 +315,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdCpuEvalLimitContext(FarMesh<OsdVertex> const * farmesh, bool requireFVarData);
|
explicit OsdCpuEvalLimitContext(FarPatchTables const *patchTables, bool requireFVarData);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
// language governing permissions and limitations under the Apache License.
|
// language governing permissions and limitations under the Apache License.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../osd/cudaComputeContext.h"
|
#include "../osd/cudaComputeContext.h"
|
||||||
|
|
||||||
#include <cuda_runtime.h>
|
#include <cuda_runtime.h>
|
||||||
@ -136,22 +135,21 @@ OsdCudaComputeContext::~OsdCudaComputeContext() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
OsdCudaComputeContext::initialize(FarMesh<OsdVertex> const *farMesh) {
|
OsdCudaComputeContext::initialize(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
FarSubdivisionTables const * farTables = farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
_tables.resize(farTables->GetNumTables(), 0);
|
_tables.resize(subdivisionTables->GetNumTables(), 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = OsdCudaTable::Create(farTables->Get_E_IT());
|
_tables[FarSubdivisionTables::E_IT] = OsdCudaTable::Create(subdivisionTables->Get_E_IT());
|
||||||
_tables[FarSubdivisionTables::V_IT] = OsdCudaTable::Create(farTables->Get_V_IT());
|
_tables[FarSubdivisionTables::V_IT] = OsdCudaTable::Create(subdivisionTables->Get_V_IT());
|
||||||
_tables[FarSubdivisionTables::V_ITa] = OsdCudaTable::Create(farTables->Get_V_ITa());
|
_tables[FarSubdivisionTables::V_ITa] = OsdCudaTable::Create(subdivisionTables->Get_V_ITa());
|
||||||
_tables[FarSubdivisionTables::E_W] = OsdCudaTable::Create(farTables->Get_E_W());
|
_tables[FarSubdivisionTables::E_W] = OsdCudaTable::Create(subdivisionTables->Get_E_W());
|
||||||
_tables[FarSubdivisionTables::V_W] = OsdCudaTable::Create(farTables->Get_V_W());
|
_tables[FarSubdivisionTables::V_W] = OsdCudaTable::Create(subdivisionTables->Get_V_W());
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
_tables[FarSubdivisionTables::F_IT] = OsdCudaTable::Create(farTables->Get_F_IT());
|
_tables[FarSubdivisionTables::F_IT] = OsdCudaTable::Create(subdivisionTables->Get_F_IT());
|
||||||
_tables[FarSubdivisionTables::F_ITa] = OsdCudaTable::Create(farTables->Get_F_ITa());
|
_tables[FarSubdivisionTables::F_ITa] = OsdCudaTable::Create(subdivisionTables->Get_F_ITa());
|
||||||
}
|
}
|
||||||
|
|
||||||
// error check
|
// error check
|
||||||
@ -162,13 +160,12 @@ OsdCudaComputeContext::initialize(FarMesh<OsdVertex> const *farMesh) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit =
|
const FarVertexEditTables::VertexEditBatch & edit =
|
||||||
editTables->GetBatch(i);
|
vertexEditTables->GetBatch(i);
|
||||||
|
|
||||||
_editTables.push_back(OsdCudaHEditTable::Create(edit));
|
_editTables.push_back(OsdCudaHEditTable::Create(edit));
|
||||||
}
|
}
|
||||||
@ -213,11 +210,12 @@ OsdCudaComputeContext::GetCurrentVaryingBuffer() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdCudaComputeContext *
|
OsdCudaComputeContext *
|
||||||
OsdCudaComputeContext::Create(FarMesh<OsdVertex> const *farmesh) {
|
OsdCudaComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
|
|
||||||
OsdCudaComputeContext *result = new OsdCudaComputeContext();
|
OsdCudaComputeContext *result = new OsdCudaComputeContext();
|
||||||
|
|
||||||
if (result->initialize(farmesh) == false) {
|
if (result->initialize(subdivisionTables, vertexEditTables) == false) {
|
||||||
delete result;
|
delete result;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
#include "../osd/vertexDescriptor.h"
|
#include "../osd/vertexDescriptor.h"
|
||||||
@ -104,9 +104,12 @@ class OsdCudaComputeContext : public OsdNonCopyable<OsdCudaComputeContext> {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdCudaComputeContext instance
|
/// Creates an OsdCudaComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
///
|
///
|
||||||
static OsdCudaComputeContext * Create(FarMesh<OsdVertex> const *farmesh);
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
|
///
|
||||||
|
static OsdCudaComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
virtual ~OsdCudaComputeContext();
|
virtual ~OsdCudaComputeContext();
|
||||||
@ -178,7 +181,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
OsdCudaComputeContext();
|
OsdCudaComputeContext();
|
||||||
|
|
||||||
bool initialize(FarMesh<OsdVertex> const *farMesh);
|
bool initialize(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<OsdCudaTable*> _tables;
|
std::vector<OsdCudaTable*> _tables;
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
// language governing permissions and limitations under the Apache License.
|
// language governing permissions and limitations under the Apache License.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../far/subdivisionTables.h"
|
#include "../far/subdivisionTables.h"
|
||||||
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/debug.h"
|
#include "../osd/debug.h"
|
||||||
#include "../osd/error.h"
|
#include "../osd/error.h"
|
||||||
#include "../osd/d3d11ComputeContext.h"
|
#include "../osd/d3d11ComputeContext.h"
|
||||||
@ -145,40 +145,39 @@ OsdD3D11ComputeHEditTable::GetPrimvarWidth() const {
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
OsdD3D11ComputeContext::OsdD3D11ComputeContext(
|
OsdD3D11ComputeContext::OsdD3D11ComputeContext(
|
||||||
FarMesh<OsdVertex> const *farMesh, ID3D11DeviceContext *deviceContext)
|
FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
|
ID3D11DeviceContext *deviceContext)
|
||||||
: _deviceContext(deviceContext),
|
: _deviceContext(deviceContext),
|
||||||
_currentVertexBufferUAV(0), _currentVaryingBufferUAV(0) {
|
_currentVertexBufferUAV(0), _currentVaryingBufferUAV(0) {
|
||||||
|
|
||||||
FarSubdivisionTables const * farTables = farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
// XXXtakahito: Although _tables size depends on table type, F_IT is set
|
// XXXtakahito: Although _tables size depends on table type, F_IT is set
|
||||||
// to NULL even in loop case, to determine the condition in
|
// to NULL even in loop case, to determine the condition in
|
||||||
// bindShaderStorageBuffer()...
|
// bindShaderStorageBuffer()...
|
||||||
_tables.resize(7, 0);
|
_tables.resize(7, 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = new OsdD3D11ComputeTable(farTables->Get_E_IT(), deviceContext, DXGI_FORMAT_R32_SINT);
|
_tables[FarSubdivisionTables::E_IT] = new OsdD3D11ComputeTable(subdivisionTables->Get_E_IT(), deviceContext, DXGI_FORMAT_R32_SINT);
|
||||||
_tables[FarSubdivisionTables::V_IT] = new OsdD3D11ComputeTable(farTables->Get_V_IT(), deviceContext, DXGI_FORMAT_R32_UINT);
|
_tables[FarSubdivisionTables::V_IT] = new OsdD3D11ComputeTable(subdivisionTables->Get_V_IT(), deviceContext, DXGI_FORMAT_R32_UINT);
|
||||||
_tables[FarSubdivisionTables::V_ITa] = new OsdD3D11ComputeTable(farTables->Get_V_ITa(), deviceContext, DXGI_FORMAT_R32_SINT);
|
_tables[FarSubdivisionTables::V_ITa] = new OsdD3D11ComputeTable(subdivisionTables->Get_V_ITa(), deviceContext, DXGI_FORMAT_R32_SINT);
|
||||||
_tables[FarSubdivisionTables::E_W] = new OsdD3D11ComputeTable(farTables->Get_E_W(), deviceContext, DXGI_FORMAT_R32_FLOAT);
|
_tables[FarSubdivisionTables::E_W] = new OsdD3D11ComputeTable(subdivisionTables->Get_E_W(), deviceContext, DXGI_FORMAT_R32_FLOAT);
|
||||||
_tables[FarSubdivisionTables::V_W] = new OsdD3D11ComputeTable(farTables->Get_V_W(), deviceContext, DXGI_FORMAT_R32_FLOAT);
|
_tables[FarSubdivisionTables::V_W] = new OsdD3D11ComputeTable(subdivisionTables->Get_V_W(), deviceContext, DXGI_FORMAT_R32_FLOAT);
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
_tables[FarSubdivisionTables::F_IT] = new OsdD3D11ComputeTable(farTables->Get_F_IT(), deviceContext, DXGI_FORMAT_R32_UINT);
|
_tables[FarSubdivisionTables::F_IT] = new OsdD3D11ComputeTable(subdivisionTables->Get_F_IT(), deviceContext, DXGI_FORMAT_R32_UINT);
|
||||||
_tables[FarSubdivisionTables::F_ITa] = new OsdD3D11ComputeTable(farTables->Get_F_ITa(), deviceContext, DXGI_FORMAT_R32_SINT);
|
_tables[FarSubdivisionTables::F_ITa] = new OsdD3D11ComputeTable(subdivisionTables->Get_F_ITa(), deviceContext, DXGI_FORMAT_R32_SINT);
|
||||||
} else {
|
} else {
|
||||||
_tables[FarSubdivisionTables::F_IT] = NULL;
|
_tables[FarSubdivisionTables::F_IT] = NULL;
|
||||||
_tables[FarSubdivisionTables::F_ITa] = NULL;
|
_tables[FarSubdivisionTables::F_ITa] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit =
|
const FarVertexEditTables::VertexEditBatch & edit =
|
||||||
editTables->GetBatch(i);
|
vertexEditTables->GetBatch(i);
|
||||||
_editTables.push_back(new OsdD3D11ComputeHEditTable(edit, deviceContext));
|
_editTables.push_back(new OsdD3D11ComputeHEditTable(edit, deviceContext));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -248,9 +247,11 @@ OsdD3D11ComputeContext::SetDeviceContext(ID3D11DeviceContext *deviceContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdD3D11ComputeContext *
|
OsdD3D11ComputeContext *
|
||||||
OsdD3D11ComputeContext::Create(FarMesh<OsdVertex> const *farmesh, ID3D11DeviceContext *deviceContext) {
|
OsdD3D11ComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
|
ID3D11DeviceContext *deviceContext) {
|
||||||
|
|
||||||
return new OsdD3D11ComputeContext(farmesh, deviceContext);
|
return new OsdD3D11ComputeContext(subdivisionTables, vertexEditTables, deviceContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
#include "../osd/vertexDescriptor.h"
|
#include "../osd/vertexDescriptor.h"
|
||||||
@ -105,11 +105,14 @@ class OsdD3D11ComputeContext : public OsdNonCopyable<OsdD3D11ComputeContext> {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdD3D11ComputeContext instance
|
/// Creates an OsdD3D11ComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
|
///
|
||||||
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
///
|
///
|
||||||
/// @param deviceContext D3D device
|
/// @param deviceContext D3D device
|
||||||
///
|
///
|
||||||
static OsdD3D11ComputeContext * Create(FarMesh<OsdVertex> const *farmesh,
|
static OsdD3D11ComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
ID3D11DeviceContext *deviceContext);
|
ID3D11DeviceContext *deviceContext);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
@ -185,7 +188,9 @@ public:
|
|||||||
void UnbindEditShaderStorageBuffers();
|
void UnbindEditShaderStorageBuffers();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdD3D11ComputeContext(FarMesh<OsdVertex> const *farMesh, ID3D11DeviceContext *deviceContext);
|
explicit OsdD3D11ComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables,
|
||||||
|
ID3D11DeviceContext *deviceContext);
|
||||||
|
|
||||||
void bindShaderStorageBuffers();
|
void bindShaderStorageBuffers();
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/patchTables.h"
|
||||||
#include "../osd/drawContext.h"
|
#include "../osd/drawContext.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/patchTables.h"
|
||||||
#include "../osd/drawRegistry.h"
|
#include "../osd/drawRegistry.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
|
|
||||||
|
@ -72,7 +72,8 @@ public:
|
|||||||
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, pd3d11Device);
|
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, pd3d11Device);
|
||||||
if (numVaryingElements)
|
if (numVaryingElements)
|
||||||
_vertexBuffer = VertexBuffer::Create(numVaryingElements, numVertices, pd3d11Device);
|
_vertexBuffer = VertexBuffer::Create(numVaryingElements, numVertices, pd3d11Device);
|
||||||
_computeContext = ComputeContext::Create(_farMesh);
|
_computeContext = ComputeContext::Create(_farMesh->GetSubdivisionTables(),
|
||||||
|
_farMesh->GetVertexEditTables());
|
||||||
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(),
|
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(),
|
||||||
_pd3d11DeviceContext,
|
_pd3d11DeviceContext,
|
||||||
bits.test(MeshFVarData));
|
bits.test(MeshFVarData));
|
||||||
@ -158,7 +159,9 @@ public:
|
|||||||
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, pd3d11Device);
|
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, pd3d11Device);
|
||||||
if (numVaryingElements)
|
if (numVaryingElements)
|
||||||
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices, pd3d11Device);
|
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices, pd3d11Device);
|
||||||
_computeContext = ComputeContext::Create(_farMesh, _pd3d11DeviceContext);
|
_computeContext = ComputeContext::Create(_farMesh->GetSubdivisionTables(),
|
||||||
|
_farMesh->GetVertexEditTables(),
|
||||||
|
_pd3d11DeviceContext);
|
||||||
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(),
|
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(),
|
||||||
_pd3d11DeviceContext,
|
_pd3d11DeviceContext,
|
||||||
bits.test(MeshFVarData));
|
bits.test(MeshFVarData));
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
namespace OpenSubdiv {
|
namespace OpenSubdiv {
|
||||||
namespace OPENSUBDIV_VERSION {
|
namespace OPENSUBDIV_VERSION {
|
||||||
|
|
||||||
OsdEvalLimitContext::OsdEvalLimitContext(FarMesh<OsdVertex> const * farmesh) {
|
OsdEvalLimitContext::OsdEvalLimitContext(FarPatchTables const *patchTables) {
|
||||||
|
|
||||||
_adaptive = farmesh->GetPatchTables()->IsFeatureAdaptive();
|
_adaptive = patchTables->IsFeatureAdaptive();
|
||||||
}
|
}
|
||||||
|
|
||||||
OsdEvalLimitContext::~OsdEvalLimitContext() {
|
OsdEvalLimitContext::~OsdEvalLimitContext() {
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/patchTables.h"
|
||||||
|
|
||||||
#include "../osd/nonCopyable.h"
|
#include "../osd/nonCopyable.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
@ -70,7 +70,7 @@ public:
|
|||||||
virtual ~OsdEvalLimitContext();
|
virtual ~OsdEvalLimitContext();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdEvalLimitContext(FarMesh<OsdVertex> const * farmesh);
|
explicit OsdEvalLimitContext(FarPatchTables const *patchTables);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _adaptive;
|
bool _adaptive;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/patchTables.h"
|
||||||
#include "../osd/drawContext.h"
|
#include "../osd/drawContext.h"
|
||||||
#include "../osd/drawRegistry.h"
|
#include "../osd/drawRegistry.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../osd/drawRegistry.h"
|
#include "../osd/drawRegistry.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ private:
|
|||||||
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices);
|
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices);
|
||||||
if (numVaryingElements)
|
if (numVaryingElements)
|
||||||
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices);
|
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices);
|
||||||
_computeContext = ComputeContext::Create(_farMesh);
|
_computeContext = ComputeContext::Create(_farMesh->GetSubdivisionTables(), _farMesh->GetVertexEditTables());
|
||||||
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(), bits.test(MeshFVarData));
|
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(), bits.test(MeshFVarData));
|
||||||
_drawContext->UpdateVertexTexture(_vertexBuffer);
|
_drawContext->UpdateVertexTexture(_vertexBuffer);
|
||||||
}
|
}
|
||||||
@ -264,7 +264,7 @@ private:
|
|||||||
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, _clContext);
|
_vertexBuffer = VertexBuffer::Create(numVertexElements, numVertices, _clContext);
|
||||||
if (numVaryingElements)
|
if (numVaryingElements)
|
||||||
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices, _clContext);
|
_varyingBuffer = VertexBuffer::Create(numVaryingElements, numVertices, _clContext);
|
||||||
_computeContext = ComputeContext::Create(_farMesh, _clContext);
|
_computeContext = ComputeContext::Create(_farMesh->GetSubdivisionTables(), _farMesh->GetVertexEditTables(), _clContext);
|
||||||
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(), bits.test(MeshFVarData));
|
_drawContext = DrawContext::Create(_farMesh->GetPatchTables(), bits.test(MeshFVarData));
|
||||||
_drawContext->UpdateVertexTexture(_vertexBuffer);
|
_drawContext->UpdateVertexTexture(_vertexBuffer);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
// language governing permissions and limitations under the Apache License.
|
// language governing permissions and limitations under the Apache License.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../osd/debug.h"
|
#include "../osd/debug.h"
|
||||||
#include "../osd/error.h"
|
#include "../osd/error.h"
|
||||||
#include "../osd/glslComputeContext.h"
|
#include "../osd/glslComputeContext.h"
|
||||||
@ -110,28 +109,26 @@ OsdGLSLComputeHEditTable::GetPrimvarWidth() const {
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
OsdGLSLComputeContext::OsdGLSLComputeContext(
|
OsdGLSLComputeContext::OsdGLSLComputeContext(
|
||||||
FarMesh<OsdVertex> const *farMesh)
|
FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables)
|
||||||
: _vertexTexture(0), _varyingTexture(0) {
|
: _vertexTexture(0), _varyingTexture(0) {
|
||||||
|
|
||||||
FarSubdivisionTables const * farTables =
|
|
||||||
farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
// XXXtakahito: Although _tables size depends on table type, F_IT is set
|
// XXXtakahito: Although _tables size depends on table type, F_IT is set
|
||||||
// to NULL even in loop case, to determine the condition in
|
// to NULL even in loop case, to determine the condition in
|
||||||
// bindShaderStorageBuffer()...
|
// bindShaderStorageBuffer()...
|
||||||
_tables.resize(7, 0);
|
_tables.resize(7, 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = new OsdGLSLComputeTable(farTables->Get_E_IT());
|
_tables[FarSubdivisionTables::E_IT] = new OsdGLSLComputeTable(subdivisionTables->Get_E_IT());
|
||||||
_tables[FarSubdivisionTables::V_IT] = new OsdGLSLComputeTable(farTables->Get_V_IT());
|
_tables[FarSubdivisionTables::V_IT] = new OsdGLSLComputeTable(subdivisionTables->Get_V_IT());
|
||||||
_tables[FarSubdivisionTables::V_ITa] = new OsdGLSLComputeTable(farTables->Get_V_ITa());
|
_tables[FarSubdivisionTables::V_ITa] = new OsdGLSLComputeTable(subdivisionTables->Get_V_ITa());
|
||||||
_tables[FarSubdivisionTables::E_W] = new OsdGLSLComputeTable(farTables->Get_E_W());
|
_tables[FarSubdivisionTables::E_W] = new OsdGLSLComputeTable(subdivisionTables->Get_E_W());
|
||||||
_tables[FarSubdivisionTables::V_W] = new OsdGLSLComputeTable(farTables->Get_V_W());
|
_tables[FarSubdivisionTables::V_W] = new OsdGLSLComputeTable(subdivisionTables->Get_V_W());
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
// catmark, bilinear
|
// catmark, bilinear
|
||||||
_tables[FarSubdivisionTables::F_IT] = new OsdGLSLComputeTable(farTables->Get_F_IT());
|
_tables[FarSubdivisionTables::F_IT] = new OsdGLSLComputeTable(subdivisionTables->Get_F_IT());
|
||||||
_tables[FarSubdivisionTables::F_ITa] = new OsdGLSLComputeTable(farTables->Get_F_ITa());
|
_tables[FarSubdivisionTables::F_ITa] = new OsdGLSLComputeTable(subdivisionTables->Get_F_ITa());
|
||||||
} else {
|
} else {
|
||||||
// loop
|
// loop
|
||||||
_tables[FarSubdivisionTables::F_IT] = NULL;
|
_tables[FarSubdivisionTables::F_IT] = NULL;
|
||||||
@ -139,13 +136,12 @@ OsdGLSLComputeContext::OsdGLSLComputeContext(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit =
|
const FarVertexEditTables::VertexEditBatch & edit =
|
||||||
editTables->GetBatch(i);
|
vertexEditTables->GetBatch(i);
|
||||||
_editTables.push_back(new OsdGLSLComputeHEditTable(edit));
|
_editTables.push_back(new OsdGLSLComputeHEditTable(edit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,9 +201,10 @@ OsdGLSLComputeContext::SetKernelBundle(
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdGLSLComputeContext *
|
OsdGLSLComputeContext *
|
||||||
OsdGLSLComputeContext::Create(FarMesh<OsdVertex> const *farmesh) {
|
OsdGLSLComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
|
|
||||||
return new OsdGLSLComputeContext(farmesh);
|
return new OsdGLSLComputeContext(subdivisionTables, vertexEditTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -27,7 +27,8 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/subdivisionTables.h"
|
||||||
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
#include "../osd/vertexDescriptor.h"
|
#include "../osd/vertexDescriptor.h"
|
||||||
@ -102,9 +103,12 @@ class OsdGLSLComputeContext {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdGLSLComputeContext instance
|
/// Creates an OsdGLSLComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
///
|
///
|
||||||
static OsdGLSLComputeContext * Create(FarMesh<OsdVertex> const *farmesh);
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
|
///
|
||||||
|
static OsdGLSLComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
virtual ~OsdGLSLComputeContext();
|
virtual ~OsdGLSLComputeContext();
|
||||||
@ -197,7 +201,8 @@ public:
|
|||||||
void UnbindEditShaderStorageBuffers();
|
void UnbindEditShaderStorageBuffers();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdGLSLComputeContext(FarMesh<OsdVertex> const *farMesh);
|
explicit OsdGLSLComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables);
|
||||||
|
|
||||||
void bindShaderStorageBuffers();
|
void bindShaderStorageBuffers();
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
|
||||||
#include "../far/subdivisionTables.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../osd/debug.h"
|
#include "../osd/debug.h"
|
||||||
#include "../osd/glslTransformFeedbackComputeContext.h"
|
#include "../osd/glslTransformFeedbackComputeContext.h"
|
||||||
@ -118,25 +117,23 @@ OsdGLSLTransformFeedbackHEditTable::GetPrimvarWidth() const {
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
OsdGLSLTransformFeedbackComputeContext::OsdGLSLTransformFeedbackComputeContext(
|
OsdGLSLTransformFeedbackComputeContext::OsdGLSLTransformFeedbackComputeContext(
|
||||||
FarMesh<OsdVertex> const *farMesh) :
|
FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) :
|
||||||
_vertexTexture(0), _varyingTexture(0) {
|
_vertexTexture(0), _varyingTexture(0) {
|
||||||
|
|
||||||
FarSubdivisionTables const * farTables =
|
|
||||||
farMesh->GetSubdivisionTables();
|
|
||||||
|
|
||||||
// allocate 5 or 7 tables
|
// allocate 5 or 7 tables
|
||||||
_tables.resize(7, 0);
|
_tables.resize(7, 0);
|
||||||
|
|
||||||
_tables[FarSubdivisionTables::E_IT] = new OsdGLSLTransformFeedbackTable(farTables->Get_E_IT(), GL_R32I);
|
_tables[FarSubdivisionTables::E_IT] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_E_IT(), GL_R32I);
|
||||||
_tables[FarSubdivisionTables::V_IT] = new OsdGLSLTransformFeedbackTable(farTables->Get_V_IT(), GL_R32UI);
|
_tables[FarSubdivisionTables::V_IT] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_V_IT(), GL_R32UI);
|
||||||
_tables[FarSubdivisionTables::V_ITa] = new OsdGLSLTransformFeedbackTable(farTables->Get_V_ITa(), GL_R32I);
|
_tables[FarSubdivisionTables::V_ITa] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_V_ITa(), GL_R32I);
|
||||||
_tables[FarSubdivisionTables::E_W] = new OsdGLSLTransformFeedbackTable(farTables->Get_E_W(), GL_R32F);
|
_tables[FarSubdivisionTables::E_W] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_E_W(), GL_R32F);
|
||||||
_tables[FarSubdivisionTables::V_W] = new OsdGLSLTransformFeedbackTable(farTables->Get_V_W(), GL_R32F);
|
_tables[FarSubdivisionTables::V_W] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_V_W(), GL_R32F);
|
||||||
|
|
||||||
if (farTables->GetNumTables() > 5) {
|
if (subdivisionTables->GetNumTables() > 5) {
|
||||||
// catmark, bilinear
|
// catmark, bilinear
|
||||||
_tables[FarSubdivisionTables::F_IT] = new OsdGLSLTransformFeedbackTable(farTables->Get_F_IT(), GL_R32UI);
|
_tables[FarSubdivisionTables::F_IT] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_F_IT(), GL_R32UI);
|
||||||
_tables[FarSubdivisionTables::F_ITa] = new OsdGLSLTransformFeedbackTable(farTables->Get_F_ITa(), GL_R32I);
|
_tables[FarSubdivisionTables::F_ITa] = new OsdGLSLTransformFeedbackTable(subdivisionTables->Get_F_ITa(), GL_R32I);
|
||||||
} else {
|
} else {
|
||||||
// loop
|
// loop
|
||||||
_tables[FarSubdivisionTables::F_IT] = NULL;
|
_tables[FarSubdivisionTables::F_IT] = NULL;
|
||||||
@ -144,12 +141,11 @@ OsdGLSLTransformFeedbackComputeContext::OsdGLSLTransformFeedbackComputeContext(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create hedit tables
|
// create hedit tables
|
||||||
FarVertexEditTables const *editTables = farMesh->GetVertexEdit();
|
if (vertexEditTables) {
|
||||||
if (editTables) {
|
int numEditBatches = vertexEditTables->GetNumBatches();
|
||||||
int numEditBatches = editTables->GetNumBatches();
|
|
||||||
_editTables.reserve(numEditBatches);
|
_editTables.reserve(numEditBatches);
|
||||||
for (int i = 0; i < numEditBatches; ++i) {
|
for (int i = 0; i < numEditBatches; ++i) {
|
||||||
const FarVertexEditTables::VertexEditBatch & edit = editTables->GetBatch(i);
|
const FarVertexEditTables::VertexEditBatch & edit = vertexEditTables->GetBatch(i);
|
||||||
_editTables.push_back(new OsdGLSLTransformFeedbackHEditTable(edit));
|
_editTables.push_back(new OsdGLSLTransformFeedbackHEditTable(edit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,9 +206,10 @@ OsdGLSLTransformFeedbackComputeContext::SetKernelBundle(OsdGLSLTransformFeedback
|
|||||||
}
|
}
|
||||||
|
|
||||||
OsdGLSLTransformFeedbackComputeContext *
|
OsdGLSLTransformFeedbackComputeContext *
|
||||||
OsdGLSLTransformFeedbackComputeContext::Create(FarMesh<OsdVertex> const *farmesh) {
|
OsdGLSLTransformFeedbackComputeContext::Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTables) {
|
||||||
|
|
||||||
return new OsdGLSLTransformFeedbackComputeContext(farmesh);
|
return new OsdGLSLTransformFeedbackComputeContext(subdivisionTables, vertexEditTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
|
||||||
#include "../far/mesh.h"
|
#include "../far/subdivisionTables.h"
|
||||||
#include "../far/vertexEditTables.h"
|
#include "../far/vertexEditTables.h"
|
||||||
#include "../osd/vertex.h"
|
#include "../osd/vertex.h"
|
||||||
#include "../osd/vertexDescriptor.h"
|
#include "../osd/vertexDescriptor.h"
|
||||||
@ -99,9 +99,12 @@ class OsdGLSLTransformFeedbackComputeContext {
|
|||||||
public:
|
public:
|
||||||
/// Creates an OsdGLSLTransformFeedbackComputeContext instance
|
/// Creates an OsdGLSLTransformFeedbackComputeContext instance
|
||||||
///
|
///
|
||||||
/// @param farmesh the FarMesh used for this Context.
|
/// @param subdivisionTables the FarSubdivisionTables used for this Context.
|
||||||
///
|
///
|
||||||
static OsdGLSLTransformFeedbackComputeContext * Create(FarMesh<OsdVertex> const *farmesh);
|
/// @param vertexEditTables the FarVertexEditTables used for this Context.
|
||||||
|
///
|
||||||
|
static OsdGLSLTransformFeedbackComputeContext * Create(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTabes);
|
||||||
|
|
||||||
/// Destructor
|
/// Destructor
|
||||||
virtual ~OsdGLSLTransformFeedbackComputeContext();
|
virtual ~OsdGLSLTransformFeedbackComputeContext();
|
||||||
@ -171,7 +174,8 @@ public:
|
|||||||
void UnbindEditTextures();
|
void UnbindEditTextures();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit OsdGLSLTransformFeedbackComputeContext(FarMesh<OsdVertex> const *farMesh);
|
explicit OsdGLSLTransformFeedbackComputeContext(FarSubdivisionTables const *subdivisionTables,
|
||||||
|
FarVertexEditTables const *vertexEditTabes);
|
||||||
|
|
||||||
void bindTexture(GLint samplerUniform, GLuint texture, int unit);
|
void bindTexture(GLint samplerUniform, GLuint texture, int unit);
|
||||||
|
|
||||||
|
@ -126,7 +126,8 @@ OsdUtilAdaptiveEvaluator::Initialize(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_computeContext = OsdCpuComputeContext::Create(fmesh);
|
_computeContext = OsdCpuComputeContext::Create(fmesh->GetSubdivisionTables(),
|
||||||
|
fmesh->GetVertexEditTables());
|
||||||
|
|
||||||
// Three elements (x/y/z) per refined point at every subdivision level
|
// Three elements (x/y/z) per refined point at every subdivision level
|
||||||
// defined by the farMesh. The coarse vertices seed the beginning of
|
// defined by the farMesh. The coarse vertices seed the beginning of
|
||||||
@ -156,14 +157,15 @@ OsdUtilAdaptiveEvaluator::Initialize(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// A context object used to store data used in refinement
|
// A context object used to store data used in refinement
|
||||||
_computeContext = OsdCpuComputeContext::Create(fmesh);
|
_computeContext = OsdCpuComputeContext::Create(fmesh->GetSubdivisionTables(),
|
||||||
|
fmesh->GetVertexEditTables());
|
||||||
|
|
||||||
// A context object used to store data used in fast limit surface
|
// A context object used to store data used in fast limit surface
|
||||||
// evaluation. This contains vectors of patches and associated
|
// evaluation. This contains vectors of patches and associated
|
||||||
// tables pulled and computed from the adaptive farMesh.
|
// tables pulled and computed from the adaptive farMesh.
|
||||||
// It also holds onto vertex buffer data through binds
|
// It also holds onto vertex buffer data through binds
|
||||||
_evalLimitContext = OsdCpuEvalLimitContext::Create(
|
_evalLimitContext = OsdCpuEvalLimitContext::Create(
|
||||||
fmesh, /*requierFVarData*/ false);
|
fmesh->GetPatchTables(), /*requierFVarData*/ false);
|
||||||
|
|
||||||
// A buffer with one float per target point to use when
|
// A buffer with one float per target point to use when
|
||||||
// evaluating interpolated weights
|
// evaluating interpolated weights
|
||||||
|
@ -359,7 +359,7 @@ OsdUtilMeshBatch<VERTEX_BUFFER, DRAW_CONTEXT, COMPUTE_CONTROLLER>::initialize(Co
|
|||||||
Base::setKernelBatches(farMultiMesh->GetKernelBatches());
|
Base::setKernelBatches(farMultiMesh->GetKernelBatches());
|
||||||
|
|
||||||
// create compute contexts
|
// create compute contexts
|
||||||
_computeContext = ComputeContext::Create(farMultiMesh);
|
_computeContext = ComputeContext::Create(farMultiMesh->GetSubdivisionTables(), farMultiMesh->GetVertexEditTables());
|
||||||
|
|
||||||
if (not _computeContext) return false;
|
if (not _computeContext) return false;
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ OsdUtilMeshBatch<VERTEX_BUFFER, DRAW_CONTEXT, OsdCLComputeController>::initializ
|
|||||||
Base::setKernelBatches(farMultiMesh->GetKernelBatches());
|
Base::setKernelBatches(farMultiMesh->GetKernelBatches());
|
||||||
|
|
||||||
// create compute contexts
|
// create compute contexts
|
||||||
_computeContext = ComputeContext::Create(farMultiMesh, _computeController->GetContext());
|
_computeContext = ComputeContext::Create(farMultiMesh->GetSubdivisionTables(), farMultiMesh->GetVertexEditTables(), _computeController->GetContext());
|
||||||
|
|
||||||
if (not _computeContext) return false;
|
if (not _computeContext) return false;
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ OsdUtilUniformEvaluator::Initialize(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_computeContext = OsdCpuComputeContext::Create(fmesh);
|
_computeContext = OsdCpuComputeContext::Create(fmesh->GetSubdivisionTables(), fmesh->GetVertexEditTables());
|
||||||
|
|
||||||
// Three elements per refined point
|
// Three elements per refined point
|
||||||
_vertexBuffer = OsdCpuVertexBuffer::Create(
|
_vertexBuffer = OsdCpuVertexBuffer::Create(
|
||||||
|
@ -315,7 +315,7 @@ checkMeshCPU( OpenSubdiv::FarMesh<OpenSubdiv::OsdVertex>* farmesh,
|
|||||||
|
|
||||||
static OpenSubdiv::OsdCpuComputeController *controller = new OpenSubdiv::OsdCpuComputeController();
|
static OpenSubdiv::OsdCpuComputeController *controller = new OpenSubdiv::OsdCpuComputeController();
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuComputeContext *context = OpenSubdiv::OsdCpuComputeContext::Create(farmesh);
|
OpenSubdiv::OsdCpuComputeContext *context = OpenSubdiv::OsdCpuComputeContext::Create(farmesh->GetSubdivisionTables(), farmesh->GetVertexEditTables());
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuVertexBuffer * vb = OpenSubdiv::OsdCpuVertexBuffer::Create(3, farmesh->GetNumVertices());
|
OpenSubdiv::OsdCpuVertexBuffer * vb = OpenSubdiv::OsdCpuVertexBuffer::Create(3, farmesh->GetNumVertices());
|
||||||
|
|
||||||
@ -335,7 +335,7 @@ checkMeshCPUGL( OpenSubdiv::FarMesh<OpenSubdiv::OsdVertex>* farmesh,
|
|||||||
|
|
||||||
static OpenSubdiv::OsdCpuComputeController *controller = new OpenSubdiv::OsdCpuComputeController();
|
static OpenSubdiv::OsdCpuComputeController *controller = new OpenSubdiv::OsdCpuComputeController();
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuComputeContext *context = OpenSubdiv::OsdCpuComputeContext::Create(farmesh);
|
OpenSubdiv::OsdCpuComputeContext *context = OpenSubdiv::OsdCpuComputeContext::Create(farmesh->GetSubdivisionTables(), farmesh->GetVertexEditTables());
|
||||||
|
|
||||||
OpenSubdiv::OsdCpuGLVertexBuffer * vb = OpenSubdiv::OsdCpuGLVertexBuffer::Create(3, farmesh->GetNumVertices());
|
OpenSubdiv::OsdCpuGLVertexBuffer * vb = OpenSubdiv::OsdCpuGLVertexBuffer::Create(3, farmesh->GetNumVertices());
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ checkMeshCL( OpenSubdiv::FarMesh<OpenSubdiv::OsdVertex>* farmesh,
|
|||||||
|
|
||||||
static OpenSubdiv::OsdCLComputeController *controller = new OpenSubdiv::OsdCLComputeController(g_clContext, g_clQueue);
|
static OpenSubdiv::OsdCLComputeController *controller = new OpenSubdiv::OsdCLComputeController(g_clContext, g_clQueue);
|
||||||
|
|
||||||
OpenSubdiv::OsdCLComputeContext *context = OpenSubdiv::OsdCLComputeContext::Create(farmesh, g_clContext);
|
OpenSubdiv::OsdCLComputeContext *context = OpenSubdiv::OsdCLComputeContext::Create(farmesh->GetSubdivisionTables(), farmesh->GetVertexEditTables(), g_clContext);
|
||||||
|
|
||||||
OpenSubdiv::OsdCLGLVertexBuffer * vb = OpenSubdiv::OsdCLGLVertexBuffer::Create(3, farmesh->GetNumVertices(), g_clContext);
|
OpenSubdiv::OsdCLGLVertexBuffer * vb = OpenSubdiv::OsdCLGLVertexBuffer::Create(3, farmesh->GetNumVertices(), g_clContext);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user