Blender V4.5
blender::draw::gpencil Namespace Reference

Classes

struct  Engine
 
struct  GPENCIL_Data
 
struct  Instance
 
struct  LightPool
 
struct  MaterialPool
 
class  ShaderCache
 
struct  tLayer
 
struct  tObject
 
struct  tVfx
 

Typedefs

using StaticShader = gpu::StaticShader
 

Functions

static float erfinv_approx (const float x)
 
struct GpencilBatchCache * gpencil_batch_cache_get (struct Object *ob, int cfra)
 
static void remap_depth (const View &view, MutableSpan< float > pix_z)
 
static void render_set_view (RenderEngine *engine, const Depsgraph *depsgraph, const float2 aa_offset=float2{0.0f})
 
static void render_init_buffers (const DRWContext *draw_ctx, Instance &inst, RenderEngine *engine, RenderLayer *render_layer, const rcti *rect, const bool use_separated_pass)
 
static void render_result_z (const DRWContext *draw_ctx, RenderLayer *rl, const char *viewname, Instance &instance, const rcti *rect)
 
static void render_result_combined (RenderLayer *rl, const char *viewname, Instance &instance, const rcti *rect)
 
static void render_result_separated_pass (float *data, Instance &instance, const rcti *rect)
 
static void render_frame (RenderEngine *engine, Depsgraph *depsgraph, const DRWContext *draw_ctx, RenderLayer *render_layer, const rcti rect, gpencil::Instance &inst, Manager &manager, const bool separated_pass)
 
static bool effect_is_active (ShaderFxData *fx, bool is_edit, bool is_viewport)
 
Object
tObjectgpencil_object_cache_add (Instance *inst, Object *ob, const bool is_stroke_order_3d, const Bounds< float3 > bounds)
 
static int gpencil_tobject_dist_sort (const void *a, const void *b)
 
void gpencil_object_cache_sort (Instance *inst)
 
Layer
static float grease_pencil_layer_final_opacity_get (const Instance *inst, const Object *ob, const GreasePencil &grease_pencil, const bke::greasepencil::Layer &layer)
 
static float4 grease_pencil_layer_final_tint_and_alpha_get (const Instance *inst, const GreasePencil &grease_pencil, const int onion_id, float *r_alpha)
 
static void grease_pencil_layer_random_color_get (const Object *ob, const bke::greasepencil::Layer &layer, float r_color[3])
 
tLayergrease_pencil_layer_cache_get (tObject *tgp_ob, int layer_id, const bool skip_onion)
 
tLayergrease_pencil_layer_cache_add (Instance *inst, const Object *ob, const bke::greasepencil::Layer &layer, const int onion_id, const bool is_used_as_mask, tObject *tgp_ob)
 
Material
static MaterialPoolgpencil_material_pool_add (Instance *inst)
 
static GPUTexture * gpencil_image_texture_get (::Image *image, bool *r_alpha_premult)
 
static void gpencil_uv_transform_get (const float ofs[2], const float scale[2], const float rotation, float r_rot_scale[2][2], float r_offset[2])
 
static void gpencil_shade_color (float color[3])
 
static MaterialGPencilStylegpencil_viewport_material_overrides (Instance *inst, Object *ob, int color_type, MaterialGPencilStyle *gp_style, const eV3DShadingLightingMode lighting_mode)
 
MaterialPoolgpencil_material_pool_create (Instance *inst, Object *ob, int *ofs, const bool is_vertex_mode)
 
void gpencil_material_resources_get (MaterialPool *first_pool, int mat_id, GPUTexture **r_tex_stroke, GPUTexture **r_tex_fill, GPUUniformBuf **r_ubo_mat)
 
Lights
LightPoolgpencil_light_pool_add (Instance *inst)
 
void gpencil_light_ambient_add (LightPool *lightpool, const float color[3])
 
static float light_power_get (const Light *la)
 
void gpencil_light_pool_populate (LightPool *lightpool, Object *ob)
 
LightPoolgpencil_light_pool_create (Instance *inst, Object *)
 

Typedef Documentation

◆ StaticShader

Function Documentation

◆ effect_is_active()

static bool blender::draw::gpencil::effect_is_active ( ShaderFxData * fx,
bool is_edit,
bool is_viewport )
static

