|
Blender
V2.93
|
Curve API for render engines. More...
#include "MEM_guardedalloc.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_utildefines.h"#include "DNA_curve_types.h"#include "BKE_curve.h"#include "BKE_displist.h"#include "BKE_font.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 |
Typedefs | |
| typedef struct CurveRenderData | CurveRenderData |
| typedef struct CurveBatchCache | CurveBatchCache |
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.c.
| #define ACTIVE_NURB (1 << 2) |
Definition at line 53 of file draw_cache_impl_curve.c.
| #define BEZIER_HANDLE (1 << 3) |
Definition at line 54 of file draw_cache_impl_curve.c.
| #define COLOR_SHIFT 5 |
Definition at line 56 of file draw_cache_impl_curve.c.
| #define EVEN_U_BIT (1 << 4) /* Alternate this bit for every U vert. */ |
Definition at line 55 of file draw_cache_impl_curve.c.
| #define SELECT 1 |
Definition at line 52 of file draw_cache_impl_curve.c.
| typedef struct CurveBatchCache CurveBatchCache |
| typedef struct CurveRenderData CurveRenderData |
| anonymous enum |
| Enumerator | |
|---|---|
| COLOR_NURB_ULINE_ID | |
| TOT_HANDLE_COL | |
Definition at line 59 of file draw_cache_impl_curve.c.
| anonymous enum |
| Enumerator | |
|---|---|
| CU_DATATYPE_WIRE | |
| CU_DATATYPE_OVERLAY | |
| CU_DATATYPE_NORMAL | |
| CU_DATATYPE_SURFACE | |
| CU_DATATYPE_TEXT_SELECT | |
Definition at line 203 of file draw_cache_impl_curve.c.
|
static |
Definition at line 712 of file draw_cache_impl_curve.c.
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 733 of file draw_cache_impl_curve.c.
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().
|
static |
TODO
CurveCache, SEQUENCER_DAG_WORKAROUND.Definition at line 509 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, batch, Curve::batch_cache, CurveBatchCache::cd_used, CurveBatchCache::edit, GPU_BATCH_DISCARD_SAFE, GPU_INDEXBUF_DISCARD_SAFE, GPU_VERTBUF_DISCARD_SAFE, GPUBatch, CurveBatchCache::ibo, CurveBatchCache::mat_len, MEM_SAFE_FREE, CurveBatchCache::ordered, CurveBatchCache::surf_per_mat, and CurveBatchCache::surf_per_mat_tris.
Referenced by DRW_curve_batch_cache_free(), and DRW_curve_batch_cache_validate().
|
static |
Definition at line 483 of file draw_cache_impl_curve.c.
References Curve::batch_cache.
Referenced by DRW_curve_batch_cache_create_requested(), DRW_curve_batch_cache_get_edge_detection(), DRW_curve_batch_cache_get_edit_edges(), DRW_curve_batch_cache_get_edit_verts(), DRW_curve_batch_cache_get_normal_edge(), DRW_curve_batch_cache_get_surface_shaded(), DRW_curve_batch_cache_get_triangles_with_normals(), DRW_curve_batch_cache_get_wire_edge(), DRW_curve_batch_cache_get_wireframes_face(), and DRW_curve_batch_cache_pos_vertbuf_get().
|
static |
Definition at line 442 of file draw_cache_impl_curve.c.
References Curve::batch_cache, CurveBatchCache::cd_used, DRW_curve_material_count_get(), Curve::editfont, Curve::editnurb, CurveBatchCache::is_dirty, CurveBatchCache::is_editmode, CurveBatchCache::mat_len, MEM_callocN, NULL, Curve::nurb, EditNurb::nurbs, CurveBatchCache::surf_per_mat, and CurveBatchCache::surf_per_mat_tris.
Referenced by DRW_curve_batch_cache_validate().
|
static |
Definition at line 413 of file draw_cache_impl_curve.c.
References Curve::batch_cache, DRW_curve_material_count_get(), Curve::editfont, Curve::editnurb, CurveBatchCache::is_dirty, CurveBatchCache::is_editmode, CurveBatchCache::mat_len, and NULL.
Referenced by DRW_curve_batch_cache_validate().
|
static |
Definition at line 311 of file draw_cache_impl_curve.c.
References CD_AUTO_FROM_NAME, CD_MASK_MLOOPUV, CD_MASK_ORCO, CD_MASK_TANGENT, CD_MCOL, CD_MTFACE, CD_ORCO, CD_TANGENT, GPU_material_attributes(), LISTBASE_FOREACH, GPUMaterial::name, NULL, and type.
Referenced by DRW_curve_batch_cache_get_surface_shaded().
|
static |
Definition at line 590 of file draw_cache_impl_curve.c.
References CurveCache::bev, BLI_assert, curve_render_data_wire_curve_len_get(), curve_render_data_wire_edges_len_get(), curve_render_data_wire_verts_len_get(), CurveCache::disp, DL_POLY, DL_SEGM, ELEM, GPU_indexbuf_add_generic_vert(), GPU_indexbuf_add_primitive_restart(), GPU_indexbuf_build_in_place(), GPU_indexbuf_init_ex(), GPU_PRIM_LINE_STRIP, LISTBASE_FOREACH, NULL, and CurveRenderData::ob_curve_cache.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 554 of file draw_cache_impl_curve.c.
References attr_id, CurveCache::bev, BLI_assert, curve_render_data_wire_verts_len_get(), CurveCache::disp, DL_POLY, DL_SEGM, ELEM, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_vertbuf_attr_set(), GPU_vertbuf_data_alloc(), GPU_vertbuf_init_with_format, GPU_vertformat_attr_add(), LISTBASE_FOREACH, NULL, CurveRenderData::ob_curve_cache, and pos.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 634 of file draw_cache_impl_curve.c.
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 746 of file draw_cache_impl_curve.c.
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, NULL, CurveRenderData::nurbs, pos, v, and BezTriple::vec.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 219 of file draw_cache_impl_curve.c.
References CurveRenderData::actnu, Curve::actnu, CurveRenderData::actvert, Curve::actvert, CU_DATATYPE_NORMAL, CU_DATATYPE_OVERLAY, CU_DATATYPE_WIRE, CurveRenderData::curve_len, curve_render_normal_len_get(), curve_render_overlay_verts_edges_len_get(), curve_render_wire_verts_edges_len_get(), CurveRenderData::edge_len, CurveRenderData::edit_font, Curve::editfont, Curve::editnurb, 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, and CurveRenderData::wire.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 265 of file draw_cache_impl_curve.c.
References MEM_freeN.
Referenced by DRW_curve_batch_cache_create_requested().
|
static |
Definition at line 305 of file draw_cache_impl_curve.c.
References BLI_assert, CU_DATATYPE_NORMAL, CurveRenderData::len, CurveRenderData::normal, and CurveRenderData::types.
Referenced by curve_create_edit_curves_nor().
|
static |
Definition at line 281 of file draw_cache_impl_curve.c.
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 275 of file draw_cache_impl_curve.c.
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 299 of file draw_cache_impl_curve.c.
References BLI_assert, CU_DATATYPE_WIRE, CurveRenderData::curve_len, CurveRenderData::types, and CurveRenderData::wire.
Referenced by curve_create_curves_lines().
|
static |
Definition at line 293 of file draw_cache_impl_curve.c.
References BLI_assert, CU_DATATYPE_WIRE, CurveRenderData::edge_len, CurveRenderData::types, and CurveRenderData::wire.
Referenced by curve_create_curves_lines().
|
static |
Definition at line 287 of file draw_cache_impl_curve.c.
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 142 of file draw_cache_impl_curve.c.
References CurveCache::bev, ListBase::first, BevList::next, Nurb::next, BevList::nr, and Nurb::resolu.
Referenced by curve_render_data_create().
|
static |
Definition at line 77 of file draw_cache_impl_curve.c.
References BLI_assert, and LISTBASE_FOREACH.
Referenced by curve_render_data_create().
|
static |
Definition at line 105 of file draw_cache_impl_curve.c.
References CurveCache::bev, BLI_assert, CurveCache::disp, DL_POLY, DL_SEGM, ELEM, and LISTBASE_FOREACH.
Referenced by curve_render_data_create().
Definition at line 967 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, BLI_assert, CD_MASK_MLOOPUV, CD_MASK_TANGENT, CurveBatchCache::cd_needed, CurveBatchCache::cd_used, CU_DATATYPE_NORMAL, CU_DATATYPE_OVERLAY, CU_DATATYPE_SURFACE, 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(), CurveBatchCache::curves, CurveBatchCache::curves_lines, CurveBatchCache::curves_nor, CurveBatchCache::curves_pos, CurveBatchCache::curves_weight, CurveBatchCache::data, Object::data, CurveCache::disp, DRW_ADD_FLAG_FROM_IBO_REQUEST, DRW_ADD_FLAG_FROM_VBO_REQUEST, DRW_batch_requested(), DRW_displist_indexbuf_create_edges_adjacency_lines(), DRW_displist_indexbuf_create_lines_in_order(), DRW_displist_indexbuf_create_triangles_in_order(), DRW_displist_indexbuf_create_triangles_loop_split_by_material(), DRW_displist_vertbuf_create_loop_pos_and_nor_and_uv_and_tan(), DRW_displist_vertbuf_create_pos_and_nor(), DRW_displist_vertbuf_create_wiredata(), DRW_ibo_request(), DRW_ibo_requested(), DRW_vbo_request(), DRW_vbo_requested(), CurveBatchCache::edge_detection, CurveBatchCache::edge_fac, CurveBatchCache::edges_adj_lines, CurveBatchCache::edit, CurveBatchCache::edit_edges, CurveBatchCache::edit_lines, CurveBatchCache::edit_normals, CurveBatchCache::edit_verts, ELEM, GPU_BATCH_CLEAR_SAFE, GPU_PRIM_LINE_STRIP, GPU_PRIM_LINES, GPU_PRIM_LINES_ADJ, GPU_PRIM_POINTS, GPU_PRIM_TRIS, GPUBatch, CurveBatchCache::ibo, Object::id, CurveBatchCache::is_manifold, CurveBatchCache::loop_pos_nor, CurveBatchCache::loop_tan, CurveBatchCache::loop_uv, CurveBatchCache::mat_len, ID::name, OB_CURVE, CurveRenderData::ob_curve_cache, OB_FONT, OB_SURF, CurveBatchCache::ordered, CurveBatchCache::pos, CurveBatchCache::pos_nor, Object::runtime, scene, CurveBatchCache::surf_per_mat, CurveBatchCache::surf_per_mat_tris, CurveBatchCache::surfaces, CurveBatchCache::surfaces_edges, CurveBatchCache::surfaces_lines, CurveBatchCache::surfaces_tris, and Object::type.
Referenced by drw_batch_cache_generate_requested().
| void DRW_curve_batch_cache_dirty_tag | ( | Curve * | cu, |
| int | mode | ||
| ) |
Definition at line 488 of file draw_cache_impl_curve.c.
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, CurveBatchCache::is_dirty, and NULL.
Referenced by DRW_engines_register().
| void DRW_curve_batch_cache_free | ( | Curve * | cu | ) |
Definition at line 543 of file draw_cache_impl_curve.c.
References Curve::batch_cache, curve_batch_cache_clear(), and MEM_SAFE_FREE.
Referenced by DRW_engines_register().
Definition at line 945 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), CurveBatchCache::edge_detection, and CurveBatchCache::is_manifold.
Referenced by DRW_cache_curve_edge_detection_get(), DRW_cache_surf_edge_detection_get(), and DRW_cache_text_edge_detection_get().
Definition at line 895 of file draw_cache_impl_curve.c.
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 901 of file draw_cache_impl_curve.c.
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 889 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::edit_normals.
Referenced by DRW_cache_curve_edge_normal_get().
| GPUBatch** DRW_curve_batch_cache_get_surface_shaded | ( | struct Curve * | cu, |
| struct GPUMaterial ** | gpumat_array, | ||
| uint | gpumat_array_len | ||
| ) |
Definition at line 913 of file draw_cache_impl_curve.c.
References BLI_assert, CurveBatchCache::cd_needed, curve_batch_cache_get(), curve_cd_calc_used_gpu_layers(), DRW_batch_request(), CurveBatchCache::mat_len, and CurveBatchCache::surf_per_mat.
Referenced by DRW_cache_curve_surface_shaded_get(), DRW_cache_surf_surface_shaded_get(), and DRW_cache_text_surface_shaded_get().
Definition at line 907 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::surfaces.
Referenced by DRW_cache_curve_surface_get(), DRW_cache_surf_surface_get(), and DRW_cache_text_surface_get().
Definition at line 883 of file draw_cache_impl_curve.c.
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(), DRW_cache_text_edge_wire_get(), and DRW_cache_text_loose_edges_get().
Definition at line 939 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), and CurveBatchCache::surfaces_edges.
Referenced by DRW_cache_curve_face_wireframe_get(), DRW_cache_surf_face_wireframe_get(), and DRW_cache_text_face_wireframe_get().
| GPUVertBuf* DRW_curve_batch_cache_pos_vertbuf_get | ( | struct Curve * | cu | ) |
Definition at line 929 of file draw_cache_impl_curve.c.
References CurveBatchCache::batch, curve_batch_cache_get(), DRW_batch_request(), DRW_vbo_request(), CurveBatchCache::loop_pos_nor, NULL, CurveBatchCache::ordered, and CurveBatchCache::surfaces.
Referenced by DRW_cache_object_pos_vertbuf_get().
| void DRW_curve_batch_cache_validate | ( | Curve * | cu | ) |
Definition at line 475 of file draw_cache_impl_curve.c.
References curve_batch_cache_clear(), curve_batch_cache_init(), and curve_batch_cache_valid().
Referenced by drw_batch_cache_validate().
| int DRW_curve_material_count_get | ( | Curve * | cu | ) |
Definition at line 956 of file draw_cache_impl_curve.c.
References max_ii(), and Curve::totcol.
Referenced by curve_batch_cache_init(), curve_batch_cache_valid(), and DRW_cache_object_material_count_get().