Blender V4.3
gpencil_engine.h File Reference
#include "DNA_gpencil_legacy_types.h"
#include "DRW_render.hh"
#include "BLI_bitmap.h"
#include "BLI_bounds.hh"
#include "BKE_grease_pencil.hh"
#include "GPU_batch.hh"
#include "gpencil_defines.h"
#include "gpencil_shader_shared.h"

Go to the source code of this file.

Classes

struct  GPENCIL_MaterialPool
 
struct  GPENCIL_LightPool
 
struct  GPENCIL_ViewLayerData
 
struct  GPENCIL_tVfx
 
struct  GPENCIL_tLayer
 
struct  GPENCIL_tObject
 
struct  GPENCIL_StorageList
 
struct  GPENCIL_PassList
 
struct  GPENCIL_FramebufferList
 
struct  GPENCIL_TextureList
 
struct  GPENCIL_Data
 
struct  GPENCIL_PrivateData
 

Namespaces

namespace  blender
 
namespace  blender::gpu
 

Macros

#define GP_LIGHT
 
#define GPENCIL_PIXEL_FACTOR   2000.0f
 
#define GPENCIL_VBO_BLOCK_SIZE   128
 
#define GP_MAX_MASKBITS   256
 

Typedefs

typedef struct GPENCIL_MaterialPool GPENCIL_MaterialPool
 
typedef struct GPENCIL_LightPool GPENCIL_LightPool
 
typedef struct GPENCIL_ViewLayerData GPENCIL_ViewLayerData
 
typedef struct GPENCIL_tVfx GPENCIL_tVfx
 
typedef struct GPENCIL_tLayer GPENCIL_tLayer
 
typedef struct GPENCIL_tObject GPENCIL_tObject
 
typedef struct GPENCIL_StorageList GPENCIL_StorageList
 
typedef struct GPENCIL_PassList GPENCIL_PassList
 
typedef struct GPENCIL_FramebufferList GPENCIL_FramebufferList
 
typedef struct GPENCIL_TextureList GPENCIL_TextureList
 
typedef struct GPENCIL_Data GPENCIL_Data
 
typedef struct GPENCIL_PrivateData GPENCIL_PrivateData
 

Functions

struct GpencilBatchCachegpencil_batch_cache_get (struct Object *ob, int cfra)
 
GPENCIL_tObjectgpencil_object_cache_add (GPENCIL_PrivateData *pd, Object *ob, bool is_stroke_order_3d, blender::Bounds< float3 > bounds)
 
void gpencil_object_cache_sort (GPENCIL_PrivateData *pd)
 
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, bool skip_onion)
 
GPENCIL_tLayergrease_pencil_layer_cache_add (GPENCIL_PrivateData *pd, const Object *ob, const blender::bke::greasepencil::Layer &layer, int onion_id, bool is_used_as_mask, GPENCIL_tObject *tgp_ob)
 
GPENCIL_MaterialPoolgpencil_material_pool_create (GPENCIL_PrivateData *pd, Object *ob, int *ofs, bool is_vertex_mode)
 
void gpencil_material_resources_get (GPENCIL_MaterialPool *first_pool, int mat_id, struct GPUTexture **r_tex_stroke, struct GPUTexture **r_tex_fill, struct GPUUniformBuf **r_ubo_mat)
 
void gpencil_light_ambient_add (GPENCIL_LightPool *lightpool, const float color[3])
 
void gpencil_light_pool_populate (GPENCIL_LightPool *lightpool, Object *ob)
 
GPENCIL_LightPoolgpencil_light_pool_add (GPENCIL_PrivateData *pd)
 
GPENCIL_LightPoolgpencil_light_pool_create (GPENCIL_PrivateData *pd, Object *ob)
 
void gpencil_vfx_cache_populate (GPENCIL_Data *vedata, Object *ob, GPENCIL_tObject *tgp_ob, const bool is_edit_mode)
 
struct GPUShaderGPENCIL_shader_antialiasing (int stage)
 
struct GPUShaderGPENCIL_shader_geometry_get (void)
 
struct GPUShaderGPENCIL_shader_layer_blend_get (void)
 
struct GPUShaderGPENCIL_shader_mask_invert_get (void)
 