◆ erfinv_approx()

static float blender::draw::gpencil::erfinv_approx ( const float x)
static

◆ gpencil_batch_cache_get()

struct GpencilBatchCache * blender::draw::gpencil::gpencil_batch_cache_get ( struct Object * ob,
int cfra )

◆ gpencil_image_texture_get()

static GPUTexture * blender::draw::gpencil::gpencil_image_texture_get ( ::Image * image,
bool * r_alpha_premult )
static

◆ gpencil_light_ambient_add()

void blender::draw::gpencil::gpencil_light_ambient_add ( LightPool * lightpool,
const float color[3] )

◆ gpencil_light_pool_add()

◆ gpencil_light_pool_create()

LightPool * blender::draw::gpencil::gpencil_light_pool_create ( Instance * inst,
Object * ob )

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

Definition at line 417 of file gpencil_draw_data.cc.

References gpencil_light_pool_add(), and blender::draw::gpencil::Instance::last_light_pool.

◆ gpencil_light_pool_populate()

◆ gpencil_material_pool_add()

◆ gpencil_material_pool_create()

MaterialPool * blender::draw::gpencil::gpencil_material_pool_create ( Instance * inst,
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 163 of file gpencil_draw_data.cc.

References MaterialGPencilStyle::alignment_mode, gpMaterial::alignment_rot, MaterialGPencilStyle::alignment_rotation, BKE_gpencil_material_settings(), BKE_object_material_used_with_fallback_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_FLAG_NONE, 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, blender::draw::gpencil::Instance::last_material_pool, View3DShading::light, MaterialGPencilStyle::mix_factor, MaterialGPencilStyle::mix_rgba, MaterialGPencilStyle::mix_stroke_factor, MaterialGPencilStyle::mode, blender::draw::gpencil::MaterialPool::next, 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, blender::draw::gpencil::MaterialPool::used_count, blender::draw::gpencil::Instance::v3d, blender::draw::gpencil::Instance::v3d_color_type, V3D_LIGHTING_STUDIO, and V3D_SHADING_VERTEX_COLOR.

◆ gpencil_material_resources_get()

void blender::draw::gpencil::gpencil_material_resources_get ( MaterialPool * first_pool,
int mat_id,
GPUTexture ** r_tex_stroke,
GPUTexture ** r_tex_fill,
GPUUniformBuf ** r_ubo_mat )

◆ gpencil_object_cache_add()

◆ gpencil_object_cache_sort()

◆ gpencil_shade_color()

static void blender::draw::gpencil::gpencil_shade_color ( float color[3])
static

Definition at line 77 of file gpencil_draw_data.cc.

References add_v3_fl(), and clamp_v3().

Referenced by gpencil_viewport_material_overrides().

◆ gpencil_tobject_dist_sort()

static int blender::draw::gpencil::gpencil_tobject_dist_sort ( const void * a,
const void * b )
static

Definition at line 132 of file gpencil_cache_utils.cc.

References b, and blender::draw::gpencil::tObject::camera_z.

Referenced by gpencil_object_cache_sort().

◆ gpencil_uv_transform_get()

static void blender::draw::gpencil::gpencil_uv_transform_get ( const float ofs[2],
const float scale[2],
const float rotation,
float r_rot_scale[2][2],
float r_offset[2] )
static

◆ gpencil_viewport_material_overrides()

◆ grease_pencil_layer_cache_add()

tLayer * blender::draw::gpencil::grease_pencil_layer_cache_add ( Instance * inst,
const Object * ob,
const bke::greasepencil::Layer & layer,
const int onion_id,
const bool is_used_as_mask,
tObject * tgp_ob )

Definition at line 293 of file gpencil_cache_utils.cc.

References blender::draw::detail::SubPassVector< T, block_size >::append_and_get_index(), GreasePencilLayer::base, blender::draw::detail::PassBase< DrawCommandBufType >::bind_texture(), GreasePencilLayer::blend_mode, blender::draw::gpencil::tLayer::blend_ps, BLI_BITMAP_SET, BLI_bitmap_set_all(), BLI_LINKS_APPEND, BLI_listbase_is_empty(), BLI_memblock_alloc(), blender::StringRefNull::c_str(), blender::draw::gpencil::Instance::color_layer_tx, copy_v4_v4(), blender::draw::detail::PassBase< DrawCommandBufType >::draw_procedural(), DRW_object_get_data_for_drawing(), 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, blender::draw::gpencil::Instance::dummy_depth, blender::draw::gpencil::Instance::dummy_tx, ELEM, GreasePencilLayerTreeNode::flag, blender::draw::gpencil::tLayer::geom_ps, blender::draw::gpencil::ShaderCache::get(), 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, blender::draw::gpencil::Instance::gp_layer_pool, GP_LAYER_TREE_NODE_DISABLE_MASKS_IN_VIEWLAYER, blender::draw::gpencil::Instance::gp_maskbit_pool, GP_MAX_MASKBITS, GPU_PRIM_TRIS, grease_pencil_layer_final_opacity_get(), grease_pencil_layer_final_tint_and_alpha_get(), grease_pencil_layer_random_color_get(), blender::draw::detail::Pass< DrawCommandBufType >::init(), blender::math::invert(), blender::draw::gpencil::tObject::is_drawmode3d, blender::StringRefBase::is_empty(), blender::draw::gpencil::tLayer::is_onion, blender::draw::gpencil::Instance::is_render, blender::draw::gpencil::tLayer::layer_id, blender::draw::gpencil::tObject::layers, LISTBASE_FOREACH, mask(), blender::draw::gpencil::tLayer::mask_bits, blender::draw::gpencil::tLayer::mask_invert_bits, blender::draw::gpencil::Instance::mask_tx, GreasePencilLayer::masks, Object::mode, ViewLayer::name, node, OB_DRAW_IN_FRONT, OB_MODE_PAINT_GREASE_PENCIL, OB_MODE_VERTEX_PAINT, blender::draw::gpencil::tObject::plane_normal, blender::draw::detail::PassBase< DrawCommandBufType >::push_constant(), blender::draw::gpencil::Instance::reveal_layer_tx, blender::draw::gpencil::Instance::scene_depth_tx, blender::draw::detail::PassBase< DrawCommandBufType >::shader_set(), state, blender::draw::detail::PassBase< DrawCommandBufType >::state_set(), blender::draw::detail::PassBase< DrawCommandBufType >::state_stencil(), STREQ, blender::draw::gpencil::Instance::use_layer_fb, blender::draw::gpencil::Instance::use_mask_fb, blender::draw::gpencil::Instance::use_signed_fb, blender::draw::gpencil::Instance::v3d_color_type, V3D_SHADING_RANDOM_COLOR, V3D_SHADING_VERTEX_COLOR, blender::draw::gpencil::Instance::vertex_paint_opacity, blender::draw::gpencil::Instance::view_layer, blender::bke::greasepencil::Layer::view_layer_name(), and blender::draw::gpencil::Instance::xray_alpha.

◆ grease_pencil_layer_cache_get()

tLayer * blender::draw::gpencil::grease_pencil_layer_cache_get ( tObject * tgp_ob,
int layer_id,
const bool skip_onion )

◆ grease_pencil_layer_final_opacity_get()

static float blender::draw::gpencil::grease_pencil_layer_final_opacity_get ( const Instance * inst,
const Object * ob,
const GreasePencil & grease_pencil,
const bke::greasepencil::Layer & layer )
static

◆ grease_pencil_layer_final_tint_and_alpha_get()

◆ grease_pencil_layer_random_color_get()

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

◆ light_power_get()

static float blender::draw::gpencil::light_power_get ( const Light * la)
static

Definition at line 361 of file gpencil_draw_data.cc.

References ELEM, LA_AREA, LA_LOCAL, LA_SPOT, and M_PI.

Referenced by gpencil_light_pool_populate().

◆ remap_depth()

static void blender::draw::gpencil::remap_depth ( const View & view,
MutableSpan< float > pix_z )
static

Definition at line 29 of file gpencil_render.cc.

References clamp_f(), fabsf, and view.

Referenced by render_init_buffers().

◆ render_frame()

◆ render_init_buffers()

◆ render_result_combined()

◆ render_result_separated_pass()

◆ render_result_z()

◆ render_set_view()

static void blender::draw::gpencil::render_set_view ( RenderEngine * engine,
const Depsgraph * depsgraph,
const float2 aa_offset = float2{0.0f} )
static