Blender
V3.3
|
Curve API for render engines. More...
#include "MEM_guardedalloc.h"
#include "BLI_array.hh"
#include "BLI_listbase.h"
#include "BLI_math_vec_types.hh"
#include "BLI_math_vector.h"
#include "BLI_span.hh"
#include "BLI_utildefines.h"
#include "DNA_curve_types.h"
#include "BKE_curve.h"
#include "BKE_curves.hh"
#include "BKE_displist.h"
#include "BKE_geometry_set.hh"
#include "BKE_vfont.h"
#include "GPU_batch.h"
#include "GPU_capabilities.h"
#include "GPU_material.h"
#include "GPU_texture.h"
#include "UI_resources.h"
#include "DRW_render.h"
#include "draw_cache_inline.h"
#include "draw_cache_impl.h"
Go to the source code of this file.
Classes | |
struct | CurveRenderData |
struct | CurveBatchCache |
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) (v = (DRW_vbo_requested(v) ? (v) : nullptr)) |
#define | DRW_TEST_ASSIGN_IBO(v) (v = (DRW_ibo_requested(v) ? (v) : nullptr)) |
Enumerations | |
enum | { COLOR_NURB_ULINE_ID = TH_HANDLE_AUTOCLAMP - TH_HANDLE_FREE + 2 , TOT_HANDLE_COL } |
enum | { CU_DATATYPE_WIRE = 1 << 0 , CU_DATATYPE_OVERLAY = 1 << 1 , CU_DATATYPE_NORMAL = 1 << 2 , CU_DATATYPE_SURFACE = 1 << 3 , CU_DATATYPE_TEXT_SELECT = 1 << 4 } |
Curve API for render engines.
Definition in file draw_cache_impl_curve.cc.
#define ACTIVE_NURB (1 << 2) |
Definition at line 47 of file draw_cache_impl_curve.cc.
#define BEZIER_HANDLE (1 << 3) |
Definition at line 48 of file draw_cache_impl_curve.cc.
#define COLOR_SHIFT 5 |
Definition at line 50 of file draw_cache_impl_curve.cc.
Definition at line 49 of file draw_cache_impl_curve.cc.
#define SELECT 1 |
Definition at line 46 of file draw_cache_impl_curve.cc.
anonymous enum |
Enumerator | |
---|---|
COLOR_NURB_ULINE_ID | |
TOT_HANDLE_COL |
Definition at line 53 of file draw_cache_impl_curve.cc.
anonymous enum |
Enumerator | |
---|---|
CU_DATATYPE_WIRE | |
CU_DATATYPE_OVERLAY | |
CU_DATATYPE_NORMAL | |
CU_DATATYPE_SURFACE | |
CU_DATATYPE_TEXT_SELECT |
Definition at line 180 of file draw_cache_impl_curve.cc.
|
static |
Definition at line 589 of file draw_cache_impl_curve.cc.
References ACTIVE_NURB, CurveRenderData::actnu, CurveRenderData::actvert, BEZIER_HANDLE, BLI_assert, COLOR_SHIFT, SELECT, SET_FLAG_FROM_TEST, VFLAG_VERT_ACTIVE, VFLAG_VERT_SELECTED, and VFLAG_VERT_SELECTED_BEZT_HANDLE.
Referenced by curve_create_edit_data_and_handles().
|
static |
Definition at line 610 of file draw_cache_impl_curve.cc.
References ACTIVE_NURB, CurveRenderData::actnu, CurveRenderData::actvert, BLI_assert, COLOR_NURB_ULINE_ID, COLOR_SHIFT, EVEN_U_BIT, SELECT, SET_FLAG_FROM_TEST, VFLAG_VERT_ACTIVE, and VFLAG_VERT_SELECTED.
Referenced by curve_create_edit_data_and_handles().
TODO
CurveCache
, SEQUENCER_DAG_WORKAROUND
.Definition at line 417 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, batch, Curve::batch_cache, CurveBatchCache::edit, GPU_BATCH_DISCARD_SAFE, GPU_INDEXBUF_DISCARD_SAFE, GPU_VERTBUF_DISCARD_SAFE, GPUBatch, CurveBatchCache::ibo, if(), and CurveBatchCache::ordered.
Referenced by DRW_curve_batch_cache_free(), and DRW_curve_batch_cache_validate().
|
static |
Definition at line 391 of file draw_cache_impl_curve.cc.
References Curve::batch_cache.
Referenced by DRW_curve_batch_cache_create_requested(), DRW_curve_batch_cache_get_edit_edges(), DRW_curve_batch_cache_get_edit_verts(), DRW_curve_batch_cache_get_normal_edge(), and DRW_curve_batch_cache_get_wire_edge().
Definition at line 355 of file draw_cache_impl_curve.cc.
References Curve::batch_cache, Curve::editfont, Curve::editnurb, if(), CurveBatchCache::is_dirty, CurveBatchCache::is_editmode, MEM_callocN, Curve::nurb, and EditNurb::nurbs.
Referenced by DRW_curve_batch_cache_validate().
Definition at line 330 of file draw_cache_impl_curve.cc.
References Curve::batch_cache, Curve::editfont, Curve::editnurb, if(), CurveBatchCache::is_dirty, and CurveBatchCache::is_editmode.
Referenced by DRW_curve_batch_cache_validate().
|
static |
Definition at line 477 of file draw_cache_impl_curve.cc.
References CurveRenderData::curve_eval, curve_render_data_wire_curve_len_get(), curve_render_data_wire_edges_len_get(), curve_render_data_wire_verts_len_get(), curves, Curves::geometry, GPU_indexbuf_add_generic_vert(), GPU_indexbuf_add_primitive_restart(), GPU_indexbuf_build_in_place(), GPU_indexbuf_init_ex(), GPU_PRIM_LINE_STRIP, blender::IndexRange::last(), blender::IndexRange::size(), and blender::bke::CurvesGeometry::wrap().
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 453 of file draw_cache_impl_curve.cc.
References attr_id, CurveRenderData::curve_eval, curve_render_data_wire_verts_len_get(), curves, Curves::geometry, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_vertbuf_attr_fill(), GPU_vertbuf_data_alloc(), GPU_vertbuf_init_with_format, GPU_vertformat_attr_add(), pos, positions, and blender::bke::CurvesGeometry::wrap().
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 509 of file draw_cache_impl_curve.cc.
References attr_id, CurveCache::bev, BevList::bevpoints, BLI_assert, curve_render_data_normal_len_get(), BevPoint::dir, ListBase::first, GPU_COMP_F32, GPU_COMP_I10, GPU_COMP_I16, GPU_FETCH_FLOAT, GPU_FETCH_INT_TO_FLOAT_UNIT, GPU_normal_convert_v3(), GPU_use_hq_normals_workaround(), GPU_vertbuf_attr_set(), GPU_vertbuf_data_alloc(), GPU_vertbuf_init_with_format, GPU_vertformat_attr_add(), mul_qt_v3(), BevList::next, Nurb::next, nor, BevList::nr, CurveRenderData::nurbs, CurveRenderData::ob_curve_cache, RenderData::perf_flag, pos, BevPoint::quat, Scene::r, BevPoint::radius, Nurb::resolu, SCE_PERF_HQ_NORMALS, scene, KDL::tan(), and BevPoint::vec.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 623 of file draw_cache_impl_curve.cc.
References Freestyle::a, attr_id, GPUVertFormat::attr_len, BEZT_ISSEL_ANY, beztriple_vflag_get(), bpoint_vflag_get(), curve_render_data_overlay_edges_len_get(), curve_render_data_overlay_verts_len_get(), data, DRW_TEST_ASSIGN_IBO, DRW_TEST_ASSIGN_VBO, BezTriple::f1, BezTriple::f2, BezTriple::f3, ListBase::first, GPU_COMP_F32, GPU_COMP_U8, GPU_FETCH_FLOAT, GPU_FETCH_INT, GPU_indexbuf_add_line_verts(), GPU_indexbuf_add_point_vert(), GPU_indexbuf_build_in_place(), GPU_indexbuf_init(), GPU_PRIM_LINES, GPU_PRIM_POINTS, GPU_vertbuf_attr_set(), GPU_vertbuf_data_alloc(), GPU_vertbuf_data_resize(), GPU_vertbuf_init_with_format, GPU_vertformat_attr_add(), BezTriple::h1, BezTriple::h2, BezTriple::hide, BPoint::hide, CurveRenderData::nurbs, pos, v, and BezTriple::vec.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 99 of file draw_cache_impl_curve.cc.
References curves, blender::bke::curves::segments_num(), and blender::IndexRange::size().
Referenced by curve_render_data_create().
|
static |
Definition at line 196 of file draw_cache_impl_curve.cc.
References CurveRenderData::actnu, Curve::actnu, CurveRenderData::actvert, Curve::actvert, CU_DATATYPE_NORMAL, CU_DATATYPE_OVERLAY, CU_DATATYPE_WIRE, CurveRenderData::curve_eval, Curve::curve_eval, curve_eval_render_wire_verts_edges_len_get(), CurveRenderData::curve_len, curve_render_normal_len_get(), curve_render_overlay_verts_edges_len_get(), CurveRenderData::edge_len, CurveRenderData::edit_font, Curve::editfont, Curve::editnurb, Curves::geometry, CurveRenderData::len, MEM_callocN, CurveRenderData::normal, Curve::nurb, CurveRenderData::nurbs, EditNurb::nurbs, CurveRenderData::ob_curve_cache, CurveRenderData::overlay, CurveRenderData::text, CurveRenderData::types, types, CurveRenderData::vert_len, CurveRenderData::wire, and blender::bke::CurvesGeometry::wrap().
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 247 of file draw_cache_impl_curve.cc.
References MEM_freeN.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 287 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_NORMAL, CurveRenderData::len, CurveRenderData::normal, and CurveRenderData::types.
Referenced by curve_create_edit_curves_nor().
|
static |
Definition at line 263 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_OVERLAY, CurveRenderData::edge_len, CurveRenderData::overlay, and CurveRenderData::types.
Referenced by curve_create_edit_data_and_handles().
|
static |
Definition at line 257 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_OVERLAY, CurveRenderData::overlay, CurveRenderData::types, and CurveRenderData::vert_len.
Referenced by curve_create_edit_data_and_handles().
|
static |
Definition at line 281 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_WIRE, CurveRenderData::curve_len, CurveRenderData::types, and CurveRenderData::wire.
Referenced by curve_create_curves_lines().
|
static |
Definition at line 275 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_WIRE, CurveRenderData::edge_len, CurveRenderData::types, and CurveRenderData::wire.
Referenced by curve_create_curves_lines().
|
static |
Definition at line 269 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_WIRE, CurveRenderData::types, CurveRenderData::vert_len, and CurveRenderData::wire.
Referenced by curve_create_curves_lines(), and curve_create_curves_pos().
|
static |
Definition at line 115 of file draw_cache_impl_curve.cc.
References CurveCache::bev, ListBase::first, BevList::next, Nurb::next, BevList::nr, and Nurb::resolu.
Referenced by curve_render_data_create().
|
static |
Definition at line 71 of file draw_cache_impl_curve.cc.
References BLI_assert, and LISTBASE_FOREACH.
Referenced by curve_render_data_create().
Definition at line 801 of file draw_cache_impl_curve.cc.
References BLI_assert, CU_DATATYPE_NORMAL, CU_DATATYPE_OVERLAY, CU_DATATYPE_WIRE, curve_batch_cache_get(), Object_Runtime::curve_cache, curve_create_curves_lines(), curve_create_curves_pos(), curve_create_edit_curves_nor(), curve_create_edit_data_and_handles(), curve_render_data_create(), curve_render_data_free(), Object::data, DRW_ADD_FLAG_FROM_IBO_REQUEST, DRW_ADD_FLAG_FROM_VBO_REQUEST, DRW_batch_requested(), DRW_ibo_request(), DRW_ibo_requested(), DRW_vbo_request(), DRW_vbo_requested(), ELEM, GPU_PRIM_LINE_STRIP, GPU_PRIM_LINES, GPU_PRIM_POINTS, GPUBatch, Object::id, ID::name, OB_CURVES_LEGACY, OB_FONT, OB_SURF, Object::runtime, scene, and Object::type.
Referenced by drw_batch_cache_generate_requested(), and drw_batch_cache_generate_requested_evaluated_mesh_or_curve().
Definition at line 396 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, Curve::batch_cache, BKE_CURVE_BATCH_DIRTY_ALL, BKE_CURVE_BATCH_DIRTY_SELECT, BLI_assert, CurveBatchCache::data, CurveBatchCache::edit, CurveBatchCache::edit_edges, CurveBatchCache::edit_verts, GPU_BATCH_DISCARD_SAFE, GPU_VERTBUF_DISCARD_SAFE, if(), and CurveBatchCache::is_dirty.
Referenced by DRW_engines_register().
Definition at line 442 of file draw_cache_impl_curve.cc.
References Curve::batch_cache, curve_batch_cache_clear(), and MEM_SAFE_FREE.
Referenced by DRW_engines_register().
Definition at line 778 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::edit_edges.
Referenced by DRW_cache_curve_edge_overlay_get().
Definition at line 784 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::edit_verts.
Referenced by DRW_cache_curve_vert_overlay_get().
Definition at line 772 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::edit_normals.
Referenced by DRW_cache_curve_edge_normal_get().
Definition at line 766 of file draw_cache_impl_curve.cc.
References CurveBatchCache::batch, curve_batch_cache_get(), CurveBatchCache::curves, and DRW_batch_request().
Referenced by DRW_cache_curve_edge_wire_get(), DRW_cache_surf_edge_wire_get(), and DRW_cache_text_edge_wire_get().
Definition at line 383 of file draw_cache_impl_curve.cc.
References curve_batch_cache_clear(), curve_batch_cache_init(), and curve_batch_cache_valid().
Referenced by drw_batch_cache_validate(), and drw_shgroup_custom_bone_curve().
int DRW_curve_material_count_get | ( | Curve * | cu | ) |
Definition at line 790 of file draw_cache_impl_curve.cc.
References max_ii(), and Curve::totcol.
Referenced by DRW_cache_object_material_count_get().