Blender V4.5
view3d_draw.cc File Reference
#include <cmath>
#include "BLI_listbase.h"
#include "BLI_math_geom.h"
#include "BLI_math_half.hh"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_string_utils.hh"
#include "BLI_threads.h"
#include "BKE_armature.hh"
#include "BKE_camera.h"
#include "BKE_collection.hh"
#include "BKE_context.hh"
#include "BKE_customdata.hh"
#include "BKE_global.hh"
#include "BKE_grease_pencil.hh"
#include "BKE_image.hh"
#include "BKE_key.hh"
#include "BKE_layer.hh"
#include "BKE_main.hh"
#include "BKE_object.hh"
#include "BKE_paint.hh"
#include "BKE_scene.hh"
#include "BKE_screen.hh"
#include "BKE_unit.hh"
#include "BKE_viewer_path.hh"
#include "BLF_api.hh"
#include "BLT_translation.hh"
#include "DNA_armature_types.h"
#include "DNA_camera_types.h"
#include "DNA_key_types.h"
#include "DNA_object_types.h"
#include "DNA_view3d_types.h"
#include "DNA_windowmanager_types.h"
#include "DRW_engine.hh"
#include "DRW_select_buffer.hh"
#include "ED_gpencil_legacy.hh"
#include "ED_info.hh"
#include "ED_scene.hh"
#include "ED_screen.hh"
#include "ED_view3d_offscreen.hh"
#include "ED_viewer_path.hh"
#include "ANIM_bone_collections.hh"
#include "DEG_depsgraph_query.hh"
#include "GPU_framebuffer.hh"
#include "GPU_immediate.hh"
#include "GPU_immediate_util.hh"
#include "GPU_matrix.hh"
#include "GPU_state.hh"
#include "GPU_viewport.hh"
#include "MEM_guardedalloc.h"
#include "UI_interface.hh"
#include "UI_resources.hh"
#include "RE_engine.h"
#include "WM_api.hh"
#include "WM_types.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "ANIM_keyframing.hh"
#include "view3d_intern.hh"

Go to the source code of this file.

Classes

struct  RV3DMatrixStore

Macros

#define M_GOLDEN_RATIO_CONJUGATE   0.618033988749895f
#define VIEW3D_OVERLAY_LINEHEIGHT   (UI_style_get()->widget.points * UI_SCALE_FAC * 1.6f)

Typedefs

using float4

Functions

