Blender V4.3
overlay_private.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2019 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BKE_global.hh"
12
13#include "BLI_math_matrix.hh"
14
15#include "DRW_gpu_wrapper.hh"
16#include "DRW_render.hh"
17
18#include "UI_resources.hh"
19
20#include "draw_handle.hh"
21
23
24#ifdef __APPLE__
25# define USE_GEOM_SHADER_WORKAROUND 1
26#else
27# define USE_GEOM_SHADER_WORKAROUND 0
28#endif
29
30/* Needed for eSpaceImage_UVDT_Stretch and eMaskOverlayMode */
31#include "DNA_mask_types.h"
32#include "DNA_space_types.h"
33/* Forward declarations */
34
36 GPUFrameBuffer *overlay_default_fb;
37 GPUFrameBuffer *overlay_line_fb;
38 GPUFrameBuffer *overlay_color_only_fb;
39 GPUFrameBuffer *overlay_in_front_fb;
40 GPUFrameBuffer *overlay_line_in_front_fb;
41 GPUFrameBuffer *outlines_prepass_fb;
42 GPUFrameBuffer *outlines_resolve_fb;
43};
44
46 GPUTexture *temp_depth_tx;
47 GPUTexture *dummy_depth_tx;
48 GPUTexture *outlines_id_tx;
49 GPUTexture *overlay_color_tx;
50 GPUTexture *overlay_line_tx;
51};
52
53#define NOT_IN_FRONT 0
54#define IN_FRONT 1
55
63
136};
137
138/* Data used by GLSL shader. */
148
155
161
174
178
186
188
198
200
204
206
208
211};
212
240
245
313 DRWShadingGroup *wires_grp[2][2]; /* With and without coloring. */
314 DRWShadingGroup *wires_all_grp[2][2]; /* With and without coloring. */
315 DRWShadingGroup *wires_hair_grp[2][2]; /* With and without coloring. */
317
327
330
333
335
346 short v3d_flag; /* TODO: move to #View3DOverlay. */
347 short v3d_gridflag; /* TODO: move to #View3DOverlay. */
348 int cfra;
352
353 struct {
354 float grid_axes[3];
355 float zplane_axes[3];
358 struct {
363 struct {
367 struct {
368 float cursor_color[4];
371 struct {
377 int flag;
379 struct {
381 bool do_zbufclip;
383 struct {
387 struct {
395
397 bool do_faces;
399
401
403
405 float image_aspect[2];
406
407 /* edge drawing */
411
412 /* stretching overlay */
413 float uv_aspect[2];
417
418 /* mask overlay */
421 GPUTexture *mask_texture;
423 struct {
429 struct {
433 struct {
434 DRWCallBuffer *handle[2];
436 struct {
437 double time;
440}; /* Transient data */
441
445
455
465
467 /* Keep sync with bone instance vertex format (OVERLAY_InstanceFormats) */
468 union {
469 float4x4 mat44;
470 float mat[4][4];
471 struct {
474 float _pad2[3], color_a;
475 float _pad3[3], color_b;
476 };
477 struct {
478 float _pad00[3], amin_a;
479 float _pad01[3], amin_b;
480 float _pad02[3], amax_a;
481 float _pad03[3], amax_b;
482 };
483 };
484
485 BoneInstanceData() = default;
486
487 /* Constructor used by metaball overlays and expected to be used for drawing
488 * metaball edit circles with armature wire shader that produces wide-lines. */
489 BoneInstanceData(const float4x4 &ob_mat,
490 const float3 &pos,
491 const float radius,
492 const float color[4])
493
494 {
495 mat44[0] = ob_mat[0] * radius;
496 mat44[1] = ob_mat[1] * radius;
497 mat44[2] = ob_mat[2] * radius;
498 mat44[3] = float4(blender::math::transform_point(ob_mat, pos));
499 set_color(color);
500 }
501
502 BoneInstanceData(const float4x4 &bone_mat, const float4 &bone_color, const float4 &hint_color)
503 : mat44(bone_mat)
504 {
505 set_color(bone_color);
506 set_hint_color(hint_color);
507 };
508
509 BoneInstanceData(const float4x4 &bone_mat, const float4 &bone_color) : mat44(bone_mat)
510 {
511 set_color(bone_color);
512 };
513
514 void set_color(const float4 &bone_color)
515 {
516 /* Encoded color into 2 floats to be able to use the matrix to color the custom bones. */
517 color_a = encode_2f_to_float(bone_color[0], bone_color[1]);
518 color_b = encode_2f_to_float(bone_color[2], bone_color[3]);
519 }
520
521 void set_hint_color(const float4 &hint_color)
522 {
523 /* Encoded color into 2 floats to be able to use the matrix to color the custom bones. */
524 color_hint_a = encode_2f_to_float(hint_color[0], hint_color[1]);
525 color_hint_b = encode_2f_to_float(hint_color[2], hint_color[3]);
526 }
527
528 private:
529 /* Encode 2 units float with byte precision into a float. */
530 float encode_2f_to_float(float a, float b) const
531 {
532 /* NOTE: `b` can go up to 2. Needed to encode wire size. */
533 return float(int(clamp_f(a, 0.0f, 1.0f) * 255) | (int(clamp_f(b, 0.0f, 2.0f) * 255) << 8));
534 }
535};
536
551
552/* Pack data into the last row of the 4x4 matrix. It will be decoded by the vertex shader. */
554 float rmat[4][4], const float mat[4][4], float a, float b, float c, float d)
555{
556 copy_m4_m4(rmat, mat);
557 rmat[0][3] = a;
558 rmat[1][3] = b;
559 rmat[2][3] = c;
560 rmat[3][3] = d;
561}
562
563BLI_INLINE void pack_v4_in_mat4(float rmat[4][4], const float mat[4][4], const float v[4])
564{
565 pack_data_in_mat4(rmat, mat, v[0], v[1], v[2], v[3]);
566}
567
568BLI_INLINE void pack_fl_in_mat4(float rmat[4][4], const float mat[4][4], float a)
569{
570 copy_m4_m4(rmat, mat);
571 rmat[3][3] = a;
572}
573
582
586bool OVERLAY_armature_is_pose_mode(Object *ob, const DRWContextState *draw_ctx);
595void OVERLAY_pose_draw(OVERLAY_Data *vedata);
596
599
600void OVERLAY_bone_instance_data_set_color_hint(BoneInstanceData *data, const float hint_color[4]);
601void OVERLAY_bone_instance_data_set_color(BoneInstanceData *data, const float bone_color[4]);
602
607
612
621
626
630
634
639
643
648
652void OVERLAY_extra_draw(OVERLAY_Data *vedata);
655
661
663void OVERLAY_extra_point(OVERLAY_ExtraCallBuffers *cb, const float point[3], const float color[4]);
665 const float start[3],
666 const float end[3],
667 const float color[4]);
669 const float start[3],
670 const float end[3],
671 int color_id);
673 const float mat[4][4],
674 float draw_size,
675 char draw_type,
676 const float color[4]);
678 blender::gpu::Batch *geom,
679 const float mat[4][4],
680 const float color[4]);
682 blender::gpu::Batch *geom,
683 const float mat[4][4],
684 const float color[4]);
685
691
692void OVERLAY_fade_init(OVERLAY_Data *vedata);
695void OVERLAY_fade_draw(OVERLAY_Data *vedata);
697
703
704void OVERLAY_grid_init(OVERLAY_Data *vedata);
706void OVERLAY_grid_draw(OVERLAY_Data *vedata);
707
708void OVERLAY_image_init(OVERLAY_Data *vedata);
713void OVERLAY_image_draw(OVERLAY_Data *vedata);
721
727
731
735 Object *ob,
736 OVERLAY_DupliData *dupli,
737 bool init_dupli);
739
740void OVERLAY_paint_init(OVERLAY_Data *vedata);
745void OVERLAY_paint_draw(OVERLAY_Data *vedata);
746
750
754
759
763
764void OVERLAY_viewer_attribute_text(const Object &object);
765
769 Object *ob,
770 OVERLAY_DupliData *dupli,
771 bool init_dupli);
774
779
803GPUShader *OVERLAY_shader_edit_mesh_edge(bool use_flat_interp);
821GPUShader *OVERLAY_shader_extra(bool is_select);
823GPUShader *OVERLAY_shader_extra_wire(bool use_object, bool is_select);
857GPUShader *OVERLAY_shader_volume_velocity(bool use_needle, bool use_mac);
858GPUShader *OVERLAY_shader_volume_gridlines(bool color_with_flags, bool color_range);
859GPUShader *OVERLAY_shader_wireframe(bool custom_bias);
862
864
eContextObjectMode
#define BLI_INLINE
MINLINE float clamp_f(float value, float min, float max)
void copy_m4_m4(float m1[4][4], const float m2[4][4])
eMaskOverlayMode
eSpaceImage_UVDT_Stretch
struct GPUShader GPUShader
ATTR_WARN_UNUSED_RESULT const BMVert * v
local_group_size(16, 16) .push_constant(Type b
DRWState
Definition draw_state.hh:25
draw_view in_light_buf[] float
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
GPUShader * OVERLAY_shader_edit_uv_edges_for_edge_select_get()
GPUShader * OVERLAY_shader_edit_uv_face_dots_get()
void OVERLAY_sculpt_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_extra_wire(bool use_object, bool is_select)
void OVERLAY_mode_transfer_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_grease_pencil_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_curve_draw(OVERLAY_Data *vedata)
void OVERLAY_paint_texture_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_paint_init(OVERLAY_Data *vedata)
void OVERLAY_extra_line(OVERLAY_ExtraCallBuffers *cb, const float start[3], const float end[3], int color_id)
void OVERLAY_antialiasing_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_armature_wire()
GPUShader * OVERLAY_shader_edit_lattice_point()
GPUShader * OVERLAY_shader_edit_uv_stencil_image()
void OVERLAY_motion_path_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_extra_wire(OVERLAY_ExtraCallBuffers *cb, blender::gpu::Batch *geom, const float mat[4][4], const float color[4])
void OVERLAY_lattice_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_fade_cache_populate(OVERLAY_Data *vedata, Object *ob)
OVERLAY_ExtraCallBuffers * OVERLAY_extra_call_buffer_get(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_weight_grease_pencil_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_edit_mesh_facedot()
void OVERLAY_particle_draw(OVERLAY_Data *vedata)
void OVERLAY_gpencil_legacy_cache_init(OVERLAY_Data *vedata)
BLI_INLINE void pack_data_in_mat4(float rmat[4][4], const float mat[4][4], float a, float b, float c, float d)
GPUShader * OVERLAY_shader_edit_uv_mask_image()
void OVERLAY_vertex_grease_pencil_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_armature_in_front_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_wireframe(bool custom_bias)
GPUShader * OVERLAY_shader_edit_gpencil_wire()
void OVERLAY_sculpt_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_uv_verts_get()
bool OVERLAY_armature_is_pose_mode(Object *ob, const DRWContextState *draw_ctx)
GPUShader * OVERLAY_shader_uniform_color()
void OVERLAY_edit_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_sculpt_mask()
void OVERLAY_wireframe_draw(OVERLAY_Data *vedata)
void OVERLAY_grid_draw(OVERLAY_Data *vedata)
void OVERLAY_fade_draw(OVERLAY_Data *vedata)
void OVERLAY_fade_infront_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_armature_stick()
void OVERLAY_edit_uv_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_mesh_normal()
void OVERLAY_metaball_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_outline_prepass(bool use_wire)
GPUShader * OVERLAY_shader_edit_gpencil_point()
GPUShader * OVERLAY_shader_armature_shape(bool use_outline)
void OVERLAY_grid_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_outline_prepass_pointcloud()
void OVERLAY_armature_cache_finish(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_paint_texture()
void OVERLAY_extra_centers_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_curve_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_bone_instance_data_set_color_hint(BoneInstanceData *data, const float hint_color[4])
void OVERLAY_volume_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_grease_pencil_cache_init(OVERLAY_Data *vedata)
void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
void OVERLAY_extra_in_front_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_paint_wire()
GPUShader * OVERLAY_shader_edit_particle_point()
void OVERLAY_image_cache_init(OVERLAY_Data *vedata)
void OVERLAY_viewer_attribute_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_clipbound()
void OVERLAY_antialiasing_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_edit_lattice_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_particle_cache_init(OVERLAY_Data *vedata)
void OVERLAY_empty_shape(OVERLAY_ExtraCallBuffers *cb, const float mat[4][4], float draw_size, char draw_type, const float color[4])
void OVERLAY_image_background_draw(OVERLAY_Data *vedata)
void OVERLAY_sculpt_curves_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_particle_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_curve_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_uv_tiled_image_borders_get()
GPUShader * OVERLAY_shader_edit_uv_stretching_angle_get()
void OVERLAY_shader_free()
void OVERLAY_image_in_front_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_uniform_color_pointcloud()
void OVERLAY_image_scene_background_draw(OVERLAY_Data *vedata)
void OVERLAY_image_camera_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_edit_curve_handle()
GPUShader * OVERLAY_shader_sculpt_curves_cage()
void OVERLAY_fade_init(OVERLAY_Data *vedata)
void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_image()
void OVERLAY_metaball_in_front_draw(OVERLAY_Data *vedata)
void OVERLAY_facing_infront_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_armature_sphere(bool use_outline)
void OVERLAY_wireframe_in_front_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_facing()
void OVERLAY_outline_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, bool init_dupli)
void OVERLAY_sculpt_curves_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_mesh_depth()
void OVERLAY_antialiasing_init(OVERLAY_Data *vedata)
void OVERLAY_edit_metaball_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_volume_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_volume_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_gpencil_guide_point()
void OVERLAY_mode_transfer_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_camera_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_xray_depth_copy(OVERLAY_Data *vedata)
void OVERLAY_motion_path_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_grid_background()
void OVERLAY_light_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_edit_mesh_edge(bool use_flat_interp)
GPUShader * OVERLAY_shader_armature_shape_wire()
void OVERLAY_image_cache_finish(OVERLAY_Data *vedata)
void OVERLAY_background_cache_init(OVERLAY_Data *vedata)
void OVERLAY_outline_draw(OVERLAY_Data *vedata)
OVERLAY_UVLineStyle
@ OVERLAY_UV_LINE_STYLE_DASH
@ OVERLAY_UV_LINE_STYLE_SHADOW
@ OVERLAY_UV_LINE_STYLE_WHITE
@ OVERLAY_UV_LINE_STYLE_OUTLINE
@ OVERLAY_UV_LINE_STYLE_BLACK
void OVERLAY_pose_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_volume_gridlines(bool color_with_flags, bool color_range)
GPUShader * OVERLAY_shader_extra_grid()
void OVERLAY_extra_line_dashed(OVERLAY_ExtraCallBuffers *cb, const float start[3], const float end[3], const float color[4])
void OVERLAY_outline_init(OVERLAY_Data *vedata)
void OVERLAY_pose_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_viewer_attribute_curve()
GPUShader * OVERLAY_shader_armature_degrees_of_freedom_wire()
void OVERLAY_gpencil_legacy_draw(OVERLAY_Data *vedata)
void OVERLAY_paint_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_volume_velocity(bool use_needle, bool use_mac)
void OVERLAY_edit_mesh_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_paint_face()
GPUShader * OVERLAY_shader_extra_point()
void OVERLAY_edit_lattice_cache_init(OVERLAY_Data *vedata)
void OVERLAY_motion_path_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_curves_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_paint_weight(bool shading)
GPUShader * OVERLAY_shader_particle_shape()
void OVERLAY_outline_cache_init(OVERLAY_Data *vedata)
void OVERLAY_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_image_draw(OVERLAY_Data *vedata)
void OVERLAY_viewer_attribute_cache_populate(OVERLAY_Data *vedata, Object *object)
GPUShader * OVERLAY_shader_armature_degrees_of_freedom_solid()
void OVERLAY_facing_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_outline_detect()
void OVERLAY_edit_gpencil_legacy_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_surf_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_edit_uv_edges_get()
GPUShader * OVERLAY_shader_edit_curve_wire()
GPUShader * OVERLAY_shader_edit_mesh_skin_root()
void OVERLAY_edit_mesh_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_viewer_attribute_pointcloud()
void OVERLAY_facing_init(OVERLAY_Data *vedata)
void OVERLAY_viewer_attribute_text(const Object &object)
void OVERLAY_grease_pencil_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_motion_path_vert()
GPUShader * OVERLAY_shader_background()
void OVERLAY_extra_point(OVERLAY_ExtraCallBuffers *cb, const float point[3], const float color[4])
GPUShader * OVERLAY_shader_extra_loose_point()
void OVERLAY_facing_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_grease_pencil_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_edit_mesh_analysis()
void OVERLAY_image_empty_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_antialiasing_start(OVERLAY_Data *vedata)
void OVERLAY_xray_depth_infront_copy(OVERLAY_Data *vedata)
void OVERLAY_edit_gpencil_legacy_cache_init(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_grease_pencil_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_grid()
void OVERLAY_paint_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_sculpt_curves_selection()
void OVERLAY_image_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_particle_strand()
GPUShader * OVERLAY_shader_particle_dot()
GPUShader * OVERLAY_shader_paint_vertcol()
GPUShader * OVERLAY_shader_motion_path_line()
GPUShader * OVERLAY_shader_wireframe_select()
void OVERLAY_edit_text_cache_init(OVERLAY_Data *vedata)
void OVERLAY_edit_particle_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_extra(bool is_select)
GPUShader * OVERLAY_shader_edit_curves_handle()
GPUShader * OVERLAY_shader_edit_uv_face_get()
void OVERLAY_grid_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_xray_fade()
BLI_INLINE void pack_v4_in_mat4(float rmat[4][4], const float mat[4][4], const float v[4])
GPUShader * OVERLAY_shader_outline_prepass_gpencil()
void OVERLAY_edit_text_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_sculpt_cache_init(OVERLAY_Data *vedata)
void OVERLAY_wireframe_cache_populate(OVERLAY_Data *vedata, Object *ob, OVERLAY_DupliData *dupli, bool init_dupli)
void OVERLAY_edit_uv_draw(OVERLAY_Data *vedata)
void OVERLAY_xray_fade_draw(OVERLAY_Data *vedata)
void OVERLAY_background_draw(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_infront_draw(OVERLAY_Data *vedata)
void OVERLAY_mode_transfer_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_uv_cache_finish(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_mesh_vert()
void OVERLAY_pose_draw(OVERLAY_Data *vedata)
void OVERLAY_sculpt_grease_pencil_cache_populate(OVERLAY_Data *vedata, Object *ob)
GPUShader * OVERLAY_shader_depth_only()
GPUShader * OVERLAY_shader_edit_uv_stretching_area_get()
void OVERLAY_metaball_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_antialiasing()
GPUShader * OVERLAY_shader_armature_envelope(bool use_outline)
void OVERLAY_armature_draw(OVERLAY_Data *vedata)
void OVERLAY_antialiasing_end(OVERLAY_Data *vedata)
void OVERLAY_fade_cache_init(OVERLAY_Data *vedata)
void OVERLAY_lightprobe_cache_populate(OVERLAY_Data *vedata, Object *ob)
OVERLAY_InstanceFormats * OVERLAY_shader_instance_formats_get()
GPUShader * OVERLAY_shader_edit_curve_point()
void OVERLAY_edit_uv_init(OVERLAY_Data *vedata)
void OVERLAY_sculpt_curves_draw_wires(OVERLAY_Data *vedata)
void OVERLAY_extra_loose_points(OVERLAY_ExtraCallBuffers *cb, blender::gpu::Batch *geom, const float mat[4][4], const float color[4])
GPUShader * OVERLAY_shader_edit_mesh_face()
void OVERLAY_sculpt_curves_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_gpencil_canvas()
GPUShader * OVERLAY_shader_outline_prepass_curves()
void OVERLAY_particle_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_extra_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_particle_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_viewer_attribute_curves()
void OVERLAY_metaball_cache_init(OVERLAY_Data *vedata)
void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_paint_point()
GPUShader * OVERLAY_shader_extra_groundline()
void OVERLAY_bone_instance_data_set_color(BoneInstanceData *data, const float bone_color[4])
void OVERLAY_edit_text_draw(OVERLAY_Data *vedata)
void OVERLAY_edit_lattice_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_extra_blend_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_edit_lattice_wire()
void OVERLAY_facing_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_extra_draw(OVERLAY_Data *vedata)
GPUShader * OVERLAY_shader_viewer_attribute_mesh()
GPUShader * OVERLAY_shader_grid_image()
void OVERLAY_paint_weight_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata)
void OVERLAY_empty_cache_populate(OVERLAY_Data *vedata, Object *ob)
BLI_INLINE void pack_fl_in_mat4(float rmat[4][4], const float mat[4][4], float a)
void OVERLAY_speaker_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_viewer_attribute_cache_init(OVERLAY_Data *vedata)
void OVERLAY_paint_vertex_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_wireframe_init(OVERLAY_Data *vedata)
BoneInstanceData(const float4x4 &bone_mat, const float4 &bone_color)
BoneInstanceData(const float4x4 &ob_mat, const float3 &pos, const float radius, const float color[4])
void set_hint_color(const float4 &hint_color)
BoneInstanceData(const float4x4 &bone_mat, const float4 &bone_color, const float4 &hint_color)
void set_color(const float4 &bone_color)
BoneInstanceData()=default
OVERLAY_ArmatureCallBuffersInner transp
OVERLAY_ArmatureCallBuffersInner solid
OVERLAY_PassList * psl
OVERLAY_StorageList * stl
OVERLAY_FramebufferList * fbl
OVERLAY_TextureList * txl
DRWShadingGroup * wire_shgrp
DRWShadingGroup * extra_shgrp
DRWShadingGroup * outline_shgrp
blender::gpu::Batch * extra_geom
blender::gpu::Batch * wire_geom
blender::gpu::Batch * outline_geom
DRWCallBuffer * empty_image_frame
DRWCallBuffer * extra_dashed_lines
DRWCallBuffer * center_selected
DRWCallBuffer * light_area[2]
DRWCallBuffer * empty_single_arrow
DRWCallBuffer * light_icon_inner
DRWCallBuffer * camera_distances
DRWCallBuffer * center_deselected
DRWCallBuffer * light_spot_cone_front
DRWCallBuffer * camera_volume_frame
DRWShadingGroup * extra_wire
DRWCallBuffer * light_spot_cone_back
DRWCallBuffer * light_icon_outer
DRWCallBuffer * field_sphere_limit
DRWCallBuffer * empty_sphere_solid
DRWCallBuffer * empty_capsule_body
DRWCallBuffer * center_deselected_lib
DRWCallBuffer * light_icon_sun_rays
DRWCallBuffer * empty_capsule_cap
DRWCallBuffer * field_tube_limit
DRWShadingGroup * extra_loose_points
DRWCallBuffer * camera_tria[2]
DRWCallBuffer * field_cone_limit
DRWCallBuffer * center_selected_lib
DRWCallBuffer * empty_plain_axes
GPUFrameBuffer * overlay_line_fb
GPUFrameBuffer * overlay_default_fb
GPUFrameBuffer * overlay_color_only_fb
GPUFrameBuffer * overlay_line_in_front_fb
GPUFrameBuffer * outlines_prepass_fb
GPUFrameBuffer * outlines_resolve_fb
GPUFrameBuffer * overlay_in_front_fb
GPUVertFormat * instance_bone_outline
GPUVertFormat * instance_bone_envelope_distance
GPUVertFormat * instance_bone_envelope_outline
GPUVertFormat * instance_bone
GPUVertFormat * instance_extra
GPUVertFormat * instance_bone_stick
GPUVertFormat * instance_bone_envelope
DRWPass * clipping_frustum_ps
DRWPass * edit_uv_edges_ps
DRWPass * edit_gpencil_ps
DRWPass * mode_transfer_ps[2]
DRWPass * edit_text_highlight_ps
DRWPass * image_background_scene_ps
DRWPass * edit_uv_stencil_ps
DRWPass * edit_mesh_depth_ps[2]
DRWPass * image_empties_front_ps
DRWPass * edit_particle_ps
DRWPass * grease_pencil_canvas_ps
DRWPass * edit_mesh_edges_ps[2]
DRWPass * edit_mesh_faces_ps[2]
DRWPass * edit_text_selection_ps
DRWPass * antialiasing_ps
DRWPass * sculpt_curves_cage_ps
DRWPass * wireframe_xray_ps
DRWPass * edit_grease_pencil_ps
DRWPass * edit_uv_tiled_image_borders_ps
DRWPass * edit_curves_lines_ps[2]
DRWPass * edit_curves_handles_ps
DRWPass * facing_ps[2]
DRWPass * outlines_detect_ps
DRWPass * sculpt_curves_selection_ps
DRWPass * armature_ps[2]
DRWPass * edit_uv_faces_ps
DRWPass * edit_gpencil_gizmos_ps
DRWPass * edit_curve_handle_ps
DRWPass * image_foreground_scene_ps
DRWPass * extra_ps[2]
DRWPass * edit_mesh_analysis_ps
DRWPass * edit_text_cursor_ps
DRWPass * edit_uv_verts_ps
DRWPass * outlines_resolve_ps
DRWPass * edit_curves_points_ps[2]
DRWPass * outlines_prepass_ps
DRWPass * gpencil_canvas_ps
DRWPass * edit_mesh_verts_ps[2]
DRWPass * edit_lattice_ps
DRWPass * edit_uv_stretching_ps
DRWPass * edit_gpencil_curve_ps
DRWPass * edit_curve_wire_ps[2]
DRWPass * edit_mesh_faces_cage_ps[2]
DRWPass * metaball_ps[2]
DRWPass * armature_bone_select_ps
DRWPass * edit_text_wire_ps[2]
DRWPass * image_background_ps
DRWPass * image_empties_blend_ps
DRWPass * armature_transp_ps[2]
DRWPass * image_foreground_ps
DRWPass * image_empties_back_ps
DRWPass * edit_mesh_normals_ps
OVERLAY_GridBits grid_flag
DRWShadingGroup * paint_surf_grp
DRWShadingGroup * motion_path_points_grp
OVERLAY_UVLineStyle line_style
OVERLAY_ShadingData shdata
DRWShadingGroup * edit_grease_pencil_wires_grp
struct OVERLAY_PrivateData::@228 edit_curve
DRWShadingGroup * edit_text_cursor_grp
OVERLAY_GridBits zneg_flag
OVERLAY_ExtraCallBuffers extra_call_buffers[2]
eContextObjectMode ctx_mode
DRWShadingGroup * edit_grease_pencil_points_grp
DRWShadingGroup * edit_uv_verts_grp
DRWShadingGroup * outlines_gpencil_grp
DRWShadingGroup * paint_depth_grp
DRWShadingGroup * paint_wire_selected_grp
DRWShadingGroup * motion_path_lines_grp
struct OVERLAY_PrivateData::@232 edit_particle
DRWShadingGroup * viewer_attribute_instance_grp
DRWShadingGroup * edit_curves_handles_grp
DRWShadingGroup * edit_mesh_normals_grp
DRWShadingGroup * edit_mesh_faces_cage_grp[2]
DRWShadingGroup * edit_lattice_wires_grp
DRWShadingGroup * flash_grp[2]
struct OVERLAY_PrivateData::@229 edit_text
DRWShadingGroup * edit_gpencil_points_grp
DRWShadingGroup * paint_face_grp
DRWShadingGroup * viewer_attribute_pointcloud_grp
DRWShadingGroup * edit_text_wire_grp[2]
DRWShadingGroup * edit_text_selection_grp
DRWShadingGroup * edit_curve_wire_grp[2]
DRWShadingGroup * edit_mesh_depth_grp[2]
DRWShadingGroup * edit_gpencil_wires_grp
DRWShadingGroup * armature_bone_select_grp
DRWShadingGroup * edit_curve_normal_grp[2]
DRWShadingGroup * edit_particle_point_grp
DRWShadingGroup * edit_uv_edges_grp
DRWShadingGroup * edit_mesh_edges_grp[2]
DRWShadingGroup * extra_grid_grp
DRWShadingGroup * volume_selection_surface_grp
DRWShadingGroup * edit_particle_strand_grp
DRWShadingGroup * edit_curves_lines_grp[2]
DRWShadingGroup * pointcloud_dots_grp
DRWShadingGroup * fade_grp[2]
DRWShadingGroup * edit_mesh_analysis_grp
DRWShadingGroup * edit_uv_shadow_edges_grp
DRWShadingGroup * sculpt_curves_selection_grp
DRWShadingGroup * paint_point_grp
DRWShadingGroup * edit_curves_points_grp[2]
DRWShadingGroup * wires_all_grp[2][2]
struct OVERLAY_PrivateData::@237 mode_transfer
struct OVERLAY_PrivateData::@226 grid
DRWShadingGroup * edit_curve_points_grp
struct OVERLAY_PrivateData::@231 edit_curves
struct OVERLAY_PrivateData::@235 painting
struct OVERLAY_PrivateData::@236 mball
eMaskOverlayMode mask_overlay_mode
DRWShadingGroup * edit_mesh_verts_grp[2]
DRWShadingGroup * outlines_grp
DRWShadingGroup * edit_uv_faces_grp
DRWShadingGroup * facing_grp[2]
struct OVERLAY_PrivateData::@234 armature
DRWShadingGroup * viewer_attribute_curve_grp
DRWShadingGroup * viewer_attribute_instance_pointcloud_grp
DRWShadingGroup * edit_mesh_faces_grp[2]
DRWShadingGroup * edit_gpencil_curve_handle_grp
DRWShadingGroup * edit_uv_stretching_grp
DRWShadingGroup * sculpt_curves_cage_lines_grp
DRWShadingGroup * edit_mesh_skin_roots_grp[2]
eSpaceImage_UVDT_Stretch draw_type
DRWShadingGroup * edit_gpencil_curve_points_grp
DRWShadingGroup * edit_uv_face_dots_grp
DRWShadingGroup * viewer_attribute_mesh_grp
DRWShadingGroup * edit_curve_handle_grp
OVERLAY_GridData grid_data
OVERLAY_GridBits zpos_flag
DRWShadingGroup * outlines_curves_grp
DRWShadingGroup * outlines_ptcloud_grp
struct OVERLAY_PrivateData::@227 antialiasing
DRWShadingGroup * paint_wire_grp
DRWShadingGroup * particle_dots_grp
struct OVERLAY_PrivateData::@230 edit_mesh
DRWShadingGroup * sculpt_mask_grp
DRWShadingGroup * wires_hair_grp[2][2]
DRWShadingGroup * edit_lattice_points_grp
DRWShadingGroup * viewer_attribute_curves_grp
DRWShadingGroup * edit_mesh_facedots_grp[2]
OVERLAY_ArmatureCallBuffers armature_call_buffers[2]
DRWShadingGroup * armature_bone_select_act_grp
DRWShadingGroup * wires_grp[2][2]
DRWShadingGroup * wires_sculpt_grp[2]
DRWShadingGroup * particle_shapes_grp
struct OVERLAY_PrivateData::@233 edit_uv
OVERLAY_PrivateData * pd
GPUTexture * dummy_depth_tx
GPUTexture * outlines_id_tx
GPUTexture * temp_depth_tx
GPUTexture * overlay_line_tx
GPUTexture * overlay_color_tx