Blender  V3.3
Classes | Namespaces | Macros
draw_cache_extract_mesh.cc File Reference

Extraction of Mesh data into VBO to feed to GPU. More...

#include "MEM_guardedalloc.h"
#include <optional>
#include "atomic_ops.h"
#include "DNA_mesh_types.h"
#include "DNA_scene_types.h"
#include "BLI_array.hh"
#include "BLI_math_bits.h"
#include "BLI_task.h"
#include "BLI_vector.hh"
#include "BKE_editmesh.h"
#include "GPU_capabilities.h"
#include "draw_cache_extract.hh"
#include "draw_cache_inline.h"
#include "draw_subdivision.h"
#include "mesh_extractors/extract_mesh.hh"

Go to the source code of this file.

Classes

struct  blender::draw::ExtractorRunData
 
class  blender::draw::ExtractorRunDatas
 
struct  blender::draw::ExtractTaskData
 
struct  blender::draw::ExtractorIterData
 
struct  blender::draw::MeshRenderDataUpdateTaskData
 

Namespaces

 blender
 
 blender::draw
 

Macros

#define EXTRACT_ADD_REQUESTED(type, name)
 
#define EXTRACT_ADD_REQUESTED(type, name)
 

Typedefs

Mesh Elements Extract Struct
using blender::draw::TaskId = int
 
using blender::draw::TaskLen = int
 

Functions

ExtractTaskData
static void blender::draw::extract_task_data_free (void *data)
 
Extract Init and Finish
BLI_INLINE void blender::draw::extract_init (const MeshRenderData *mr, MeshBatchCache *cache, ExtractorRunDatas &extractors, MeshBufferList *mbuflist, void *data_stack)
 
BLI_INLINE void blender::draw::extract_finish (const MeshRenderData *mr, MeshBatchCache *cache, const ExtractorRunDatas &extractors, void *data_stack)
 
Extract In Parallel Ranges
static void blender::draw::extract_task_reduce (const void *__restrict userdata, void *__restrict chunk_to, void *__restrict chunk_from)
 
static void blender::draw::extract_range_iter_looptri_bm (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_looptri_mesh (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_poly_bm (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_poly_mesh (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_ledge_bm (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_ledge_mesh (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_lvert_bm (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
static void blender::draw::extract_range_iter_lvert_mesh (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls)
 
BLI_INLINE void blender::draw::extract_task_range_run_iter (const MeshRenderData *mr, ExtractorRunDatas *extractors, const eMRIterType iter_type, bool is_mesh, TaskParallelSettings *settings)
 
static void blender::draw::extract_task_range_run (void *__restrict taskdata)
 
static struct TaskNodeblender::draw::extract_task_node_create (struct TaskGraph *task_graph, const MeshRenderData *mr, MeshBatchCache *cache, ExtractorRunDatas *extractors, MeshBufferList *mbuflist, const bool use_threading)
 
Task Node - Update Mesh Render Data
static void blender::draw::mesh_render_data_update_task_data_free (void *data)
 
static void blender::draw::mesh_extract_render_data_node_exec (void *__restrict task_data)
 
static struct TaskNodeblender::draw::mesh_extract_render_data_node_create (struct TaskGraph *task_graph, MeshRenderData *mr, MeshBufferCache *cache, const eMRIterType iter_type, const eMRDataType data_flag)
 
Extract Loop
void blender::draw::mesh_buffer_cache_create_requested (TaskGraph *task_graph, MeshBatchCache *cache, MeshBufferCache *mbc, Object *object, Mesh *me, bool is_editmode, bool is_paint_mode, bool is_mode_active, const float obmat[4][4], bool do_final, bool do_uvedit, const Scene *scene, const ToolSettings *ts, bool use_hide)
 
Subdivision Extract Loop
void blender::draw::mesh_buffer_cache_create_requested_subdiv (MeshBatchCache *cache, MeshBufferCache *mbc, DRWSubdivCache *subdiv_cache, MeshRenderData *mr)
 

Detailed Description

Extraction of Mesh data into VBO to feed to GPU.

Definition in file draw_cache_extract_mesh.cc.

Macro Definition Documentation

◆ EXTRACT_ADD_REQUESTED [1/2]

#define EXTRACT_ADD_REQUESTED (   type,
  name 
)
Value:
do { \
if (DRW_##type##_requested(mbuflist->type.name)) { \
const MeshExtract *extractor = mesh_extract_override_get( \
&extract_##name, do_hq_normals, override_single_mat); \
extractors.append(extractor); \
} \
} while (0)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
const MeshExtract * mesh_extract_override_get(const MeshExtract *extractor, const bool do_hq_normals, const bool do_single_mat)
Definition: extract_mesh.cc:71

◆ EXTRACT_ADD_REQUESTED [2/2]

#define EXTRACT_ADD_REQUESTED (   type,
  name 
)
Value:
do { \
if (DRW_##type##_requested(mbuflist->type.name)) { \
const MeshExtract *extractor = &extract_##name; \
extractors.append(extractor); \
} \
} while (0)