General Functions
void ED_view3d_update_viewmat (const Depsgraph *depsgraph, const Scene *scene, View3D *v3d, ARegion *region, const float viewmat[4][4], const float winmat[4][4], const rcti *rect, bool offscreen)
static void view3d_main_region_setup_view (Depsgraph *depsgraph, Scene *scene, View3D *v3d, ARegion *region, const float viewmat[4][4], const float winmat[4][4], const rcti *rect)
static void view3d_main_region_setup_offscreen (Depsgraph *depsgraph, const Scene *scene, View3D *v3d, ARegion *region, const float viewmat[4][4], const float winmat[4][4])
static bool view3d_stereo3d_active (wmWindow *win, const Scene *scene, View3D *v3d, RegionView3D *rv3d)
static void view3d_stereo3d_setup (Depsgraph *depsgraph, Scene *scene, View3D *v3d, ARegion *region, const rcti *rect)
void ED_view3d_draw_setup_view (const wmWindowManager *wm, wmWindow *win, Depsgraph *depsgraph, Scene *scene, ARegion *region, View3D *v3d, const float viewmat[4][4], const float winmat[4][4], const rcti *rect)
Draw View Border
static void view3d_camera_border (const Scene *scene, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const RegionView3D *rv3d, rctf *r_viewborder, const bool no_shift, const bool no_zoom)
void ED_view3d_calc_camera_border_size (const Scene *scene, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const RegionView3D *rv3d, float r_size[2])
void ED_view3d_calc_camera_border (const Scene *scene, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const RegionView3D *rv3d, const bool no_shift, rctf *r_viewborder)
static void drawviewborder_grid3 (uint shdr_pos, float x1, float x2, float y1, float y2, float fac)
static void drawviewborder_triangle (uint shdr_pos, float x1, float x2, float y1, float y2, const char golden, const char dir)
static void drawviewborder (Scene *scene, Depsgraph *depsgraph, ARegion *region, View3D *v3d)
static void drawrenderborder (ARegion *region, View3D *v3d)
Draw Text & Info
static void view3d_draw_grease_pencil (const bContext *)
static const char * view3d_get_name (View3D *v3d, RegionView3D *rv3d)
static void draw_viewport_name (ARegion *region, View3D *v3d, int xoffset, int *yoffset)
static bool is_grease_pencil_with_layer_keyframe (const Object &ob)
static void draw_selected_name (const View3D *v3d, Scene *scene, ViewLayer *view_layer, Object *ob, int xoffset, int *yoffset)
static void draw_grid_unit_name (Scene *scene, ARegion *region, View3D *v3d, int xoffset, int *yoffset)
void view3d_draw_region_info (const bContext *C, ARegion *region)
Draw Viewport Contents
static void view3d_draw_view (const bContext *C, ARegion *region)
RenderEngineTypeED_view3d_engine_type (const Scene *scene, int drawtype)
static void view3d_update_viewer_path (const bContext *C)
void view3d_main_region_draw (const bContext *C, ARegion *region)
Off-screen Drawing
static void view3d_stereo3d_setup_offscreen (Depsgraph *depsgraph, const Scene *scene, View3D *v3d, ARegion *region, const float winmat[4][4], const char *viewname)
void ED_view3d_draw_offscreen (Depsgraph *depsgraph, const Scene *scene, eDrawType drawtype, View3D *v3d, ARegion *region, int winx, int winy, const float viewmat[4][4], const float winmat[4][4], bool is_image_render, bool draw_background, const char *viewname, const bool do_color_management, const bool restore_rv3d_mats, GPUOffScreen *ofs, GPUViewport *viewport)
void ED_view3d_draw_offscreen_simple (Depsgraph *depsgraph, Scene *scene, View3DShading *shading_override, eDrawType drawtype, int object_type_exclude_viewport_override, int object_type_exclude_select_override, int winx, int winy, uint draw_flags, const float viewmat[4][4], const float winmat[4][4], float clip_start, float clip_end, bool is_xr_surface, bool is_image_render, bool draw_background, const char *viewname, const bool do_color_management, GPUOffScreen *ofs, GPUViewport *viewport)
ImBufED_view3d_draw_offscreen_imbuf (Depsgraph *depsgraph, Scene *scene, eDrawType drawtype, View3D *v3d, ARegion *region, int sizex, int sizey, eImBufFlags imbuf_flag, int alpha_mode, const char *viewname, const bool restore_rv3d_mats, GPUOffScreen *ofs, GPUViewport *viewport, const bool use_camera_view_bounds, char err_out[256])
ImBufED_view3d_draw_offscreen_imbuf_simple (Depsgraph *depsgraph, Scene *scene, View3DShading *shading_override, eDrawType drawtype, Object *camera, int width, int height, eImBufFlags imbuf_flag, eV3DOffscreenDrawFlag draw_flags, int alpha_mode, const char *viewname, GPUOffScreen *ofs, GPUViewport *viewport, char err_out[256])
bool ED_view3d_draw_offscreen_check_nested ()
Viewport Clipping
static bool view3d_clipping_test (const float co[3], const float clip[6][4])
bool ED_view3d_clipping_test (const RegionView3D *rv3d, const float co[3], const bool is_local)
Back-Draw for Selection
static void validate_object_select_id (Depsgraph *depsgraph, const Scene *scene, ViewLayer *view_layer, ARegion *region, View3D *v3d, Object *obact)
static void view3d_gpu_read_Z_pixels (GPUViewport *viewport, rcti *rect, void *data)
void ED_view3d_select_id_validate (const ViewContext *vc)
int ED_view3d_backbuf_sample_size_clamp (ARegion *region, const float dist)
Z-Depth Utilities
void view3d_depths_rect_create (ARegion *region, rcti *rect, ViewDepths *r_d)
static ViewDepthsview3d_depths_create (ARegion *region)
float view3d_depth_near (ViewDepths *d)
void ED_view3d_depth_override (Depsgraph *depsgraph, ARegion *region, View3D *v3d, Object *, eV3DDepthOverrideMode mode, bool use_overlay, ViewDepths **r_depths)
void ED_view3d_depths_free (ViewDepths *depths)
bool ED_view3d_has_depth_buffer_updated (const Depsgraph *depsgraph, const View3D *v3d)
Custom-data Utilities
void ED_view3d_datamask (const Scene *scene, ViewLayer *view_layer, const View3D *v3d, CustomData_MeshMasks *r_cddata_masks)
void ED_view3d_screen_datamask (const Scene *scene, ViewLayer *view_layer, const bScreen *screen, CustomData_MeshMasks *r_cddata_masks)
Region View Matrix Backup/Restore
RV3DMatrixStoreED_view3d_mats_rv3d_backup (RegionView3D *rv3d)
void ED_view3d_mats_rv3d_restore (RegionView3D *rv3d, RV3DMatrixStore *rv3dmat_pt)
void ED_view3D_mats_rv3d_free (RV3DMatrixStore *rv3d_mat)
FPS Drawing
void ED_scene_draw_fps (const Scene *scene, int xoffset, int *yoffset)
Calculate Render Border
static bool view3d_main_region_do_render_draw (const Scene *scene)
bool ED_view3d_calc_render_border (const Scene *scene, Depsgraph *depsgraph, View3D *v3d, ARegion *region, rcti *r_rect)

