Blender V5.0
overlay_shader_shared.hh File Reference

Go to the source code of this file.

Classes

struct  OVERLAY_GridData
struct  ThemeColors
struct  ThemeSizes
struct  UniformData
struct  ExtraInstanceData
struct  VertexData
struct  ParticlePointData
struct  BoneEnvelopeData
struct  BoneStickData

Macros

#define VERT_GPENCIL_BEZT_HANDLE   (1u << 30)
#define FACE_ACTIVE   (1u << 0)
#define FACE_SELECTED   (1u << 1)
#define FACE_FREESTYLE   (1u << 2)
#define VERT_UV_SELECT   (1u << 3)
#define VERT_UV_PINNED   (1u << 4)
#define EDGE_UV_SELECT   (1u << 5)
#define FACE_UV_ACTIVE   (1u << 6)
#define FACE_UV_SELECT   (1u << 7)
#define VERT_ACTIVE   (1u << 0)
#define VERT_SELECTED   (1u << 1)
#define VERT_SELECTED_BEZT_HANDLE   (1u << 2)
#define EDGE_ACTIVE   (1u << 3)
#define EDGE_SELECTED   (1u << 4)
#define EDGE_SEAM   (1u << 5)
#define EDGE_SHARP   (1u << 6)
#define EDGE_FREESTYLE   (1u << 7)
#define OVERLAY_GRID_STEPS_LEN   8
#define WIRE_WIDTH_COMPRESSION   16.0
#define PARTICLE_SHAPE_CIRCLE_RESOLUTION   7
#define M_1_SQRTPI   0.5641895835477563f /* `1/sqrt(pi)`. */
#define DISC_RADIUS   (M_1_SQRTPI * 1.05f)
#define LINE_SMOOTH_START   (0.5f - DISC_RADIUS)
#define LINE_SMOOTH_END   (0.5f + DISC_RADIUS)
#define LINE_STEP(dist)

Enumerations

enum  OVERLAY_BackgroundType : uint32_t {
  BG_SOLID = 0u , BG_GRADIENT = 1u , BG_CHECKER = 2u , BG_RADIAL = 3u ,
  BG_SOLID_CHECKER = 4u , BG_MASK = 5u
}
enum  OVERLAY_UVLineStyle : uint32_t {
  OVERLAY_UV_LINE_STYLE_OUTLINE = 0u , OVERLAY_UV_LINE_STYLE_DASH = 1u , OVERLAY_UV_LINE_STYLE_BLACK = 2u , OVERLAY_UV_LINE_STYLE_WHITE = 3u ,
  OVERLAY_UV_LINE_STYLE_SHADOW = 4u
}
enum  OVERLAY_GridBits : uint32_t {
  SHOW_AXIS_X = (1u << 0u) , SHOW_AXIS_Y = (1u << 1u) , SHOW_AXIS_Z = (1u << 2u) , SHOW_GRID = (1u << 3u) ,
  PLANE_XY = (1u << 4u) , PLANE_XZ = (1u << 5u) , PLANE_YZ = (1u << 6u) , CLIP_ZPOS = (1u << 7u) ,
  CLIP_ZNEG = (1u << 8u) , GRID_BACK = (1u << 9u) , GRID_CAMERA = (1u << 10u) , PLANE_IMAGE = (1u << 11u) ,
  CUSTOM_GRID = (1u << 12u)
}
enum  VertexClass : uint32_t {
  VCLASS_NONE = 0 , VCLASS_LIGHT_AREA_SHAPE = 1 << 0 , VCLASS_LIGHT_SPOT_SHAPE = 1 << 1 , VCLASS_LIGHT_SPOT_BLEND = 1 << 2 ,
  VCLASS_LIGHT_SPOT_CONE = 1 << 3 , VCLASS_LIGHT_DIST = 1 << 4 , VCLASS_CAMERA_FRAME = 1 << 5 , VCLASS_CAMERA_DIST = 1 << 6 ,
  VCLASS_CAMERA_VOLUME = 1 << 7 , VCLASS_SCREENSPACE = 1 << 8 , VCLASS_SCREENALIGNED = 1 << 9 , VCLASS_EMPTY_SCALED = 1 << 10 ,
  VCLASS_EMPTY_AXES = 1 << 11 , VCLASS_EMPTY_AXES_NAME = 1 << 12 , VCLASS_EMPTY_AXES_SHADOW = 1 << 13 , VCLASS_EMPTY_SIZE = 1 << 14
}
enum  StickBoneFlag : uint32_t {
  COL_WIRE = (1u << 0u) , COL_HEAD = (1u << 1u) , COL_TAIL = (1u << 2u) , COL_BONE = (1u << 3u) ,
  POS_HEAD = (1u << 4u) , POS_TAIL = (1u << 5u) , POS_BONE = (1u << 6u)
}
enum  OVERLAY_ParticleShape : uint32_t { PART_SHAPE_AXIS = 1 , PART_SHAPE_CIRCLE = 2 , PART_SHAPE_CROSS = 3 }

