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
8
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 {
436 struct {
437 double time;
440}; /* Transient data */
441
445
455
465
467 /* Keep sync with bone instance vertex format (OVERLAY_InstanceFormats) */
468 union {
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. */
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;
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
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
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 point
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)
MatBase< float, 4, 4 > float4x4
VecBase< float, 4 > float4
VecBase< float, 3 > float3
static float encode_2f_to_float(float a, float b)
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
struct OVERLAY_PrivateData::@340152143075377215251311042054025257311107353337 grid
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::@175340032015206350127150312336076341200255315207 edit_uv
DRWShadingGroup * edit_text_cursor_grp
OVERLAY_GridBits zneg_flag
struct OVERLAY_PrivateData::@175071026056003242077113056212000060351272213114 mball
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
struct OVERLAY_PrivateData::@071226320146267115016374221223052020132003062370 edit_particle
DRWShadingGroup * paint_wire_selected_grp
DRWShadingGroup * motion_path_lines_grp
DRWShadingGroup * viewer_attribute_instance_grp
struct OVERLAY_PrivateData::@037073235072154075117250143020005176272251117035 antialiasing
DRWShadingGroup * edit_curves_handles_grp
struct OVERLAY_PrivateData::@277227202134063272024152361246052212254322004304 armature
DRWShadingGroup * edit_mesh_normals_grp
DRWShadingGroup * edit_mesh_faces_cage_grp[2]
DRWShadingGroup * edit_lattice_wires_grp
DRWShadingGroup * flash_grp[2]
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
struct OVERLAY_PrivateData::@216210106171324025244131023234223216173313152160 edit_text
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::@260205116167031223165231021112203171237304040251 painting
DRWShadingGroup * edit_curve_points_grp
eMaskOverlayMode mask_overlay_mode
DRWShadingGroup * edit_mesh_verts_grp[2]
DRWShadingGroup * outlines_grp
DRWShadingGroup * edit_uv_faces_grp
DRWShadingGroup * facing_grp[2]
DRWShadingGroup * viewer_attribute_curve_grp
struct OVERLAY_PrivateData::@017025346316061011333067144345352107066311354153 edit_curve
DRWCallBuffer * handle[2]
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
struct OVERLAY_PrivateData::@130303251336010363010041265345015077153007262302 edit_curves
DRWShadingGroup * outlines_ptcloud_grp
DRWShadingGroup * paint_wire_grp
DRWShadingGroup * particle_dots_grp
DRWShadingGroup * sculpt_mask_grp
DRWShadingGroup * wires_hair_grp[2][2]
DRWShadingGroup * edit_lattice_points_grp
DRWShadingGroup * viewer_attribute_curves_grp
struct OVERLAY_PrivateData::@222116166007242053024054361236171131350374132356 edit_mesh
DRWShadingGroup * edit_mesh_facedots_grp[2]
OVERLAY_ArmatureCallBuffers armature_call_buffers[2]
struct OVERLAY_PrivateData::@302134015166353136115217061342247117056032154062 mode_transfer
DRWShadingGroup * armature_bone_select_act_grp
DRWShadingGroup * wires_grp[2][2]
DRWShadingGroup * wires_sculpt_grp[2]
DRWShadingGroup * particle_shapes_grp
OVERLAY_PrivateData * pd
GPUTexture * dummy_depth_tx
GPUTexture * outlines_id_tx
GPUTexture * temp_depth_tx
GPUTexture * overlay_line_tx
GPUTexture * overlay_color_tx