Other Elements

#define STEPS_LEN   8
float ED_scene_grid_scale (const Scene *scene, const char **r_grid_unit)
float ED_view3d_grid_scale (const Scene *scene, const View3D *v3d, const char **r_grid_unit)
static void view3d_grid_steps_ex (const Scene *scene, const View3D *v3d, const RegionView3D *rv3d, float r_grid_steps[STEPS_LEN], void const **r_usys_pt, int *r_len)
void ED_view3d_grid_steps (const Scene *scene, const View3D *v3d, const RegionView3D *rv3d, float r_grid_steps[STEPS_LEN])
float ED_view3d_grid_view_scale (const Scene *scene, const View3D *v3d, const ARegion *region, const char **r_grid_unit)
static void draw_view_axis (RegionView3D *rv3d, const rcti *rect)
static void view3d_draw_border (const bContext *C, ARegion *region)

Macro Definition Documentation

◆ M_GOLDEN_RATIO_CONJUGATE

#define M_GOLDEN_RATIO_CONJUGATE   0.618033988749895f

Definition at line 90 of file view3d_draw.cc.

Referenced by drawviewborder(), and drawviewborder_triangle().

◆ STEPS_LEN

#define STEPS_LEN   8

◆ VIEW3D_OVERLAY_LINEHEIGHT

#define VIEW3D_OVERLAY_LINEHEIGHT   (UI_style_get()->widget.points * UI_SCALE_FAC * 1.6f)

Typedef Documentation

◆ float4

Definition at line 620 of file BLI_math_vector_types.hh.

Function Documentation

◆ draw_grid_unit_name()

void draw_grid_unit_name ( Scene * scene,
ARegion * region,
View3D * v3d,
int xoffset,
int * yoffset )
static

◆ draw_selected_name()

◆ draw_view_axis()

◆ draw_viewport_name()

◆ drawrenderborder()

◆ drawviewborder()

void drawviewborder ( Scene * scene,
Depsgraph * depsgraph,
ARegion * region,
View3D * v3d )
static

Definition at line 533 of file view3d_draw.cc.

References DisplaySafeAreas::action, DisplaySafeAreas::action_center, BKE_camera_sensor_fit(), BLF_default(), BLF_draw_default(), RenderData::border, CAM_DTX_CENTER, CAM_DTX_CENTER_DIAG, CAM_DTX_GOLDEN, CAM_DTX_GOLDEN_TRI_A, CAM_DTX_GOLDEN_TRI_B, CAM_DTX_HARMONY_TRI_A, CAM_DTX_HARMONY_TRI_B, CAM_DTX_THIRDS, CAM_SHOW_SAFE_CENTER, CAM_SHOW_SAFE_MARGINS, CAM_SHOWNAME, CAM_SHOWPASSEPARTOUT, CAM_SHOWSENSOR, View3D::camera, CAMERA_SENSOR_FIT_AUTO, CAMERA_SENSOR_FIT_HOR, Object::data, depsgraph, drawviewborder_grid3(), drawviewborder_triangle(), Camera::dtx, ED_view3d_calc_camera_border(), Camera::flag, View3DOverlay::flag, View3D::flag2, floorf, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_line_width(), GPU_PRIM_LINES, GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), Object::id, imm_draw_box_wire_2d(), immBegin(), immBindBuiltinProgram(), immEnd(), immRectf(), immUnbindProgram(), immUniform1f(), immUniform1i(), immUniform2f(), immUniformColor3f(), immUniformColor3ubv(), immUniformThemeColor(), immUniformThemeColor3(), immUniformThemeColorAlpha(), immUniformThemeColorShadeAlpha(), immVertex2f(), immVertexFormat(), M_GOLDEN_RATIO_CONJUGATE, RenderData::mode, ID::name, OB_CAMERA, View3D::overlay, Camera::passepartalpha, Scene::r, R_BORDER, ARegion::regiondata, Scene::safe_areas, Camera::sensor_fit, Camera::sensor_x, Camera::sensor_y, TH_BACK, TH_CAMERA_PASSEPARTOUT, TH_REDALERT, TH_TEXT_HI, TH_VIEW_OVERLAY, DisplaySafeAreas::title, DisplaySafeAreas::title_center, Object::type, U, UI_draw_safe_areas(), UI_FontThemeColor(), V3D_HIDE_OVERLAYS, V3D_LOCK_CAMERA, V3D_OVERLAY_HIDE_TEXT, V3D_SHOW_CAMERA_GUIDES, V3D_SHOW_CAMERA_PASSEPARTOUT, view3d_camera_border_hack_col, view3d_camera_border_hack_test, ARegion::winx, ARegion::winy, RenderData::xasp, rctf::xmax, rctf::xmin, RenderData::xsch, RenderData::yasp, rctf::ymax, rctf::ymin, and RenderData::ysch.

