Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "BLI_math_base.h"
#include "GPU_batch.h"
#include "GPU_batch_presets.h"
#include "GPU_platform.h"
#include "GPU_shader.h"
#include "gpu_backend.hh"
#include "gpu_context_private.hh"
#include "gpu_index_buffer_private.hh"
#include "gpu_shader_private.hh"
#include "gpu_vertex_buffer_private.hh"
#include "gpu_batch_private.hh"
#include <cstring>
Go to the source code of this file.
GPU geometry batch Contains VAOs + VBOs + Shader representing a drawable entity.
Definition in file gpu_batch.cc.
Definition at line 36 of file gpu_batch.cc.
References batch, blender::gpu::GPUBackend::batch_alloc(), blender::gpu::GPUBackend::get(), and GPUBatch.
Referenced by DRW_batch_request(), DRW_temp_batch_instance_request(), DRW_temp_batch_request(), and GPU_batch_create_ex().
Same as discard but does not free. (does not call free callback).
Definition at line 87 of file gpu_batch.cc.
References batch, GPU_BATCH_INST_VBO_MAX_LEN, GPU_BATCH_INVALID, GPU_BATCH_OWNS_INDEX, GPU_BATCH_OWNS_INST_VBO, GPU_BATCH_OWNS_INST_VBO_ANY, GPU_BATCH_OWNS_VBO, GPU_BATCH_OWNS_VBO_ANY, GPU_BATCH_VBO_MAX_LEN, GPU_indexbuf_discard(), GPU_VERTBUF_DISCARD_SAFE, and v.
Referenced by DRW_temp_batch_instance_request(), DRW_temp_batch_request(), and GPU_batch_discard().
This will share the VBOs with the new batch.
Definition at line 76 of file gpu_batch.cc.
References GPU_batch_init_ex(), GPU_BATCH_INVALID, GPU_BATCH_VBO_MAX_LEN, GPU_PRIM_POINTS, and v.
Referenced by DRW_instance_buffer_finish().
GPUBatch* GPU_batch_create_ex | ( | GPUPrimType | prim_type, |
GPUVertBuf * | verts, | ||
GPUIndexBuf * | elem, | ||
eGPUBatchFlag | owns_flag | ||
) |
Definition at line 43 of file gpu_batch.cc.
References batch, GPU_batch_calloc(), GPU_batch_init_ex(), GPUBatch, and verts.
Referenced by batch_screen_edges_get(), batch_sphere_wire(), blf_batch_draw_init(), curves_batch_cache_ensure_procedural_indices(), draw_cache_view_batch(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_seq_fcurve_overlay(), DRW_cache_bone_arrows_get(), DRW_cache_bone_box_get(), DRW_cache_bone_box_wire_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_octahedral_wire_get(), DRW_cache_bone_point_get(), DRW_cache_bone_point_wire_outline_get(), DRW_cache_bone_stick_get(), DRW_cache_camera_distances_get(), DRW_cache_camera_frame_get(), DRW_cache_camera_tria_get(), DRW_cache_camera_tria_wire_get(), DRW_cache_camera_volume_get(), DRW_cache_camera_volume_wire_get(), DRW_cache_circle_get(), DRW_cache_cube_get(), DRW_cache_cursor_get(), DRW_cache_empty_capsule_body_get(), DRW_cache_empty_capsule_cap_get(), DRW_cache_empty_cone_get(), DRW_cache_empty_cube_get(), DRW_cache_empty_cylinder_get(), DRW_cache_empty_sphere_get(), DRW_cache_field_cone_limit_get(), DRW_cache_field_curve_get(), DRW_cache_field_force_get(), DRW_cache_field_sphere_limit_get(), DRW_cache_field_tube_limit_get(), DRW_cache_field_vortex_get(), DRW_cache_field_wind_get(), DRW_cache_fullscreen_quad_get(), DRW_cache_gpencil_face_wireframe_get(), DRW_cache_grid_get(), DRW_cache_groundline_get(), DRW_cache_light_area_disk_lines_get(), DRW_cache_light_area_square_lines_get(), DRW_cache_light_point_lines_get(), DRW_cache_light_spot_lines_get(), DRW_cache_light_spot_volume_get(), DRW_cache_light_sun_lines_get(), DRW_cache_lightprobe_cube_get(), DRW_cache_lightprobe_grid_get(), DRW_cache_lightprobe_planar_get(), DRW_cache_normal_arrow_get(), DRW_cache_particles_get_prim(), DRW_cache_plain_axes_get(), drw_cache_procedural_lines_get(), drw_cache_procedural_points_get(), drw_cache_procedural_triangles_get(), DRW_cache_quad_get(), DRW_cache_quad_wires_get(), DRW_cache_single_arrow_get(), DRW_cache_speaker_get(), DRW_cache_sphere_get(), DRW_gpencil_dummy_buffer_get(), DRW_metaball_batch_cache_get_triangles_with_normals(), DRW_metaball_batch_cache_get_wireframes_face(), drw_volume_selection_surface_cb(), drw_volume_wireframe_cb(), gpencil_sbuffer_stroke_ensure(), gpu_batch_preset_panel_drag_widget(), GPU_batch_preset_quad(), gpu_batch_sphere(), GPU_batch_tris_from_poly_2d_encoded(), GPU_batch_wire_from_poly_2d_encoded(), gpu_viewport_batch_create(), immBeginBatch(), knifetool_draw(), lattice_batch_cache_create_overlay_batches(), blender::ed::space_node::nodelink_batch_init(), particle_batch_cache_ensure_procedural_indices(), stitch_draw_vbo(), ui_batch_roundbox_shadow_get(), ui_batch_roundbox_widget_get(), waveform_draw_one(), wm_gizmo_geometryinfo_draw(), and wm_xr_controller_model_batch_create().
Definition at line 109 of file gpu_batch.cc.
References batch, and GPU_batch_clear().
Referenced by draw_cache_view_batch(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_seq_fcurve_overlay(), ED_draw_object_facemap(), GPU_batch_preset_panel_drag_widget(), gpu_batch_presets_exit(), gpu_viewport_batch_free(), gpu_viewport_batch_get(), knifetool_draw(), pygpu_batch__tp_dealloc(), stitch_draw_vbo(), waveform_draw_one(), wm_gizmo_geometryinfo_draw(), wm_xr_session_controller_data_free(), and TextureInfo::~TextureInfo().
Definition at line 223 of file gpu_batch.cc.
References batch, GPU_batch_draw_advanced(), and GPU_shader_bind().
Referenced by blf_batch_draw(), button2d_draw_intern(), curve_draw_stroke_3d(), draw_cache_view_batch(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_seq_fcurve_overlay(), draw_widgetbase_batch(), drawscredge_area_draw(), drw_debug_draw_spheres(), DRW_draw_cursor(), DRW_draw_cursor_2d_ex(), DRW_draw_depth_object(), DRW_transform_none(), ED_draw_object_facemap(), gpu_viewport_draw_colormanaged(), icon_draw_texture(), knifetool_draw(), blender::ed::space_node::node_draw_link_bezier(), blender::ed::space_node::nodelink_batch_draw(), panel_draw_aligned_widgets(), pygpu_batch_draw(), stitch_draw_vbo(), ui_draw_but_UNITVEC(), ui_draw_dropshadow(), UI_draw_roundbox_4fv_ex(), UI_widgetbase_draw_cache_flush(), waveform_draw_one(), wm_draw_region_blend(), wm_gizmo_geometryinfo_draw(), and wm_xr_controller_model_draw().
void GPU_batch_draw_advanced | ( | GPUBatch * | gpu_batch, |
int | v_first, | ||
int | v_count, | ||
int | i_first, | ||
int | i_count | ||
) |
This does not bind/unbind shader and does not call GPU_matrix_bind().
Definition at line 243 of file gpu_batch.cc.
References batch, BLI_assert, blender::gpu::Context::get(), and min_ii().
Referenced by blender::gpu::GLDrawList::append(), draw_geometry_execute(), GPU_batch_draw(), GPU_batch_draw_instanced(), and GPU_batch_draw_range().
Draw multiple instance of a batch without having any instance attributes.
Definition at line 235 of file gpu_batch.cc.
References batch, BLI_assert, GPU_batch_draw_advanced(), and GPU_shader_bind().
Referenced by icon_draw_cache_texture_flush_ex(), and UI_widgetbase_draw_cache_flush().
Definition at line 229 of file gpu_batch.cc.
References batch, GPU_batch_draw_advanced(), and GPU_shader_bind().
Referenced by knifetool_draw(), and wm_xr_controller_model_draw().
void GPU_batch_elembuf_set | ( | GPUBatch * | batch, |
GPUIndexBuf * | elem, | ||
bool | own_ibo | ||
) |
Definition at line 135 of file gpu_batch.cc.
References batch, BLI_assert, GPU_BATCH_DIRTY, GPU_BATCH_OWNS_INDEX, GPU_indexbuf_discard(), and SET_FLAG_FROM_TEST.
Referenced by DRW_ibo_request().
Definition at line 308 of file gpu_batch.cc.
References gpu_batch_presets_exit().
Referenced by GPU_exit().
Definition at line 303 of file gpu_batch.cc.
References gpu_batch_presets_init().
Referenced by GPU_init().
void GPU_batch_init_ex | ( | GPUBatch * | batch, |
GPUPrimType | prim_type, | ||
GPUVertBuf * | verts, | ||
GPUIndexBuf * | elem, | ||
eGPUBatchFlag | owns_flag | ||
) |
Definition at line 53 of file gpu_batch.cc.
References batch, BLI_assert, GPU_BATCH_DIRTY, GPU_BATCH_INIT, GPU_BATCH_OWNS_INDEX, GPU_BATCH_OWNS_VBO, GPU_BATCH_VBO_MAX_LEN, v, and verts.
Referenced by DRW_batch_requested(), GPU_batch_copy(), and GPU_batch_create_ex().
int GPU_batch_instbuf_add_ex | ( | GPUBatch * | batch, |
GPUVertBuf * | insts, | ||
bool | own_vbo | ||
) |
Definition at line 148 of file gpu_batch.cc.
References batch, BLI_assert, BLI_assert_msg, GPU_BATCH_DIRTY, GPU_BATCH_INST_VBO_MAX_LEN, GPU_BATCH_OWNS_INST_VBO, SET_FLAG_FROM_TEST, and v.
Referenced by DRW_cache_pointcloud_surface_shaded_get(), DRW_instance_buffer_finish(), DRW_pointcloud_batch_cache_get_surface(), gpencil_batches_ensure(), and gpencil_sbuffer_stroke_ensure().
void GPU_batch_instbuf_set | ( | GPUBatch * | batch, |
GPUVertBuf * | inst, | ||
bool | own_vbo | ||
) |
Definition at line 122 of file gpu_batch.cc.
References batch, BLI_assert, GPU_BATCH_DIRTY, GPU_BATCH_OWNS_INST_VBO, GPU_vertbuf_discard(), and SET_FLAG_FROM_TEST.
Referenced by blf_batch_draw_init(), and blender::ed::space_node::nodelink_batch_init().
void GPU_batch_program_set_builtin | ( | GPUBatch * | batch, |
eGPUBuiltinShader | shader_id | ||
) |
Definition at line 287 of file gpu_batch.cc.
References batch, GPU_batch_program_set_builtin_with_config(), and GPU_SHADER_CFG_DEFAULT.
Referenced by blf_batch_draw(), button2d_draw_intern(), curve_draw_stroke_3d(), draw_cache_view_batch(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_seq_fcurve_overlay(), draw_widgetbase_batch(), drawscredge_area_draw(), drw_debug_draw_spheres(), DRW_transform_none(), ED_draw_object_facemap(), ED_screen_draw_edges(), gpu_viewport_draw_colormanaged(), knifetool_draw(), blender::ed::space_node::node_draw_link_bezier(), blender::ed::space_node::nodelink_batch_draw(), panel_draw_aligned_widgets(), stitch_draw_vbo(), ui_draw_but_UNITVEC(), ui_draw_dropshadow(), UI_draw_roundbox_4fv_ex(), UI_widgetbase_draw_cache_flush(), waveform_draw_one(), wm_gizmo_geometryinfo_draw(), and wm_xr_controller_model_draw().
void GPU_batch_program_set_builtin_with_config | ( | GPUBatch * | batch, |
eGPUBuiltinShader | shader_id, | ||
eGPUShaderConfig | sh_cfg | ||
) |
Definition at line 279 of file gpu_batch.cc.
References batch, GPU_batch_set_shader(), and GPU_shader_get_builtin_shader_with_config().
Referenced by DRW_draw_depth_object(), and GPU_batch_program_set_builtin().
Bind program bound to IMM to the batch.
XXX Use this with much care. Drawing with the GPUBatch API is not compatible with IMM. DO NOT DRAW WITH THE BATCH BEFORE CALLING immUnbindProgram.
Definition at line 292 of file gpu_batch.cc.
References batch, GPU_batch_set_shader(), and immGetShader().
Referenced by gpu_viewport_draw_colormanaged().
Definition at line 211 of file gpu_batch.cc.
References batch, and GPU_shader_bind().
Referenced by draw_geometry_bind(), DRW_draw_cursor(), DRW_draw_cursor_2d_ex(), GPU_batch_program_set_builtin_with_config(), GPU_batch_program_set_imm_shader(), icon_draw_cache_texture_flush_ex(), icon_draw_texture(), immEnd(), pygpu_batch_draw(), pygpu_batch_program_set(), and wm_draw_region_blend().
int GPU_batch_vertbuf_add_ex | ( | GPUBatch * | batch, |
GPUVertBuf * | verts, | ||
bool | own_vbo | ||
) |
Returns the index of verts in the batch.
Definition at line 171 of file gpu_batch.cc.
References batch, BLI_assert, BLI_assert_msg, GPU_BATCH_DIRTY, GPU_BATCH_OWNS_VBO, GPU_BATCH_VBO_MAX_LEN, SET_FLAG_FROM_TEST, v, and verts.
Referenced by DRW_metaball_batch_cache_get_wireframes_face(), drw_volume_wireframe_cb(), and EEVEE_motion_blur_cache_finish().
bool GPU_batch_vertbuf_has | ( | GPUBatch * | batch, |
GPUVertBuf * | verts | ||
) |
Definition at line 193 of file gpu_batch.cc.
References batch, GPU_BATCH_VBO_MAX_LEN, v, and verts.
Referenced by EEVEE_motion_blur_cache_finish().