Blender V5.0
DRW_render.hh File Reference
#include <functional>
#include "BKE_mesh_wrapper.hh"
#include "BKE_subdiv_modifier.hh"
#include "BLI_math_vector_types.hh"
#include "DNA_object_enums.h"
#include "DNA_object_types.h"
#include "GPU_material.hh"

Go to the source code of this file.

Classes

struct  BoundSphere
struct  DrawEngine
struct  DrawEngine::Pointer
struct  DRWContext

Namespaces

namespace  blender
namespace  blender::gpu
namespace  blender::draw

Functions

blender::draw::TextureFromPoolDRW_viewport_pass_texture_get (const char *pass_name)
void DRW_viewport_request_redraw ()
void DRW_render_to_image (RenderEngine *engine, Depsgraph *depsgraph, std::function< void(RenderEngine *, RenderLayer *, const rcti)> render_view_cb, std::function< void(RenderResult *)> store_metadata_cb)
void DRW_render_object_iter (RenderEngine *engine, Depsgraph *depsgraph, std::function< void(blender::draw::ObjectRef &, RenderEngine *, Depsgraph *)>)
void DRW_render_set_time (RenderEngine *engine, Depsgraph *depsgraph, int frame, float subframe)
void DRW_custom_pipeline_begin (DRWContext &draw_ctx, Depsgraph *depsgraph)
void DRW_custom_pipeline_end (DRWContext &draw_ctx)
void DRW_cache_restart ()
bool DRW_object_is_renderable (const Object *ob)
bool DRW_object_is_in_edit_mode (const Object *ob)
int DRW_object_visibility_in_active_context (const Object *ob)
bool DRW_object_use_hide_faces (const Object *ob)
bool DRW_object_is_visible_psys_in_active_context (const Object *object, const ParticleSystem *psys)
template<typename T>
TDRW_object_get_data_for_drawing (const Object &object)
MeshDRW_mesh_get_for_drawing (Mesh &mesh)
template<>
MeshDRW_object_get_data_for_drawing (const Object &object)
const MeshDRW_object_get_editmesh_cage_for_drawing (const Object &object)
const DRWContextDRW_context_get ()

Function Documentation

◆ DRW_cache_restart()

void DRW_cache_restart ( )

Used when the render engine want to redo another cache populate inside the same render frame. Assumes it is called between DRW_custom_pipeline_begin/end().

Definition at line 1808 of file draw_context.cc.

References DRWContext::acquire_data(), DRWContext::data, drw_get(), DRWData::modules_begin_sync(), and DRWData::modules_exit().

Referenced by workbench_render_to_image().

◆ DRW_context_get()

const DRWContext * DRW_context_get ( )

Definition at line 2156 of file draw_context.cc.

References drw_get().

