Blender V4.3
ED_view3d.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2008 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
13#include "BLI_utildefines.h"
14
15#include "DNA_scene_types.h"
16
17/* ********* exports for space_view3d/ module ********** */
18struct ARegion;
19struct BMEdge;
20struct BMElem;
21struct BMEditMesh;
22struct BMFace;
23struct BMVert;
24struct BPoint;
25struct Base;
26struct BezTriple;
27struct BoundBox;
28struct Camera;
30struct Depsgraph;
31struct EditBone;
32struct GPUSelectBuffer;
33struct ID;
34struct Main;
35struct MetaElem;
36struct Nurb;
37struct Object;
38struct RV3DMatrixStore;
39struct RegionView3D;
40struct RenderEngineType;
41struct Scene;
42struct ScrArea;
44struct View3D;
45struct ViewContext;
46struct ViewLayer;
47struct ViewOpsData;
48struct bContext;
49struct bPoseChannel;
50struct bScreen;
51struct rctf;
52struct rcti;
53struct wmEvent;
54struct wmGizmo;
55struct wmKeyMapItem;
56struct wmOperator;
57struct wmWindow;
58struct wmWindowManager;
59
64 /* Dependency graph is uses for depth drawing, viewport camera matrix access, and also some areas
65 * are re-using this to access evaluated entities.
66 *
67 * Moral of the story: assign to a fully evaluated state. */
68 Depsgraph *depsgraph;
78 int mval[2];
79};
80
81struct ViewDepths {
82 unsigned short w, h;
83 /* only for temp use for sub-rectangles, added to `region->winx/winy`. */
84 short x, y;
85 float *depths;
86 double depth_range[2];
87};
88
89/* Rotate 3D cursor on placement. */
96
97void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float r_color[3]);
98void ED_view3d_text_colors_get(const Scene *scene,
99 const View3D *v3d,
100 float r_text_color[4],
101 float r_shadow_color[4]);
103 const Object *ob,
104 const View3D *v3d);
111 const int mval[2],
112 bool use_depth,
113 float r_cursor_co[3]);
115 const int mval[2],
116 bool use_depth,
117 enum eV3DCursorOrient orientation,
118 float r_cursor_co[3],
119 float r_cursor_quat[4]);
121 const int mval[2],
122 bool use_depth,
123 enum eV3DCursorOrient orientation);
124
126
135void ED_view3d_to_m4(float mat[4][4], const float ofs[3], const float quat[4], float dist);
144void ED_view3d_from_m4(const float mat[4][4], float ofs[3], float quat[4], const float *dist);
145
155 const Object *ob, float ofs[3], float quat[4], const float *dist, float *lens);
166 const Depsgraph *depsgraph, Object *ob, const float ofs[3], const float quat[4], float dist);
167
169 Depsgraph *depsgraph,
170 const Scene *scene,
171 Object *camera_ob);
172
174 Depsgraph *depsgraph,
175 const Scene *scene,
176 Object *camera_ob);
177
182
183/* Depth buffer */
197
210void ED_view3d_depth_override(Depsgraph *depsgraph,
211 ARegion *region,
212 View3D *v3d,
213 Object *obact,
215 bool use_overlay,
216 ViewDepths **r_depths);
219 const int mval[2],
220 int margin,
221 float *r_depth);
223 const ViewDepths *depths,
224 const int mval[2],
225 float r_normal[3]);
226bool ED_view3d_depth_unproject_v3(const ARegion *region,
227 const int mval[2],
228 double depth,
229 float r_location_world[3]);
230
231bool ED_view3d_has_depth_buffer_updated(const Depsgraph *depsgraph, const View3D *v3d);
232
242 ViewOpsData *vod,
243 const wmEvent *event,
244 const float depth_loc_override[3]);
246
247/* Projection */
248#define IS_CLIPPED 12000
249
250/* return values for ED_view3d_project_...() */
272
273/* some clipping tests are optional */
304
305#define V3D_PROJ_TEST_CLIP_DEFAULT \
306 (V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_WIN | V3D_PROJ_TEST_CLIP_NEAR)
307#define V3D_PROJ_TEST_ALL \
308 (V3D_PROJ_TEST_CLIP_DEFAULT | V3D_PROJ_TEST_CLIP_FAR | V3D_PROJ_TEST_CLIP_ZERO | \
309 V3D_PROJ_TEST_CLIP_CONTENT)
310
311#define V3D_PROJ_TEST_CLIP_CONTENT_DEFAULT \
312 (V3D_PROJ_TEST_CLIP_CONTENT | V3D_PROJ_TEST_CLIP_NEAR | V3D_PROJ_TEST_CLIP_FAR | \
313 V3D_PROJ_TEST_CLIP_WIN)
314
315/* `view3d_snap.cc` */
316
318 wmOperator *op,
319 const float snap_target_global[3],
320 int pivot_point);
321
322/* `view3d_cursor_snap.cc` */
323
324#define USE_SNAP_DETECT_FROM_KEYMAP_HACK
333
347
349 /* Setup. */
354 float *prevpoint;
359
360 bool (*poll)(ARegion *region, void *custom_poll_data);
362};
363
370 const float prev_point[3]);
372 V3DSnapCursorState *state, const bContext *C, const ARegion *region, int x, int y);
376 const float source_loc[3],
377 const float target_loc[3],
378 const eSnapMode source_type,
379 const eSnapMode target_type,
380 const uchar source_color[4],
381 const uchar target_color[4]);
382
383/* `view3d_iterators.cc` */
384
385/* foreach iterators */
386
388 void (*func)(void *user_data,
389 const float screen_co[2],
390 int index),
391 void *user_data,
392 eV3DProjTest clip_flag);
394 const ViewContext *vc,
395 void (*func)(void *user_data, BMVert *eve, const float screen_co[2], int index),
396 void *user_data,
397 eV3DProjTest clip_flag);
399 void (*func)(void *user_data,
400 BMEdge *eed,
401 const float screen_co_a[2],
402 const float screen_co_b[2],
403 int index),
404 void *user_data,
405 eV3DProjTest clip_flag);
406
412 void (*func)(void *user_data,
413 BMEdge *eed,
414 const float screen_co_a[2],
415 const float screen_co_b[2],
416 int index),
417 void *user_data,
418 eV3DProjTest clip_flag);
419
421 const ViewContext *vc,
422 void (*func)(void *user_data, BMFace *efa, const float screen_co[2], int index),
423 void *user_data,
424 eV3DProjTest clip_flag);
426 void (*func)(void *user_data,
427 Nurb *nu,
428 BPoint *bp,
429 BezTriple *bezt,
430 int beztindex,
431 bool handle_visible,
432 const float screen_co[2]),
433 void *user_data,
434 eV3DProjTest clip_flag);
439 void (*func)(void *user_data, MetaElem *ml, const float screen_co[2]),
440 void *user_data,
441 eV3DProjTest clip_flag);
443 void (*func)(void *user_data, BPoint *bp, const float screen_co[2]),
444 void *user_data,
445 eV3DProjTest clip_flag);
450 void (*func)(void *user_data,
451 EditBone *ebone,
452 const float screen_co_a[2],
453 const float screen_co_b[2]),
454 void *user_data,
455 eV3DProjTest clip_flag);
456
461 void (*func)(void *user_data,
462 bPoseChannel *pchan,
463 const float screen_co_a[2],
464 const float screen_co_b[2]),
465 void *user_data,
466 eV3DProjTest clip_flag);
467/* *** end iterators *** */
468
469/* `view3d_project.cc` */
470
475 const float co[3],
476 const blender::float4x4 &mat);
480void ED_view3d_project_float_v3_m4(const ARegion *region,
481 const float co[3],
482 float r_co[3],
483 const float mat[4][4]);
484
485eV3DProjStatus ED_view3d_project_base(const ARegion *region, Base *base, float r_co[2]);
486
487/* *** short *** */
489 float perspmat[4][4],
490 bool is_local,
491 const float co[3],
492 short r_co[2],
494/* --- short --- */
496 const float co[3],
497 short r_co[2],
499/* object space, use ED_view3d_init_mats_rv3d before calling */
501 const float co[3],
502 short r_co[2],
504
505/* *** int *** */
507 float perspmat[4][4],
508 bool is_local,
509 const float co[3],
510 int r_co[2],
512/* --- int --- */
514 const float co[3],
515 int r_co[2],
517/* object space, use ED_view3d_init_mats_rv3d before calling */
519 const float co[3],
520 int r_co[2],
522
523/* *** float *** */
525 float perspmat[4][4],
526 bool is_local,
527 const float co[3],
528 float r_co[2],
530/* --- float --- */
532 const float co[3],
533 float r_co[2],
539 const float co[3],
540 float r_co[2],
542
543float ED_view3d_pixel_size(const RegionView3D *rv3d, const float co[3]);
544float ED_view3d_pixel_size_no_ui_scale(const RegionView3D *rv3d, const float co[3]);
545
556float ED_view3d_calc_zfac_ex(const RegionView3D *rv3d, const float co[3], bool *r_flip);
558float ED_view3d_calc_zfac(const RegionView3D *rv3d, const float co[3]);
562float ED_view3d_calc_depth_for_comparison(const RegionView3D *rv3d, const float co[3]);
563
564bool ED_view3d_clip_segment(const RegionView3D *rv3d, float ray_start[3], float ray_end[3]);
579 const ARegion *region,
580 const View3D *v3d,
581 const float mval[2],
582 float r_ray_start[3],
583 float r_ray_normal[3],
584 bool do_clip_planes);
603 const ARegion *region,
604 const View3D *v3d,
605 const float mval[2],
606 const bool do_clip_planes,
607 float r_ray_co[3],
608 float r_ray_normal[3],
609 float r_ray_start[3],
610 float r_ray_end[3]);
622void ED_view3d_win_to_ray(const ARegion *region,
623 const float mval[2],
624 float r_ray_start[3],
625 float r_ray_normal[3]);
633void ED_view3d_global_to_vector(const RegionView3D *rv3d, const float coord[3], float r_out[3]);
641void ED_view3d_win_to_3d(const View3D *v3d,
642 const ARegion *region,
643 const float depth_pt[3],
644 const float mval[2],
645 float r_out[3]);
646void ED_view3d_win_to_3d_int(const View3D *v3d,
647 const ARegion *region,
648 const float depth_pt[3],
649 const int mval[2],
650 float r_out[3]);
661 const ARegion *region,
662 const float depth_pt[3],
663 const float mval[2],
664 float r_out[3]);
665bool ED_view3d_win_to_3d_on_plane(const ARegion *region,
666 const float plane[4],
667 const float mval[2],
668 bool do_clip,
669 float r_out[3]);
678 const float plane[4],
679 const float mval[2],
680 bool do_clip,
681 const float plane_fallback[4],
682 float r_out[3]);
684 const ARegion *region, const float plane[4], const int mval[2], bool do_clip, float r_out[3]);
701void ED_view3d_win_to_delta(const ARegion *region,
702 const float xy_delta[2],
703 float zfac,
704 float r_out[3]);
715void ED_view3d_win_to_origin(const ARegion *region, const float mval[2], float r_out[3]);
729void ED_view3d_win_to_vector(const ARegion *region, const float mval[2], float r_out[3]);
744bool ED_view3d_win_to_segment_clipped(const Depsgraph *depsgraph,
745 const ARegion *region,
746 const View3D *v3d,
747 const float mval[2],
748 float r_ray_start[3],
749 float r_ray_end[3],
750 bool do_clip_planes);
753 const blender::float4x4 &obmat);
754
759void ED_view3d_project_v3(const ARegion *region, const float world[3], float r_region_co[3]);
760void ED_view3d_project_v2(const ARegion *region, const float world[3], float r_region_co[2]);
762 const ARegion *region, float regionx, float regiony, float regionz, float world[3]);
763
764/* end */
765
766void ED_view3d_dist_range_get(const View3D *v3d, float r_dist_range[2]);
770bool ED_view3d_clip_range_get(const Depsgraph *depsgraph,
771 const View3D *v3d,
772 const RegionView3D *rv3d,
773 bool use_ortho_factor,
774 float *r_clip_start,
775 float *r_clip_end);
776bool ED_view3d_viewplane_get(const Depsgraph *depsgraph,
777 const View3D *v3d,
778 const RegionView3D *rv3d,
779 int winx,
780 int winy,
781 rctf *r_viewplane,
782 float *r_clip_start,
783 float *r_clip_end,
784 float *r_pixsize);
785
789void ED_view3d_polygon_offset(const RegionView3D *rv3d, float dist);
790
791void ED_view3d_calc_camera_border(const Scene *scene,
792 const Depsgraph *depsgraph,
793 const ARegion *region,
794 const View3D *v3d,
795 const RegionView3D *rv3d,
796 bool no_shift,
797 rctf *r_viewborder);
799 Depsgraph *depsgraph,
800 const ARegion *region,
801 const View3D *v3d,
802 const RegionView3D *rv3d,
803 float r_size[2]);
805 const Scene *scene, Depsgraph *depsgraph, View3D *v3d, ARegion *region, rcti *r_rect);
806
807void ED_view3d_clipping_calc_from_boundbox(float clip[4][4], const BoundBox *bb, bool is_flip);
809 BoundBox *bb, float planes[4][4], const ARegion *region, const Object *ob, const rcti *rect);
822bool ED_view3d_clipping_clamp_minmax(const RegionView3D *rv3d, float min[3], float max[3]);
823
824void ED_view3d_clipping_local(RegionView3D *rv3d, const float mat[4][4]);
834bool ED_view3d_clipping_test(const RegionView3D *rv3d, const float co[3], bool is_local);
835
836float ED_view3d_radius_to_dist_persp(float angle, float radius);
837float ED_view3d_radius_to_dist_ortho(float lens, float radius);
863float ED_view3d_radius_to_dist(const View3D *v3d,
864 const ARegion *region,
865 const Depsgraph *depsgraph,
866 char persp,
867 bool use_aspect,
868 float radius);
869
874int ED_view3d_backbuf_sample_size_clamp(ARegion *region, float dist);
875
877
879bool ED_view3d_autodist_last_check(wmWindow *win, const wmEvent *event);
884bool ED_view3d_autodist_last_get(wmWindow *win, float r_ofs[3]);
886 const wmEvent *event,
887 const float ofs[3],
888 const bool has_depth);
891
900bool ED_view3d_autodist(ARegion *region,
901 View3D *v3d,
902 const int mval[2],
903 float mouse_worldloc[3],
904 const float fallback_depth_pt[3]);
905
910 const int mval[2],
911 float mouse_worldloc[3],
912 int margin,
913 const float *force_depth);
915 const int mval_sta[2],
916 const int mval_end[2],
917 int margin,
918 float *r_depth);
919
924 GPUTexture *tex = nullptr;
925 blender::ushort4 *data = nullptr;
926 int tex_w, tex_h;
927 rcti valid_rect;
928
929 public:
932
933 bool init(ARegion *region);
934 bool sample(const int mval[2], float r_col[3]);
935};
936
938 /* all elements in the region, ignore depth */
940 /* pick also depth sorts (only for small regions!) */
942 /* sorts and only returns visible objects (only for small regions!) */
944};
945
954
956
964
969 GPUSelectBuffer *buffer,
970 const rcti *input,
971 eV3DSelectMode select_mode,
972 eV3DSelectObjectFilter select_filter,
973 bool do_material_slot_selection);
975 GPUSelectBuffer *buffer,
976 const rcti *input,
977 eV3DSelectMode select_mode,
978 eV3DSelectObjectFilter select_filter);
980 GPUSelectBuffer *buffer,
981 const rcti *input,
982 eV3DSelectMode select_mode,
983 eV3DSelectObjectFilter select_filter,
984 uint select_id);
985
986/* `view3d_select.cc` */
987
990
1013
1015bool edge_inside_circle(const float cent[2],
1016 float radius,
1017 const float screen_co_a[2],
1018 const float screen_co_b[2]);
1019
1028bool ED_view3d_context_user_region(bContext *C, View3D **r_v3d, ARegion **r_region);
1033bool ED_view3d_area_user_region(const ScrArea *area, const View3D *v3d, ARegion **r_region);
1035
1048void ED_view3d_init_mats_rv3d(const Object *ob, RegionView3D *rv3d);
1049void ED_view3d_init_mats_rv3d_gl(const Object *ob, RegionView3D *rv3d);
1050#ifndef NDEBUG
1056#else
1057# define ED_view3d_clear_mats_rv3d(rv3d) (void)(rv3d)
1058# define ED_view3d_check_mats_rv3d(rv3d) (void)(rv3d)
1059#endif
1060
1063
1064RenderEngineType *ED_view3d_engine_type(const Scene *scene, int drawtype);
1065
1071 wmWindow *win,
1072 Depsgraph *depsgraph,
1073 Scene *scene,
1074 ARegion *region,
1075 View3D *v3d,
1076 const float viewmat[4][4],
1077 const float winmat[4][4],
1078 const rcti *rect);
1079
1083Base *ED_view3d_give_base_under_cursor(bContext *C, const int mval[2]);
1086 const int mval[2],
1087 int *r_material_slot);
1088bool ED_view3d_is_object_under_cursor(bContext *C, const int mval[2]);
1092void ED_view3d_quadview_update(ScrArea *area, ARegion *region, bool do_clip);
1096void ED_view3d_update_viewmat(const Depsgraph *depsgraph,
1097 const Scene *scene,
1098 View3D *v3d,
1099 ARegion *region,
1100 const float viewmat[4][4],
1101 const float winmat[4][4],
1102 const rcti *rect,
1103 bool offscreen);
1104bool ED_view3d_quat_from_axis_view(char view, char view_axis_roll, float r_quat[4]);
1105bool ED_view3d_quat_to_axis_view(const float quat[4],
1106 float epsilon,
1107 char *r_view,
1108 char *r_view_axis_roll);
1116 float epsilon,
1117 char *r_view,
1118 char *r_view_axis_roll);
1119
1120char ED_view3d_lock_view_from_index(int index);
1122bool ED_view3d_lock(RegionView3D *rv3d);
1123
1124void ED_view3d_datamask(const Scene *scene,
1125 ViewLayer *view_layer,
1126 const View3D *v3d,
1127 CustomData_MeshMasks *r_cddata_masks);
1131void ED_view3d_screen_datamask(const Scene *scene,
1132 ViewLayer *view_layer,
1133 const bScreen *screen,
1134 CustomData_MeshMasks *r_cddata_masks);
1135
1136bool ED_view3d_offset_lock_check(const View3D *v3d, const RegionView3D *rv3d);
1144void ED_view3d_persp_switch_from_camera(const Depsgraph *depsgraph,
1145 View3D *v3d,
1146 RegionView3D *rv3d,
1147 char persp);
1154bool ED_view3d_persp_ensure(const Depsgraph *depsgraph, View3D *v3d, ARegion *region);
1155
1156/* Camera view functions. */
1157
1162bool ED_view3d_camera_view_zoom_scale(RegionView3D *rv3d, const float scale);
1168bool ED_view3d_camera_view_pan(ARegion *region, const float event_ofs[2]);
1169
1170/* Camera lock functions */
1171
1175bool ED_view3d_camera_lock_check(const View3D *v3d, const RegionView3D *rv3d);
1182void ED_view3d_camera_lock_init_ex(const Depsgraph *depsgraph,
1183 View3D *v3d,
1184 RegionView3D *rv3d,
1185 bool calc_dist);
1186void ED_view3d_camera_lock_init(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d);
1194bool ED_view3d_camera_lock_sync(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d);
1195
1197 const Scene *scene, ID *id_key, bContext *C, bool do_rotate, bool do_translate);
1205 View3D *v3d, RegionView3D *rv3d, bContext *C, bool do_rotate, bool do_translate);
1206
1207void ED_view3d_lock_clear(View3D *v3d);
1208
1213bool ED_view3d_camera_lock_undo_test(const View3D *v3d, const RegionView3D *rv3d, bContext *C);
1214
1221bool ED_view3d_camera_lock_undo_push(const char *str,
1222 const View3D *v3d,
1223 const RegionView3D *rv3d,
1224 bContext *C);
1225
1233 const View3D *v3d,
1234 const RegionView3D *rv3d,
1235 bContext *C);
1236
1237#define VIEW3D_MARGIN 1.4f
1238#define VIEW3D_DIST_FALLBACK 1.0f
1239
1252float ED_view3d_offset_distance(const float mat[4][4], const float ofs[3], float fallback_dist);
1258void ED_view3d_distance_set(RegionView3D *rv3d, float dist);
1267 const float dist_co[3],
1268 float dist_min);
1269
1273float ED_scene_grid_scale(const Scene *scene, const char **r_grid_unit);
1274float ED_view3d_grid_scale(const Scene *scene, const View3D *v3d, const char **r_grid_unit);
1275void ED_view3d_grid_steps(const Scene *scene,
1276 const View3D *v3d,
1277 const RegionView3D *rv3d,
1278 float r_grid_steps[8]);
1284float ED_view3d_grid_view_scale(const Scene *scene,
1285 const View3D *v3d,
1286 const ARegion *region,
1287 const char **r_grid_unit);
1288
1293void ED_scene_draw_fps(const Scene *scene, int xoffset, int *yoffset);
1294
1295/* Render */
1296
1298void ED_view3d_shade_update(Main *bmain, View3D *v3d, ScrArea *area);
1299
1300#define SHADING_XRAY_ALPHA(shading) \
1301 (((shading).type == OB_WIRE) ? (shading).xray_alpha_wire : (shading).xray_alpha)
1302#define SHADING_XRAY_FLAG(shading) \
1303 (((shading).type == OB_WIRE) ? V3D_SHADING_XRAY_WIREFRAME : V3D_SHADING_XRAY)
1304#define SHADING_XRAY_FLAG_ENABLED(shading) (((shading).flag & SHADING_XRAY_FLAG(shading)) != 0)
1305#define SHADING_XRAY_ENABLED(shading) \
1306 (SHADING_XRAY_FLAG_ENABLED(shading) && (SHADING_XRAY_ALPHA(shading) < 1.0f))
1307#define SHADING_XRAY_ACTIVE(shading) \
1308 (SHADING_XRAY_ENABLED(shading) && ((shading).type < OB_MATERIAL))
1309
1310#define XRAY_ALPHA(v3d) SHADING_XRAY_ALPHA((v3d)->shading)
1311#define XRAY_FLAG(v3d) SHADING_XRAY_FLAG((v3d)->shading)
1312#define XRAY_FLAG_ENABLED(v3d) SHADING_XRAY_FLAG_ENABLED((v3d)->shading)
1320#define XRAY_ENABLED(v3d) SHADING_XRAY_ENABLED((v3d)->shading)
1321#define XRAY_ACTIVE(v3d) SHADING_XRAY_ACTIVE((v3d)->shading)
1322
1323#define OVERLAY_RETOPOLOGY_ENABLED(overlay) \
1324 (((overlay).edit_flag & V3D_OVERLAY_EDIT_RETOPOLOGY) != 0)
1325#ifdef __APPLE__
1326/* Apple silicon tile depth test requires a higher value to reduce drawing artifacts. */
1327# define OVERLAY_RETOPOLOGY_MIN_OFFSET 0.0015f
1328#else
1329# define OVERLAY_RETOPOLOGY_MIN_OFFSET FLT_EPSILON
1330#endif
1331
1332#define OVERLAY_RETOPOLOGY_OFFSET(overlay) \
1333 (OVERLAY_RETOPOLOGY_ENABLED(overlay) ? \
1334 max_ff((overlay).retopology_offset, OVERLAY_RETOPOLOGY_MIN_OFFSET) : \
1335 0.0f)
1336
1337#define RETOPOLOGY_ENABLED(v3d) (OVERLAY_RETOPOLOGY_ENABLED((v3d)->overlay))
1338#define RETOPOLOGY_OFFSET(v3d) (OVERLAY_RETOPOLOGY_OFFSET((v3d)->overlay))
1339
1340/* `view3d_gizmo_preselect_type.cc` */
1341
1343 const wmGizmo *gz,
1344 Base **r_base,
1345 BMElem **r_ele);
1347
1348/* `space_view3d.cc` */
1349
1351 ARegion *region,
1352 const char *category_override);
1353
1354/* `view3d_view.cc` */
1355
1368bool ED_localview_exit_if_empty(const Depsgraph *depsgraph,
1369 Scene *scene,
1370 ViewLayer *view_layer,
1371 wmWindowManager *wm,
1372 wmWindow *win,
1373 View3D *v3d,
1374 ScrArea *area,
1375 bool frame_selected = true,
1376 int smooth_viewtx = 0);
1381bool ED_view3d_local_collections_set(const Main *bmain, View3D *v3d);
1382void ED_view3d_local_collections_reset(const bContext *C, bool reset_all);
1383
1384#ifdef WITH_XR_OPENXR
1385void ED_view3d_xr_mirror_update(const ScrArea *area, const View3D *v3d, bool enable);
1386void ED_view3d_xr_shading_update(wmWindowManager *wm, const View3D *v3d, const Scene *scene);
1387bool ED_view3d_is_region_xr_mirror_active(const wmWindowManager *wm,
1388 const View3D *v3d,
1389 const ARegion *region);
1390#endif
unsigned char uchar
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
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 view3d_opengl_select_cache_begin()
void ED_view3d_cursor_snap_data_update(V3DSnapCursorState *state, const bContext *C, const ARegion *region, int x, int y)
void ED_view3d_check_mats_rv3d(RegionView3D *rv3d)
blender::float2 ED_view3d_project_float_v2_m4(const ARegion *region, const float co[3], const blender::float4x4 &mat)
V3DSnapCursorState * ED_view3d_cursor_snap_state_create()
bool ED_view3d_win_to_ray_clipped(Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_start[3], float r_ray_normal[3], bool do_clip_planes)
float ED_view3d_select_dist_px()
void ED_view3d_distance_set(RegionView3D *rv3d, float dist)
void ED_view3d_project_float_v3_m4(const ARegion *region, const float co[3], float r_co[3], const float mat[4][4])
void ED_view3d_local_collections_reset(const bContext *C, bool reset_all)
bool ED_view3d_depth_read_cached(const ViewDepths *vd, const int mval[2], int margin, float *r_depth)
bool ED_view3d_camera_to_view_selected_with_set_clipping(Main *bmain, Depsgraph *depsgraph, const Scene *scene, Object *camera_ob)
void ED_view3d_win_to_ray(const ARegion *region, const float mval[2], float r_ray_start[3], float r_ray_normal[3])
void ED_view3d_datamask(const Scene *scene, ViewLayer *view_layer, const View3D *v3d, CustomData_MeshMasks *r_cddata_masks)
RV3DMatrixStore * ED_view3d_mats_rv3d_backup(RegionView3D *rv3d)
float ED_view3d_grid_scale(const Scene *scene, const View3D *v3d, const char **r_grid_unit)
void ED_view3d_cursor3d_position_rotation(bContext *C, const int mval[2], bool use_depth, enum eV3DCursorOrient orientation, float r_cursor_co[3], float r_cursor_quat[4])
void ED_view3d_global_to_vector(const RegionView3D *rv3d, const float coord[3], float r_out[3])
void view3d_region_operator_needs_opengl(wmWindow *win, ARegion *region)
void armature_foreachScreenBone(const ViewContext *vc, void(*func)(void *user_data, EditBone *ebone, const float screen_co_a[2], const float screen_co_b[2]), void *user_data, eV3DProjTest clip_flag)
void ED_view3d_cursor_snap_state_default_set(V3DSnapCursorState *state)
void ED_view3d_clipping_calc_from_boundbox(float clip[4][4], const BoundBox *bb, bool is_flip)
RegionView3D * ED_view3d_context_rv3d(bContext *C)
float ED_view3d_grid_view_scale(const Scene *scene, const View3D *v3d, const ARegion *region, const char **r_grid_unit)
void mesh_foreachScreenVert(const ViewContext *vc, void(*func)(void *user_data, BMVert *eve, const float screen_co[2], int index), void *user_data, eV3DProjTest clip_flag)
char ED_view3d_axis_view_opposite(char view)
void ED_view3d_gizmo_mesh_preselect_get_active(const bContext *C, const wmGizmo *gz, Base **r_base, BMElem **r_ele)
bool ED_view3d_camera_lock_sync(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d)
bool ED_view3d_depth_read_cached_seg(const ViewDepths *vd, const int mval_sta[2], const int mval_end[2], int margin, float *r_depth)
void ED_view3d_clipping_calc(BoundBox *bb, float planes[4][4], const ARegion *region, const Object *ob, const rcti *rect)
eV3DProjTest
Definition ED_view3d.hh:274
@ V3D_PROJ_TEST_CLIP_FAR
Definition ED_view3d.hh:279
@ V3D_PROJ_TEST_CLIP_NEAR
Definition ED_view3d.hh:278
@ V3D_PROJ_TEST_CLIP_ZERO
Definition ED_view3d.hh:280
@ V3D_PROJ_TEST_CLIP_CONTENT
Definition ED_view3d.hh:301
@ V3D_PROJ_TEST_NOP
Definition ED_view3d.hh:275
@ V3D_PROJ_TEST_CLIP_WIN
Definition ED_view3d.hh:277
@ V3D_PROJ_TEST_CLIP_BB
Definition ED_view3d.hh:276
eV3DProjStatus ED_view3d_project_float_object(const ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
void ED_view3d_depth_override(Depsgraph *depsgraph, ARegion *region, View3D *v3d, Object *obact, eV3DDepthOverrideMode mode, bool use_overlay, ViewDepths **r_depths)
eV3DProjStatus ED_view3d_project_int_object(const ARegion *region, const float co[3], int r_co[2], eV3DProjTest flag)
bool ED_view3d_quat_to_axis_view(const float quat[4], float epsilon, char *r_view, char *r_view_axis_roll)
void ED_view3d_clear_mats_rv3d(RegionView3D *rv3d)
bool ED_view3d_distance_set_from_location(RegionView3D *rv3d, const float dist_co[3], float dist_min)
eV3DProjStatus ED_view3d_project_int_ex(const ARegion *region, float perspmat[4][4], bool is_local, const float co[3], int r_co[2], eV3DProjTest flag)
void ED_view3d_win_to_3d_int(const View3D *v3d, const ARegion *region, const float depth_pt[3], const int mval[2], float r_out[3])
void ED_view3d_autodist_last_clear(wmWindow *win)
V3DSnapCursorState * ED_view3d_cursor_snap_state_active_get()
float ED_view3d_pixel_size_no_ui_scale(const RegionView3D *rv3d, const float co[3])
void ED_view3d_win_to_3d(const View3D *v3d, const ARegion *region, const float depth_pt[3], const float mval[2], float r_out[3])
void ED_view3d_screen_datamask(const Scene *scene, ViewLayer *view_layer, const bScreen *screen, CustomData_MeshMasks *r_cddata_masks)
void ED_view3d_gizmo_mesh_preselect_clear(wmGizmo *gz)
void nurbs_foreachScreenVert(const ViewContext *vc, void(*func)(void *user_data, Nurb *nu, BPoint *bp, BezTriple *bezt, int beztindex, bool handle_visible, const float screen_co[2]), void *user_data, eV3DProjTest clip_flag)
void ED_view3d_to_object(const Depsgraph *depsgraph, Object *ob, const float ofs[3], const float quat[4], float dist)
bool ED_view3d_context_user_region(bContext *C, View3D **r_v3d, ARegion **r_region)
bool ED_view3d_persp_ensure(const Depsgraph *depsgraph, View3D *v3d, ARegion *region)
bool ED_view3d_offset_lock_check(const View3D *v3d, const RegionView3D *rv3d)
bool ED_view3d_autodist_last_check(wmWindow *win, const wmEvent *event)
void ED_view3d_persp_switch_from_camera(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d, char persp)
bool ED_view3d_lock(RegionView3D *rv3d)
void ED_view3d_init_mats_rv3d(const Object *ob, RegionView3D *rv3d)
char ED_view3d_lock_view_from_index(int index)
void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float r_color[3])
void ED_view3d_to_m4(float mat[4][4], const float ofs[3], const float quat[4], float dist)
float ED_view3d_calc_depth_for_comparison(const RegionView3D *rv3d, const float co[3])
void ED_view3d_stop_render_preview(wmWindowManager *wm, ARegion *region)
void ED_view3d_lastview_store(RegionView3D *rv3d)
float ED_view3d_pixel_size(const RegionView3D *rv3d, const float co[3])
eV3DProjStatus
Definition ED_view3d.hh:251
@ V3D_PROJ_RET_CLIP_WIN
Definition ED_view3d.hh:267
@ V3D_PROJ_RET_CLIP_BB
Definition ED_view3d.hh:265
@ V3D_PROJ_RET_CLIP_FAR
Definition ED_view3d.hh:256
@ V3D_PROJ_RET_CLIP_ZERO
Definition ED_view3d.hh:263
@ V3D_PROJ_RET_CLIP_NEAR
Definition ED_view3d.hh:254
@ V3D_PROJ_RET_OVERFLOW
Definition ED_view3d.hh:269
@ V3D_PROJ_RET_OK
Definition ED_view3d.hh:252
void ED_view3d_cursor_snap_state_prevpoint_set(V3DSnapCursorState *state, const float prev_point[3])
bool ED_view3d_clip_segment(const RegionView3D *rv3d, float ray_start[3], float ray_end[3])
void mesh_foreachScreenEdge(const ViewContext *vc, void(*func)(void *user_data, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index), void *user_data, eV3DProjTest clip_flag)
void ED_view3d_autodist_last_set(wmWindow *win, const wmEvent *event, const float ofs[3], const bool has_depth)
void ED_view3d_from_object(const Object *ob, float ofs[3], float quat[4], const float *dist, float *lens)
Object * ED_view3d_give_material_slot_under_cursor(bContext *C, const int mval[2], int *r_material_slot)
bool ED_view3d_camera_view_zoom_scale(RegionView3D *rv3d, const float scale)
void ED_view3d_project_v2(const ARegion *region, const float world[3], float r_region_co[2])
bool ED_view3d_autodist(ARegion *region, View3D *v3d, const int mval[2], float mouse_worldloc[3], const float fallback_depth_pt[3])
eV3DSnapCursor
Definition ED_view3d.hh:325
@ V3D_SNAPCURSOR_SNAP_EDIT_GEOM_FINAL
Definition ED_view3d.hh:329
@ V3D_SNAPCURSOR_OCCLUSION_ALWAYS_FALSE
Definition ED_view3d.hh:328
@ V3D_SNAPCURSOR_TOGGLE_ALWAYS_TRUE
Definition ED_view3d.hh:326
@ V3D_SNAPCURSOR_OCCLUSION_ALWAYS_TRUE
Definition ED_view3d.hh:327
@ V3D_SNAPCURSOR_SNAP_EDIT_GEOM_CAGE
Definition ED_view3d.hh:330
Object * ED_view3d_give_object_under_cursor(bContext *C, const int mval[2])
bool ED_view3d_has_depth_buffer_updated(const Depsgraph *depsgraph, const View3D *v3d)
float ED_view3d_radius_to_dist_ortho(float lens, float radius)
bool ED_view3d_win_to_3d_on_plane_int(const ARegion *region, const float plane[4], const int mval[2], bool do_clip, float r_out[3])
void ED_view3d_select_id_validate(const ViewContext *vc)
bool ED_view3d_quat_from_axis_view(char view, char view_axis_roll, float r_quat[4])
float ED_view3d_offset_distance(const float mat[4][4], const float ofs[3], float fallback_dist)
void ED_view3d_from_m4(const float mat[4][4], float ofs[3], float quat[4], const float *dist)
ViewContext ED_view3d_viewcontext_init(bContext *C, Depsgraph *depsgraph)
void lattice_foreachScreenVert(const ViewContext *vc, void(*func)(void *user_data, BPoint *bp, const float screen_co[2]), void *user_data, eV3DProjTest clip_flag)
int view3d_opengl_select(const ViewContext *vc, GPUSelectBuffer *buffer, const rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter)
void ED_view3d_dist_range_get(const View3D *v3d, float r_dist_range[2])
bool ED_view3d_autodist_last_get(wmWindow *win, float r_ofs[3])
eV3DProjStatus ED_view3d_project_short_global(const ARegion *region, const float co[3], short r_co[2], eV3DProjTest flag)
bool ED_view3d_snap_selected_to_location(bContext *C, wmOperator *op, const float snap_target_global[3], int pivot_point)
void ED_view3d_win_to_delta(const ARegion *region, const float xy_delta[2], float zfac, float r_out[3])
void ED_view3d_navigation_free(bContext *C, ViewOpsData *vod)
float ED_view3d_radius_to_dist_persp(float angle, float radius)
bool ED_view3d_quat_to_axis_view_and_reset_quat(float quat[4], float epsilon, char *r_view, char *r_view_axis_roll)
eV3DProjStatus ED_view3d_project_short_object(const ARegion *region, const float co[3], short r_co[2], eV3DProjTest flag)
void ED_view3d_mats_rv3d_restore(RegionView3D *rv3d, RV3DMatrixStore *rv3dmat)
bool ED_localview_exit_if_empty(const Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, wmWindowManager *wm, wmWindow *win, View3D *v3d, ScrArea *area, bool frame_selected=true, int smooth_viewtx=0)
void ED_view3d_clipping_local(RegionView3D *rv3d, const float mat[4][4])
void ED_view3d_init_mats_rv3d_gl(const Object *ob, RegionView3D *rv3d)
int ED_view3d_backbuf_sample_size_clamp(ARegion *region, float dist)
float ED_view3d_radius_to_dist(const View3D *v3d, const ARegion *region, const Depsgraph *depsgraph, char persp, bool use_aspect, float radius)
blender::float4x4 ED_view3d_ob_project_mat_get(const RegionView3D *rv3d, const Object *ob)
bool ED_view3d_depth_read_cached_normal(const ARegion *region, const ViewDepths *depths, const int mval[2], float r_normal[3])
bool ED_view3d_clipping_clamp_minmax(const RegionView3D *rv3d, float min[3], float max[3])
bool ED_view3d_unproject_v3(const ARegion *region, float regionx, float regiony, float regionz, float world[3])
bool ED_view3d_win_to_segment_clipped(const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], float r_ray_start[3], float r_ray_end[3], bool do_clip_planes)
bool ED_view3d_context_activate(bContext *C)
void ED_view3d_lock_clear(View3D *v3d)
void pose_foreachScreenBone(const ViewContext *vc, void(*func)(void *user_data, bPoseChannel *pchan, const float screen_co_a[2], const float screen_co_b[2]), void *user_data, eV3DProjTest clip_flag)
bool ED_view3d_is_object_under_cursor(bContext *C, const int mval[2])
void view3d_operator_needs_opengl(const bContext *C)
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)
void ED_view3d_win_to_3d_with_shift(const View3D *v3d, const ARegion *region, const float depth_pt[3], const float mval[2], float r_out[3])
eV3DSelectObjectFilter ED_view3d_select_filter_from_mode(const Scene *scene, const Object *obact)
float ED_view3d_calc_zfac_ex(const RegionView3D *rv3d, const float co[3], bool *r_flip)
eV3DProjStatus ED_view3d_project_short_ex(const ARegion *region, float perspmat[4][4], bool is_local, const float co[3], short r_co[2], eV3DProjTest flag)
bool ED_view3d_clip_range_get(const Depsgraph *depsgraph, const View3D *v3d, const RegionView3D *rv3d, bool use_ortho_factor, float *r_clip_start, float *r_clip_end)
void ED_view3d_win_to_origin(const ARegion *region, const float mval[2], float r_out[3])
void mesh_foreachScreenFace(const ViewContext *vc, void(*func)(void *user_data, BMFace *efa, const float screen_co[2], int index), void *user_data, eV3DProjTest clip_flag)
void ED_view3d_camera_lock_init_ex(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d, bool calc_dist)
void ED_view3d_cursor3d_update(bContext *C, const int mval[2], bool use_depth, enum eV3DCursorOrient orientation)
bool ED_view3d_camera_view_pan(ARegion *region, const float event_ofs[2])
bool ED_view3d_camera_lock_undo_push(const char *str, const View3D *v3d, const RegionView3D *rv3d, bContext *C)
float ED_view3d_calc_zfac(const RegionView3D *rv3d, const float co[3])
void ED_view3d_depths_free(ViewDepths *depths)
eV3DDepthOverrideMode
Definition ED_view3d.hh:184
@ V3D_DEPTH_ALL
Definition ED_view3d.hh:186
@ V3D_DEPTH_SELECTED_ONLY
Definition ED_view3d.hh:194
@ V3D_DEPTH_NO_GPENCIL
Definition ED_view3d.hh:188
@ V3D_DEPTH_GPENCIL_ONLY
Definition ED_view3d.hh:190
@ V3D_DEPTH_OBJECT_ONLY
Definition ED_view3d.hh:192
eV3DCursorOrient
Definition ED_view3d.hh:90
@ V3D_CURSOR_ORIENT_XFORM
Definition ED_view3d.hh:93
@ V3D_CURSOR_ORIENT_GEOM
Definition ED_view3d.hh:94
@ V3D_CURSOR_ORIENT_VIEW
Definition ED_view3d.hh:92
@ V3D_CURSOR_ORIENT_NONE
Definition ED_view3d.hh:91
void ED_view3d_cursor_snap_state_free(V3DSnapCursorState *state)
void mball_foreachScreenElem(const ViewContext *vc, void(*func)(void *user_data, MetaElem *ml, const float screen_co[2]), void *user_data, eV3DProjTest clip_flag)
bool ED_view3d_navigation_do(bContext *C, ViewOpsData *vod, const wmEvent *event, const float depth_loc_override[3])
bool ED_view3d_autodist_simple(ARegion *region, const int mval[2], float mouse_worldloc[3], int margin, const float *force_depth)
void ED_view3d_cursor_snap_state_active_set(V3DSnapCursorState *state)
SnapObjectContext * ED_view3d_cursor_snap_context_ensure(Scene *scene)
ViewOpsData * ED_view3d_navigation_init(bContext *C, const wmKeyMapItem *kmi_merge)
bool ED_view3d_win_to_ray_clipped_ex(Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const float mval[2], const bool do_clip_planes, float r_ray_co[3], float r_ray_normal[3], float r_ray_start[3], float r_ray_end[3])
bool ED_view3d_camera_autokey(const Scene *scene, ID *id_key, bContext *C, bool do_rotate, bool do_translate)
void ED_view3d_cursor_snap_draw_util(RegionView3D *rv3d, const float source_loc[3], const float target_loc[3], const eSnapMode source_type, const eSnapMode target_type, const uchar source_color[4], const uchar target_color[4])
bool ED_view3d_viewplane_get(const Depsgraph *depsgraph, const View3D *v3d, const RegionView3D *rv3d, int winx, int winy, rctf *r_viewplane, float *r_clip_start, float *r_clip_end, float *r_pixsize)
void ED_view3d_project_v3(const ARegion *region, const float world[3], float r_region_co[3])
eV3DProjStatus ED_view3d_project_base(const ARegion *region, Base *base, float r_co[2])
eV3DSelectMode
Definition ED_view3d.hh:937
@ VIEW3D_SELECT_PICK_ALL
Definition ED_view3d.hh:941
@ VIEW3D_SELECT_PICK_NEAREST
Definition ED_view3d.hh:943
@ VIEW3D_SELECT_ALL
Definition ED_view3d.hh:939
bool ED_view3d_camera_to_view_selected(Main *bmain, Depsgraph *depsgraph, const Scene *scene, Object *camera_ob)
bool ED_view3d_win_to_3d_on_plane(const ARegion *region, const float plane[4], const float mval[2], bool do_clip, float r_out[3])
int view3d_opengl_select_with_id_filter(const ViewContext *vc, GPUSelectBuffer *buffer, const rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter, uint select_id)
Base * ED_view3d_give_base_under_cursor(bContext *C, const int mval[2])
int view3d_opengl_select_ex(const ViewContext *vc, GPUSelectBuffer *buffer, const rcti *input, eV3DSelectMode select_mode, eV3DSelectObjectFilter select_filter, bool do_material_slot_selection)
bool ED_view3d_local_collections_set(const Main *bmain, View3D *v3d)
eV3DProjStatus ED_view3d_project_float_ex(const ARegion *region, float perspmat[4][4], bool is_local, const float co[3], float r_co[2], eV3DProjTest flag)
bool ED_view3d_camera_lock_check(const View3D *v3d, const RegionView3D *rv3d)
void ED_view3d_calc_camera_border(const Scene *scene, const Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const RegionView3D *rv3d, bool no_shift, rctf *r_viewborder)
void ED_view3d_polygon_offset(const RegionView3D *rv3d, float dist)
void ED_view3d_text_colors_get(const Scene *scene, const View3D *v3d, float r_text_color[4], float r_shadow_color[4])
bool ED_view3d_clipping_test(const RegionView3D *rv3d, const float co[3], bool is_local)
blender::float4x4 ED_view3d_ob_project_mat_get_from_obmat(const RegionView3D *rv3d, const blender::float4x4 &obmat)
Camera * ED_view3d_camera_data_get(View3D *v3d, RegionView3D *rv3d)
void ED_view3d_win_to_vector(const ARegion *region, const float mval[2], float r_out[3])
bool edge_inside_circle(const float cent[2], float radius, const float screen_co_a[2], const float screen_co_b[2])
void ED_view3d_grid_steps(const Scene *scene, const View3D *v3d, const RegionView3D *rv3d, float r_grid_steps[8])
RenderEngineType * ED_view3d_engine_type(const Scene *scene, int drawtype)
void ED_view3d_camera_lock_init(const Depsgraph *depsgraph, View3D *v3d, RegionView3D *rv3d)
bool ED_view3d_win_to_3d_on_plane_with_fallback(const ARegion *region, const float plane[4], const float mval[2], bool do_clip, const float plane_fallback[4], float r_out[3])
bool ED_view3d_calc_render_border(const Scene *scene, Depsgraph *depsgraph, View3D *v3d, ARegion *region, rcti *r_rect)
void ED_view3d_viewcontext_init_object(ViewContext *vc, Object *obact)
void view3d_opengl_select_cache_end()
void ED_view3d_quadview_update(ScrArea *area, ARegion *region, bool do_clip)
bool ED_view3d_camera_lock_autokey(View3D *v3d, RegionView3D *rv3d, bContext *C, bool do_rotate, bool do_translate)
void ED_view3d_buttons_region_layout_ex(const bContext *C, ARegion *region, const char *category_override)
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)
void mesh_foreachScreenEdge_clip_bb_segment(const ViewContext *vc, void(*func)(void *user_data, BMEdge *eed, const float screen_co_a[2], const float screen_co_b[2], int index), void *user_data, eV3DProjTest clip_flag)
V3DSnapCursorData * ED_view3d_cursor_snap_data_get()
eV3DSelectObjectFilter
Definition ED_view3d.hh:946
@ VIEW3D_SELECT_FILTER_NOP
Definition ED_view3d.hh:948
@ VIEW3D_SELECT_FILTER_OBJECT_MODE_LOCK
Definition ED_view3d.hh:950
@ VIEW3D_SELECT_FILTER_WPAINT_POSE_MODE_LOCK
Definition ED_view3d.hh:952
bool ED_view3d_camera_lock_undo_test(const View3D *v3d, const RegionView3D *rv3d, bContext *C)
void ED_view3d_cursor3d_position(bContext *C, const int mval[2], bool use_depth, float r_cursor_co[3])
bool ED_view3d_depth_unproject_v3(const ARegion *region, const int mval[2], double depth, float r_location_world[3])
eV3DProjStatus ED_view3d_project_int_global(const ARegion *region, const float co[3], int r_co[2], eV3DProjTest flag)
void meshobject_foreachScreenVert(const ViewContext *vc, void(*func)(void *user_data, const float screen_co[2], int index), void *user_data, eV3DProjTest clip_flag)
void ED_view3d_shade_update(Main *bmain, View3D *v3d, ScrArea *area)
bool ED_operator_rv3d_user_region_poll(bContext *C)
bool ED_view3d_area_user_region(const ScrArea *area, const View3D *v3d, ARegion **r_region)
void ED_scene_draw_fps(const Scene *scene, int xoffset, int *yoffset)
float ED_scene_grid_scale(const Scene *scene, const char **r_grid_unit)
bool ED_view3d_has_workbench_in_texture_color(const Scene *scene, const Object *ob, const View3D *v3d)
bool ED_view3d_camera_lock_undo_grouped_push(const char *str, const View3D *v3d, const RegionView3D *rv3d, bContext *C)
eV3DProjStatus ED_view3d_project_float_global(const ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
static AppView * view
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Definition IK_Math.h:125
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between world
#define C
Definition RandGen.cpp:29
BPy_StructRNA * depsgraph
void init()
ViewportColorSampleSession()=default
#define str(s)
static ulong state[N]
MatBase< float, 4, 4 > float4x4
VecBase< float, 2 > float2
blender::VecBase< uint16_t, 4 > ushort4
#define min(a, b)
Definition sort.c:32
Definition DNA_ID.h:413
eSnapMode type_target
Definition ED_view3d.hh:336
eSnapMode type_source
Definition ED_view3d.hh:335
float plane_omat[3][3]
Definition ED_view3d.hh:341
float obmat[4][4]
Definition ED_view3d.hh:339
eV3DSnapCursor flag
Definition ED_view3d.hh:350
bool(* poll)(ARegion *region, void *custom_poll_data)
Definition ED_view3d.hh:360
float box_dimensions[3]
Definition ED_view3d.hh:355
uchar source_color[4]
Definition ED_view3d.hh:351
uchar target_color[4]
Definition ED_view3d.hh:352
RegionView3D * rv3d
Definition ED_view3d.hh:76
ARegion * region
Definition ED_view3d.hh:73
int mval[2]
Definition ED_view3d.hh:78
Scene * scene
Definition ED_view3d.hh:69
Main * bmain
Definition ED_view3d.hh:63
BMEditMesh * em
Definition ED_view3d.hh:77
wmWindow * win
Definition ED_view3d.hh:75
ViewLayer * view_layer
Definition ED_view3d.hh:70
bContext * C
Definition ED_view3d.hh:62
View3D * v3d
Definition ED_view3d.hh:74
Object * obact
Definition ED_view3d.hh:71
Object * obedit
Definition ED_view3d.hh:72
Depsgraph * depsgraph
Definition ED_view3d.hh:68
unsigned short w
Definition ED_view3d.hh:82
float * depths
Definition ED_view3d.hh:85
double depth_range[2]
Definition ED_view3d.hh:86
unsigned short h
Definition ED_view3d.hh:82
float max
uint8_t flag
Definition wm_window.cc:138