diff options
Diffstat (limited to 'source/blender/gpu/GPU_buffers.h')
-rw-r--r-- | source/blender/gpu/GPU_buffers.h | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h index e4a01670558..5d33ea71fe7 100644 --- a/source/blender/gpu/GPU_buffers.h +++ b/source/blender/gpu/GPU_buffers.h @@ -10,6 +10,7 @@ #include <stddef.h> #include "BKE_attribute.h" +#include "BKE_pbvh.h" #ifdef __cplusplus extern "C" { @@ -20,6 +21,7 @@ struct CCGElem; struct CCGKey; struct DMFlagMat; struct GSet; +struct TableGSet; struct MLoop; struct MLoopCol; struct MLoopTri; @@ -29,6 +31,9 @@ struct MVert; struct Mesh; struct PBVH; struct SubdivCCG; +struct CustomData; + +typedef struct PBVHGPUFormat PBVHGPUFormat; /** * Buffers for drawing from PBVH grids. @@ -78,36 +83,46 @@ enum { }; /** + * Creates a vertex buffer (coordinate, normal, color) and, + * if smooth shading, an element index buffer. * Threaded: do not call any functions that use OpenGL calls! */ -void GPU_pbvh_mesh_buffers_update(GPU_PBVH_Buffers *buffers, +void GPU_pbvh_mesh_buffers_update(PBVHGPUFormat *vbo_id, + GPU_PBVH_Buffers *buffers, const struct MVert *mvert, - const float (*vert_normals)[3], + const CustomData *vdata, + const CustomData *ldata, const float *vmask, - const void *vcol_data, - int vcol_type, - eAttrDomain vcol_domain, const int *sculpt_face_sets, - int face_sets_color_seed, - int face_sets_color_default, - int update_flags); + const int face_sets_color_seed, + const int face_sets_color_default, + const int update_flags, + const float (*vert_normals)[3]); + +bool GPU_pbvh_attribute_names_update(PBVHType pbvh_type, + PBVHGPUFormat *vbo_id, + const struct CustomData *vdata, + const struct CustomData *ldata, + bool active_attrs_only); /** * Creates a vertex buffer (coordinate, normal, color) and, * if smooth shading, an element index buffer. * Threaded: do not call any functions that use OpenGL calls! */ -void GPU_pbvh_bmesh_buffers_update(GPU_PBVH_Buffers *buffers, +void GPU_pbvh_bmesh_buffers_update(PBVHGPUFormat *vbo_id, + struct GPU_PBVH_Buffers *buffers, struct BMesh *bm, struct GSet *bm_faces, struct GSet *bm_unique_verts, struct GSet *bm_other_verts, - int update_flags); + const int update_flags); /** * Threaded: do not call any functions that use OpenGL calls! */ -void GPU_pbvh_grid_buffers_update(GPU_PBVH_Buffers *buffers, +void GPU_pbvh_grid_buffers_update(PBVHGPUFormat *vbo_id, + GPU_PBVH_Buffers *buffers, struct SubdivCCG *subdiv_ccg, struct CCGElem **grids, const struct DMFlagMat *grid_flag_mats, @@ -120,7 +135,8 @@ void GPU_pbvh_grid_buffers_update(GPU_PBVH_Buffers *buffers, int update_flags); /** - * Finish update. Not thread safe, must run in OpenGL main thread. + * Finish update. Not thread safe, must run in OpenGL main + * thread. */ void GPU_pbvh_buffers_update_flush(GPU_PBVH_Buffers *buffers); @@ -133,9 +149,11 @@ void GPU_pbvh_buffers_free(GPU_PBVH_Buffers *buffers); struct GPUBatch *GPU_pbvh_buffers_batch_get(GPU_PBVH_Buffers *buffers, bool fast, bool wires); short GPU_pbvh_buffers_material_index_get(GPU_PBVH_Buffers *buffers); - bool GPU_pbvh_buffers_has_overlays(GPU_PBVH_Buffers *buffers); +PBVHGPUFormat *GPU_pbvh_make_format(); +void GPU_pbvh_free_format(PBVHGPUFormat *vbo_id); + #ifdef __cplusplus } #endif |