Functions

static uint outline_id_pack (uint outline_id, uint object_id)
 BLI_STATIC_ASSERT (CURVE_HANDLE_SELECTED==0u, "Ensure value is sync")
 BLI_STATIC_ASSERT (CURVE_HANDLE_ALL==1u, "Ensure value is sync")
 BLI_STATIC_ASSERT (MOTIONPATH_VERT_SEL==(1u<< 0), "Ensure value is sync")
 BLI_STATIC_ASSERT (MOTIONPATH_VERT_KEY==(1u<< 1), "Ensure value is sync")

Macro Definition Documentation

◆ DISC_RADIUS

#define DISC_RADIUS   (M_1_SQRTPI * 1.05f)

Definition at line 466 of file overlay_shader_shared.hh.

◆ EDGE_ACTIVE

#define EDGE_ACTIVE   (1u << 3)

Definition at line 105 of file overlay_shader_shared.hh.

◆ EDGE_FREESTYLE

#define EDGE_FREESTYLE   (1u << 7)

Definition at line 109 of file overlay_shader_shared.hh.

◆ EDGE_SEAM

#define EDGE_SEAM   (1u << 5)

Definition at line 107 of file overlay_shader_shared.hh.

◆ EDGE_SELECTED

#define EDGE_SELECTED   (1u << 4)

Definition at line 106 of file overlay_shader_shared.hh.

◆ EDGE_SHARP

#define EDGE_SHARP   (1u << 6)

Definition at line 108 of file overlay_shader_shared.hh.

◆ EDGE_UV_SELECT

#define EDGE_UV_SELECT   (1u << 5)

Definition at line 98 of file overlay_shader_shared.hh.

◆ FACE_ACTIVE

#define FACE_ACTIVE   (1u << 0)

Definition at line 93 of file overlay_shader_shared.hh.

◆ FACE_FREESTYLE

#define FACE_FREESTYLE   (1u << 2)

Definition at line 95 of file overlay_shader_shared.hh.

◆ FACE_SELECTED

#define FACE_SELECTED   (1u << 1)

Definition at line 94 of file overlay_shader_shared.hh.

◆ FACE_UV_ACTIVE

#define FACE_UV_ACTIVE   (1u << 6)

Definition at line 99 of file overlay_shader_shared.hh.

◆ FACE_UV_SELECT

#define FACE_UV_SELECT   (1u << 7)

Definition at line 100 of file overlay_shader_shared.hh.

◆ LINE_SMOOTH_END

#define LINE_SMOOTH_END   (0.5f + DISC_RADIUS)

Definition at line 468 of file overlay_shader_shared.hh.

◆ LINE_SMOOTH_START

#define LINE_SMOOTH_START   (0.5f - DISC_RADIUS)

Definition at line 467 of file overlay_shader_shared.hh.

◆ LINE_STEP

#define LINE_STEP ( dist)
Value:
MINLINE float smoothstep(float edge0, float edge1, float x)
#define LINE_SMOOTH_START
#define LINE_SMOOTH_END

Definition at line 470 of file overlay_shader_shared.hh.

◆ M_1_SQRTPI

#define M_1_SQRTPI   0.5641895835477563f /* `1/sqrt(pi)`. */

We want to know how much of a pixel is covered by a line. Here, we imagine the square pixel is a circle with the same area and try to find the intersection area. The overlap area is a circular segment. https://en.wikipedia.org/wiki/Circular_segment The formula for the area uses inverse trig function and is quite complex. Instead, we approximate it by using the smoothstep function and a 1.05f factor to the disc radius.

For an alternate approach, see: https://developer.nvidia.com/gpugems/gpugems2/part-iii-high-quality-rendering/chapter-22-fast-prefiltered-lines

Definition at line 465 of file overlay_shader_shared.hh.

◆ OVERLAY_GRID_STEPS_LEN

#define OVERLAY_GRID_STEPS_LEN   8

Definition at line 120 of file overlay_shader_shared.hh.

◆ PARTICLE_SHAPE_CIRCLE_RESOLUTION

#define PARTICLE_SHAPE_CIRCLE_RESOLUTION   7

◆ VERT_ACTIVE

#define VERT_ACTIVE   (1u << 0)

Definition at line 102 of file overlay_shader_shared.hh.

◆ VERT_GPENCIL_BEZT_HANDLE

#define VERT_GPENCIL_BEZT_HANDLE   (1u << 30)

Definition at line 91 of file overlay_shader_shared.hh.

