Blender V5.0
draw_cache_impl_curve.cc File Reference

Curve API for render engines. More...

#include "MEM_guardedalloc.h"
#include "BLI_color.hh"
#include "BLI_listbase.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector_types.hh"
#include "BLI_span.hh"
#include "BLI_utildefines.h"
#include "DNA_curve_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BKE_curve.hh"
#include "BKE_curves.hh"
#include "BKE_geometry_set.hh"
#include "BKE_object_types.hh"
#include "BKE_vfont.hh"
#include "GPU_attribute_convert.hh"
#include "GPU_batch.hh"
#include "GPU_capabilities.hh"
#include "GPU_texture.hh"
#include "UI_resources.hh"
#include "DRW_render.hh"
#include "draw_cache_inline.hh"
#include "draw_cache_impl.hh"

Go to the source code of this file.

Classes

struct  blender::draw::CurveRenderData
struct  blender::draw::CurveBatchCache

Namespaces

namespace  blender
namespace  blender::draw

Macros

#define SELECT   1
#define ACTIVE_NURB   (1 << 2)
#define BEZIER_HANDLE   (1 << 3)
#define EVEN_U_BIT   (1 << 4) /* Alternate this bit for every U vert. */
#define COLOR_SHIFT   5
#define DRW_TEST_ASSIGN_VBO(v)
#define DRW_TEST_ASSIGN_IBO(v)

Enumerations

enum  { blender::draw::COLOR_NURB_ULINE_ID = TH_HANDLE_AUTOCLAMP - TH_HANDLE_FREE + 2 , blender::draw::TOT_HANDLE_COL }
enum  {
  blender::draw::CU_DATATYPE_WIRE = 1 << 0 , blender::draw::CU_DATATYPE_OVERLAY = 1 << 1 , blender::draw::CU_DATATYPE_NORMAL = 1 << 2 , blender::draw::CU_DATATYPE_SURFACE = 1 << 3 ,
  blender::draw::CU_DATATYPE_TEXT_SELECT = 1 << 4
}

Functions

static void blender::draw::curve_batch_cache_clear (Curve *cu)
static void blender::draw::curve_render_overlay_verts_edges_len_get (ListBase *lb, int *r_vert_len, int *r_edge_len)
static void blender::draw::curve_eval_render_wire_verts_edges_len_get (const bke::CurvesGeometry &curves, int *r_curve_len, int *r_vert_len, int *r_edge_len)
static int blender::draw::curve_render_normal_len_get (const ListBase *lb, const CurveCache *ob_curve_cache)
static CurveRenderDatablender::draw::curve_render_data_create (Curve *cu, CurveCache *ob_curve_cache, const int types)
static void blender::draw::curve_render_data_free (CurveRenderData *rdata)
static int blender::draw::curve_render_data_overlay_verts_len_get (const CurveRenderData *rdata)
static int blender::draw::curve_render_data_overlay_edges_len_get (const CurveRenderData *rdata)
static int blender::draw::curve_render_data_wire_verts_len_get (const CurveRenderData *rdata)
static int blender::draw::curve_render_data_wire_edges_len_get (const CurveRenderData *rdata)
static int blender::draw::curve_render_data_wire_curve_len_get (const CurveRenderData *rdata)
static int blender::draw::curve_render_data_normal_len_get (const CurveRenderData *rdata)
static bool blender::draw::curve_batch_cache_valid (Curve *cu)
static void blender::draw::curve_batch_cache_init (Curve *cu)
static CurveBatchCacheblender::draw::curve_batch_cache_get (Curve *cu)
Expose via BKE callbacks
void blender::draw::DRW_curve_batch_cache_validate (Curve *cu)
void blender::draw::DRW_curve_batch_cache_dirty_tag (Curve *cu, int mode)
void blender::draw::DRW_curve_batch_cache_free (Curve *cu)
Private Curve Cache API
static void blender::draw::curve_create_curves_pos (CurveRenderData *rdata, gpu::VertBuf *vbo_curves_pos)
static void blender::draw::curve_create_attribute (CurveRenderData *rdata, gpu::VertBuf &vbo_attr)
static void blender::draw::curve_create_curves_lines (CurveRenderData *rdata, gpu::IndexBuf *ibo_curve_lines)
static void blender::draw::curve_create_edit_curves_nor (CurveRenderData *rdata, gpu::VertBuf &vbo_curves_nor, const Scene *scene)
static uint8_t blender::draw::beztriple_vflag_get (CurveRenderData *rdata, uint8_t flag, uint8_t col_id, int v_idx, int nu_id, bool handle_point, const bool handle_selected)
static uint8_t blender::draw::bpoint_vflag_get (CurveRenderData *rdata, uint8_t flag, int v_idx, int nu_id, int u)
static void blender::draw::curve_create_edit_data_and_handles (CurveRenderData *rdata, gpu::VertBuf *vbo_pos, gpu::VertBuf *vbo_data, gpu::IndexBuf *ibo_edit_verts_points, gpu::IndexBuf *ibo_edit_lines)
Curve
blender::gpu::Batch * blender::draw::DRW_curve_batch_cache_get_wire_edge (Curve *cu)
blender::gpu::Batch * blender::draw::DRW_curve_batch_cache_get_wire_edge_viewer_attribute (Curve *cu)
blender::gpu::Batch * blender::draw::DRW_curve_batch_cache_get_normal_edge (Curve *cu)
blender::gpu::Batch * blender::draw::DRW_curve_batch_cache_get_edit_edges (Curve *cu)
blender::gpu::Batch * blender::draw::DRW_curve_batch_cache_get_edit_verts (Curve *cu)
void blender::draw::DRW_curve_batch_cache_create_requested (Object *ob, const Scene *scene)

Detailed Description

Curve API for render engines.

Definition in file draw_cache_impl_curve.cc.

Macro Definition Documentation

◆ ACTIVE_NURB

#define ACTIVE_NURB   (1 << 2)

◆ BEZIER_HANDLE

#define BEZIER_HANDLE   (1 << 3)

Definition at line 48 of file draw_cache_impl_curve.cc.

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

◆ COLOR_SHIFT

#define COLOR_SHIFT   5

◆ DRW_TEST_ASSIGN_IBO

#define DRW_TEST_ASSIGN_IBO ( v)
Value:
ATTR_WARN_UNUSED_RESULT const BMVert * v
bool DRW_ibo_requested(blender::gpu::IndexBuf *ibo)

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

◆ DRW_TEST_ASSIGN_VBO

#define DRW_TEST_ASSIGN_VBO ( v)
Value:
bool DRW_vbo_requested(blender::gpu::VertBuf *vbo)

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

◆ EVEN_U_BIT

#define EVEN_U_BIT   (1 << 4) /* Alternate this bit for every U vert. */

Definition at line 49 of file draw_cache_impl_curve.cc.

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

◆ SELECT

#define SELECT   1

Definition at line 46 of file draw_cache_impl_curve.cc.