Referenced by view3d_draw_border().

◆ drawviewborder_grid3()

void drawviewborder_grid3 ( uint shdr_pos,
float x1,
float x2,
float y1,
float y2,
float fac )
static

Definition at line 453 of file view3d_draw.cc.

References GPU_PRIM_LINES, immBegin(), immEnd(), and immVertex2f().

Referenced by drawviewborder().

◆ drawviewborder_triangle()

void drawviewborder_triangle ( uint shdr_pos,
float x1,
float x2,
float y1,
float y2,
const char golden,
const char dir )
static

Definition at line 480 of file view3d_draw.cc.

References GPU_PRIM_LINES, immBegin(), immEnd(), immVertex2f(), M_GOLDEN_RATIO_CONJUGATE, and w().

Referenced by drawviewborder().

◆ ED_scene_draw_fps()

void ED_scene_draw_fps ( const Scene * scene,
int xoffset,
int * yoffset )

◆ ED_scene_grid_scale()

◆ ED_view3d_backbuf_sample_size_clamp()

int ED_view3d_backbuf_sample_size_clamp ( ARegion * region,
float dist )

allow for small values [0.5 - 2.5], and large values, FLT_MAX by clamping by the area size

Definition at line 2376 of file view3d_draw.cc.

References ceilf, max_ii(), min_ff(), and ARegion::winx.

Referenced by EDBM_edge_find_nearest_ex(), EDBM_face_find_nearest_ex(), and EDBM_vert_find_nearest_ex().

◆ ED_view3d_calc_camera_border()

◆ ED_view3d_calc_camera_border_size()

void ED_view3d_calc_camera_border_size ( const Scene * scene,
Depsgraph * depsgraph,
const ARegion * region,
const View3D * v3d,
const RegionView3D * rv3d,
float r_size[2] )

◆ ED_view3d_calc_render_border()

◆ ED_view3d_clipping_test()

bool ED_view3d_clipping_test ( const RegionView3D * rv3d,
const float co[3],
bool is_local )

Return true when co is hidden by the 3D views clipping planes.

Parameters
is_localWhen true use local (object-space) ED_view3d_clipping_local must run first, then all comparisons can be done in local-space.
Returns
True when co is outside all clipping planes.
Note
Callers should check RV3D_CLIPPING_ENABLED first.

Definition at line 2286 of file view3d_draw.cc.

References RegionView3D::clip, RegionView3D::clip_local, and view3d_clipping_test().

Referenced by ed_view3d_project__internal(), blender::ed::sculpt_paint::filter_region_clip_factors(), blender::ed::sculpt_paint::filter_region_clip_factors(), find_nearest_edge__doClosest(), knife_bvh_raycast_cb(), knife_find_closest_edge_of_face(), knife_find_closest_vert_of_edge(), knife_sample_screen_density_from_closest_face(), point_is_visible(), project_paint_face_init(), and project_paint_occlude_ptv_clip().

◆ ED_view3d_datamask()

◆ ED_view3d_depth_override()

void ED_view3d_depth_override ( Depsgraph * depsgraph,
ARegion * region,
View3D * v3d,
Object * obact,
eV3DDepthOverrideMode mode,
bool use_overlay,
ViewDepths ** r_depths )

Redraw the viewport depth buffer. Call ED_view3d_has_depth_buffer_updated if you want to check if the viewport already has depth buffer updated.

Parameters
use_overlayWhen enabled and the v3d has overlays enabled, show overlays. A rule of thumb for this value is:
  • For viewport navigation the value should be true. Since the user may want to inspect non-geometry contents of their scene.
  • For painting and other tools, the value should be false. Since it's not typically desirable to paint onto the cameras frame or spot-light, nor use these depths for object placement.

Definition at line 2475 of file view3d_draw.cc.

References DEG_get_evaluated_scene(), depsgraph, DRW_draw_depth_loop(), ED_view3d_depths_free(), ED_view3d_draw_setup_view(), flag, View3D::flag, View3D_Runtime::flag, View3D::flag2, G_MAIN, ARegion::regiondata, RegionView3D::rflag, RGN_TYPE_WINDOW, View3D::runtime, RV3D_ZOFFSET_DISABLED, SPACE_VIEW3D, UI_SetTheme(), UI_Theme_Restore(), UI_Theme_Store(), V3D_DEPTH_ALL, V3D_DEPTH_GPENCIL_ONLY, V3D_DEPTH_NO_GPENCIL, V3D_DEPTH_OBJECT_ONLY, V3D_DEPTH_SELECTED_ONLY, V3D_HIDE_OVERLAYS, V3D_RUNTIME_DEPTHBUF_OVERRIDDEN, V3D_SELECT_OUTLINE, view3d_depths_create(), WM_draw_region_get_viewport(), WM_draw_region_viewport_bind(), WM_draw_region_viewport_ensure(), and WM_draw_region_viewport_unbind().

