Blender V4.3
gpencil_cache_utils.cc File Reference
#include "DRW_engine.hh"
#include "DRW_render.hh"
#include "ED_gpencil_legacy.hh"
#include "ED_view3d.hh"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_view3d_types.h"
#include "BKE_gpencil_geom_legacy.h"
#include "BKE_gpencil_legacy.h"
#include "BKE_grease_pencil.hh"
#include "BKE_lib_id.hh"
#include "BKE_object.hh"
#include "BLI_hash.h"
#include "BLI_link_utils.h"
#include "BLI_math_color.h"
#include "BLI_math_vector.hh"
#include "BLI_memblock.h"
#include "gpencil_engine.h"
#include "draw_cache_impl.hh"
#include "DEG_depsgraph.hh"
#include "UI_resources.hh"
#include "../../blenlib/intern/list_sort_impl.h"

Go to the source code of this file.

Functions

Layer
static float gpencil_layer_final_opacity_get (const GPENCIL_PrivateData *pd, const Object *ob, const bGPDlayer *gpl)
 
static float grease_pencil_layer_final_opacity_get (const GPENCIL_PrivateData *pd, const Object *ob, const GreasePencil &grease_pencil, const blender::bke::greasepencil::Layer &layer)
 
static void gpencil_layer_final_tint_and_alpha_get (const GPENCIL_PrivateData *pd, const bGPdata *gpd, const bGPDlayer *gpl, const bGPDframe *gpf, float r_tint[4], float *r_alpha)
 
static float4 grease_pencil_layer_final_tint_and_alpha_get (const GPENCIL_PrivateData *pd, const GreasePencil &grease_pencil, const int onion_id, float *r_alpha)
 
static void gpencil_layer_random_color_get (const Object *ob, const bGPDlayer *gpl, float r_color[3])
 
static void grease_pencil_layer_random_color_get (const Object *ob, const blender::bke::greasepencil::Layer &layer, float r_color[3])
 
GPENCIL_tLayergpencil_layer_cache_add (GPENCIL_PrivateData *pd, const Object *ob, const bGPDlayer *gpl, const bGPDframe *gpf, GPENCIL_tObject *tgp_ob)
 
GPENCIL_tLayergrease_pencil_layer_cache_get (GPENCIL_tObject *tgp_ob, int layer_id, const bool skip_onion)
 
GPENCIL_tLayergrease_pencil_layer_cache_add (GPENCIL_PrivateData *pd, const Object *ob, const blender::bke::greasepencil::Layer &layer, const int onion_id, const bool is_used_as_mask, GPENCIL_tObject *tgp_ob)
 

Object

#define SORT_IMPL_LINKTYPE   GPENCIL_tObject
 
#define SORT_IMPL_FUNC   gpencil_tobject_sort_fn_r
 
GPENCIL_tObjectgpencil_object_cache_add (GPENCIL_PrivateData *pd, Object *ob, const bool is_stroke_order_3d, const blender::Bounds< float3 > bounds)
 
static int gpencil_tobject_dist_sort (const void *a, const void *b)
 
void gpencil_object_cache_sort (GPENCIL_PrivateData *pd)
 

Macro Definition Documentation

◆ SORT_IMPL_FUNC

#define SORT_IMPL_FUNC   gpencil_tobject_sort_fn_r

Definition at line 128 of file gpencil_cache_utils.cc.

◆ SORT_IMPL_LINKTYPE

#define SORT_IMPL_LINKTYPE   GPENCIL_tObject

Definition at line 126 of file gpencil_cache_utils.cc.

Function Documentation

◆ gpencil_layer_cache_add()

GPENCIL_tLayer * gpencil_layer_cache_add ( GPENCIL_PrivateData * pd,
const Object * ob,
const bGPDlayer * gpl,
const bGPDframe * gpf,
GPENCIL_tObject * tgp_ob )

Definition at line 352 of file gpencil_cache_utils.cc.

