Blender V5.0
blender::draw::pbvh Namespace Reference

Classes

struct  ViewportRequest
class  DrawCache
struct  OrigMeshData
class  DrawCacheImpl

Typedefs

using GenericRequest = std::string
using AttributeRequest = std::variant<CustomRequest, GenericRequest>

Enumerations

enum class  CustomRequest : int8_t { Position , Normal , Mask , FaceSet }

Functions

DrawCacheensure_draw_data (std::unique_ptr< bke::pbvh::DrawCache > &ptr)
static BLI_NOINLINE void free_ibos (const MutableSpan< gpu::IndexBufPtr > ibos, const IndexMask &node_mask)
static BLI_NOINLINE void free_vbos (const MutableSpan< gpu::VertBufPtr > vbos, const IndexMask &node_mask)
static BLI_NOINLINE void free_batches (const MutableSpan< gpu::Batch * > batches, const IndexMask &node_mask)
static const GPUVertFormatposition_format ()
static const GPUVertFormatnormal_format ()
static const GPUVertFormatmask_format ()
static const GPUVertFormatface_set_format ()
static GPUVertFormat attribute_format (const OrigMeshData &orig_mesh_data, const StringRef name, const bke::AttrType data_type)
short4 normal_float_to_short (const float3 &value)
template<typename T>
void extract_data_vert_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const Span< T > attribute, const Span< int > face_indices, gpu::VertBuf &vbo)
template<typename T>
void extract_data_face_mesh (const OffsetIndices< int > faces, const Span< T > attribute, const Span< int > face_indices, gpu::VertBuf &vbo)
template<typename T>
void extract_data_corner_mesh (const OffsetIndices< int > faces, const Span< T > attribute, const Span< int > face_indices, gpu::VertBuf &vbo)
template<typename T>
const Tbmesh_cd_vert_get (const BMVert &vert, const int offset)
template<typename T>
const Tbmesh_cd_loop_get (const BMLoop &loop, const int offset)
template<typename T>
const Tbmesh_cd_face_get (const BMFace &face, const int offset)
template<typename T>
void extract_data_vert_bmesh (const Set< BMFace *, 0 > &faces, const int cd_offset, gpu::VertBuf &vbo)
template<typename T>
void extract_data_face_bmesh (const Set< BMFace *, 0 > &faces, const int cd_offset, gpu::VertBuf &vbo)
template<typename T>
void extract_data_corner_bmesh (const Set< BMFace *, 0 > &faces, const int cd_offset, gpu::VertBuf &vbo)
static int count_visible_tris_bmesh (const Set< BMFace *, 0 > &faces)
static BLI_NOINLINE void ensure_vbos_allocated_mesh (const Object &object, const GPUVertFormat &format, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void ensure_vbos_allocated_grids (const Object &object, const GPUVertFormat &format, const BitSpan use_flat_layout, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void ensure_vbos_allocated_bmesh (const Object &object, const GPUVertFormat &format, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static void update_positions_mesh (const Object &object, const IndexMask &node_mask, MutableSpan< gpu::VertBufPtr > vbos)
static void update_normals_mesh (const Object &object, const IndexMask &node_mask, MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_masks_mesh (const Object &object, const OrigMeshData &orig_mesh_data, const IndexMask &node_mask, MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_face_sets_mesh (const Object &object, const OrigMeshData &orig_mesh_data, const IndexMask &node_mask, MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_generic_attribute_mesh (const Object &object, const OrigMeshData &orig_mesh_data, const IndexMask &node_mask, const StringRef name, MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void fill_positions_grids (const Object &object, const BitSpan use_flat_layout, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void fill_normals_grids (const Object &object, const OrigMeshData &orig_mesh_data, const BitSpan use_flat_layout, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void fill_masks_grids (const Object &object, const BitSpan use_flat_layout, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void fill_face_sets_grids (const Object &object, const OrigMeshData &orig_mesh_data, const BitSpan use_flat_layout, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_positions_bmesh (const Object &object, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_normals_bmesh (const Object &object, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_masks_bmesh (const Object &object, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_face_sets_bmesh (const Object &object, const OrigMeshData &orig_mesh_data, const IndexMask &node_mask, const MutableSpan< gpu::VertBufPtr > vbos)
static BLI_NOINLINE void update_generic_attribute_bmesh (const Object &object, const OrigMeshData &orig_mesh_data, const IndexMask &node_mask, const StringRef name, const MutableSpan< gpu::VertBufPtr > vbos)
static gpu::IndexBufPtr create_lines_index_faces (const OffsetIndices< int > faces, const Span< bool > hide_poly, const Span< int > face_indices)
static gpu::IndexBufPtr create_lines_index_bmesh (const Set< BMFace *, 0 > &faces, const int visible_faces_num)
static int create_tri_index_grids (const Span< int > grid_indices, const BitGroupVector<> &grid_hidden, const int gridsize, const int skip, const int totgrid, MutableSpan< uint3 > data)
static int create_tri_index_grids_flat_layout (const Span< int > grid_indices, const BitGroupVector<> &grid_hidden, const int gridsize, const int skip, const int totgrid, MutableSpan< uint3 > data)
static void create_lines_index_grids (const Span< int > grid_indices, int display_gridsize, const BitGroupVector<> &grid_hidden, const int gridsize, const int skip, const int totgrid, MutableSpan< uint2 > data)
static void create_lines_index_grids_flat_layout (const Span< int > grid_indices, int display_gridsize, const BitGroupVector<> &grid_hidden, const int gridsize, const int skip, const int totgrid, MutableSpan< uint2 > data)
static Array< int > calc_material_indices (const Object &object, const OrigMeshData &orig_mesh_data)
static BitVector calc_use_flat_layout (const Object &object, const OrigMeshData &orig_mesh_data)
static gpu::IndexBufPtr create_tri_index_mesh (const OffsetIndices< int > faces, const Span< int3 > corner_tris, const Span< bool > hide_poly, const bke::pbvh::MeshNode &node)
static gpu::IndexBufPtr create_tri_index_grids (const CCGKey &key, const BitGroupVector<> &grid_hidden, const bool do_coarse, const Span< int > grid_indices, const bool use_flat_layout)
static gpu::IndexBufPtr create_lines_index_grids (const CCGKey &key, const BitGroupVector<> &grid_hidden, const bool do_coarse, const Span< int > grid_indices, const bool use_flat_layout)
static BLI_NOINLINE void flush_vbo_data (const Span< gpu::VertBufPtr > vbos, const IndexMask &node_mask)

Typedef Documentation

◆ AttributeRequest

Definition at line 48 of file DRW_pbvh.hh.

◆ GenericRequest

Definition at line 39 of file DRW_pbvh.hh.

Enumeration Type Documentation

◆ CustomRequest

enum class blender::draw::pbvh::CustomRequest : int8_t
strong
Enumerator
Position 
Normal 
Mask 
FaceSet 

Definition at line 41 of file DRW_pbvh.hh.

Function Documentation

◆ attribute_format()

◆ bmesh_cd_face_get()

template<typename T>
const T & blender::draw::pbvh::bmesh_cd_face_get ( const BMFace & face,
const int offset )

Definition at line 404 of file draw_pbvh.cc.

References BMHeader::data, BMFace::head, POINTER_OFFSET, and T.

Referenced by extract_data_face_bmesh(), and update_face_sets_bmesh().

◆ bmesh_cd_loop_get()

template<typename T>
const T & blender::draw::pbvh::bmesh_cd_loop_get ( const BMLoop & loop,
const int offset )

Definition at line 399 of file draw_pbvh.cc.

References BMHeader::data, BMLoop::head, POINTER_OFFSET, and T.

Referenced by extract_data_corner_bmesh().

◆ bmesh_cd_vert_get()

template<typename T>
const T & blender::draw::pbvh::bmesh_cd_vert_get ( const BMVert & vert,
const int offset )

Definition at line 394 of file draw_pbvh.cc.

References BMHeader::data, BMVert::head, POINTER_OFFSET, and T.

Referenced by extract_data_vert_bmesh(), and update_masks_bmesh().

◆ calc_material_indices()

◆ calc_use_flat_layout()

◆ count_visible_tris_bmesh()

int blender::draw::pbvh::count_visible_tris_bmesh ( const Set< BMFace *, 0 > & faces)
static

Definition at line 469 of file draw_pbvh.cc.

References faces.

Referenced by ensure_vbos_allocated_bmesh().

◆ create_lines_index_bmesh()

gpu::IndexBufPtr blender::draw::pbvh::create_lines_index_bmesh ( const Set< BMFace *, 0 > & faces,
const int visible_faces_num )
static

◆ create_lines_index_faces()

gpu::IndexBufPtr blender::draw::pbvh::create_lines_index_faces ( const OffsetIndices< int > faces,
const Span< bool > hide_poly,
const Span< int > face_indices )
static

◆ create_lines_index_grids() [1/2]

gpu::IndexBufPtr blender::draw::pbvh::create_lines_index_grids ( const CCGKey & key,
const BitGroupVector<> & grid_hidden,
const bool do_coarse,
const Span< int > grid_indices,
const bool use_flat_layout )
static

◆ create_lines_index_grids() [2/2]

void blender::draw::pbvh::create_lines_index_grids ( const Span< int > grid_indices,
int display_gridsize,
const BitGroupVector<> & grid_hidden,
const int gridsize,
const int skip,
const int totgrid,
MutableSpan< uint2 > data )
static

◆ create_lines_index_grids_flat_layout()

void blender::draw::pbvh::create_lines_index_grids_flat_layout ( const Span< int > grid_indices,
int display_gridsize,
const BitGroupVector<> & grid_hidden,
const int gridsize,
const int skip,
const int totgrid,
MutableSpan< uint2 > data )
static

◆ create_tri_index_grids() [1/2]

◆ create_tri_index_grids() [2/2]

int blender::draw::pbvh::create_tri_index_grids ( const Span< int > grid_indices,
const BitGroupVector<> & grid_hidden,
const int gridsize,
const int skip,
const int totgrid,
MutableSpan< uint3 > data )
static

◆ create_tri_index_grids_flat_layout()

int blender::draw::pbvh::create_tri_index_grids_flat_layout ( const Span< int > grid_indices,
const BitGroupVector<> & grid_hidden,
const int gridsize,
const int skip,
const int totgrid,
MutableSpan< uint3 > data )
static

◆ create_tri_index_mesh()

◆ ensure_draw_data()

DrawCache & blender::draw::pbvh::ensure_draw_data ( std::unique_ptr< bke::pbvh::DrawCache > & ptr)

Definition at line 250 of file draw_pbvh.cc.

References ptr.

Referenced by blender::draw::sculpt_batches_get_ex().

◆ ensure_vbos_allocated_bmesh()

◆ ensure_vbos_allocated_grids()

BLI_NOINLINE void blender::draw::pbvh::ensure_vbos_allocated_grids ( const Object & object,
const GPUVertFormat & format,
const BitSpan use_flat_layout,
const IndexMask & node_mask,
const MutableSpan< gpu::VertBufPtr > vbos )
static

◆ ensure_vbos_allocated_mesh()

◆ extract_data_corner_bmesh()

template<typename T>
void blender::draw::pbvh::extract_data_corner_bmesh ( const Set< BMFace *, 0 > & faces,
const int cd_offset,
gpu::VertBuf & vbo )

◆ extract_data_corner_mesh()

template<typename T>
void blender::draw::pbvh::extract_data_corner_mesh ( const OffsetIndices< int > faces,
const Span< T > attribute,
const Span< int > face_indices,
gpu::VertBuf & vbo )

Definition at line 377 of file draw_pbvh.cc.

References blender::gpu::VertBuf::data(), data, and faces.

◆ extract_data_face_bmesh()

template<typename T>
void blender::draw::pbvh::extract_data_face_bmesh ( const Set< BMFace *, 0 > & faces,
const int cd_offset,
gpu::VertBuf & vbo )

◆ extract_data_face_mesh()

template<typename T>
void blender::draw::pbvh::extract_data_face_mesh ( const OffsetIndices< int > faces,
const Span< T > attribute,
const Span< int > face_indices,
gpu::VertBuf & vbo )

Definition at line 360 of file draw_pbvh.cc.

References blender::gpu::VertBuf::data(), data, and faces.

◆ extract_data_vert_bmesh()

template<typename T>
void blender::draw::pbvh::extract_data_vert_bmesh ( const Set< BMFace *, 0 > & faces,
const int cd_offset,
gpu::VertBuf & vbo )

◆ extract_data_vert_mesh()

template<typename T>
void blender::draw::pbvh::extract_data_vert_mesh ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const Span< T > attribute,
const Span< int > face_indices,
gpu::VertBuf & vbo )

Definition at line 342 of file draw_pbvh.cc.

References blender::gpu::VertBuf::data(), data, faces, and blender::Span< T >::slice().

Referenced by update_positions_mesh().

◆ face_set_format()

const GPUVertFormat & blender::draw::pbvh::face_set_format ( )
static

◆ fill_face_sets_grids()

◆ fill_masks_grids()

◆ fill_normals_grids()

◆ fill_positions_grids()

◆ flush_vbo_data()

BLI_NOINLINE void blender::draw::pbvh::flush_vbo_data ( const Span< gpu::VertBufPtr > vbos,
const IndexMask & node_mask )
static

◆ free_batches()

BLI_NOINLINE void blender::draw::pbvh::free_batches ( const MutableSpan< gpu::Batch * > batches,
const IndexMask & node_mask )
static

◆ free_ibos()

BLI_NOINLINE void blender::draw::pbvh::free_ibos ( const MutableSpan< gpu::IndexBufPtr > ibos,
const IndexMask & node_mask )
static

◆ free_vbos()

BLI_NOINLINE void blender::draw::pbvh::free_vbos ( const MutableSpan< gpu::VertBufPtr > vbos,
const IndexMask & node_mask )
static

◆ mask_format()

const GPUVertFormat & blender::draw::pbvh::mask_format ( )
static

◆ normal_float_to_short()

short4 blender::draw::pbvh::normal_float_to_short ( const float3 & value)
inline

Definition at line 334 of file draw_pbvh.cc.

References normal_float_to_short_v3(), and result.

Referenced by fill_normals_grids(), update_normals_bmesh(), and update_normals_mesh().

◆ normal_format()

const GPUVertFormat & blender::draw::pbvh::normal_format ( )
static

◆ position_format()

const GPUVertFormat & blender::draw::pbvh::position_format ( )
static

◆ update_face_sets_bmesh()

◆ update_face_sets_mesh()

◆ update_generic_attribute_bmesh()

◆ update_generic_attribute_mesh()

◆ update_masks_bmesh()

◆ update_masks_mesh()

◆ update_normals_bmesh()

◆ update_normals_mesh()

◆ update_positions_bmesh()

◆ update_positions_mesh()