Referenced by annotation_paint_strokeend(), annotation_stroke_addpoint(), annotation_stroke_doeraser(), blender::ed::greasepencil::DrawingPlacement::cache_viewport_depths(), curve_draw_invoke(), blender::ed::curves::curves_draw_invoke(), depthdropper_depth_sample_pt(), ED_view3d_cursor3d_position(), navigate_pivot_get(), blender::ed::object::object_transform_axis_target_invoke(), paint_proj_stroke(), PE_set_view3d_data(), view3d_zoom_border_exec(), and viewcenter_pick_invoke().

◆ ED_view3d_depths_free()

◆ ED_view3d_draw_offscreen()

void ED_view3d_draw_offscreen ( Depsgraph * depsgraph,
const Scene * scene,
eDrawType drawtype,
View3D * v3d,
ARegion * region,
int winx,
int winy,
const float viewmat[4][4],
const float winmat[4][4],
bool is_image_render,
bool draw_background,
const char * viewname,
const bool do_color_management,
const bool restore_rv3d_mats,
GPUOffScreen * ofs,
GPUViewport * viewport )

◆ ED_view3d_draw_offscreen_check_nested()

bool ED_view3d_draw_offscreen_check_nested ( )

Drawing off-screen is not supported while drawing, this is a simple check to use when the code path may occur within a draw call (Python scripting for example).

Definition at line 2265 of file view3d_draw.cc.

References DRW_draw_in_progress().

Referenced by pygpu_offscreen_draw_view3d().

◆ ED_view3d_draw_offscreen_imbuf()

ImBuf * ED_view3d_draw_offscreen_imbuf ( Depsgraph * depsgraph,
Scene * scene,
eDrawType drawtype,
View3D * v3d,
ARegion * region,
int sizex,
int sizey,
eImBufFlags imbuf_flag,
int alpha_mode,
const char * viewname,
bool restore_rv3d_mats,
GPUOffScreen * ofs,
GPUViewport * viewport,
bool use_camera_view_bounds,
char err_out[256] )

Utility func for ED_view3d_draw_offscreen

Parameters
ofsOptional off-screen buffer, can be NULL. (avoids re-creating when doing multiple GL renders).
viewportOptional viewport data, can be NULL. (avoids re-creating when doing multiple GL renders, allows keeping track of state across frames).
use_camera_view_boundsif true and the viewport is looking through a camera, only render what the camera can see. In case the aspect ratio of the given sizex and sizey does not match the render aspect ratio of the scene, the returned image will be expanded so the camera view bounds are contained within it.

Definition at line 1983 of file view3d_draw.cc.

References BKE_camera_multiview_params(), BKE_camera_multiview_render(), BKE_camera_params_compute_matrix(), BKE_camera_params_compute_viewplane(), BKE_camera_params_from_object(), BKE_camera_params_init(), ImBuf::byte_buffer, View3D::camera, View3D::clip_end, View3D::clip_start, copy_m4_m4(), ImBufByteBuffer::data, ImBufFloatBuffer::data, DEG_get_evaluated(), depsgraph, DRW_gpu_context_disable(), DRW_gpu_context_enable(), ED_view3d_draw_offscreen(), ED_view3d_viewplane_get(), ImBuf::float_buffer, GPU_DATA_FLOAT, GPU_DATA_UBYTE, GPU_framebuffer_active_get(), GPU_framebuffer_bind(), GPU_framebuffer_restore(), GPU_offscreen_bind(), GPU_offscreen_create(), GPU_offscreen_format(), GPU_offscreen_free(), GPU_offscreen_height(), GPU_offscreen_read_color(), GPU_offscreen_unbind(), GPU_offscreen_width(), GPU_RGBA16F, GPU_RGBA8, GPU_TEXTURE_USAGE_HOST_READ, GPU_TEXTURE_USAGE_SHADER_READ, IB_float_data, IMB_allocImBuf(), IMB_byte_from_float(), orthographic_m4(), params, RegionView3D::persp, perspective_m4(), Scene::r, R_ADDSKY, ARegion::regiondata, RV3D_CAMOB, RenderData::xasp, rctf::xmax, rctf::xmin, RenderData::yasp, rctf::ymax, and rctf::ymin.