References GPENCIL_tLayer::base_shgrp, BKE_gpencil_layer_named_get(), bGPDlayer::blend_mode, GPENCIL_tLayer::blend_ps, BLI_BITMAP_SET, BLI_bitmap_set_all(), BLI_findindex(), BLI_LINKS_APPEND, BLI_listbase_is_empty(), BLI_memblock_alloc(), GPENCIL_PrivateData::color_layer_tx, copy_v4_v4(), Object::data, DRW_pass_create(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_state_disable(), DRW_shgroup_state_enable(), DRW_shgroup_stencil_mask(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_int_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec3_copy(), DRW_shgroup_uniform_vec4_copy(), DRW_STATE_BLEND_ADD_FULL, DRW_STATE_BLEND_ALPHA_PREMUL, DRW_STATE_BLEND_MUL, DRW_STATE_BLEND_SUB, DRW_STATE_DEPTH_GREATER, DRW_STATE_DEPTH_LESS_EQUAL, DRW_STATE_STENCIL_ALWAYS, DRW_STATE_STENCIL_EQUAL, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_STATE_WRITE_STENCIL, Object::dtx, GPENCIL_PrivateData::dummy_tx, eGplBlendMode_Add, eGplBlendMode_Divide, eGplBlendMode_HardLight, eGplBlendMode_Multiply, eGplBlendMode_Regular, eGplBlendMode_Subtract, ELEM, false, bGPdata::flag, bGPDlayer::flag, GPENCIL_tLayer::geom_ps, GP_DATA_STROKE_KEEPTHICKNESS, GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER, GP_LAYER_HIDE, GPENCIL_PrivateData::gp_layer_pool, GP_LAYER_USE_MASK, GP_MASK_HIDE, GP_MASK_INVERT, GPENCIL_PrivateData::gp_maskbit_pool, GP_MAX_MASKBITS, gpencil_layer_final_opacity_get(), gpencil_layer_final_tint_and_alpha_get(), gpencil_layer_random_color_get(), GPENCIL_PIXEL_FACTOR, GPENCIL_shader_geometry_get(), GPENCIL_shader_layer_blend_get(), GPENCIL_VERTEX_MODE, invert(), GPENCIL_tObject::is_drawmode3d, GPENCIL_PrivateData::is_render, GPENCIL_tLayer::layer_id, bGPdata::layers, GPENCIL_tObject::layers, bGPDlayer::line_change, LISTBASE_FOREACH, GPENCIL_tLayer::mask_bits, GPENCIL_tLayer::mask_invert_bits, bGPDlayer::mask_layers, GPENCIL_PrivateData::mask_tx, ViewLayer::name, OB_DRAW_IN_FRONT, GPENCIL_tObject::object_scale, bGPdata::pixfactor, GPENCIL_tObject::plane_normal, GPENCIL_PrivateData::reveal_layer_tx, GPENCIL_PrivateData::scene_depth_tx, state, STREQ, GPENCIL_PrivateData::use_layer_fb, GPENCIL_PrivateData::use_mask_fb, GPENCIL_PrivateData::use_signed_fb, GPENCIL_PrivateData::v3d_color_type, V3D_SHADING_RANDOM_COLOR, V3D_SHADING_VERTEX_COLOR, bGPDlayer::vertex_paint_opacity, GPENCIL_PrivateData::vertex_paint_opacity, GPENCIL_PrivateData::view_layer, and bGPDlayer::viewlayername.

◆ gpencil_layer_final_opacity_get()

◆ gpencil_layer_final_tint_and_alpha_get()

◆ gpencil_layer_random_color_get()

static void gpencil_layer_random_color_get ( const Object * ob,
const bGPDlayer * gpl,
float r_color[3] )
static

◆ gpencil_object_cache_add()

◆ gpencil_object_cache_sort()

◆ gpencil_tobject_dist_sort()

static int gpencil_tobject_dist_sort ( const void * a,
const void * b )
static

Definition at line 134 of file gpencil_cache_utils.cc.

References b, and GPENCIL_tObject::camera_z.

Referenced by gpencil_object_cache_sort().

◆ grease_pencil_layer_cache_add()

GPENCIL_tLayer * grease_pencil_layer_cache_add ( GPENCIL_PrivateData * pd,
const Object * ob,
const blender::bke::greasepencil::Layer & layer,
const int onion_id,
const bool is_used_as_mask,
GPENCIL_tObject * tgp_ob )

Definition at line 534 of file gpencil_cache_utils.cc.

References GPENCIL_tLayer::base_shgrp, GPENCIL_tLayer::blend_ps, BLI_BITMAP_SET, BLI_bitmap_set_all(), BLI_LINKS_APPEND, BLI_listbase_is_empty(), BLI_memblock_alloc(), GPENCIL_PrivateData::color_layer_tx, copy_v4_v4(), Object::data, DRW_pass_create(), DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_state_disable(), DRW_shgroup_state_enable(), DRW_shgroup_stencil_mask(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_int_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec3_copy(), DRW_shgroup_uniform_vec4_copy(), DRW_STATE_BLEND_ADD_FULL, DRW_STATE_BLEND_ALPHA_PREMUL, DRW_STATE_BLEND_MUL, DRW_STATE_BLEND_SUB, DRW_STATE_DEPTH_GREATER, DRW_STATE_DEPTH_LESS_EQUAL, DRW_STATE_STENCIL_ALWAYS, DRW_STATE_STENCIL_EQUAL, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_STATE_WRITE_STENCIL, Object::dtx, GPENCIL_PrivateData::dummy_tx, ELEM, GPENCIL_tLayer::geom_ps, GP_LAYER_BLEND_ADD, GP_LAYER_BLEND_DIVIDE, GP_LAYER_BLEND_HARDLIGHT, GP_LAYER_BLEND_MULTIPLY, GP_LAYER_BLEND_NONE, GP_LAYER_BLEND_SUBTRACT, GP_LAYER_MASK_HIDE, GP_LAYER_MASK_INVERT, GPENCIL_PrivateData::gp_layer_pool, GP_LAYER_TREE_NODE_DISABLE_MASKS_IN_VIEWLAYER, GPENCIL_PrivateData::gp_maskbit_pool, GP_MAX_MASKBITS, GPENCIL_shader_geometry_get(), GPENCIL_shader_layer_blend_get(), grease_pencil_layer_final_opacity_get(), grease_pencil_layer_final_tint_and_alpha_get(), grease_pencil_layer_random_color_get(), invert(), GPENCIL_tObject::is_drawmode3d, GPENCIL_tLayer::is_onion, GPENCIL_PrivateData::is_render, GPENCIL_tLayer::layer_id, GPENCIL_tObject::layers, blender::bke::greasepencil::LEGACY_RADIUS_CONVERSION_FACTOR, LISTBASE_FOREACH, GPENCIL_tLayer::mask_bits, GPENCIL_tLayer::mask_invert_bits, GPENCIL_PrivateData::mask_tx, Object::mode, ViewLayer::name, OB_DRAW_IN_FRONT, OB_MODE_PAINT_GREASE_PENCIL, OB_MODE_VERTEX_PAINT, GPENCIL_tObject::object_scale, GPENCIL_tObject::plane_normal, GPENCIL_PrivateData::reveal_layer_tx, GPENCIL_PrivateData::scene_depth_tx, state, STREQ, GPENCIL_PrivateData::use_layer_fb, GPENCIL_PrivateData::use_mask_fb, GPENCIL_PrivateData::use_signed_fb, GPENCIL_PrivateData::v3d_color_type, V3D_SHADING_RANDOM_COLOR, V3D_SHADING_VERTEX_COLOR, GPENCIL_PrivateData::vertex_paint_opacity, GPENCIL_PrivateData::view_layer, and GPENCIL_PrivateData::xray_alpha.

Referenced by grease_pencil_object_cache_populate().

◆ grease_pencil_layer_cache_get()

GPENCIL_tLayer * grease_pencil_layer_cache_get ( GPENCIL_tObject * tgp_ob,
int layer_id,
const bool skip_onion )

Definition at line 518 of file gpencil_cache_utils.cc.

References BLI_assert, GPENCIL_tObject::first, and GPENCIL_tObject::layers.

Referenced by gpencil_draw_mask().

◆ grease_pencil_layer_final_opacity_get()

static float grease_pencil_layer_final_opacity_get ( const GPENCIL_PrivateData * pd,
const Object * ob,
const GreasePencil & grease_pencil,
const blender::bke::greasepencil::Layer & layer )
static

◆ grease_pencil_layer_final_tint_and_alpha_get()

◆ grease_pencil_layer_random_color_get()

static void grease_pencil_layer_random_color_get ( const Object * ob,
const blender::bke::greasepencil::Layer & layer,
float r_color[3] )
static