Referenced by blender::image_engine::ScreenSpaceDrawingMode::begin_sync(), blender::draw::compositor_engine::Instance::draw(), blender::draw::overlay::Instance::draw(), blender::draw::overlay::Armatures::draw_armature_pose(), blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), drw_callbacks_post_scene(), drw_callbacks_post_scene_2D(), DRW_draw_select_loop(), DRW_object_is_visible_psys_in_active_context(), DRW_object_visibility_in_active_context(), blender::draw::drw_particle_get_hair_source(), blender::draw::drw_particle_update_ptcache(), blender::draw::drw_particle_update_ptcache_edit(), blender::draw::DRW_volume_batch_cache_get_wireframes_face(), blender::draw::overlay::Instance::end_sync(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::draw::compositor_engine::Context::get_output(), blender::draw::compositor_engine::Context::get_pass(), blender::draw::compositor_engine::Context::get_view_name(), blender::draw::compositor_engine::Context::get_viewer_output(), blender::image_engine::ScreenTileTextures< Divisions >::gpu_texture_size(), blender::image_engine::Instance::image_sync(), blender::draw::edit_select::Instance::init(), blender::draw::gpencil::Instance::init(), blender::draw::overlay::Instance::init(), blender::eevee::Instance::init(), blender::eevee::Instance::init(), blender::image_engine::Instance::init(), blender::workbench::Instance::init(), blender::workbench::Instance::init(), blender::draw::particle_batch_cache_ensure_pos(), blender::draw::gpencil::Engine::render_to_image(), blender::draw::sculpt_batches_get_ex(), blender::eevee::store_node_tree_errors(), and workbench_render_to_image().

◆ DRW_custom_pipeline_begin()

void DRW_custom_pipeline_begin ( DRWContext & draw_ctx,
Depsgraph * depsgraph )

Assume a valid GL context is bound (and that the gl_context_mutex has been acquired). This function only setup DST and execute the given function.

Warning
similar to DRW_render_to_image you cannot use default lists (dfbl & dtxl).

Definition at line 1785 of file draw_context.cc.

References DRWContext::acquire_data(), DRWContext::data, and DRWData::modules_begin_sync().

Referenced by blender::eevee::Instance::light_bake_irradiance().

◆ DRW_custom_pipeline_end()

◆ DRW_mesh_get_for_drawing()

◆ DRW_object_get_data_for_drawing() [1/2]

template<>
Mesh & DRW_object_get_data_for_drawing ( const Object & object)
inline

Definition at line 206 of file DRW_render.hh.

References BLI_assert, data, DRW_mesh_get_for_drawing(), and OB_MESH.

◆ DRW_object_get_data_for_drawing() [2/2]

template<typename T>
T & DRW_object_get_data_for_drawing ( const Object & object)

Convenient accessor for object data, that also automatically returns the base or tessellated mesh depending if GPU subdivision is enabled.

Definition at line 191 of file DRW_render.hh.

References T.

Referenced by blender::draw::pbvh::calc_material_indices(), blender::draw::overlay::Armatures::create_draw_context(), blender::draw::curves_pos_buffer_get(), blender::draw::curves_sub_pass_setup_implementation(), blender::draw::overlay::Sculpts::curves_sync(), blender::draw::overlay::Armatures::draw_armature_edit(), blender::draw::overlay::Armatures::draw_armature_pose(), blender::draw::overlay::GreasePencil::draw_grease_pencil(), blender::draw::DRW_batch_cache_free_old(), blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_validate(), blender::draw::DRW_cache_curve_edge_normal_get(), blender::draw::DRW_cache_curve_edge_overlay_get(), blender::draw::DRW_cache_curve_edge_wire_get(), blender::draw::DRW_cache_curve_edge_wire_viewer_attribute_get(), blender::draw::DRW_cache_curve_vert_overlay_get(), blender::draw::DRW_cache_grease_pencil_color_buffer_get(), blender::draw::DRW_cache_grease_pencil_edit_handles_get(), blender::draw::DRW_cache_grease_pencil_edit_lines_get(), blender::draw::DRW_cache_grease_pencil_edit_points_get(), blender::draw::DRW_cache_grease_pencil_face_wireframe_get(), blender::draw::DRW_cache_grease_pencil_get(), blender::draw::DRW_cache_grease_pencil_position_buffer_get(), blender::draw::DRW_cache_grease_pencil_weight_lines_get(), blender::draw::DRW_cache_grease_pencil_weight_points_get(), blender::draw::DRW_cache_lattice_vert_overlay_get(), blender::draw::DRW_cache_lattice_verts_get(), blender::draw::DRW_cache_lattice_wire_get(), blender::draw::DRW_cache_mesh_all_edges_get(), blender::draw::DRW_cache_mesh_all_verts_get(), blender::draw::DRW_cache_mesh_edge_detection_get(), blender::draw::DRW_cache_mesh_face_wireframe_get(), blender::draw::DRW_cache_mesh_loose_edges_get(), blender::draw::DRW_cache_mesh_paint_overlay_edges_get(), blender::draw::DRW_cache_mesh_paint_overlay_surface_get(), blender::draw::DRW_cache_mesh_paint_overlay_verts_get(), blender::draw::DRW_cache_mesh_surface_get(), blender::draw::DRW_cache_mesh_surface_mesh_analysis_get(), blender::draw::DRW_cache_mesh_surface_sculptcolors_get(), blender::draw::DRW_cache_mesh_surface_shaded_get(), blender::draw::DRW_cache_mesh_surface_texpaint_get(), blender::draw::DRW_cache_mesh_surface_texpaint_single_get(), blender::draw::DRW_cache_mesh_surface_vertpaint_get(), blender::draw::DRW_cache_mesh_surface_viewer_attribute_get(), blender::draw::DRW_cache_mesh_surface_weights_get(), blender::draw::DRW_cache_pointcloud_vert_overlay_get(), blender::draw::DRW_cache_surf_edge_wire_get(), blender::draw::DRW_cache_text_edge_wire_get(), blender::draw::DRW_cache_volume_face_wireframe_get(), blender::draw::DRW_cache_volume_selection_surface_get(), blender::draw::DRW_curves_batch_cache_create_requested(), blender::draw::DRW_pointcloud_batch_cache_create_requested(), blender::draw::DRW_pointcloud_batch_cache_get_dots(), blender::draw::DRW_pointcloud_position_and_radius_buffer_get(), drw_shgroup_bone_custom_solid(), drw_shgroup_bone_custom_wire(), blender::draw::drw_volume_object_mesh_init(), blender::draw::edit_select::Instance::edit_mesh_sync(), blender::draw::overlay::Curves::edit_object_sync(), blender::draw::overlay::Meshes::edit_object_sync(), blender::draw::overlay::MeshUVs::edit_object_sync(), blender::draw::overlay::Metaballs::edit_object_sync(), blender::draw::overlay::Text::edit_object_sync(), blender::draw::overlay::Curves::edit_object_sync_legacy(), blender::draw::gpencil::gpencil_light_pool_populate(), blender::draw::gpencil::grease_pencil_layer_cache_add(), blender::eevee::IrradianceBake::init(), blender::eevee::Sampling::init(), blender::workbench::SceneState::init(), blender::draw::overlay::Meshes::mesh_has_edit_cage(), blender::draw::edit_select::Instance::mesh_sync(), blender::draw::overlay::Sculpts::mesh_sync(), blender::draw::edit_select::Instance::object_sync(), blender::draw::overlay::AttributeTexts::object_sync(), blender::draw::overlay::Bounds::object_sync(), blender::draw::overlay::ForceFields::object_sync(), blender::draw::overlay::LightProbes::object_sync(), blender::draw::overlay::Lights::object_sync(), blender::draw::overlay::MeshUVs::object_sync(), blender::draw::overlay::Metaballs::object_sync(), blender::draw::overlay::Paints::object_sync(), blender::draw::overlay::Wireframe::object_sync_ex(), blender::workbench::VolumePass::object_sync_volume(), blender::workbench::ObjectState::ObjectState(), blender::draw::pointcloud_sub_pass_setup_implementation(), blender::draw::sculpt_batches_per_material_get(), set_ctx_bcolor(), blender::eevee::IrradianceBake::surfels_create(), ObjectInfos::sync(), blender::eevee::LightModule::sync_light(), blender::eevee::LightProbeModule::sync_probe(), blender::image_engine::ShaderParameters::update(), blender::draw::pbvh::update_face_sets_mesh(), blender::draw::pbvh::update_generic_attribute_mesh(), blender::draw::pbvh::update_masks_mesh(), blender::draw::pbvh::update_normals_mesh(), blender::draw::pbvh::update_positions_mesh(), and blender::draw::volume_object_grids_init().

◆ DRW_object_get_editmesh_cage_for_drawing()

const Mesh * DRW_object_get_editmesh_cage_for_drawing ( const Object & object)

Same as DRW_object_get_data_for_drawing, but for the editmesh cage, if it exists.

Definition at line 374 of file draw_context.cc.

References BKE_mesh_wrapper_ensure_subdivision(), BKE_object_get_editmesh_eval_cage(), BKE_subsurf_modifier_has_gpu_subdiv(), BLI_assert, and OB_MESH.

Referenced by blender::draw::DRW_mesh_batch_cache_create_requested(), and blender::draw::mesh_render_data_create().

◆ DRW_object_is_in_edit_mode()

bool DRW_object_is_in_edit_mode ( const Object * ob)

Does ob needs to be rendered in edit mode.

When using duplicate linked meshes, objects that are not in edit-mode will be drawn as it is in edit mode, when another object with the same mesh is in edit mode. This will not be the case when one of the objects are influenced by modifiers.

Definition at line 308 of file draw_context.cc.

References BKE_object_is_in_editmode(), ELEM, Object::mode, OB_CURVES, OB_MESH, OB_MODE_EDIT, and Object::type.

Referenced by DRW_draw_select_id(), blender::draw::overlay::MeshUVs::edit_object_sync(), blender::draw::ObjectRef::parent_is_in_edit_paint_mode(), blender::draw::Manager::resource_handle(), blender::draw::Manager::resource_handle(), and blender::draw::Manager::resource_handle_for_psys().

◆ DRW_object_is_renderable()

◆ DRW_object_is_visible_psys_in_active_context()

◆ DRW_object_use_hide_faces()

◆ DRW_object_visibility_in_active_context()

◆ DRW_render_object_iter()

◆ DRW_render_set_time()

void DRW_render_set_time ( RenderEngine * engine,
Depsgraph * depsgraph,
int frame,
float subframe )

◆ DRW_render_to_image()

◆ DRW_viewport_pass_texture_get()

blender::draw::TextureFromPool & DRW_viewport_pass_texture_get ( const char * pass_name)

Returns a TextureFromPool stored in the given view data for the pass identified by the given pass name. Engines should call this function for each of the passes needed by the viewport compositor in every redraw, then it should allocate the texture and write the pass data to it. The texture should cover the entire viewport.

Definition at line 528 of file draw_context.cc.

References drw_get(), Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_or_add_cb(), DRWContext::view_data_active, and DRWViewData::viewport_compositor_passes.

Referenced by blender::draw::gpencil::Instance::acquire_resources(), blender::draw::compositor_engine::Context::get_pass(), and blender::eevee::Film::write_viewport_compositor_passes().

◆ DRW_viewport_request_redraw()