|
Blender V5.0
|
#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 |
| 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().
| 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().
| 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.
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().
| void DRW_custom_pipeline_end | ( | DRWContext & | draw_ctx | ) |
Definition at line 1791 of file draw_context.cc.
References blender::gpu::TexturePool::get(), GPU_backend_get_type(), GPU_BACKEND_OPENGL, GPU_finish(), GPU_framebuffer_restore(), DRWContext::release_data(), and blender::gpu::TexturePool::reset().
Referenced by blender::eevee::Instance::light_bake_irradiance().
Definition at line 196 of file DRW_render.hh.
References BKE_mesh_wrapper_ensure_subdivision(), and BKE_subsurf_modifier_has_gpu_subdiv().
Referenced by blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), DRW_object_get_data_for_drawing(), drw_shgroup_bone_custom_solid(), and drw_shgroup_bone_custom_wire().
Definition at line 206 of file DRW_render.hh.
References BLI_assert, data, DRW_mesh_get_for_drawing(), and OB_MESH.
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().
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().
| 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().
| bool DRW_object_is_renderable | ( | const Object * | ob | ) |
Definition at line 286 of file draw_context.cc.
References BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT, Object::base_flag, BLI_assert, drw_get(), View3D::flag2, Object::mode, OB_MESH, OB_MODE_EDIT, DRWContext::object_edit, RETOPOLOGY_ENABLED, Object::type, DRWContext::v3d, and V3D_HIDE_OVERLAYS.
Referenced by blender::draw::overlay::Facing::object_sync(), blender::draw::overlay::Fade::object_sync(), blender::draw::overlay::ModeTransfer::object_sync(), blender::eevee::Instance::object_sync(), blender::workbench::Instance::object_sync(), and blender::eevee::step_object_sync_render().
| bool DRW_object_is_visible_psys_in_active_context | ( | const Object * | object, |
| const ParticleSystem * | psys ) |
Definition at line 343 of file draw_context.cc.
References ParticleSettings::childtype, DRWContext::depsgraph, DRW_context_get(), ParticleEditSettings::flag, ParticleSystem::flag, PointCache::flag, DRWContext::is_image_render(), Object::mode, OB_MODE_PARTICLE_EDIT, DRWContext::object_edit, ParticleSystem::part, ToolSettings::particle, PE_DRAW_PART, ParticleSystem::pointcache, psys_check_enabled(), PSYS_HAIR_DYNAMICS, psys_in_edit_mode(), PTCACHE_BAKED, DRWContext::scene, and Scene::toolsettings.
Referenced by blender::eevee::foreach_hair_particle_handle(), blender::draw::overlay::Particles::object_sync(), blender::workbench::Instance::object_sync(), blender::draw::external::Prepass::particle_sync(), blender::draw::overlay::Prepass::particle_sync(), and blender::draw::supports_handle_ranges().
| bool DRW_object_use_hide_faces | ( | const Object * | ob | ) |
Definition at line 328 of file draw_context.cc.
References Object::mode, OB_MESH, OB_MODE_SCULPT, OB_MODE_TEXTURE_PAINT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, and Object::type.
Referenced by blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), and blender::workbench::ObjectState::ObjectState().
| int DRW_object_visibility_in_active_context | ( | const Object * | ob | ) |
Return whether this object is visible depending if we are rendering or drawing in the viewport.
Definition at line 321 of file draw_context.cc.
References BKE_object_visibility(), DAG_EVAL_RENDER, DAG_EVAL_VIEWPORT, DRW_context_get(), and DRWContext::is_scene_render().
Referenced by blender::draw::gpencil::Instance::object_sync(), blender::draw::overlay::Relations::object_sync(), blender::eevee::Instance::object_sync(), blender::workbench::Instance::object_sync(), blender::draw::gpencil::render_frame(), and blender::eevee::step_object_sync_render().
| void DRW_render_object_iter | ( | RenderEngine * | engine, |
| Depsgraph * | depsgraph, | ||
| std::function< void(blender::draw::ObjectRef &, RenderEngine *, Depsgraph *)> | callback ) |
Definition at line 1751 of file draw_context.cc.
References BKE_object_is_visible_in_viewport(), depsgraph, blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_validate(), drw_get(), blender::draw::foreach_obref_in_scene(), ExtractionGraph::graph, blender::draw::ObjectRef::is_dupli(), blender::draw::ObjectRef::object, DRWContext::sync(), DupliCacheManager::try_add(), and DRWContext::v3d.
Referenced by blender::draw::gpencil::render_frame(), blender::eevee::Instance::render_sync(), blender::eevee::VelocityModule::step_sync(), and workbench_render_to_image().
| void DRW_render_set_time | ( | RenderEngine * | engine, |
| Depsgraph * | depsgraph, | ||
| int | frame, | ||
| float | subframe ) |
Definition at line 1817 of file draw_context.cc.
References DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), depsgraph, drw_get(), RE_engine_frame_set(), DRWContext::scene, and DRWContext::view_layer.
Referenced by blender::draw::gpencil::render_frame().
| 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 ) |
Definition at line 1683 of file draw_context.cc.
References DRWContext::acquire_data(), RenderData::alphamode, BLI_rcti_init(), BLI_rcti_is_empty(), DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), depsgraph, DRWContext::draw_background, blender::draw::DRW_cache_free_old_subdiv(), ListBase::first, blender::gpu::TexturePool::get(), GPU_framebuffer_restore(), GPU_render_begin(), GPU_render_end(), GPU_viewport(), RenderResult::layers, ViewLayer::name, RenderView::next, DRWContext::options, Scene::r, R_ADDSKY, RenderEngine::re, RE_engine_begin_result(), RE_engine_end_result(), RE_engine_get_result(), RE_GetViewPlane(), RE_SetActiveRenderView(), DRWContext::release_data(), DRWContext::RENDER, blender::gpu::TexturePool::reset(), RenderEngine::resolution_x, RenderEngine::resolution_y, blender::draw::command::StateSet::set(), DRWContext::size, and RenderResult::views.
Referenced by eevee_render(), and workbench_render().
| 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().
| void DRW_viewport_request_redraw | ( | ) |
Definition at line 534 of file draw_context.cc.
References drw_get(), and GPU_viewport_tag_update().
Referenced by blender::draw::overlay::ModeTransfer::draw(), blender::eevee::Instance::draw_viewport(), blender::workbench::Instance::draw_viewport(), blender::eevee::PlanarProbeModule::end_sync(), and blender::eevee::SphereProbeModule::end_sync().