Referenced by blend_file_thumb_from_camera(), ED_view3d_draw_offscreen_imbuf_simple(), screen_opengl_render_doit(), blender::ed::asset::screenshot_preview_exec(), and texture_paint_image_from_view_exec().

◆ ED_view3d_draw_offscreen_imbuf_simple()

ImBuf * ED_view3d_draw_offscreen_imbuf_simple ( Depsgraph * depsgraph,
Scene * scene,
View3DShading * shading_override,
eDrawType drawtype,
Object * camera,
int width,
int height,
eImBufFlags imbuf_flags,
eV3DOffscreenDrawFlag draw_flags,
int alpha_mode,
const char * viewname,
GPUOffScreen * ofs,
GPUViewport * viewport,
char err_out[256] )

Creates separate fake 3d views (wrapping ED_view3d_draw_offscreen_imbuf)

Parameters
ofsOptional off-screen buffer can be NULL. (avoids re-creating when doing multiple GL renders).
viewportOptional viewport data, can be NULL. (avoids re-creating when doing multiple GL renders, allows keeping track of state across frames).
Note
used by the sequencer

Definition at line 2145 of file view3d_draw.cc.

References View3DShading::background_type, BKE_camera_multiview_params(), BKE_camera_multiview_render(), BKE_camera_params_compute_matrix(), BKE_camera_params_compute_viewplane(), BKE_camera_params_from_object(), BKE_camera_params_init(), BKE_scene_uses_blender_eevee(), BKE_scene_uses_blender_workbench(), View3D::camera, View3D::clip_end, View3D::clip_start, View3DShading::color_type, copy_m4_m4(), DEG_get_evaluated(), depsgraph, Scene::display, ED_view3d_draw_offscreen_imbuf(), ListBase::first, View3DShading::flag, View3D::flag2, View3DOverlay::gpencil_vertex_paint_opacity, View3D::gridflag, invert_m4_m4(), ListBase::last, View3D::lens, View3DShading::light, mul_m4_m4m4(), normalize_m4(), OB_MATERIAL, OB_RENDER, OB_SOLID, OB_TEXTURE, View3D::overlay, params, RegionView3D::persinv, RegionView3D::persmat, RegionView3D::persp, Scene::r, View3D::regionbase, ARegion::regiondata, ARegion::regiontype, View3DShading::render_pass, RGN_TYPE_WINDOW, ARegion::runtime, RV3D_CAMOB, SCE_PASS_COMBINED, SceneDisplay::shading, View3D::shading, View3DShading::type, V3D_HIDE_OVERLAYS, V3D_LIGHTING_STUDIO, V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS, V3D_OFSDRAW_SHOW_ANNOTATION, V3D_OFSDRAW_SHOW_GRIDFLOOR, V3D_SHADING_BACKGROUND_WORLD, V3D_SHADING_SCENE_LIGHTS, V3D_SHADING_SCENE_LIGHTS_RENDER, V3D_SHADING_SCENE_WORLD, V3D_SHADING_SCENE_WORLD_RENDER, V3D_SHADING_TEXTURE_COLOR, V3D_SHOW_ANNOTATION, V3D_SHOW_FLOOR, V3D_SHOW_X, V3D_SHOW_Y, RegionView3D::viewinv, RegionView3D::viewmat, RegionView3D::winmat, View3DOverlay::wireframe_opacity, View3DOverlay::wireframe_threshold, RenderData::xasp, and RenderData::yasp.

Referenced by action_preview_render(), blend_file_thumb_from_camera(), blender::ed::vse::ED_spacetype_sequencer(), object_preview_render(), and screen_opengl_render_doit().

◆ ED_view3d_draw_offscreen_simple()

void ED_view3d_draw_offscreen_simple ( Depsgraph * depsgraph,
Scene * scene,
View3DShading * shading_override,
eDrawType drawtype,
int object_type_exclude_viewport_override,
int object_type_exclude_select_override,
int winx,
int winy,
unsigned int draw_flags,
const float viewmat[4][4],
const float winmat[4][4],
float clip_start,
float clip_end,
bool is_xr_surface,
bool is_image_render,
bool draw_background,
const char * viewname,
bool do_color_management,
GPUOffScreen * ofs,
GPUViewport * viewport )

Creates separate fake 3d views (wrapping ED_view3d_draw_offscreen). Similar too #ED_view_draw_offscreen_imbuf_simple, but takes view/projection matrices as arguments.

Definition at line 1862 of file view3d_draw.cc.

