7#ifndef OPENSUBDIV_EVALUATOR_IMPL_H_
8#define OPENSUBDIV_EVALUATOR_IMPL_H_
14#include <opensubdiv/far/patchMap.h>
15#include <opensubdiv/far/patchTable.h>
49 const int start_vertex_index,
50 const int num_vertices);
52 void setVertexData(
const float *
data,
const int start_vertex_index,
const int num_vertices);
55 const int start_vertex_index,
56 const int num_vertices);
62 const float *varying_data,
63 const int start_vertex_index,
64 const int num_vertices);
70 const int start_offset,
72 const int start_vertex_index,
73 const int num_vertices);
78 const int start_offset,
80 const int start_vertex_index,
81 const int num_vertices);
90 const int start_offset,
92 const int start_vertex_index,
93 const int num_vertices);
111 void evaluateVarying(
const int ptex_face_index,
float face_u,
float face_v,
float varying[3]);
116 const int ptex_face_index,
119 float face_varying[2]);
128 const int num_patch_coords,
139 int *patches_are_triangular);
BMesh const char void * data
gpu::VertBuf * get_face_varying_source_buf(const int face_varying_channel)
gpu::StorageBuf * get_face_varying_patch_index_buf(const int face_varying_channel)
void setVaryingData(const float *varying_data, const int start_vertex_index, const int num_vertices)
void evaluatePatchesLimit(const OpenSubdiv_PatchCoord *patch_coords, const int num_patch_coords, float *P, float *dPdu, float *dPdv)
gpu::StorageBuf * create_patch_arrays_buf()
gpu::StorageBuf * get_patch_param_buf()
void setSettings(const OpenSubdiv_EvaluatorSettings *settings)
void evaluateVarying(const int ptex_face_index, float face_u, float face_v, float varying[3])
void evaluateLimit(const int ptex_face_index, float face_u, float face_v, float P[3], float dPdu[3], float dPdv[3])
void setFaceVaryingData(const int face_varying_channel, const float *varying_data, const int start_vertex_index, const int num_vertices)
gpu::StorageBuf * create_face_varying_patch_array_buf(const int face_varying_channel)
EvalOutput * implementation_
void evaluateVertexData(const int ptex_face_index, float face_u, float face_v, float data[])
gpu::StorageBuf * get_patch_index_buf()
void evaluateFaceVarying(const int face_varying_channel, const int ptex_face_index, float face_u, float face_v, float face_varying[2])
int get_face_varying_source_offset(const int face_varying_channel) const
void setCoarsePositionsFromBuffer(const void *buffer, const int start_offset, const int stride, const int start_vertex_index, const int num_vertices)
gpu::VertBuf * get_source_data_buf()
gpu::VertBuf * get_source_buf()
void setVaryingDataFromBuffer(const void *buffer, const int start_offset, const int stride, const int start_vertex_index, const int num_vertices)
bool hasVertexData() const
EvalOutputAPI(EvalOutput *implementation, PatchMap *patch_map)
gpu::StorageBuf * get_face_varying_patch_param_buf(const int face_varying_channel)
void setFaceVaryingDataFromBuffer(const int face_varying_channel, const void *buffer, const int start_offset, const int stride, const int start_vertex_index, const int num_vertices)
void setVertexData(const float *data, const int start_vertex_index, const int num_vertices)
void getPatchMap(blender::gpu::VertBuf *patch_map_handles, blender::gpu::VertBuf *patch_map_quadtree, int *min_patch_face, int *max_patch_face, int *max_depth, int *patches_are_triangular)
void setCoarsePositions(const float *positions, const int start_vertex_index, const int num_vertices)
An quadtree-based map connecting coarse faces to their sub-patches.
OpenSubdiv_Evaluator * openSubdiv_createEvaluatorFromTopologyRefiner(blender::opensubdiv::TopologyRefinerImpl *topology_refiner, eOpenSubdivEvaluator evaluator_type, OpenSubdiv_EvaluatorCache *evaluator_cache_descr)
const OpenSubdiv::Far::PatchTable * patch_table
blender::opensubdiv::EvalOutputAPI * eval_output
const blender::opensubdiv::PatchMap * patch_map
eOpenSubdivEvaluator type