◆ VERT_SELECTED

#define VERT_SELECTED   (1u << 1)

Definition at line 103 of file overlay_shader_shared.hh.

◆ VERT_SELECTED_BEZT_HANDLE

#define VERT_SELECTED_BEZT_HANDLE   (1u << 2)

Definition at line 104 of file overlay_shader_shared.hh.

◆ VERT_UV_PINNED

#define VERT_UV_PINNED   (1u << 4)

Definition at line 97 of file overlay_shader_shared.hh.

◆ VERT_UV_SELECT

#define VERT_UV_SELECT   (1u << 3)

Definition at line 96 of file overlay_shader_shared.hh.

◆ WIRE_WIDTH_COMPRESSION

Enumeration Type Documentation

◆ OVERLAY_BackgroundType

enum OVERLAY_BackgroundType : uint32_t
Enumerator
BG_SOLID 
BG_GRADIENT 
BG_CHECKER 
BG_RADIAL 
BG_SOLID_CHECKER 
BG_MASK 

Definition at line 14 of file overlay_shader_shared.hh.

◆ OVERLAY_GridBits

enum OVERLAY_GridBits : uint32_t
Enumerator
SHOW_AXIS_X 
SHOW_AXIS_Y 
SHOW_AXIS_Z 
SHOW_GRID 
PLANE_XY 
PLANE_XZ 
PLANE_YZ 
CLIP_ZPOS 
CLIP_ZNEG 
GRID_BACK 
GRID_CAMERA 
PLANE_IMAGE 
CUSTOM_GRID 

Definition at line 31 of file overlay_shader_shared.hh.

◆ OVERLAY_ParticleShape

enum OVERLAY_ParticleShape : uint32_t
Enumerator
PART_SHAPE_AXIS 
PART_SHAPE_CIRCLE 
PART_SHAPE_CROSS 

Definition at line 371 of file overlay_shader_shared.hh.

◆ OVERLAY_UVLineStyle

enum OVERLAY_UVLineStyle : uint32_t
Enumerator
OVERLAY_UV_LINE_STYLE_OUTLINE 
OVERLAY_UV_LINE_STYLE_DASH 
OVERLAY_UV_LINE_STYLE_BLACK 
OVERLAY_UV_LINE_STYLE_WHITE 
OVERLAY_UV_LINE_STYLE_SHADOW 

Definition at line 23 of file overlay_shader_shared.hh.

◆ StickBoneFlag

enum StickBoneFlag : uint32_t
Enumerator
COL_WIRE 
COL_HEAD 
COL_TAIL 
COL_BONE 
POS_HEAD 
POS_TAIL 
POS_BONE 

Definition at line 76 of file overlay_shader_shared.hh.

◆ VertexClass

enum VertexClass : uint32_t
Enumerator
VCLASS_NONE 
VCLASS_LIGHT_AREA_SHAPE 
VCLASS_LIGHT_SPOT_SHAPE 
VCLASS_LIGHT_SPOT_BLEND 
VCLASS_LIGHT_SPOT_CONE 
VCLASS_LIGHT_DIST 
VCLASS_CAMERA_FRAME 
VCLASS_CAMERA_DIST 
VCLASS_CAMERA_VOLUME 
VCLASS_SCREENSPACE 
VCLASS_SCREENALIGNED 
VCLASS_EMPTY_SCALED 
VCLASS_EMPTY_AXES 
VCLASS_EMPTY_AXES_NAME 
VCLASS_EMPTY_AXES_SHADOW 
VCLASS_EMPTY_SIZE 

Definition at line 50 of file overlay_shader_shared.hh.

Function Documentation

◆ BLI_STATIC_ASSERT() [1/4]

BLI_STATIC_ASSERT ( CURVE_HANDLE_ALL = =1u,
"Ensure value is sync"  )

References CURVE_HANDLE_ALL.

◆ BLI_STATIC_ASSERT() [2/4]

BLI_STATIC_ASSERT ( CURVE_HANDLE_SELECTED = =0u,
"Ensure value is sync"  )

References CURVE_HANDLE_SELECTED.

◆ BLI_STATIC_ASSERT() [3/4]

BLI_STATIC_ASSERT ( MOTIONPATH_VERT_KEY = =(1u<< 1),
"Ensure value is sync"  )

References MOTIONPATH_VERT_KEY.

◆ BLI_STATIC_ASSERT() [4/4]

BLI_STATIC_ASSERT ( MOTIONPATH_VERT_SEL = =(1u<< 0),
"Ensure value is sync"  )

References MOTIONPATH_VERT_SEL.

◆ outline_id_pack()

uint outline_id_pack ( uint outline_id,
uint object_id )
inlinestatic

Definition at line 111 of file overlay_shader_shared.hh.