struct GPUShaderGPENCIL_shader_depth_merge_get (void)
 
struct GPUShaderGPENCIL_shader_fx_blur_get (void)
 
struct GPUShaderGPENCIL_shader_fx_colorize_get (void)
 
struct GPUShaderGPENCIL_shader_fx_composite_get (void)
 
struct GPUShaderGPENCIL_shader_fx_transform_get (void)
 
struct GPUShaderGPENCIL_shader_fx_glow_get (void)
 
struct GPUShaderGPENCIL_shader_fx_pixelize_get (void)
 
struct GPUShaderGPENCIL_shader_fx_rim_get (void)
 
struct GPUShaderGPENCIL_shader_fx_shadow_get (void)
 
void GPENCIL_shader_free (void)
 
void GPENCIL_antialiasing_init (struct GPENCIL_Data *vedata)
 
void GPENCIL_antialiasing_draw (struct GPENCIL_Data *vedata)
 
void GPENCIL_engine_init (void *vedata)
 
void GPENCIL_cache_init (void *vedata)
 
void GPENCIL_cache_populate (void *vedata, struct Object *ob)
 
void GPENCIL_cache_finish (void *vedata)
 
void GPENCIL_draw_scene (void *vedata)
 
void GPENCIL_render_init (struct GPENCIL_Data *ved, struct RenderEngine *engine, struct RenderLayer *render_layer, const struct Depsgraph *depsgraph, const rcti *rect)
 
void GPENCIL_render_to_image (void *vedata, struct RenderEngine *engine, struct RenderLayer *render_layer, const rcti *rect)
 
void gpencil_light_pool_free (void *storage)
 
void gpencil_material_pool_free (void *storage)
 
GPENCIL_ViewLayerDataGPENCIL_view_layer_data_ensure (void)
 

Variables

DrawEngineType draw_engine_gpencil_type
 

Macro Definition Documentation

◆ GP_LIGHT

#define GP_LIGHT

Definition at line 22 of file gpencil_engine.h.

◆ GP_MAX_MASKBITS

◆ GPENCIL_PIXEL_FACTOR

◆ GPENCIL_VBO_BLOCK_SIZE

#define GPENCIL_VBO_BLOCK_SIZE   128

Definition at line 45 of file gpencil_engine.h.

Typedef Documentation

◆ GPENCIL_Data

typedef struct GPENCIL_Data GPENCIL_Data

◆ GPENCIL_FramebufferList

typedef struct GPENCIL_FramebufferList GPENCIL_FramebufferList

◆ GPENCIL_LightPool

typedef struct GPENCIL_LightPool GPENCIL_LightPool

◆ GPENCIL_MaterialPool

typedef struct GPENCIL_MaterialPool GPENCIL_MaterialPool

◆ GPENCIL_PassList

typedef struct GPENCIL_PassList GPENCIL_PassList

◆ GPENCIL_PrivateData

typedef struct GPENCIL_PrivateData GPENCIL_PrivateData

◆ GPENCIL_StorageList

typedef struct GPENCIL_StorageList GPENCIL_StorageList

◆ GPENCIL_TextureList

typedef struct GPENCIL_TextureList GPENCIL_TextureList

◆ GPENCIL_tLayer

typedef struct GPENCIL_tLayer GPENCIL_tLayer

◆ GPENCIL_tObject

typedef struct GPENCIL_tObject GPENCIL_tObject

◆ GPENCIL_tVfx

typedef struct GPENCIL_tVfx GPENCIL_tVfx

◆ GPENCIL_ViewLayerData

typedef struct GPENCIL_ViewLayerData GPENCIL_ViewLayerData

Function Documentation

◆ GPENCIL_antialiasing_draw()

◆ GPENCIL_antialiasing_init()

void GPENCIL_antialiasing_init ( struct GPENCIL_Data * vedata)

Definition at line 15 of file gpencil_antialiasing.cc.