References View3D::clip_end, View3D::clip_start, depsgraph, Scene::display, draw_background(), ED_view3d_draw_offscreen(), Scene::eevee, ListBase::first, View3D::flag, View3DOverlay::flag, View3DShading::flag, View3D::flag2, View3D::grid, View3D::gridflag, View3D::gridlines, View3D::gridsubdiv, ListBase::last, View3D::lens, OB_ARMATURE, OB_MATERIAL, View3D::object_type_exclude_select, View3D::object_type_exclude_viewport, View3D::overlay, SceneEEVEE::overscan, RegionView3D::persp, View3D::regionbase, ARegion::regiondata, ARegion::regiontype, RGN_TYPE_WINDOW, ARegion::runtime, RV3D_PERSP, SceneDisplay::shading, View3D::shading, View3DShading::type, V3D_HIDE_HELPLINES, V3D_HIDE_OVERLAYS, V3D_OFSDRAW_NONE, V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS, V3D_OFSDRAW_SHOW_ANNOTATION, V3D_OFSDRAW_SHOW_GRIDFLOOR, V3D_OFSDRAW_SHOW_OBJECT_EXTRAS, V3D_OFSDRAW_SHOW_SELECTION, V3D_OFSDRAW_XR_SHOW_CONTROLLERS, V3D_OFSDRAW_XR_SHOW_CUSTOM_OVERLAYS, V3D_OFSDRAW_XR_SHOW_PASSTHROUGH, V3D_OVERLAY_HIDE_BONES, V3D_OVERLAY_HIDE_CURSOR, V3D_OVERLAY_HIDE_MOTION_PATHS, V3D_OVERLAY_HIDE_OBJECT_ORIGINS, V3D_OVERLAY_HIDE_OBJECT_XTRAS, V3D_OVERLAY_HIDE_TEXT, V3D_SELECT_OUTLINE, V3D_SHADING_SCENE_LIGHTS, V3D_SHADING_SCENE_WORLD, V3D_SHOW_ANNOTATION, V3D_SHOW_FLOOR, V3D_SHOW_X, V3D_SHOW_Y, V3D_XR_SESSION_SURFACE, V3D_XR_SHOW_CONTROLLERS, V3D_XR_SHOW_CUSTOM_OVERLAYS, and V3D_XR_SHOW_PASSTHROUGH.

Referenced by wm_xr_draw_view().

◆ ED_view3d_draw_setup_view()

◆ ED_view3d_engine_type()

◆ ED_view3d_grid_scale()

float ED_view3d_grid_scale ( const Scene * scene,
const View3D * v3d,
const char ** r_grid_unit )

◆ ED_view3d_grid_steps()

void ED_view3d_grid_steps ( const Scene * scene,
const View3D * v3d,
const RegionView3D * rv3d,
float r_grid_steps[STEPS_LEN] )

Definition at line 915 of file view3d_draw.cc.

References STEPS_LEN, and view3d_grid_steps_ex().

◆ ED_view3d_grid_view_scale()

float ED_view3d_grid_view_scale ( const Scene * scene,
const View3D * v3d,
const ARegion * region,
const char ** r_grid_unit )

◆ ED_view3d_has_depth_buffer_updated()

◆ ED_view3d_mats_rv3d_backup()

◆ ED_view3D_mats_rv3d_free()

void ED_view3D_mats_rv3d_free ( RV3DMatrixStore * rv3d_mat)

Definition at line 2721 of file view3d_draw.cc.

References MEM_freeN().

Referenced by blender::ed::greasepencil::image_render::region_reset().

◆ ED_view3d_mats_rv3d_restore()

◆ ED_view3d_screen_datamask()

void ED_view3d_screen_datamask ( const Scene * scene,
ViewLayer * view_layer,
const bScreen * screen,
CustomData_MeshMasks * r_cddata_masks )

Goes over all modes and view3d settings.

Definition at line 2656 of file view3d_draw.cc.

References bScreen::areabase, CD_MASK_BAREMESH, CustomData_MeshMasks_update(), ED_view3d_datamask(), LISTBASE_FOREACH, and SPACE_VIEW3D.

Referenced by wm_event_do_depsgraph().

◆ ED_view3d_select_id_validate()

◆ ED_view3d_update_viewmat()

◆ is_grease_pencil_with_layer_keyframe()

bool is_grease_pencil_with_layer_keyframe ( const Object & ob)
static

Definition at line 1328 of file view3d_draw.cc.

References Object::data, OB_GREASE_PENCIL, and Object::type.

Referenced by draw_selected_name().

◆ validate_object_select_id()

◆ view3d_camera_border()

◆ view3d_clipping_test()

bool view3d_clipping_test ( const float co[3],
const float clip[6][4] )
static

Definition at line 2276 of file view3d_draw.cc.

References plane_point_side_v3().

Referenced by ED_view3d_clipping_test().

◆ view3d_depth_near()

float view3d_depth_near ( ViewDepths * d)

Utility function to find the closest Z value, use for auto-depth.

Definition at line 2452 of file view3d_draw.cc.

