Blender  V2.93
Macros | Functions
gpu_vertex_format.cc File Reference
#include "GPU_vertex_format.h"
#include "gpu_shader_private.hh"
#include "gpu_vertex_format_private.h"
#include <cstddef>
#include <cstring>
#include "BLI_ghash.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"

Go to the source code of this file.

Macros

#define PACK_DEBUG   0
 

Functions

void GPU_vertformat_clear (GPUVertFormat *format)
 
void GPU_vertformat_copy (GPUVertFormat *dest, const GPUVertFormat *src)
 
static uint comp_sz (GPUVertCompType type)
 
static uint attr_sz (const GPUVertAttr *a)
 
static uint attr_align (const GPUVertAttr *a)
 
uint vertex_buffer_size (const GPUVertFormat *format, uint vertex_len)
 
static uchar copy_attr_name (GPUVertFormat *format, const char *name)
 
uint GPU_vertformat_attr_add (GPUVertFormat *format, const char *name, GPUVertCompType comp_type, uint comp_len, GPUVertFetchMode fetch_mode)
 
void GPU_vertformat_alias_add (GPUVertFormat *format, const char *alias)
 
void GPU_vertformat_multiload_enable (GPUVertFormat *format, int load_count)
 
int GPU_vertformat_attr_id_get (const GPUVertFormat *format, const char *name)
 
void GPU_vertformat_attr_rename (GPUVertFormat *format, int attr_id, const char *new_name)
 
static void safe_bytes (char out[11], const char data[8])
 
void GPU_vertformat_safe_attr_name (const char *attr_name, char *r_safe_name, uint UNUSED(max_len))
 
void GPU_vertformat_deinterleave (GPUVertFormat *format)
 
uint padding (uint offset, uint alignment)
 
void VertexFormat_pack (GPUVertFormat *format)
 
void GPU_vertformat_from_shader (GPUVertFormat *format, const struct GPUShader *gpushader)
 

Detailed Description

GPU vertex format

Definition in file gpu_vertex_format.cc.

Macro Definition Documentation

◆ PACK_DEBUG

#define PACK_DEBUG   0

Definition at line 37 of file gpu_vertex_format.cc.

Function Documentation

◆ attr_align()

static uint attr_align ( const GPUVertAttr a)
static

Definition at line 85 of file gpu_vertex_format.cc.

References Freestyle::a, Freestyle::c, comp_sz(), and GPU_COMP_I10.

Referenced by VertexFormat_pack().

◆ attr_sz()

static uint attr_sz ( const GPUVertAttr a)
static

Definition at line 77 of file gpu_vertex_format.cc.

References Freestyle::a, comp_sz(), and GPU_COMP_I10.

Referenced by GPU_vertformat_attr_add().

◆ comp_sz()

static uint comp_sz ( GPUVertCompType  type)
static

Definition at line 68 of file gpu_vertex_format.cc.

References GPU_COMP_F32, and type.

Referenced by attr_align(), and attr_sz().

◆ copy_attr_name()

static uchar copy_attr_name ( GPUVertFormat format,
const char *  name 
)
static

◆ GPU_vertformat_alias_add()

void GPU_vertformat_alias_add ( GPUVertFormat format,
const char *  alias 
)

◆ GPU_vertformat_attr_add()

uint GPU_vertformat_attr_add ( GPUVertFormat format,
const char *  name,
GPUVertCompType  comp_type,
uint  comp_len,
GPUVertFetchMode  fetch_mode 
)

Definition at line 132 of file gpu_vertex_format.cc.

References attr_id, attr_sz(), GPUVertAttr::comp_len, GPUVertAttr::comp_type, copy_attr_name(), GPUVertAttr::fetch_mode, GPU_COMP_F32, GPU_COMP_I10, GPU_FETCH_FLOAT, GPU_FETCH_INT_TO_FLOAT_UNIT, GPU_VERT_ATTR_MAX_LEN, GPU_VERT_FORMAT_MAX_NAMES, GPUVertAttr::name_len, GPUVertAttr::names, GPUVertAttr::offset, and GPUVertAttr::sz.

