11using OpenSubdiv::Osd::PatchArray;
12using OpenSubdiv::Osd::PatchArrayVector;
19 const size_t patch_array_size =
sizeof(PatchArray);
20 const size_t patch_array_byte_site = patch_array_size * patch_arrays.size();
21 patch_arrays_buffer->
device_alloc(patch_arrays_buffer, patch_arrays.size());
22 patch_arrays_buffer->
bind_gpu(patch_arrays_buffer);
24 patch_arrays_buffer, 0, patch_array_byte_site, &patch_arrays[0]);
28 const StencilTable *varying_stencils,
29 const std::vector<const StencilTable *> &all_face_varying_stencils,
30 const int face_varying_width,
31 const PatchTable *patch_table,
39 all_face_varying_stencils,
55 patch_index_buffer->
wrap_device_handle(patch_index_buffer, patch_table->GetPatchIndexBuffer());
61 patch_param_buffer->
wrap_device_handle(patch_param_buffer, patch_table->GetPatchParamBuffer());
89 patch_index_buffer, patch_table->GetFVarPatchIndexBuffer(face_varying_channel));
97 patch_param_buffer, patch_table->GetFVarPatchParamBuffer(face_varying_channel));
GL stencil table (Shader Storage buffer)
void fillFVarPatchArraysBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_arrays_buffer) override
void wrapPatchIndexBuffer(OpenSubdiv_Buffer *patch_index_buffer) override
void wrapSrcBuffer(OpenSubdiv_Buffer *src_buffer) override
void fillPatchArraysBuffer(OpenSubdiv_Buffer *patch_arrays_buffer) override
void wrapPatchParamBuffer(OpenSubdiv_Buffer *patch_param_buffer) override
void wrapFVarPatchIndexBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_index_buffer) override
GpuEvalOutput(const StencilTable *vertex_stencils, const StencilTable *varying_stencils, const std::vector< const StencilTable * > &all_face_varying_stencils, const int face_varying_width, const PatchTable *patch_table, EvaluatorCache *evaluator_cache=NULL)
void wrapFVarPatchParamBuffer(const int face_varying_channel, OpenSubdiv_Buffer *patch_param_buffer) override
void wrapFVarSrcBuffer(const int face_varying_channel, OpenSubdiv_Buffer *src_buffer) override
void wrapSrcVertexDataBuffer(OpenSubdiv_Buffer *src_buffer) override
OpenSubdiv::Osd::EvaluatorCacheT< EVALUATOR > EvaluatorCache
GLPatchTable * getFVarPatchTable(const int face_varying_channel) const
GLPatchTable * getPatchTable() const
int getFVarSrcBufferOffset(const int face_varying_channel) const
GLVertexBuffer * getSrcBuffer() const
GLVertexBuffer * getSrcVertexDataBuffer() const
GLVertexBuffer * getFVarSrcBuffer(const int face_varying_channel) const
static void buildPatchArraysBufferFromVector(const PatchArrayVector &patch_arrays, OpenSubdiv_Buffer *patch_arrays_buffer)
void(* device_update)(const OpenSubdiv_Buffer *buffer, unsigned int start, unsigned int len, const void *data)
void(* bind_gpu)(const OpenSubdiv_Buffer *buffer)
void(* wrap_device_handle)(const OpenSubdiv_Buffer *buffer, uint64_t device_ptr)
void(* device_alloc)(const OpenSubdiv_Buffer *buffer, const unsigned int size)