|
Blender
V2.93
|
#include "BLI_utildefines.h"#include "GPU_index_buffer.h"#include "GPU_shader.h"#include "GPU_vertex_buffer.h"Go to the source code of this file.
Typedefs | |
| typedef enum eGPUBatchFlag | eGPUBatchFlag |
Enumerations | |
| enum | eGPUBatchFlag { GPU_BATCH_INVALID = 0 , GPU_BATCH_OWNS_VBO = (1 << 0) , GPU_BATCH_OWNS_VBO_MAX = (GPU_BATCH_OWNS_VBO << (GPU_BATCH_VBO_MAX_LEN - 1)) , GPU_BATCH_OWNS_VBO_ANY = ((GPU_BATCH_OWNS_VBO << GPU_BATCH_VBO_MAX_LEN) - 1) , GPU_BATCH_OWNS_INST_VBO = (GPU_BATCH_OWNS_VBO_MAX << 1) , GPU_BATCH_OWNS_INST_VBO_MAX = (GPU_BATCH_OWNS_INST_VBO << (GPU_BATCH_INST_VBO_MAX_LEN - 1)) , GPU_BATCH_OWNS_INST_VBO_ANY , GPU_BATCH_OWNS_INDEX = (GPU_BATCH_OWNS_INST_VBO_MAX << 1) , GPU_BATCH_INIT = (1 << 16) , GPU_BATCH_BUILDING = (1 << 16) , GPU_BATCH_DIRTY = (1 << 17) } |
Variables | |
| GPUBatch | |
GPU geometry batch Contains VAOs + VBOs + Shader representing a drawable entity.
Definition in file GPU_batch.h.
| #define GPU_BATCH_CLEAR_SAFE | ( | batch | ) |
Definition at line 207 of file GPU_batch.h.
| #define GPU_batch_create | ( | prim, | |
| verts, | |||
| elem | |||
| ) | GPU_batch_create_ex(prim, verts, elem, 0) |
Definition at line 107 of file GPU_batch.h.
| #define GPU_BATCH_DISCARD_ARRAY_SAFE | ( | _batch_array, | |
| _len | |||
| ) |
Definition at line 215 of file GPU_batch.h.
| #define GPU_BATCH_DISCARD_SAFE | ( | batch | ) |
| #define GPU_batch_init | ( | batch, | |
| prim, | |||
| verts, | |||
| elem | |||
| ) | GPU_batch_init_ex(batch, prim, verts, elem, 0) |
Definition at line 108 of file GPU_batch.h.
| #define GPU_BATCH_INST_VBO_MAX_LEN 2 |
Definition at line 36 of file GPU_batch.h.
| #define GPU_BATCH_OWNS_NONE GPU_BATCH_INVALID |
Definition at line 64 of file GPU_batch.h.
| #define GPU_batch_texture_bind | ( | batch, | |
| name, | |||
| tex | |||
| ) | GPU_texture_bind(tex, GPU_shader_get_texture_binding((batch)->shader, name)); |
Definition at line 149 of file GPU_batch.h.
Definition at line 133 of file GPU_batch.h.
Definition at line 134 of file GPU_batch.h.
Definition at line 132 of file GPU_batch.h.
| #define GPU_batch_uniform_2f | ( | batch, | |
| name, | |||
| x, | |||
| y | |||
| ) | GPU_shader_uniform_2f((batch)->shader, name, x, y); |
Definition at line 135 of file GPU_batch.h.
| #define GPU_batch_uniform_2fv | ( | batch, | |
| name, | |||
| val | |||
| ) | GPU_shader_uniform_2fv((batch)->shader, name, val); |
Definition at line 140 of file GPU_batch.h.
| #define GPU_batch_uniform_2fv_array | ( | batch, | |
| name, | |||
| len, | |||
| val | |||
| ) | GPU_shader_uniform_2fv_array((batch)->shader, name, len, val); |
Definition at line 143 of file GPU_batch.h.
| #define GPU_batch_uniform_3f | ( | batch, | |
| name, | |||
| x, | |||
| y, | |||
| z | |||
| ) | GPU_shader_uniform_3f((batch)->shader, name, x, y, z); |
Definition at line 136 of file GPU_batch.h.
| #define GPU_batch_uniform_3fv | ( | batch, | |
| name, | |||
| val | |||
| ) | GPU_shader_uniform_3fv((batch)->shader, name, val); |
Definition at line 141 of file GPU_batch.h.
| #define GPU_batch_uniform_4f | ( | batch, | |
| name, | |||
| x, | |||
| y, | |||
| z, | |||
| w | |||
| ) | GPU_shader_uniform_4f((batch)->shader, name, x, y, z, w); |
Definition at line 138 of file GPU_batch.h.
| #define GPU_batch_uniform_4fv | ( | batch, | |
| name, | |||
| val | |||
| ) | GPU_shader_uniform_4fv((batch)->shader, name, val); |
Definition at line 142 of file GPU_batch.h.
| #define GPU_batch_uniform_4fv_array | ( | batch, | |
| name, | |||
| len, | |||
| val | |||
| ) | GPU_shader_uniform_4fv_array((batch)->shader, name, len, val); |
Definition at line 145 of file GPU_batch.h.
| #define GPU_batch_uniform_mat4 | ( | batch, | |
| name, | |||
| val | |||
| ) | GPU_shader_uniform_mat4((batch)->shader, name, val); |
Definition at line 147 of file GPU_batch.h.
| #define GPU_BATCH_VAO_DYN_ALLOC_COUNT 16 |
Definition at line 38 of file GPU_batch.h.
| #define GPU_BATCH_VAO_STATIC_LEN 3 |
Definition at line 37 of file GPU_batch.h.
| #define GPU_BATCH_VBO_MAX_LEN 6 |
Definition at line 35 of file GPU_batch.h.
| #define GPU_batch_vertbuf_add | ( | batch, | |
| verts | |||
| ) | GPU_batch_vertbuf_add_ex(batch, verts, false) |
Definition at line 121 of file GPU_batch.h.
| typedef enum eGPUBatchFlag eGPUBatchFlag |
| enum eGPUBatchFlag |
Definition at line 40 of file GPU_batch.h.
| BLI_STATIC_ASSERT | ( | ) |
IMPORTANT: Do not allocate manually as the real struct is bigger (i.e: GLBatch). This is only the common and "public" part of the struct. Use the provided allocator. TODO(fclem): Make the content of this struct hidden and expose getters/setters.
verts[0] is required, others can be NULL
Instance attributes.
NULL if element list not needed
Bookkeeping.
Type of geometry to draw.
Current assigned shader. DEPRECATED. Here only for uniform binding.
Definition at line 66 of file GPU_batch.h.
References GPU_BATCH_INST_VBO_MAX_LEN, GPU_BATCH_VBO_MAX_LEN, GPUBatch, shader(), and verts.
| GPUBatch* GPU_batch_calloc | ( | void | ) |
Definition at line 53 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().
| void GPU_batch_clear | ( | GPUBatch * | batch | ) |
Definition at line 105 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().
Definition at line 94 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, |
| GPUVertBuf * | vert, | ||
| GPUIndexBuf * | elem, | ||
| eGPUBatchFlag | owns_flag | ||
| ) |
Definition at line 60 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(), 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(), hair_batch_cache_ensure_procedural_indices(), immBeginBatch(), knifetool_draw(), lattice_batch_cache_create_overlay_batches(), 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(), and wm_gizmo_geometryinfo_draw().
| void GPU_batch_discard | ( | GPUBatch * | batch | ) |
Definition at line 127 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(), drw_debug_draw_spheres(), 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(), and wm_gizmo_geometryinfo_draw().
| void GPU_batch_draw | ( | GPUBatch * | batch | ) |
Definition at line 234 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(), DRW_draw_depth_object(), DRW_transform_none(), ED_draw_object_facemap(), gpu_viewport_draw_colormanaged(), icon_draw_texture(), knifetool_draw(), node_draw_link_bezier(), 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(), and wm_gizmo_geometryinfo_draw().
| void GPU_batch_draw_advanced | ( | GPUBatch * | gpu_batch, |
| int | v_first, | ||
| int | v_count, | ||
| int | i_first, | ||
| int | i_count | ||
| ) |
Definition at line 255 of file gpu_batch.cc.
References batch, BLI_assert, blender::gpu::Context::get(), min_ii(), and shader().
Referenced by blender::gpu::GLDrawList::append(), draw_geometry_execute(), GPU_batch_draw(), GPU_batch_draw_instanced(), and GPU_batch_draw_range().
| void GPU_batch_draw_instanced | ( | GPUBatch * | batch, |
| int | i_count | ||
| ) |
Definition at line 247 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().
| void GPU_batch_draw_range | ( | GPUBatch * | batch, |
| int | v_first, | ||
| int | v_count | ||
| ) |
Definition at line 240 of file gpu_batch.cc.
References batch, GPU_batch_draw_advanced(), and GPU_shader_bind().
Referenced by knifetool_draw().
| void GPU_batch_elembuf_set | ( | GPUBatch * | batch, |
| GPUIndexBuf * | elem, | ||
| bool | own_ibo | ||
| ) |
Definition at line 155 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().
| void gpu_batch_exit | ( | void | ) |
Definition at line 323 of file gpu_batch.cc.
References gpu_batch_presets_exit().
Referenced by GPU_exit().
| void gpu_batch_init | ( | void | ) |
Definition at line 318 of file gpu_batch.cc.
References gpu_batch_presets_init().
Referenced by GPU_init().
| void GPU_batch_init_ex | ( | GPUBatch * | batch, |
| GPUPrimType | prim, | ||
| GPUVertBuf * | vert, | ||
| GPUIndexBuf * | elem, | ||
| eGPUBatchFlag | owns_flag | ||
| ) |
Definition at line 70 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 168 of file gpu_batch.cc.
References batch, BLI_assert, 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 141 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(), drw_debug_draw_spheres(), and nodelink_batch_init().
| void GPU_batch_program_set_builtin | ( | GPUBatch * | batch, |
| eGPUBuiltinShader | shader_id | ||
| ) |
Definition at line 299 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(), node_draw_link_bezier(), 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(), and wm_gizmo_geometryinfo_draw().
| void GPU_batch_program_set_builtin_with_config | ( | GPUBatch * | batch, |
| eGPUBuiltinShader | shader_id, | ||
| eGPUShaderConfig | sh_cfg | ||
| ) |
Definition at line 291 of file gpu_batch.cc.
References batch, GPU_batch_set_shader(), GPU_shader_get_builtin_shader_with_config(), and shader().
Referenced by DRW_draw_depth_object(), and GPU_batch_program_set_builtin().
| void GPU_batch_program_set_imm_shader | ( | GPUBatch * | batch | ) |
Definition at line 307 of file gpu_batch.cc.
References batch, GPU_batch_set_shader(), and immGetShader().
Referenced by gpu_viewport_draw_colormanaged().
Definition at line 222 of file gpu_batch.cc.
References batch, GPU_shader_bind(), and shader().
Referenced by draw_geometry_bind(), DRW_draw_cursor(), DRW_draw_cursor_2d(), 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 | ||
| ) |
Definition at line 192 of file gpu_batch.cc.
References batch, BLI_assert, 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().
| GPUBatch |
Definition at line 93 of file GPU_batch.h.
Referenced by basic_cache_populate(), batch_screen_edges_get(), BLI_STATIC_ASSERT(), curve_batch_cache_clear(), curve_draw_stroke_3d(), draw_cache_view_batch(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_select_id_edit_mesh(), draw_select_id_mesh(), draw_seq_fcurve_overlay(), draw_widgetbase_batch(), drawscredge_area_draw(), DRW_cache_bone_box_wire_get(), DRW_cache_bone_octahedral_wire_get(), DRW_cache_cursor_get(), DRW_curve_batch_cache_create_requested(), drw_debug_draw_spheres(), DRW_draw_cursor(), DRW_draw_cursor_2d(), DRW_draw_depth_object(), DRW_instance_buffer_finish(), DRW_instance_data_list_create(), DRW_shape_cache_free(), drw_shgroup_bone_custom_solid(), drw_shgroup_bone_custom_wire(), DRW_shgroup_call_buffer(), DRW_shgroup_call_buffer_instance(), DRW_shgroup_call_instances_with_attrs(), DRW_shgroup_call_procedural_lines(), DRW_shgroup_call_procedural_points(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_hair_create_sub(), DRW_temp_batch_instance_request(), DRW_temp_batch_request(), DRW_transform_none(), ED_draw_object_facemap(), ED_screen_draw_edges(), edit_text_cache_populate_cursor(), edit_text_cache_populate_select(), eevee_create_bloom_pass(), EEVEE_cryptomatte_cache_populate(), EEVEE_effects_cache_init(), EEVEE_lightbake_cache_init(), eevee_lookdev_hdri_preview_init(), EEVEE_materials_cache_populate(), EEVEE_motion_blur_cache_finish(), EEVEE_motion_blur_cache_populate(), external_cache_populate(), gpencil_dummy_buffer_get(), gpencil_sbuffer_stroke_ensure(), gpencil_stroke_cache_populate(), GPU_batch_calloc(), GPU_batch_create_ex(), gpu_batch_presets_exit(), gpu_viewport_draw_colormanaged(), icon_draw_cache_texture_flush_ex(), icon_draw_texture(), image_cache_image_add(), knifetool_draw(), mesh_batch_cache_clear(), node_draw_link_bezier(), OVERLAY_background_cache_init(), OVERLAY_edit_curve_cache_populate(), OVERLAY_edit_gpencil_cache_populate(), OVERLAY_edit_lattice_cache_populate(), overlay_edit_mesh_add_ob_to_pass(), OVERLAY_edit_mesh_cache_populate(), OVERLAY_edit_particle_cache_populate(), OVERLAY_edit_surf_cache_populate(), OVERLAY_edit_text_cache_populate(), OVERLAY_edit_uv_cache_init(), overlay_edit_uv_cache_populate(), OVERLAY_facing_cache_populate(), OVERLAY_fade_cache_populate(), OVERLAY_grid_cache_init(), OVERLAY_lattice_cache_populate(), OVERLAY_outline_cache_populate(), OVERLAY_outline_volume(), OVERLAY_paint_texture_cache_populate(), OVERLAY_paint_vertex_cache_populate(), OVERLAY_particle_cache_populate(), OVERLAY_pose_cache_populate(), OVERLAY_sculpt_cache_populate(), OVERLAY_volume_cache_populate(), OVERLAY_wireframe_cache_populate(), panel_draw_aligned_widgets(), pointcloud_batch_cache_init(), pygpu_batch__tp_new(), sculpt_draw_cb(), select_cache_populate(), stitch_draw_vbo(), ui_draw_but_UNITVEC(), ui_draw_dropshadow(), UI_draw_roundbox_4fv_ex(), UI_widgetbase_draw_cache_flush(), waveform_draw_one(), wireframe_hair_cache_populate(), wm_draw_region_blend(), wm_gizmo_geometryinfo_draw(), workbench_cache_common_populate(), workbench_cache_texpaint_populate(), and workbench_shadow_cache_populate().