Changeset View
Changeset View
Standalone View
Standalone View
intern/opensubdiv/internal/evaluator/evaluator_capi.cc
| Show All 30 Lines | |||||
| void setCoarsePositions(OpenSubdiv_Evaluator *evaluator, | void setCoarsePositions(OpenSubdiv_Evaluator *evaluator, | ||||
| const float *positions, | const float *positions, | ||||
| const int start_vertex_index, | const int start_vertex_index, | ||||
| const int num_vertices) | const int num_vertices) | ||||
| { | { | ||||
| evaluator->impl->eval_output->setCoarsePositions(positions, start_vertex_index, num_vertices); | evaluator->impl->eval_output->setCoarsePositions(positions, start_vertex_index, num_vertices); | ||||
| } | } | ||||
| void setVertexData(OpenSubdiv_Evaluator *evaluator, | |||||
| const float *extra_vertex_data, | |||||
| const int start_vertex_index, | |||||
| const int num_vertices) | |||||
| { | |||||
| evaluator->impl->eval_output->setVertexData( | |||||
| extra_vertex_data, start_vertex_index, num_vertices); | |||||
| } | |||||
| void setVaryingData(OpenSubdiv_Evaluator *evaluator, | void setVaryingData(OpenSubdiv_Evaluator *evaluator, | ||||
| const float *varying_data, | const float *varying_data, | ||||
| const int start_vertex_index, | const int start_vertex_index, | ||||
| const int num_vertices) | const int num_vertices) | ||||
| { | { | ||||
| evaluator->impl->eval_output->setVaryingData(varying_data, start_vertex_index, num_vertices); | evaluator->impl->eval_output->setVaryingData(varying_data, start_vertex_index, num_vertices); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | void evaluatePatchesLimit(OpenSubdiv_Evaluator *evaluator, | ||||
| float *P, | float *P, | ||||
| float *dPdu, | float *dPdu, | ||||
| float *dPdv) | float *dPdv) | ||||
| { | { | ||||
| evaluator->impl->eval_output->evaluatePatchesLimit( | evaluator->impl->eval_output->evaluatePatchesLimit( | ||||
| patch_coords, num_patch_coords, P, dPdu, dPdv); | patch_coords, num_patch_coords, P, dPdu, dPdv); | ||||
| } | } | ||||
| void evaluateVertexData(OpenSubdiv_Evaluator *evaluator, | |||||
| const int ptex_face_index, | |||||
| float face_u, | |||||
| float face_v, | |||||
| float extra_vertex_data[3]) | |||||
| { | |||||
| evaluator->impl->eval_output->evaluateVertexData( | |||||
| ptex_face_index, face_u, face_v, extra_vertex_data); | |||||
| } | |||||
| void evaluateVarying(OpenSubdiv_Evaluator *evaluator, | void evaluateVarying(OpenSubdiv_Evaluator *evaluator, | ||||
| const int ptex_face_index, | const int ptex_face_index, | ||||
| float face_u, | float face_u, | ||||
| float face_v, | float face_v, | ||||
| float varying[3]) | float varying[3]) | ||||
| { | { | ||||
| evaluator->impl->eval_output->evaluateVarying(ptex_face_index, face_u, face_v, varying); | evaluator->impl->eval_output->evaluateVarying(ptex_face_index, face_u, face_v, varying); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 75 Lines • ▼ Show 20 Lines | void wrapFVarSrcBuffer(struct OpenSubdiv_Evaluator *evaluator, | ||||
| struct OpenSubdiv_Buffer *src_buffer) | struct OpenSubdiv_Buffer *src_buffer) | ||||
| { | { | ||||
| evaluator->impl->eval_output->wrapFVarSrcBuffer(face_varying_channel, src_buffer); | evaluator->impl->eval_output->wrapFVarSrcBuffer(face_varying_channel, src_buffer); | ||||
| } | } | ||||
| void assignFunctionPointers(OpenSubdiv_Evaluator *evaluator) | void assignFunctionPointers(OpenSubdiv_Evaluator *evaluator) | ||||
| { | { | ||||
| evaluator->setCoarsePositions = setCoarsePositions; | evaluator->setCoarsePositions = setCoarsePositions; | ||||
| evaluator->setVertexData = setVertexData; | |||||
| evaluator->setVaryingData = setVaryingData; | evaluator->setVaryingData = setVaryingData; | ||||
| evaluator->setFaceVaryingData = setFaceVaryingData; | evaluator->setFaceVaryingData = setFaceVaryingData; | ||||
| evaluator->setCoarsePositionsFromBuffer = setCoarsePositionsFromBuffer; | evaluator->setCoarsePositionsFromBuffer = setCoarsePositionsFromBuffer; | ||||
| evaluator->setVaryingDataFromBuffer = setVaryingDataFromBuffer; | evaluator->setVaryingDataFromBuffer = setVaryingDataFromBuffer; | ||||
| evaluator->setFaceVaryingDataFromBuffer = setFaceVaryingDataFromBuffer; | evaluator->setFaceVaryingDataFromBuffer = setFaceVaryingDataFromBuffer; | ||||
| evaluator->refine = refine; | evaluator->refine = refine; | ||||
| evaluator->evaluateLimit = evaluateLimit; | evaluator->evaluateLimit = evaluateLimit; | ||||
| evaluator->evaluateVarying = evaluateVarying; | evaluator->evaluateVarying = evaluateVarying; | ||||
| evaluator->evaluateVertexData = evaluateVertexData; | |||||
| evaluator->evaluateFaceVarying = evaluateFaceVarying; | evaluator->evaluateFaceVarying = evaluateFaceVarying; | ||||
| evaluator->evaluatePatchesLimit = evaluatePatchesLimit; | evaluator->evaluatePatchesLimit = evaluatePatchesLimit; | ||||
| evaluator->getPatchMap = getPatchMap; | evaluator->getPatchMap = getPatchMap; | ||||
| evaluator->fillPatchArraysBuffer = fillPatchArraysBuffer; | evaluator->fillPatchArraysBuffer = fillPatchArraysBuffer; | ||||
| evaluator->wrapPatchIndexBuffer = wrapPatchIndexBuffer; | evaluator->wrapPatchIndexBuffer = wrapPatchIndexBuffer; | ||||
| evaluator->wrapPatchParamBuffer = wrapPatchParamBuffer; | evaluator->wrapPatchParamBuffer = wrapPatchParamBuffer; | ||||
| evaluator->wrapSrcBuffer = wrapSrcBuffer; | evaluator->wrapSrcBuffer = wrapSrcBuffer; | ||||
| evaluator->fillFVarPatchArraysBuffer = fillFVarPatchArraysBuffer; | evaluator->fillFVarPatchArraysBuffer = fillFVarPatchArraysBuffer; | ||||
| evaluator->wrapFVarPatchIndexBuffer = wrapFVarPatchIndexBuffer; | evaluator->wrapFVarPatchIndexBuffer = wrapFVarPatchIndexBuffer; | ||||
| evaluator->wrapFVarPatchParamBuffer = wrapFVarPatchParamBuffer; | evaluator->wrapFVarPatchParamBuffer = wrapFVarPatchParamBuffer; | ||||
| evaluator->wrapFVarSrcBuffer = wrapFVarSrcBuffer; | evaluator->wrapFVarSrcBuffer = wrapFVarSrcBuffer; | ||||
| } | } | ||||
| } // namespace | } // namespace | ||||
| OpenSubdiv_Evaluator *openSubdiv_createEvaluatorFromTopologyRefiner( | OpenSubdiv_Evaluator *openSubdiv_createEvaluatorFromTopologyRefiner( | ||||
| OpenSubdiv_TopologyRefiner *topology_refiner, | OpenSubdiv_TopologyRefiner *topology_refiner, | ||||
| eOpenSubdivEvaluator evaluator_type, | eOpenSubdivEvaluator evaluator_type, | ||||
| OpenSubdiv_EvaluatorCache *evaluator_cache) | OpenSubdiv_EvaluatorCache *evaluator_cache, | ||||
| const OpenSubdiv_EvaluatorSettings *settings) | |||||
| { | { | ||||
| OpenSubdiv_Evaluator *evaluator = MEM_new<OpenSubdiv_Evaluator>(__func__); | OpenSubdiv_Evaluator *evaluator = MEM_new<OpenSubdiv_Evaluator>(__func__); | ||||
| assignFunctionPointers(evaluator); | assignFunctionPointers(evaluator); | ||||
| evaluator->impl = openSubdiv_createEvaluatorInternal( | evaluator->impl = openSubdiv_createEvaluatorInternal(topology_refiner, | ||||
| topology_refiner, evaluator_type, evaluator_cache ? evaluator_cache->impl : nullptr); | evaluator_type, | ||||
| evaluator_cache ? evaluator_cache->impl : | |||||
| nullptr, | |||||
| settings); | |||||
| evaluator->type = evaluator->impl ? evaluator_type : static_cast<eOpenSubdivEvaluator>(0); | evaluator->type = evaluator->impl ? evaluator_type : static_cast<eOpenSubdivEvaluator>(0); | ||||
| return evaluator; | return evaluator; | ||||
| } | } | ||||
| void openSubdiv_deleteEvaluator(OpenSubdiv_Evaluator *evaluator) | void openSubdiv_deleteEvaluator(OpenSubdiv_Evaluator *evaluator) | ||||
| { | { | ||||
| openSubdiv_deleteEvaluatorInternal(evaluator->impl); | openSubdiv_deleteEvaluatorInternal(evaluator->impl); | ||||
| MEM_delete(evaluator); | MEM_delete(evaluator); | ||||
| Show All 28 Lines | |||||