|
Blender V5.0
|
#include <cstdio>#include "CLG_log.h"#include "BLI_function_ref.hh"#include "BLI_listbase.h"#include "BLI_map.hh"#include "BLI_math_matrix.h"#include "BLI_math_matrix_types.hh"#include "BLI_math_vector.h"#include "BLI_rect.h"#include "BLI_string.h"#include "BLI_sys_types.h"#include "BLI_task.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BLF_api.hh"#include "BLT_translation.hh"#include "BKE_context.hh"#include "BKE_curve.hh"#include "BKE_curves.h"#include "BKE_duplilist.hh"#include "BKE_editmesh.hh"#include "BKE_global.hh"#include "BKE_grease_pencil.h"#include "BKE_idprop.hh"#include "BKE_lattice.hh"#include "BKE_layer.hh"#include "BKE_main.hh"#include "BKE_mball.hh"#include "BKE_mesh.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_modifier.hh"#include "BKE_object.hh"#include "BKE_object_types.hh"#include "BKE_paint.hh"#include "BKE_particle.h"#include "BKE_pointcache.h"#include "BKE_pointcloud.hh"#include "BKE_scene.hh"#include "BKE_screen.hh"#include "BKE_subdiv_modifier.hh"#include "BKE_volume.hh"#include "DNA_camera_types.h"#include "DNA_mesh_types.h"#include "DNA_userdef_types.h"#include "DNA_view3d_types.h"#include "DNA_world_types.h"#include "ED_gpencil_legacy.hh"#include "ED_screen.hh"#include "ED_space_api.hh"#include "ED_view3d.hh"#include "GPU_capabilities.hh"#include "GPU_framebuffer.hh"#include "GPU_matrix.hh"#include "GPU_platform.hh"#include "GPU_shader_shared.hh"#include "GPU_state.hh"#include "GPU_uniform_buffer.hh"#include "GPU_viewport.hh"#include "UI_resources.hh"#include "UI_view2d.hh"#include "WM_api.hh"#include "DRW_render.hh"#include "draw_cache.hh"#include "draw_color_management.hh"#include "draw_common_c.hh"#include "draw_context_private.hh"#include "draw_handle.hh"#include "draw_manager_text.hh"#include "draw_shader.hh"#include "draw_subdivision.hh"#include "draw_view_c.hh"#include "draw_view_data.hh"#include "draw_cache_impl.hh"#include "engines/compositor/compositor_engine.h"#include "engines/eevee/eevee_engine.h"#include "engines/external/external_engine.h"#include "engines/gpencil/gpencil_engine.hh"#include "engines/image/image_engine.h"#include "engines/overlay/overlay_engine.h"#include "engines/select/select_engine.hh"#include "engines/workbench/workbench_engine.h"#include "GPU_context.hh"#include "DEG_depsgraph.hh"#include "DEG_depsgraph_query.hh"#include "BLI_time.h"#include "DRW_select_buffer.hh"Go to the source code of this file.
Classes | |
| struct | ExtractionGraph |
| struct | DupliCacheManager |
| struct | blender::draw::InstancesKey |
| struct | DRWSelectBuffer |
Namespaces | |
| namespace | blender |
| namespace | blender::draw |
Enumerations | |
| enum class | blender::draw::InstancesFlags : uint8_t { blender::draw::IsNegativeScale = 1 << 0 } |
Main Draw Loops (DRW_draw) | |
| static struct DRWSelectBuffer | g_select_buffer = {nullptr} |
| static void | drw_draw_render_loop_3d (DRWContext &draw_ctx, RenderEngineType *engine_type) |
| static void | drw_draw_render_loop_2d (DRWContext &draw_ctx) |
| void | DRW_draw_view (const bContext *C) |
| void | DRW_draw_render_loop_offscreen (Depsgraph *depsgraph, RenderEngineType *engine_type, ARegion *region, View3D *v3d, const bool is_image_render, const bool draw_background, const bool do_color_management, GPUOffScreen *ofs, GPUViewport *viewport) |
| bool | DRW_render_check_grease_pencil (Depsgraph *depsgraph) |
| void | DRW_render_gpencil (RenderEngine *engine, Depsgraph *depsgraph) |
| 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 *)> callback) |
| void | DRW_custom_pipeline_begin (DRWContext &draw_ctx, Depsgraph *) |
| void | DRW_custom_pipeline_end (DRWContext &draw_ctx) |
| void | DRW_cache_restart () |
| void | DRW_render_set_time (RenderEngine *engine, Depsgraph *depsgraph, int frame, float subframe) |
| static void | draw_select_framebuffer_depth_only_setup (const int size[2]) |
| void | DRW_draw_select_loop (Depsgraph *depsgraph, ARegion *region, View3D *v3d, bool use_obedit_skip, bool draw_surface, bool, const bool do_material_sub_selection, const rcti *rect, DRW_SelectPassFn select_pass_fn, void *select_pass_user_data, DRW_ObjectFilterFn object_filter_fn, void *object_filter_user_data) |
| void | DRW_draw_depth_loop (Depsgraph *depsgraph, ARegion *region, View3D *v3d, GPUViewport *viewport, const bool use_gpencil, const bool use_only_selected, const bool use_only_active_object) |
| void | DRW_draw_select_id (Depsgraph *depsgraph, ARegion *region, View3D *v3d) |
| bool | DRW_draw_in_progress () |
|
static |
Definition at line 1830 of file draw_context.cc.
References g_select_buffer, GPU_framebuffer_check_valid(), GPU_framebuffer_create(), GPU_framebuffer_texture_attach(), GPU_texture_create_2d(), GPU_texture_free(), GPU_texture_height(), GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_SHADER_READ, GPU_texture_width(), and size().
Referenced by DRW_draw_select_loop().
|
static |
Definition at line 210 of file draw_context.cc.
References drw_get(), SpaceImage::flag, View3D::flag2, SI_SHOW_GPENCIL, DRWContext::space_data, SPACE_IMAGE, SPACE_NODE, SpaceLink::spacetype, DRWContext::v3d, V3D_HIDE_OVERLAYS, and V3D_SHOW_ANNOTATION.
Referenced by drw_callbacks_post_scene(), and drw_callbacks_post_scene_2D().
| void DRW_cache_free_old_batches | ( | Main * | bmain | ) |
For garbage collection.
Definition at line 927 of file draw_context.cc.
References BKE_scene_get_depsgraph(), BLI_time_now_seconds(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, blender::draw::DRW_batch_cache_free_old(), ListBase::first, DEGObjectIterSettings::flags, Scene::id, LISTBASE_FOREACH, ID::next, Main::scenes, U, and Scene::view_layers.
Referenced by view3d_main_region_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().
|
static |
Definition at line 1202 of file draw_context.cc.
References BKE_regiontype_from_id(), BKE_spacetype_from_id(), DEG_get_input_scene(), depsgraph, DRWContext::depsgraph, draw_show_annotation(), DRW_context_get(), DRW_draw_gizmo_2d(), DRW_draw_gizmo_3d(), DRW_draw_region_info(), DRW_submission_end(), DRW_submission_start(), ED_annotation_draw_view3d(), ED_region_draw_cb_draw(), ED_region_surface_draw_cb_draw(), DRWContext::evil_C, View3D::flag, View3D::flag2, View3D::gizmo_flag, GPU_apply_state(), GPU_DEPTH_LESS_EQUAL, GPU_DEPTH_NONE, GPU_depth_test(), GPU_framebuffer_bind(), GPU_matrix_projection_set, GPU_matrix_set, DefaultFramebufferList::overlay_fb, DRWContext::region, REGION_DRAW_POST_VIEW, RGN_TYPE_XR, DRWContext::rv3d, blender::draw::command::StateSet::set(), SPACE_VIEW3D, DRWContext::v3d, V3D_GIZMO_HIDE, V3D_HIDE_OVERLAYS, V3D_SHOW_ANNOTATION, V3D_XR_SESSION_MIRROR, V3D_XR_SESSION_SURFACE, V3D_XR_SHOW_CONTROLLERS, V3D_XR_SHOW_CUSTOM_OVERLAYS, RegionView3D::viewmat, DRWContext::viewport_framebuffer_list_get(), RegionView3D::winmat, and WM_xr_surface_controller_region_type_get().
Referenced by drw_draw_render_loop_3d().
|
static |
Definition at line 1354 of file draw_context.cc.
References View2D::cur, draw_show_annotation(), DRW_context_get(), DRW_draw_gizmo_2d(), DRW_submission_end(), DRW_submission_start(), ED_annotation_draw_view2d(), ED_region_draw_cb_draw(), ED_region_pixelspace(), DRWContext::evil_C, GPU_DEPTH_NONE, GPU_depth_test(), GPU_framebuffer_bind(), GPU_matrix_pop_projection(), GPU_matrix_push_projection(), DefaultFramebufferList::overlay_fb, DRWContext::region, REGION_DRAW_POST_VIEW, blender::draw::command::StateSet::set(), DRWContext::space_data, SPACE_IMAGE, SpaceLink::spacetype, DRWContext::viewport_framebuffer_list_get(), wmOrtho2(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by drw_draw_render_loop_2d().
|
static |
Definition at line 1185 of file draw_context.cc.
References DRW_submission_end(), DRW_submission_start(), ED_region_draw_cb_draw(), DRWContext::evil_C, GPU_matrix_projection_set, GPU_matrix_set, DRWContext::region, REGION_DRAW_PRE_VIEW, DRWContext::rv3d, blender::draw::command::StateSet::set(), RegionView3D::viewmat, and RegionView3D::winmat.
Referenced by drw_draw_render_loop_3d(), and DRW_draw_select_loop().
|
static |
Definition at line 1342 of file draw_context.cc.
References DRW_submission_end(), DRW_submission_start(), ED_region_draw_cb_draw(), DRWContext::evil_C, DRWContext::region, REGION_DRAW_PRE_VIEW, and blender::draw::command::StateSet::set().
Referenced by drw_draw_render_loop_2d().
| 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().
| void DRW_draw_depth_loop | ( | Depsgraph * | depsgraph, |
| ARegion * | region, | ||
| View3D * | v3d, | ||
| GPUViewport * | viewport, | ||
| const bool | use_gpencil, | ||
| const bool | use_only_selected, | ||
| const bool | use_only_active_object ) |
Used by auto-depth and other depth queries feature.
Definition at line 2031 of file draw_context.cc.
References DRWContext::acquire_data(), BASE_SELECTED, BKE_object_is_visible_in_viewport(), depsgraph, DRWContext::DEPTH, DRWContext::DEPTH_ACTIVE_OBJECT, drw_engines_cache_populate(), DRWContext::enable_engines(), DRWContext::engines_draw_scene(), DRWContext::engines_init_and_sync(), blender::draw::foreach_obref_in_scene(), GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE, GPU_framebuffer_bind(), GPU_framebuffer_clear_depth(), GPU_framebuffer_ensure_config, GPU_framebuffer_free(), GPU_framebuffer_restore(), GPU_viewport_depth_texture(), DRWContext::obact, and DRWContext::release_data().
Referenced by ED_view3d_depth_override().
| bool DRW_draw_in_progress | ( | ) |
Query that drawing is in progress (use to prevent nested draw calls).
Definition at line 2145 of file draw_context.cc.
References DRWContext::is_active().
Referenced by ED_view3d_draw_offscreen_check_nested().
| void DRW_draw_region_engine_info | ( | int | xoffset, |
| int * | yoffset, | ||
| int | line_height ) |
Draw render engine info.
Definition at line 1049 of file draw_context.cc.
References BLF_draw_default(), BLI_strchr_or_end(), drw_get(), DRWViewData::foreach_enabled_engine(), IFACE_, DrawEngine::info, and DRWContext::view_data_active.
Referenced by view3d_draw_region_info().
|
static |
Definition at line 1472 of file draw_context.cc.
References BLI_assert, DRWContext::default_framebuffer(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DRWContext::depsgraph, drw_callbacks_post_scene_2D(), drw_callbacks_pre_scene_2D(), drw_engines_cache_populate(), DRWContext::enable_engines(), DRWContext::engines_data_validate(), DRWContext::engines_draw_scene(), DRWContext::engines_init_and_sync(), DEGObjectIterSettings::flags, GPU_framebuffer_active_get(), GPU_framebuffer_back_get(), GPU_framebuffer_bind(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_restore(), DRWContext::region, DRWContext::space_data, SPACE_IMAGE, SpaceLink::spacetype, ARegion::v2d, and WM_draw_region_get_bound_viewport().
Referenced by DRW_draw_view().
|
static |
Used for both regular and off-screen drawing. The global DRWContext needs to be set before calling this function.
Definition at line 1424 of file draw_context.cc.
References BKE_object_is_visible_in_viewport(), BLI_assert, DRWContext::default_framebuffer(), depsgraph, DRWContext::depsgraph, drw_callbacks_post_scene(), drw_callbacks_pre_scene(), drw_engines_cache_populate(), DRW_gpencil_engine_needed_viewport(), DRWContext::enable_engines(), DRWContext::engines_data_validate(), DRWContext::engines_draw_scene(), DRWContext::engines_init_and_sync(), RenderEngineType::flag, View3D::flag2, blender::draw::foreach_obref_in_scene(), GPU_framebuffer_active_get(), GPU_framebuffer_back_get(), GPU_framebuffer_bind(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_restore(), OB_RENDER, RE_INTERNAL, DRWContext::region, View3D::shading, View3DShading::type, DRWContext::v3d, V3D_HIDE_OVERLAYS, and WM_draw_region_get_bound_viewport().
Referenced by DRW_draw_render_loop_offscreen(), and DRW_draw_view().
| void DRW_draw_render_loop_offscreen | ( | Depsgraph * | depsgraph, |
| RenderEngineType * | engine_type, | ||
| ARegion * | region, | ||
| View3D * | v3d, | ||
| bool | is_image_render, | ||
| bool | draw_background, | ||
| bool | do_color_management, | ||
| GPUOffScreen * | ofs, | ||
| GPUViewport * | viewport ) |
| viewport | can be NULL, in this case we create one. |
Definition at line 1541 of file draw_context.cc.
References DRWContext::acquire_data(), BLI_assert, depsgraph, draw_background(), DRWContext::draw_background, drw_draw_render_loop_3d(), ELEM, View3D::flag, View3DShading::flag, View3D::flag2, GPU_blend(), GPU_BLEND_ALPHA_PREMULT, GPU_BLEND_NONE, GPU_clear_color(), GPU_framebuffer_restore(), GPU_matrix_identity_projection_set(), GPU_matrix_identity_set(), GPU_offscreen_bind(), GPU_viewport_bind_from_offscreen(), GPU_viewport_create(), GPU_viewport_free(), GPU_viewport_unbind_from_offscreen(), OB_MATERIAL, OB_RENDER, OB_SOLID, OB_WIRE, DRWContext::options, DRWContext::release_data(), View3D::shading, View3DShading::type, UNUSED_VARS_NDEBUG, V3D_HIDE_OVERLAYS, V3D_SHADING_SCENE_WORLD, V3D_SHADING_SCENE_WORLD_RENDER, V3D_XR_SESSION_SURFACE, DRWContext::VIEWPORT_RENDER, and DRWContext::VIEWPORT_XR.
Referenced by ED_view3d_draw_offscreen().
Definition at line 2092 of file draw_context.cc.
References DRWContext::acquire_data(), BKE_object_is_visible_in_viewport(), depsgraph, drw_engines_cache_populate(), DRW_object_is_in_edit_mode(), DRW_select_engine_context_get(), DRWContext::enable_engines(), DRWContext::engines_draw_scene(), DRWContext::engines_init_and_sync(), blender::draw::foreach_obref_in_scene(), SELECTID_Context::max_index_drawn_len, OB_MESH, SELECTID_Context::objects, DRWContext::release_data(), RETOPOLOGY_ENABLED, RGN_TYPE_WINDOW, DRWContext::SELECT_EDIT_MESH, SPACE_VIEW3D, UI_SetTheme(), WM_draw_region_get_viewport(), and XRAY_ENABLED.
Referenced by DRW_select_buffer_read().
| void DRW_draw_select_loop | ( | Depsgraph * | depsgraph, |
| ARegion * | region, | ||
| View3D * | v3d, | ||
| bool | use_obedit_skip, | ||
| bool | draw_surface, | ||
| bool | use_nearest, | ||
| bool | do_material_sub_selection, | ||
| const rcti * | rect, | ||
| DRW_SelectPassFn | select_pass_fn, | ||
| void * | select_pass_user_data, | ||
| DRW_ObjectFilterFn | object_filter_fn, | ||
| void * | object_filter_user_data ) |
Object mode select-loop.
Definition at line 1862 of file draw_context.cc.
References DRWContext::acquire_data(), BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT, BASE_FROM_DUPLI, BASE_SELECTABLE, BKE_modifiers_is_deformed_by_armature(), BKE_object_is_visible_in_viewport(), BKE_view_layer_active_object_get(), BLI_assert, BLI_rcti_size_x(), BLI_rcti_size_y(), DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_get_original(), depsgraph, DefaultTextureList::depth, draw_select_framebuffer_depth_only_setup(), drw_callbacks_pre_scene(), DRW_context_get(), drw_engines_cache_populate(), DRW_gpencil_engine_needed_viewport(), DRW_SELECT_PASS_POST, DRW_SELECT_PASS_PRE, DRWContext::enable_engines(), DRWContext::engines_data_validate(), DRWContext::engines_draw_scene(), DRWContext::engines_init_and_sync(), View3DOverlay::flag, View3D::flag2, FOREACH_OBJECT_IN_MODE_BEGIN, FOREACH_OBJECT_IN_MODE_END, blender::draw::foreach_obref_in_scene(), g_select_buffer, GPU_framebuffer_bind(), GPU_framebuffer_clear_depth(), GPU_framebuffer_restore(), Object::mode, nullptr, OB_ARMATURE, OB_MBALL, OB_MODE_POSE, OBEDIT_FROM_OBACT, ToolSettings::object_flag, DRWContext::object_pose, View3D::object_type_exclude_select, OBPOSE_FROM_OBACT, OBWEIGHTPAINT_FROM_OBACT, View3D::overlay, DRWContext::release_data(), SCE_OBJECT_MODE_LOCK, DRWContext::SELECT_OBJECT, DRWContext::SELECT_OBJECT_MATERIAL, Scene::toolsettings, Object::type, V3D_HIDE_OVERLAYS, V3D_OVERLAY_BONE_SELECT, and DRWContext::viewport_texture_list_get().
Referenced by view3d_gpu_select_ex().
| void DRW_draw_view | ( | const bContext * | C | ) |
Everything starts here. This function takes care of calling all cache and rendering functions for each relevant engine / mode engine.
Definition at line 1516 of file draw_context.cc.
References DRWContext::acquire_data(), RenderData::alphamode, C, CTX_data_expect_evaluated_depsgraph(), CTX_wm_region(), DEG_get_evaluated_scene(), depsgraph, DRWContext::draw_background, drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), ED_view3d_engine_type(), OB_RENDER, DRWContext::options, Scene::r, R_ADDSKY, DRWContext::release_data(), View3D::shading, View3DShading::type, DRWContext::v3d, DRWContext::VIEWPORT, and WM_draw_region_get_bound_viewport().
Referenced by blender::ed::space_node::draw_nodespace_back_pix(), image_main_region_draw(), and view3d_draw_view().
|
static |
Definition at line 968 of file draw_context.cc.
References blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_validate(), drw_get(), DRW_manager_get(), DRWViewData::foreach_enabled_engine(), ExtractionGraph::graph, blender::draw::ObjectRef::is_dupli(), blender::draw::ObjectRef::object, DrawEngine::object_sync(), DupliCacheManager::try_add(), and DRWContext::view_data_active.
Referenced by DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_select_id(), and DRW_draw_select_loop().
| void DRW_engines_free | ( | ) |
Definition at line 2228 of file draw_context.cc.
References blender::draw::edit_select::Engine::free_static(), blender::draw::gpencil::Engine::free_static(), blender::draw::overlay::Engine::free_static(), blender::eevee::Engine::free_static(), blender::image_engine::Engine::free_static(), and blender::workbench::Engine::free_static().
Referenced by RE_engines_exit().
| void DRW_engines_register | ( | ) |
Definition at line 2222 of file draw_context.cc.
References DRW_engine_viewport_eevee_type, DRW_engine_viewport_workbench_type, and RE_engines_register().
Referenced by RE_engines_init().
| bool DRW_gpencil_engine_needed_viewport | ( | Depsgraph * | depsgraph, |
| View3D * | v3d ) |
This function only does following things to make quick checks for whether Grease Pencil drawing is needed:
Definition at line 1173 of file draw_context.cc.
References depsgraph, gpencil_any_exists(), and gpencil_object_is_excluded().
Referenced by drw_draw_render_loop_3d(), and DRW_draw_select_loop().
| void DRW_module_exit | ( | ) |
Definition at line 2278 of file draw_context.cc.
References DRW_shaders_free(), g_select_buffer, GPU_FRAMEBUFFER_FREE_SAFE, and GPU_TEXTURE_FREE_SAFE.
Referenced by RE_engines_exit().
| void DRW_module_init | ( | ) |
Definition at line 2247 of file draw_context.cc.
References BKE_curve_batch_cache_dirty_tag_cb, BKE_curve_batch_cache_free_cb, BKE_curves_batch_cache_dirty_tag_cb, BKE_curves_batch_cache_free_cb, BKE_grease_pencil_batch_cache_dirty_tag_cb, BKE_grease_pencil_batch_cache_free_cb, BKE_lattice_batch_cache_dirty_tag_cb, BKE_lattice_batch_cache_free_cb, BKE_mesh_batch_cache_dirty_tag_cb, BKE_mesh_batch_cache_free_cb, BKE_particle_batch_cache_dirty_tag_cb, BKE_particle_batch_cache_free_cb, BKE_pointcloud_batch_cache_dirty_tag_cb, BKE_pointcloud_batch_cache_free_cb, BKE_subsurf_modifier_free_gpu_cache_cb, BKE_volume_batch_cache_dirty_tag_cb, BKE_volume_batch_cache_free_cb, blender::draw::DRW_curve_batch_cache_dirty_tag(), blender::draw::DRW_curve_batch_cache_free(), blender::draw::DRW_curves_batch_cache_dirty_tag(), blender::draw::DRW_curves_batch_cache_free(), blender::draw::DRW_grease_pencil_batch_cache_dirty_tag(), blender::draw::DRW_grease_pencil_batch_cache_free(), blender::draw::DRW_lattice_batch_cache_dirty_tag(), blender::draw::DRW_lattice_batch_cache_free(), blender::draw::DRW_mesh_batch_cache_dirty_tag(), blender::draw::DRW_mesh_batch_cache_free(), blender::draw::DRW_particle_batch_cache_dirty_tag(), blender::draw::DRW_particle_batch_cache_free(), blender::draw::DRW_pointcloud_batch_cache_dirty_tag(), blender::draw::DRW_pointcloud_batch_cache_free(), blender::draw::DRW_subdiv_cache_free(), blender::draw::DRW_volume_batch_cache_dirty_tag(), and blender::draw::DRW_volume_batch_cache_free().
Referenced by RE_engines_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().
| bool DRW_render_check_grease_pencil | ( | Depsgraph * | depsgraph | ) |
Helper to check if exit object type to render.
Definition at line 1609 of file draw_context.cc.
References BKE_object_visibility(), DAG_EVAL_RENDER, DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DEGObjectIterSettings::flags, gpencil_any_exists(), OB_GREASE_PENCIL, and OB_VISIBLE_SELF.
Referenced by DRW_render_gpencil(), and engine_depsgraph_init().
| void DRW_render_gpencil | ( | RenderEngine * | engine, |
| Depsgraph * | depsgraph ) |
Render grease pencil on top of other render engine output. This function creates a DRWContext.
Definition at line 1630 of file draw_context.cc.
References DRWContext::acquire_data(), RenderData::alphamode, BLI_assert, BLI_rcti_init(), BLI_rcti_is_empty(), DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), depsgraph, DRWContext::draw_background, DRW_render_check_grease_pencil(), DRW_render_context_disable(), DRW_render_context_enable(), ListBase::first, blender::gpu::TexturePool::get(), GPU_DEPTH_NONE, GPU_depth_test(), GPU_framebuffer_restore(), ViewLayer::name, RenderView::next, DRWContext::options, Scene::r, R_ADDSKY, RenderEngine::re, RE_engine_get_result(), RE_GetRenderLayer(), RE_GetViewPlane(), RE_SetActiveRenderView(), DRWContext::release_data(), DRWContext::RENDER, blender::draw::gpencil::Engine::render_to_image(), blender::gpu::TexturePool::reset(), RenderEngine::resolution_x, RenderEngine::resolution_y, blender::draw::command::StateSet::set(), DRWContext::size, and RenderResult::views.
Referenced by engine_render_view_layer().
| 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().
| DRWTextStore * DRW_text_cache_ensure | ( | ) |
Definition at line 1404 of file draw_context.cc.
References BLI_assert, drw_get(), DRW_text_cache_create(), and DRWContext::text_store_p.
| DRWData * DRW_viewport_data_create | ( | ) |
Definition at line 395 of file draw_context.cc.
References DRWData::default_view, i, MEM_callocN(), and DRWData::view_data.
Referenced by DRWContext::acquire_data(), and drw_viewport_data_ensure().
|
static |
Definition at line 439 of file draw_context.cc.
References data, DRW_viewport_data_create(), and GPU_viewport_data_get().
Referenced by DRWContext::acquire_data().
| void DRW_viewport_data_free | ( | DRWData * | drw_data | ) |
Definition at line 427 of file draw_context.cc.
References DRWData::curves_module, DRWData::default_view, blender::draw::DRW_curves_module_free(), blender::draw::DRW_pointcloud_module_free(), blender::draw::DRW_volume_module_free(), i, MEM_freeN(), DRWData::pointcloud_module, DRWData::view_data, and DRWData::volume_module.
Referenced by GPU_viewport_free(), and DRWContext::release_data().
| 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().
|
static |
Definition at line 1167 of file draw_context.cc.
References DEG_id_type_any_exists(), depsgraph, ID_GD_LEGACY, and ID_GP.
Referenced by DRW_gpencil_engine_needed_viewport(), and DRW_render_check_grease_pencil().
|
static |
Definition at line 1159 of file draw_context.cc.
References OB_GREASE_PENCIL, and View3D::object_type_exclude_viewport.
Referenced by DRW_gpencil_engine_needed_viewport().
|
static |
Referenced by draw_select_framebuffer_depth_only_setup(), DRW_draw_select_loop(), and DRW_module_exit().