References ViewDepths::depth_range, ViewDepths::depths, FLT_MAX, ViewDepths::h, i, and ViewDepths::w.

Referenced by view3d_zoom_border_exec(), and view_autodist_depth_margin().

◆ view3d_depths_create()

◆ view3d_depths_rect_create()

◆ view3d_draw_border()

◆ view3d_draw_grease_pencil()

void view3d_draw_grease_pencil ( const bContext * )
static

Draw Info

Definition at line 1191 of file view3d_draw.cc.

Referenced by view3d_draw_region_info().

◆ view3d_draw_region_info()

void view3d_draw_region_info ( const bContext * C,
ARegion * region )

Information drawn on top of the solid plates and composed data.

Definition at line 1507 of file view3d_draw.cc.

References BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), BLF_batch_draw_begin(), BLF_batch_draw_end(), BLF_color4fv(), BLF_default(), BLF_default_size(), BLF_disable(), BLF_enable(), BLF_set_default(), BLF_SHADOW, BLF_shadow(), BLF_shadow_offset(), C, CTX_data_main(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_manager(), CTX_wm_view3d(), draw_grid_unit_name(), draw_selected_name(), draw_view_axis(), draw_viewport_name(), DRW_draw_region_engine_info(), ED_info_draw_stats(), ED_region_pixelspace(), ED_region_visible_rect(), ED_scene_draw_fps(), ED_screen_animation_no_scrub(), ED_view3d_text_colors_get(), View3DOverlay::flag, View3D::flag2, View3D::gizmo_flag, View3D::gridflag, View3D::localvd, RegionView3D::ndof_flag, NDOF_IS_ORBIT_AROUND_CENTER_MODE, NDOF_ORBIT_CENTER_AUTO, RegionView3D::ndof_rot_angle, NDOF_SHOW_GUIDE_ORBIT_AXIS, NDOF_SHOW_GUIDE_ORBIT_CENTER, View3D::ob_center, View3D::ob_center_cursor, Outline, View3D::overlay, uiFontStyle::points, ARegion::regiondata, RV3D_LOCK_FLAGS, RV3D_LOCK_ROTATION, RV3D_NDOF_OFS_IS_VALID, U, UI_DEFAULT_TEXT_POINTS, UI_fontstyle_set(), UI_FSTYLE_WIDGET, USER_DRAWVIEWINFO, USER_MINI_AXIS_TYPE_GIZMO, USER_MINI_AXIS_TYPE_MINIMAL, USER_MINI_AXIS_TYPE_NONE, USER_SHOW_FPS, USER_SHOW_VIEWPORTNAME, V3D_GIZMO_HIDE, V3D_GIZMO_HIDE_NAVIGATE, V3D_HIDE_OVERLAYS, V3D_OVERLAY_HIDE_TEXT, V3D_OVERLAY_STATS, V3D_SHOW_FLOOR, V3D_SHOW_X, V3D_SHOW_Y, V3D_SHOW_Z, view3d_draw_border(), view3d_draw_grease_pencil(), VIEW3D_OVERLAY_LINEHEIGHT, rcti::xmin, and rcti::ymax.

Referenced by DRW_draw_region_info().

◆ view3d_draw_view()

void view3d_draw_view ( const bContext * C,
ARegion * region )
static

◆ view3d_get_name()

◆ view3d_gpu_read_Z_pixels()

◆ view3d_grid_steps_ex()

void view3d_grid_steps_ex ( const Scene * scene,
const View3D * v3d,
const RegionView3D * rv3d,
float r_grid_steps[STEPS_LEN],
void const ** r_usys_pt,
int * r_len )
static

◆ view3d_main_region_do_render_draw()

bool view3d_main_region_do_render_draw ( const Scene * scene)
static

◆ view3d_main_region_draw()

◆ view3d_main_region_setup_offscreen()

void view3d_main_region_setup_offscreen ( Depsgraph * depsgraph,
const Scene * scene,
View3D * v3d,
ARegion * region,
const float viewmat[4][4],
const float winmat[4][4] )
static

◆ view3d_main_region_setup_view()

void view3d_main_region_setup_view ( Depsgraph * depsgraph,
Scene * scene,
View3D * v3d,
ARegion * region,
const float viewmat[4][4],
const float winmat[4][4],
const rcti * rect )
static

◆ view3d_stereo3d_active()

◆ view3d_stereo3d_setup()

◆ view3d_stereo3d_setup_offscreen()

void view3d_stereo3d_setup_offscreen ( Depsgraph * depsgraph,
const Scene * scene,
View3D * v3d,
ARegion * region,
const float winmat[4][4],
const char * viewname )
static

◆ view3d_update_viewer_path()

void view3d_update_viewer_path ( const bContext * C)
static