Referenced by acf_generic_channel_backdrop(), acf_generic_dataexpand_backdrop(), ANIM_channel_draw(), ANIM_draw_cfra(), ANIM_draw_framerange(), ANIM_draw_previewrange(), annotation_draw_eraser(), annotation_draw_stabilizer(), annotation_draw_stroke_2d(), annotation_draw_stroke_3d(), annotation_draw_stroke_buffer(), annotation_draw_stroke_point(), arrow_draw_geom(), batch_screen_edges_get(), blf_batch_draw_init(), brush_drawcursor(), button2d_draw_intern(), button2d_geom_draw_backdrop(), cage2d_draw_box_corners(), cage2d_draw_box_interaction(), cage2d_draw_circle_handles(), cage2d_draw_circle_wire(), cage3d_draw_box_corners(), cage3d_draw_box_interaction(), cage3d_draw_circle_handles(), cage3d_draw_circle_wire(), clip_draw_dopesheet_channels(), clip_draw_dopesheet_main(), clip_draw_graph(), clip_draw_sfra_efra(), console_textview_draw_cursor(), curve_create_curves_pos(), curve_create_edit_curves_nor(), curve_create_edit_data_and_handles(), curve_draw_stroke_3d(), dial_geom_draw(), dial_ghostarc_draw(), dial_ghostarc_draw_helpline(), dial_ghostarc_draw_incremental_angle(), draw_azone_arrow(), draw_background(), draw_cache_view(), draw_channel_strips(), draw_columnheader_background(), draw_columnheader_columns(), draw_current_frame(), draw_disk_shaded(), draw_display_buffer(), draw_distortion(), draw_dividers(), draw_effect_inputs_highlight(), draw_fcurve(), draw_fcurve_handles(), draw_fcurve_modifier_controls_envelope(), draw_fcurve_samples(), draw_fcurve_vertices(), draw_image_cache(), draw_image_sample_line(), draw_keylist(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_marker_areas(), draw_marker_line(), draw_markers_background(), draw_mouse_position(), draw_movieclip_cache(), draw_movieclip_muted(), draw_nla_main_data(), draw_nodespace_back_pix(), draw_parallel_lines(), draw_plane_marker_ex(), draw_plane_marker_image(), draw_render_info(), draw_seq_backdrop(), draw_seq_fcurve_overlay(), draw_seq_invalid(), draw_seq_locked(), draw_seq_strip(), draw_seq_strips(), draw_single_handle(), draw_spline_points(), blender::ed::spreadsheet::draw_spreadsheet_in_region(), draw_stabilization_border(), draw_timeline_seq(), draw_track_path(), draw_tracking_tracks(), draw_udim_tile_grids(), draw_view_axis(), draw_waveform(), drawConstraint(), drawEdgeSlide(), drawFlyPixel(), drawLine(), drawmeta_contents(), drawPropCircle(), drawrenderborder(), drawSnapping(), drawVertSlide(), drawviewborder(), drawWalkPixel(), DRW_cache_bone_box_get(), DRW_cache_bone_dof_lines_get(), DRW_cache_bone_dof_sphere_get(), DRW_cache_bone_envelope_outline_get(), DRW_cache_bone_envelope_solid_get(), DRW_cache_bone_octahedral_get(), DRW_cache_bone_point_get(), DRW_cache_bone_point_wire_outline_get(), DRW_cache_bone_stick_get(), DRW_cache_cursor_get(), DRW_cache_empty_capsule_body_get(), DRW_cache_empty_capsule_cap_get(), DRW_cache_fullscreen_quad_get(), DRW_cache_grid_get(), DRW_cache_normal_arrow_get(), drw_cache_procedural_lines_get(), drw_cache_procedural_points_get(), drw_cache_procedural_triangles_get(), DRW_cache_speaker_get(), DRW_cache_sphere_get(), drw_debug_draw_lines(), drw_debug_draw_spheres(), DRW_displist_vertbuf_create_loop_pos_and_nor_and_uv_and_tan(), DRW_displist_vertbuf_create_pos_and_nor(), DRW_draw_cursor(), DRW_gpencil_dummy_buffer_get(), DRW_hair_init(), DRW_shgroup_call_buffer(), DRW_shgroup_call_buffer_instance(), DRW_shgroup_instance_format_array(), DRW_vertbuf_create_wiredata(), drw_volume_selection_surface_cb(), drw_volume_wireframe_cb(), dyntopo_detail_size_edit_draw(), ED_draw_object_facemap(), ED_gizmotypes_snap_3d_draw_util(), ED_gpencil_brush_draw_eraser(), ED_image_draw_cursor(), ED_image_draw_info(), ED_imbuf_sample_draw(), ED_mask_draw_frames(), ED_node_socket_draw(), ED_region_cache_draw_background(), ED_region_cache_draw_cached_segments(), ED_region_cache_draw_curfra_label(), ED_region_do_draw(), ED_region_draw_mouse_line_cb(), ED_region_grid_draw(), ED_region_image_metadata_draw(), ED_region_info_draw_multiline(), ED_screen_draw_join_shape(), ED_screen_draw_split_preview(), ED_time_scrub_channel_search_draw(), EDBM_preselect_edgering_draw(), EDBM_preselect_elem_draw(), edit_points_vert_format_get(), extra_vert_format(), extract_edge_fac_finish(), extract_edge_fac_init(), extract_edit_data_init(), extract_edituv_data_init(), extract_edituv_stretch_angle_init(), extract_edituv_stretch_area_init(), extract_fdots_edituv_data_init(), extract_fdots_nor_hq_init(), extract_fdots_nor_init(), extract_fdots_pos_init(), extract_fdots_uv_init(), extract_lnor_hq_init(), extract_lnor_init(), extract_mesh_analysis_init(), extract_orco_init(), extract_pos_nor_hq_init(), extract_pos_nor_init(), extract_sculpt_data_init(), extract_select_fdot_idx_init(), extract_select_idx_init(), extract_skin_roots_init(), extract_tan_ex(), extract_uv_init(), extract_vcol_init(), extract_weights_init(), file_draw_preview(), gizmo_axis_draw(), gizmo_cage2d_draw_intern(), gizmo_cage3d_draw_intern(), gizmo_plane_draw_grid(), gizmo_primitive_draw_geom(), gizmo_ruler_draw(), gpencil_brush_cursor_draw(), gpencil_color_format(), gpencil_draw_basic_stroke(), gpencil_draw_eraser(), gpencil_draw_stroke_3d(), gpencil_draw_stroke_volumetric_3d(), gpencil_edit_curve_format(), gpencil_edit_stroke_format(), gpencil_stroke_format(), GPU_batch_tris_from_poly_2d_encoded(), GPU_batch_wire_from_poly_2d_encoded(), gpu_pbvh_init(), gpu_viewport_batch_format(), GPU_viewport_stereo_composite(), gradient_draw_line(), graph_draw_driver_debug(), graph_draw_ghost_curves(), graph_main_region_draw(), hair_batch_cache_ensure_procedural_final_points(), hair_batch_cache_ensure_procedural_indices(), hair_batch_cache_ensure_procedural_pos(), hair_batch_cache_ensure_procedural_strand_data(), imm_draw_box_checker_2d_ex(), immDrawPixelsTexSetupAttributes(), knifetool_draw(), knifetool_draw_angle_snapping(), lattice_batch_cache_create_overlay_batches(), lattice_batch_cache_get_pos(), mask_draw_curve_type(), move_geom_draw(), mpath_vbo_get(), nla_action_draw_keyframes(), nla_actionclip_draw_markers(), nla_draw_strip(), nla_draw_use_dashed_outlines(), node_composit_backdrop_boxmask(), node_composit_backdrop_ellipsemask(), node_composit_backdrop_viewer(), node_draw_hidden(), node_draw_preview(), node_draw_preview_background(), node_draw_sockets(), nodelink_batch_init(), outliner_back(), outliner_draw_hierarchy_lines(), outliner_draw_highlights(), outliner_draw_rnacols(), outliner_draw_struct_marks(), paint_cursor_setup_2D_drawing(), paint_cursor_setup_3D_drawing(), paint_draw_cursor_overlay(), paint_draw_curve_cursor(), paint_draw_line_cursor(), paint_draw_smooth_cursor(), paint_draw_tex_overlay(), panel_draw_aligned_backdrop(), particle_batch_cache_ensure_pos(), particle_batch_cache_ensure_pos_and_seg(), particle_batch_cache_ensure_procedural_final_points(), particle_batch_cache_ensure_procedural_indices(), particle_batch_cache_ensure_procedural_pos(), particle_batch_cache_ensure_procedural_strand_data(), playanim_toscreen(), pointcloud_batch_cache_ensure_geom(), pointcloud_batch_cache_ensure_pos(), preset_2d_format(), preset_3d_format(), radial_control_paint_cursor(), radial_control_paint_tex(), region_draw_emboss(), screen_preview_draw_areas(), seq_draw_sfra_efra(), sequencer_draw_borders_overlay(), sequencer_draw_display_buffer(), stitch_draw(), textview_draw_sel(), textview_draw_string(), timeline_draw_cache(), transform_draw_cursor_draw(), UI_draw_anti_fan(), UI_draw_anti_tria(), UI_draw_box_shadow(), ui_draw_but_COLORBAND(), ui_draw_but_CURVE(), ui_draw_but_CURVEPROFILE(), ui_draw_but_HISTOGRAM(), ui_draw_but_HSVCIRCLE(), ui_draw_but_HSVCUBE(), ui_draw_but_TAB_outline(), ui_draw_but_UNITVEC(), ui_draw_gradient(), ui_draw_pie_center(), ui_draw_popover_back_impl(), ui_draw_separator(), UI_draw_text_underline(), ui_hsv_cursor(), UI_panel_category_draw_all(), UI_view2d_constant_grid_draw(), UI_view2d_multi_grid_draw(), blender::gpu::GLShader::vertformat_from_shader(), vflag_format(), vicon_colorset_draw(), vicon_gplayer_color_draw(), vicon_keytype_draw_wrapper(), vicon_small_tri_right_draw(), voxel_size_edit_draw(), waveform_draw_one(), widget_draw_extra_mask(), widget_draw_text(), widget_softshadow(), widget_swatch(), wm_gesture_draw_circle(), wm_gesture_draw_cross(), wm_gesture_draw_lasso(), wm_gesture_draw_line(), wm_gesture_draw_line_active_side(), wm_gesture_draw_rect(), wm_gizmo_geometryinfo_draw(), wm_stereo3d_draw_sidebyside(), and wm_stereo3d_draw_topbottom().

◆ GPU_vertformat_attr_id_get()

int GPU_vertformat_attr_id_get ( const GPUVertFormat format,
const char *  name 
)

◆ GPU_vertformat_attr_rename()

void GPU_vertformat_attr_rename ( GPUVertFormat format,
int  attr_id,
const char *  new_name 
)

◆ GPU_vertformat_clear()

void GPU_vertformat_clear ( GPUVertFormat format)

◆ GPU_vertformat_copy()

void GPU_vertformat_copy ( GPUVertFormat dest,
const GPUVertFormat src 
)

Definition at line 62 of file gpu_vertex_format.cc.

Referenced by blender::gpu::VertBuf::init().

◆ GPU_vertformat_deinterleave()

void GPU_vertformat_deinterleave ( GPUVertFormat format)

Definition at line 322 of file gpu_vertex_format.cc.

Referenced by extract_tan_ex(), extract_uv_init(), and extract_vcol_init().

◆ GPU_vertformat_from_shader()

void GPU_vertformat_from_shader ( GPUVertFormat format,
const struct GPUShader gpushader 
)

Definition at line 383 of file gpu_vertex_format.cc.

References shader().

◆ GPU_vertformat_multiload_enable()

void GPU_vertformat_multiload_enable ( GPUVertFormat format,
int  load_count 
)

Makes vertex attribute from the next vertices to be accessible in the vertex shader. For an attribute named "attr" you can access the next nth vertex using "attr{number}". Use this function after specifying all the attributes in the format.

NOTE: This does NOT work when using indexed rendering. NOTE: Only works for first attribute name. (this limitation can be changed if needed)

WARNING: this function creates a lot of aliases/attributes, make sure to keep the attribute name short to avoid overflowing the name-buffer.

Definition at line 204 of file gpu_vertex_format.cc.

References BLI_assert, BLI_snprintf(), copy_attr_name(), GPU_VERT_ATTR_MAX_LEN, GPU_VERT_ATTR_NAMES_BUF_LEN, GPU_VERT_FORMAT_MAX_NAMES, GPU_vertformat_attr_name_get(), GPUVertAttr::name_len, GPUVertAttr::names, GPUVertAttr::offset, and VertexFormat_pack().

Referenced by gpencil_color_format(), and gpencil_stroke_format().

◆ GPU_vertformat_safe_attr_name()

void GPU_vertformat_safe_attr_name ( const char *  attr_name,
char *  r_safe_name,
uint   UNUSEDmax_len 
)

◆ padding()

uint padding ( uint  offset,
uint  alignment 
)

◆ safe_bytes()

static void safe_bytes ( char  out[11],
const char  data[8] 
)
static

Definition at line 263 of file gpu_vertex_format.cc.

References data.

Referenced by GPU_vertformat_safe_attr_name().

◆ vertex_buffer_size()

uint vertex_buffer_size ( const GPUVertFormat format,
uint  vertex_len 
)

◆ VertexFormat_pack()

void VertexFormat_pack ( GPUVertFormat format)