13using OpenSubdiv::Osd::PatchArray;
14using OpenSubdiv::Osd::PatchArrayVector;
20 const size_t patch_array_size =
sizeof(PatchArray);
21 const size_t patch_array_byte_size = patch_array_size * patch_arrays.size();
23 patch_array_byte_size, patch_arrays.data(),
GPU_USAGE_STATIC,
"osd_patch_array");
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,
blender::gpu::StorageBuf * GPU_storagebuf_create_ex(size_t size, const void *data, GPUUsageType usage, const char *name)
PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const
Returns the patch arrays for face-varying index buffer data.
PatchArrayVector const & GetPatchArrays() const
Returns the patch arrays for vertex index buffer data.
GL stencil table (Shader Storage buffer).
gpu::StorageBuf * create_patch_arrays_buf() override
gpu::StorageBuf * create_face_varying_patch_array_buf(const int face_varying_channel) 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=nullptr)
GPUPatchTable * getFVarPatchTable(const int face_varying_channel) const
OpenSubdiv::Osd::EvaluatorCacheT< EVALUATOR > EvaluatorCache
GPUPatchTable * getPatchTable() const
VolatileEvalOutput(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 *device_context=NULL)
static gpu::StorageBuf * create_patch_array_buffer(const PatchArrayVector &patch_arrays)