References AREATEX_HEIGHT, AREATEX_WIDTH, areaTexBytes, GPENCIL_PrivateData::color_tx, draw_engine_gpencil_type, GPENCIL_PrivateData::draw_wireframe, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_clear_framebuffer(), DRW_shgroup_create(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_vec4_copy(), DRW_STATE_BLEND_CUSTOM, DRW_STATE_WRITE_COLOR, DRW_texture_pool_query_2d_ex(), DRW_viewport_invert_size_get(), DRW_viewport_size_get(), GPENCIL_Data::fbl, GPENCIL_shader_antialiasing(), GPU_COLOR_BIT, GPU_DATA_UBYTE, GPU_framebuffer_ensure_config, GPU_R8, GPU_RG8, GPU_RGBA8, GPU_texture_create_2d(), GPU_texture_filter_mode(), GPU_texture_update(), GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_SHADER_READ, Scene::grease_pencil_settings, GPENCIL_StorageList::pd, GPENCIL_Data::psl, GPENCIL_PrivateData::reveal_tx, GPENCIL_PrivateData::scene, SEARCHTEX_HEIGHT, SEARCHTEX_WIDTH, searchTexBytes, GPENCIL_PrivateData::simplify_antialias, GPENCIL_TextureList::smaa_area_tx, GPENCIL_FramebufferList::smaa_edge_fb, GPENCIL_PassList::smaa_edge_ps, GPENCIL_PrivateData::smaa_edge_tx, GPENCIL_PassList::smaa_resolve_ps, GPENCIL_TextureList::smaa_search_tx, SceneGpencil::smaa_threshold, GPENCIL_FramebufferList::smaa_weight_fb, GPENCIL_PassList::smaa_weight_ps, GPENCIL_PrivateData::smaa_weight_tx, GPENCIL_Data::stl, and GPENCIL_Data::txl.

Referenced by GPENCIL_cache_finish().

◆ gpencil_batch_cache_get()

struct GpencilBatchCache * gpencil_batch_cache_get ( struct Object * ob,
int cfra )

◆ GPENCIL_cache_finish()

◆ GPENCIL_cache_init()

void GPENCIL_cache_init ( void * vedata)

Definition at line 179 of file gpencil_engine_c.cc.

References CameraDOFSettings::aperture_fstop, BKE_camera_object_dof_distance(), BKE_camera_sensor_size(), CAM_DOF_ENABLED, GPENCIL_PrivateData::camera, GPENCIL_PrivateData::cfra, CTX_wm_manager(), Object::data, DEG_get_ctime(), DRWContextState::depsgraph, GPENCIL_PrivateData::depth_tx, GPENCIL_PrivateData::do_fast_drawing, GPENCIL_PrivateData::do_onion, Camera::dof, GPENCIL_PrivateData::dof_params, DRW_context_state_get(), DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_uniform_bool(), DRW_shgroup_uniform_texture_ref(), DRW_shgroup_uniform_vec4(), DRW_STATE_DEPTH_LESS, DRW_STATE_LOGIC_INVERT, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_texture_ensure_2d(), DRW_TEXTURE_FREE_SAFE, DRW_viewport_size_get(), ED_screen_animation_playing(), DRWContextState::evil_C, fabsf, GPENCIL_PrivateData::fade_3d_object_opacity, GPENCIL_PrivateData::fade_gp_object_opacity, GPENCIL_PrivateData::fade_layer_opacity, GPENCIL_Data::fbl, GPENCIL_PrivateData::fill_batch, CameraDOFSettings::flag, View3D::flag2, View3D::gp_flag, View3DOverlay::gpencil_fade_layer, View3DOverlay::gpencil_paper_opacity, GPENCIL_shader_depth_merge_get(), GPENCIL_shader_mask_invert_get(), GPENCIL_SIMPLIFY_AA, GPENCIL_SIMPLIFY_FILL, GPENCIL_SIMPLIFY_FX, View3DOverlay::gpencil_vertex_paint_opacity, GPU_DEPTH24_STENCIL8, GPU_framebuffer_ensure_config, GPU_FRAMEBUFFER_FREE_SAFE, GPU_R11F_G11F_B10F, int, GPENCIL_PrivateData::is_render, GPENCIL_PrivateData::is_stroke_order_3d, GPENCIL_PrivateData::is_viewport, Camera::lens, GPENCIL_PassList::mask_invert_ps, GPENCIL_PassList::merge_depth_ps, OB_CAMERA, OB_RENDER, DRWContextState::obact, GPENCIL_PrivateData::obact, GPENCIL_PrivateData::object_bound_mat, View3D::overlay, GPENCIL_StorageList::pd, GPENCIL_PrivateData::playing, GPENCIL_Data::psl, DRWContextState::rv3d, GPENCIL_PrivateData::sbuffer_gpd, GPENCIL_PrivateData::sbuffer_layer, GPENCIL_PrivateData::sbuffer_stroke, DRWContextState::scene, Camera::sensor_fit, Camera::sensor_x, Camera::sensor_y, View3D::shading, GPENCIL_PrivateData::simplify_antialias, GPENCIL_PrivateData::simplify_fill, GPENCIL_PrivateData::simplify_fx, GPENCIL_PrivateData::snapshot_buffer_dirty, GPENCIL_TextureList::snapshot_color_tx, GPENCIL_TextureList::snapshot_depth_tx, GPENCIL_FramebufferList::snapshot_fb, GPENCIL_TextureList::snapshot_reveal_tx, state, GPENCIL_Data::stl, GPENCIL_PrivateData::stroke_batch, GPENCIL_Data::txl, Object::type, View3DShading::type, GPENCIL_PrivateData::use_layer_fb, GPENCIL_PrivateData::use_mask_fb, GPENCIL_PrivateData::use_object_fb, GPENCIL_PrivateData::use_signed_fb, DRWContextState::v3d, V3D_GP_FADE_NOACTIVE_GPENCIL, V3D_GP_FADE_NOACTIVE_LAYERS, V3D_GP_FADE_OBJECTS, V3D_GP_SHOW_ONION_SKIN, V3D_HIDE_OVERLAYS, GPENCIL_PrivateData::vertex_paint_opacity, and RegionView3D::viewcamtexcofac.

Referenced by GPENCIL_render_to_image().

◆ GPENCIL_cache_populate()

◆ GPENCIL_draw_scene()

◆ GPENCIL_engine_init()

void GPENCIL_engine_init ( void * vedata)

Definition at line 50 of file gpencil_engine_c.cc.

References BLI_memblock_clear(), GPENCIL_PrivateData::camera, View3D::camera, GPENCIL_PrivateData::camera_pos, GPENCIL_PrivateData::camera_z_axis, GPENCIL_PrivateData::camera_z_offset, View3DShading::color_type, copy_v3_fl(), copy_v3_v3(), DefaultFramebufferList::default_fb, DefaultTextureList::depth, dot_v3v3(), GPENCIL_PrivateData::draw_depth_only, GPENCIL_PrivateData::draw_wireframe, DRW_context_state_get(), DRW_state_is_fbo(), DRW_TEX_WRAP, DRW_texture_create_2d(), DRW_view_viewmat_get(), DRW_viewport_framebuffer_list_get(), DRW_viewport_texture_list_get(), GPENCIL_TextureList::dummy_texture, GPENCIL_PrivateData::dummy_tx, GPENCIL_Data::fbl, GPENCIL_PrivateData::first, View3D::flag2, GPENCIL_PrivateData::global_light_pool, View3D::gp_flag, GPENCIL_PrivateData::gp_layer_pool, GPENCIL_ViewLayerData::gp_layer_pool, GPENCIL_PrivateData::gp_light_pool, GPENCIL_ViewLayerData::gp_light_pool, GPENCIL_PrivateData::gp_maskbit_pool, GPENCIL_ViewLayerData::gp_maskbit_pool, GPENCIL_PrivateData::gp_material_pool, GPENCIL_ViewLayerData::gp_material_pool, GPENCIL_PrivateData::gp_object_pool, GPENCIL_ViewLayerData::gp_object_pool, GPENCIL_PrivateData::gp_vfx_pool, GPENCIL_ViewLayerData::gp_vfx_pool, gpencil_light_ambient_add(), gpencil_light_pool_add(), gpencil_light_pool_free(), gpencil_material_pool_free(), GPENCIL_view_layer_data_ensure(), GPU_RGBA8, GPENCIL_PrivateData::is_render, GPENCIL_PrivateData::is_viewport, GPENCIL_PrivateData::last, GPENCIL_PrivateData::last_light_pool, GPENCIL_PrivateData::last_material_pool, MEM_callocN, Object::mode, OB_MODE_VERTEX_GREASE_PENCIL, OB_RENDER, OB_SOLID, OB_WIRE, DRWContextState::obact, GPENCIL_StorageList::pd, RegionView3D::persp, GPENCIL_TextureList::render_depth_tx, GPENCIL_FramebufferList::render_fb, DRWContextState::rv3d, RV3D_CAMOB, GPENCIL_PrivateData::sbuffer_tobjects, DRWContextState::scene, GPENCIL_PrivateData::scene, GPENCIL_PrivateData::scene_depth_tx, GPENCIL_PrivateData::scene_fb, GPENCIL_PrivateData::shadeless_light_pool, View3D::shading, View3DShading::single_color, GPENCIL_Data::stl, View3DShading::studiolight_intensity, GPENCIL_PrivateData::tobjects, GPENCIL_PrivateData::tobjects_infront, GPENCIL_Data::txl, View3DShading::type, GPENCIL_PrivateData::use_lighting, GPENCIL_PrivateData::use_lights, GPENCIL_PrivateData::use_multiedit_lines_only, DRWContextState::v3d, GPENCIL_PrivateData::v3d, GPENCIL_PrivateData::v3d_color_type, V3D_GP_SHOW_MULTIEDIT_LINES, V3D_HIDE_OVERLAYS, V3D_SHADING_VERTEX_COLOR, GPENCIL_PrivateData::v3d_single_color, V3D_USES_SCENE_LIGHTS, V3D_USES_SCENE_WORLD, DRWContextState::view_layer, GPENCIL_PrivateData::view_layer, Scene::world, XRAY_ALPHA, GPENCIL_PrivateData::xray_alpha, and XRAY_ENABLED.

Referenced by GPENCIL_render_to_image().

◆ 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_light_ambient_add()

void gpencil_light_ambient_add ( GPENCIL_LightPool * lightpool,
const float color[3] )

◆ gpencil_light_pool_add()

◆ gpencil_light_pool_create()

GPENCIL_LightPool * gpencil_light_pool_create ( GPENCIL_PrivateData * pd,
Object * ob )

Creates a single pool containing all lights assigned (light linked) for a given object.

Definition at line 415 of file gpencil_draw_data.cc.

References gpencil_light_pool_add(), and GPENCIL_PrivateData::last_light_pool.

◆ gpencil_light_pool_free()

void gpencil_light_pool_free ( void * storage)

◆ gpencil_light_pool_populate()

◆ gpencil_material_pool_create()

GPENCIL_MaterialPool * gpencil_material_pool_create ( GPENCIL_PrivateData * pd,
Object * ob,
int * ofs,
bool is_vertex_mode )

Creates a linked list of material pool containing all materials assigned for a given object. We merge the material pools together if object does not contain a huge amount of materials. Also return an offset to the first material of the object in the UBO.

Definition at line 160 of file gpencil_draw_data.cc.

References MaterialGPencilStyle::alignment_mode, gpMaterial::alignment_rot, MaterialGPencilStyle::alignment_rotation, BKE_gpencil_material_settings(), BKE_object_material_count_eval(), copy_v4_v4(), cosf, gpMaterial::fill_color, gpMaterial::fill_mix_color, MaterialGPencilStyle::fill_rgba, MaterialGPencilStyle::fill_style, gpMaterial::fill_texture_mix, gpMaterial::fill_uv_offset, gpMaterial::fill_uv_rot_scale, gpMaterial::flag, MaterialGPencilStyle::flag, GP_FILL_GRADIENT_RADIAL, GP_FILL_GRADIENT_USE, GP_FILL_HOLDOUT, GP_FILL_TEXTURE_CLIP, GP_FILL_TEXTURE_PREMUL, GP_FILL_TEXTURE_USE, GP_MATERIAL_DISABLE_STENCIL, GP_MATERIAL_FILL_STYLE_GRADIENT, GP_MATERIAL_FILL_STYLE_TEXTURE, GP_MATERIAL_FLIP_FILL, GP_MATERIAL_FOLLOW_FIXED, GP_MATERIAL_FOLLOW_OBJ, GP_MATERIAL_FOLLOW_PATH, GP_MATERIAL_GRADIENT_RADIAL, GP_MATERIAL_IS_FILL_HOLDOUT, GP_MATERIAL_IS_STROKE_HOLDOUT, GP_MATERIAL_MODE_DOT, GP_MATERIAL_MODE_LINE, GP_MATERIAL_STROKE_STYLE_TEXTURE, GP_MATERIAL_TEX_CLAMP, GP_STROKE_ALIGNMENT_FIXED, GP_STROKE_ALIGNMENT_OBJECT, GP_STROKE_ALIGNMENT_STROKE, GP_STROKE_DOTS, GP_STROKE_HOLDOUT, GP_STROKE_OVERLAP, GP_STROKE_TEXTURE_PREMUL, GP_STROKE_TEXTURE_USE, gpencil_image_texture_get(), GPENCIL_MATERIAL_BUFFER_LEN, gpencil_material_pool_add(), gpencil_uv_transform_get(), gpencil_viewport_material_overrides(), MaterialGPencilStyle::gradient_type, MaterialGPencilStyle::ima, GPENCIL_PrivateData::last_material_pool, View3DShading::light, max_ii(), MaterialGPencilStyle::mix_factor, MaterialGPencilStyle::mix_rgba, MaterialGPencilStyle::mix_stroke_factor, MaterialGPencilStyle::mode, View3D::shading, MaterialGPencilStyle::sima, sinf, gpMaterial::stroke_color, MaterialGPencilStyle::stroke_rgba, MaterialGPencilStyle::stroke_style, gpMaterial::stroke_texture_mix, gpMaterial::stroke_u_scale, swap_v4_v4(), MaterialGPencilStyle::texture_angle, MaterialGPencilStyle::texture_offset, MaterialGPencilStyle::texture_pixsize, MaterialGPencilStyle::texture_scale, GPENCIL_MaterialPool::used_count, GPENCIL_PrivateData::v3d, GPENCIL_PrivateData::v3d_color_type, V3D_LIGHTING_STUDIO, and V3D_SHADING_VERTEX_COLOR.

Referenced by grease_pencil_object_cache_populate().

◆ gpencil_material_pool_free()

void gpencil_material_pool_free ( void * storage)

◆ gpencil_material_resources_get()

void gpencil_material_resources_get ( GPENCIL_MaterialPool * first_pool,
int mat_id,
struct GPUTexture ** r_tex_stroke,
struct GPUTexture ** r_tex_fill,
struct GPUUniformBuf ** r_ubo_mat )

◆ gpencil_object_cache_add()

◆ gpencil_object_cache_sort()

◆ GPENCIL_render_init()

void GPENCIL_render_init ( struct GPENCIL_Data * ved,
struct RenderEngine * engine,
struct RenderLayer * render_layer,
const struct Depsgraph * depsgraph,
const rcti * rect )

Initialize render data.

◆ GPENCIL_render_to_image()

◆ GPENCIL_shader_antialiasing()

struct GPUShader * GPENCIL_shader_antialiasing ( int stage)

◆ GPENCIL_shader_depth_merge_get()

struct GPUShader * GPENCIL_shader_depth_merge_get ( void )

Definition at line 107 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by GPENCIL_cache_init().

◆ GPENCIL_shader_free()

void GPENCIL_shader_free ( void )

Definition at line 51 of file gpencil_shader_c.cc.

References DRW_SHADER_FREE_SAFE, and g_shaders.

Referenced by GPENCIL_engine_free().

◆ GPENCIL_shader_fx_blur_get()

struct GPUShader * GPENCIL_shader_fx_blur_get ( void )

Definition at line 117 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_blur().

◆ GPENCIL_shader_fx_colorize_get()

struct GPUShader * GPENCIL_shader_fx_colorize_get ( void )

Definition at line 125 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_colorize().

◆ GPENCIL_shader_fx_composite_get()

struct GPUShader * GPENCIL_shader_fx_composite_get ( void )

Definition at line 133 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_cache_populate().

◆ GPENCIL_shader_fx_glow_get()

struct GPUShader * GPENCIL_shader_fx_glow_get ( void )

Definition at line 141 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_glow().

◆ GPENCIL_shader_fx_pixelize_get()

struct GPUShader * GPENCIL_shader_fx_pixelize_get ( void )

Definition at line 149 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_pixelize().

◆ GPENCIL_shader_fx_rim_get()

struct GPUShader * GPENCIL_shader_fx_rim_get ( void )

Definition at line 157 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_rim().

◆ GPENCIL_shader_fx_shadow_get()

struct GPUShader * GPENCIL_shader_fx_shadow_get ( void )

Definition at line 165 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by gpencil_vfx_shadow().

◆ GPENCIL_shader_fx_transform_get()

struct GPUShader * GPENCIL_shader_fx_transform_get ( void )

◆ GPENCIL_shader_geometry_get()

struct GPUShader * GPENCIL_shader_geometry_get ( void )

◆ GPENCIL_shader_layer_blend_get()

struct GPUShader * GPENCIL_shader_layer_blend_get ( void )

◆ GPENCIL_shader_mask_invert_get()

struct GPUShader * GPENCIL_shader_mask_invert_get ( void )

Definition at line 99 of file gpencil_shader_c.cc.

References g_shaders, and GPU_shader_create_from_info_name().

Referenced by GPENCIL_cache_init().

◆ gpencil_vfx_cache_populate()

void gpencil_vfx_cache_populate ( GPENCIL_Data * vedata,
Object * ob,
GPENCIL_tObject * tgp_ob,
const bool is_edit_mode )

Definition at line 588 of file gpencil_shader_fx.cc.

References GPENCIL_PrivateData::color_layer_tx, GPENCIL_PrivateData::color_object_tx, GPENCIL_tObject::do_mat_holdout, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create_sub(), DRW_shgroup_state_disable(), DRW_shgroup_state_enable(), DRW_shgroup_uniform_int_copy(), DRW_STATE_BLEND_ADD_FULL, DRW_STATE_BLEND_MUL, DRW_STATE_WRITE_COLOR, effect_is_active(), eShaderFxType_Blur, eShaderFxType_Colorize, eShaderFxType_Flip, eShaderFxType_Glow, eShaderFxType_Pixel, eShaderFxType_Rim, eShaderFxType_Shadow, eShaderFxType_Swirl, eShaderFxType_Wave, GPENCIL_Data::fbl, GPENCIL_tObject::first, GPENCIL_FramebufferList::gpencil_fb, GPENCIL_shader_fx_composite_get(), gpencil_vfx_blur(), gpencil_vfx_colorize(), gpencil_vfx_flip(), gpencil_vfx_glow(), gpencil_vfx_pass_create(), gpencil_vfx_pixelize(), gpencil_vfx_rim(), gpencil_vfx_shadow(), gpencil_vfx_swirl(), gpencil_vfx_wave(), GPENCIL_PrivateData::is_viewport, GPENCIL_FramebufferList::layer_fb, LISTBASE_FOREACH, GPENCIL_FramebufferList::object_fb, GPENCIL_StorageList::pd, gpIterVfxData::pd, GPENCIL_PrivateData::reveal_layer_tx, GPENCIL_PrivateData::reveal_object_tx, Object::shader_fx, GPENCIL_PrivateData::simplify_fx, gpIterVfxData::source_color_tx, gpIterVfxData::source_fb, gpIterVfxData::source_reveal_tx, state, GPENCIL_Data::stl, gpIterVfxData::target_color_tx, gpIterVfxData::target_fb, gpIterVfxData::target_reveal_tx, gpIterVfxData::tgp_ob, GPENCIL_PrivateData::use_layer_fb, GPENCIL_PrivateData::use_object_fb, and GPENCIL_tObject::vfx.

Referenced by GPENCIL_cache_populate().

◆ GPENCIL_view_layer_data_ensure()

◆ grease_pencil_layer_cache_add()

GPENCIL_tLayer * grease_pencil_layer_cache_add ( GPENCIL_PrivateData * pd,
const Object * ob,
const blender::bke::greasepencil::Layer & layer,
int onion_id,
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,
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().

Variable Documentation

◆ draw_engine_gpencil_type