Blender V5.0
MOD_lineart.hh File Reference
#include "BLI_linklist.h"
#include "BLI_math_matrix_types.hh"
#include "BLI_math_vector.h"
#include "BLI_set.hh"
#include "BLI_threads.h"
#include "ED_grease_pencil.hh"
#include <algorithm>
#include <cmath>

Go to the source code of this file.

Classes

struct  LineartModifierRuntime
struct  LineartStaticMemPoolNode
struct  LineartStaticMemPool
struct  LineartTriangleAdjacent
struct  LineartTriangle
struct  LineartTriangleThread
struct  LineartElementLinkNode
struct  LineartEdgeSegment
struct  LineartShadowEdge
struct  LineartShadowSegment
struct  LineartVert
struct  LineartEdge
struct  LineartEdgeChain
struct  LineartEdgeChainItem
struct  LineartChainRegisterEntry
struct  LineartAdjacentEdge
struct  LineartPendingEdges
struct  LineartData
struct  LineartData::_qtree
struct  LineartData::_geom
struct  LineartData::_conf
struct  LineartCache
struct  LineartRenderTaskInfo
struct  LineartObjectInfo
struct  LineartObjectLoadTaskInfo
struct  LineartBoundingArea

Namespaces

namespace  blender
namespace  blender::bke
namespace  blender::bke::greasepencil

Macros

#define LRT_TILE_SPLITTING_TRIANGLE_LIMIT   100
#define LRT_TILE_EDGE_COUNT_INITIAL   32
#define DBL_TRIANGLE_LIM   1e-8
#define DBL_EDGE_LIM   1e-9
#define LRT_MEMORY_POOL_1MB   (1 << 20)
#define LRT_SHADOW_MASK_UNDEFINED   0
#define LRT_SHADOW_MASK_ILLUMINATED   (1 << 0)
#define LRT_SHADOW_MASK_SHADED   (1 << 1)
#define LRT_SHADOW_MASK_ENCLOSED_SHAPE   (1 << 2)
#define LRT_SHADOW_MASK_INHIBITED   (1 << 3)
#define LRT_SHADOW_SILHOUETTE_ERASED_GROUP   (1 << 4)
#define LRT_SHADOW_SILHOUETTE_ERASED_OBJECT   (1 << 5)
#define LRT_SHADOW_MASK_ILLUMINATED_SHAPE   (1 << 6)
#define LRT_SHADOW_TEST_SHAPE_BITS
#define LRT_THREAD_EDGE_COUNT   1000
#define LRT_OBINDEX_SHIFT   20
#define LRT_OBINDEX_LOWER   0x0FFFFF /* Lower 20 bits. */
#define LRT_OBINDEX_HIGHER   0xFFF00000 /* Higher 12 bits. */
#define LRT_EDGE_IDENTIFIER(obi, e)
#define LRT_LIGHT_CONTOUR_TARGET   0xFFFFFFFF
#define LRT_TILE(tile, r, c, CCount)
#define LRT_CLAMP(a, Min, Max)
#define LRT_MAX3_INDEX(a, b, c)
#define LRT_MIN3_INDEX(a, b, c)
#define LRT_MAX3_INDEX_ABC(x, y, z)
#define LRT_MIN3_INDEX_ABC(x, y, z)
#define DBL_LOOSER   1e-5
#define LRT_DOUBLE_CLOSE_LOOSER(a, b)
#define LRT_DOUBLE_CLOSE_ENOUGH(a, b)
#define LRT_DOUBLE_CLOSE_ENOUGH_TRI(a, b)
#define LRT_CLOSE_LOOSER_v3(a, b)
#define USE_VECTOR_LINE_INTERSECTION_IGN

Enumerations

enum  eLineArtElementNodeFlag { LRT_ELEMENT_IS_ADDITIONAL = (1 << 0) , LRT_ELEMENT_BORDER_ONLY = (1 << 1) , LRT_ELEMENT_NO_INTERSECTION = (1 << 2) , LRT_ELEMENT_INTERSECTION_DATA = (1 << 3) }
enum  eLineartShadowSegmentFlag { LRT_SHADOW_CASTED = 1 , LRT_SHADOW_FACING_LIGHT = 2 }
enum  eLineArtTileRecursiveLimit { LRT_TILE_RECURSIVE_PERSPECTIVE = 16 , LRT_TILE_RECURSIVE_ORTHO = 10 }
enum  eLineartShadowCameraType { LRT_SHADOW_CAMERA_DIRECTIONAL = 1 , LRT_SHADOW_CAMERA_POINT = 2 }
enum  eLineartTriangleFlags {
  LRT_CULL_DONT_CARE = 0 , LRT_CULL_USED = (1 << 0) , LRT_CULL_DISCARD = (1 << 1) , LRT_CULL_GENERATED = (1 << 2) ,
  LRT_TRIANGLE_INTERSECTION_ONLY = (1 << 3) , LRT_TRIANGLE_NO_INTERSECTION = (1 << 4) , LRT_TRIANGLE_MAT_BACK_FACE_CULLING = (1 << 5) , LRT_TRIANGLE_FORCE_INTERSECTION = (1 << 6)
}

Functions

 ENUM_OPERATORS (eLineArtElementNodeFlag, LRT_ELEMENT_INTERSECTION_DATA)
BLI_INLINE int lineart_intersect_seg_seg (const double a1[2], const double a2[2], const double b1[2], const double b2[2], double *r_ratio, bool *r_aligned)
BLI_INLINE int lineart_line_isec_2d_ignore_line2pos (const double a1[2], const double a2[2], const double b1[2], const double b2[2], double *r_a_ratio)
void MOD_lineart_destroy_render_data_v3 (GreasePencilLineartModifierData *lmd)
void MOD_lineart_chain_feature_lines (LineartData *ld)
void MOD_lineart_chain_split_for_fixed_occlusion (LineartData *ld)
void MOD_lineart_chain_connect (LineartData *ld)
void MOD_lineart_chain_discard_unused (LineartData *ld, float threshold, uint8_t max_occlusion)
void MOD_lineart_chain_clip_at_border (LineartData *ld)
void MOD_lineart_chain_split_angle (LineartData *ld, float angle_threshold_rad)
void MOD_lineart_smooth_chains (LineartData *ld, float tolerance)
void MOD_lineart_chain_offset_towards_camera (LineartData *ld, float dist, bool use_custom_camera)
void MOD_lineart_chain_find_silhouette_backdrop_objects (LineartData *ld)
int MOD_lineart_chain_count (const LineartEdgeChain *ec)
void MOD_lineart_chain_clear_picked_flag (LineartCache *lc)
void MOD_lineart_finalize_chains (LineartData *ld)
bool MOD_lineart_compute_feature_lines_v3 (Depsgraph *depsgraph, GreasePencilLineartModifierData &lmd, LineartCache **cached_result, bool enable_stroke_depth_offset)
LineartBoundingAreaMOD_lineart_get_parent_bounding_area (LineartData *ld, double x, double y)
LineartBoundingAreaMOD_lineart_get_bounding_area (LineartData *ld, double x, double y)
void MOD_lineart_gpencil_generate_v3 (const LineartCache *cache, const blender::float4x4 &mat, Depsgraph *depsgraph, blender::bke::greasepencil::Drawing &drawing, int8_t source_type, Object *source_object, Collection *source_collection, int level_start, int level_end, int mat_nr, int16_t edge_types, uchar mask_switches, uchar material_mask_bits, uchar intersection_mask, float thickness, float opacity, uchar shadow_selection, uchar silhouette_mode, const char *source_vgname, const char *vgname, int modifier_flags, int modifier_calculation_flags)
float MOD_lineart_chain_compute_length (LineartEdgeChain *ec)
LineartCacheMOD_lineart_init_cache ()
void MOD_lineart_clear_cache (LineartCache **lc)

Macro Definition Documentation

◆ DBL_EDGE_LIM

#define DBL_EDGE_LIM   1e-9

◆ DBL_LOOSER

#define DBL_LOOSER   1e-5

Definition at line 606 of file MOD_lineart.hh.

◆ DBL_TRIANGLE_LIM

#define DBL_TRIANGLE_LIM   1e-8

◆ LRT_CLAMP

#define LRT_CLAMP ( a,
Min,
Max )
Value:

Definition at line 596 of file MOD_lineart.hh.

◆ LRT_CLOSE_LOOSER_v3

#define LRT_CLOSE_LOOSER_v3 ( a,
b )
Value:
(LRT_DOUBLE_CLOSE_LOOSER(a[0], b[0]) && LRT_DOUBLE_CLOSE_LOOSER(a[1], b[1]) && \
LRT_DOUBLE_CLOSE_LOOSER(a[2], b[2]))
#define LRT_DOUBLE_CLOSE_LOOSER(a, b)

Definition at line 612 of file MOD_lineart.hh.

Referenced by lineart_shadow_finalize_shadow_edges_task().

◆ LRT_DOUBLE_CLOSE_ENOUGH

◆ LRT_DOUBLE_CLOSE_ENOUGH_TRI

#define LRT_DOUBLE_CLOSE_ENOUGH_TRI ( a,
b )
Value:
(((a) + DBL_TRIANGLE_LIM) >= (b) && ((a) - DBL_TRIANGLE_LIM) <= (b))
#define DBL_TRIANGLE_LIM

Definition at line 609 of file MOD_lineart.hh.

Referenced by lineart_intersect_seg_seg().

◆ LRT_DOUBLE_CLOSE_LOOSER

#define LRT_DOUBLE_CLOSE_LOOSER ( a,
b )
Value:
(((a) + DBL_LOOSER) >= (b) && ((a) - DBL_LOOSER) <= (b))
#define DBL_LOOSER

Definition at line 607 of file MOD_lineart.hh.

◆ LRT_EDGE_IDENTIFIER

#define LRT_EDGE_IDENTIFIER ( obi,
e )
Value:
(((uint64_t)(obi->obindex | (e->v1->index & LRT_OBINDEX_LOWER)) << 32) | \
(obi->obindex | (e->v2->index & LRT_OBINDEX_LOWER)))
#define LRT_OBINDEX_LOWER
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
unsigned long long int uint64_t

Definition at line 504 of file MOD_lineart.hh.

Referenced by lineart_geometry_object_load().

◆ LRT_LIGHT_CONTOUR_TARGET

#define LRT_LIGHT_CONTOUR_TARGET   0xFFFFFFFF

◆ LRT_MAX3_INDEX

#define LRT_MAX3_INDEX ( a,
b,
c )
Value:
(a > b ? (a > c ? 0 : (b > c ? 1 : 2)) : (b > c ? 1 : 2))

Definition at line 598 of file MOD_lineart.hh.

◆ LRT_MAX3_INDEX_ABC

#define LRT_MAX3_INDEX_ABC ( x,
y,
z )
Value:
(x > y ? (x > z ? a : (y > z ? b : c)) : (y > z ? b : c))
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
Definition btQuadWord.h:117

Definition at line 602 of file MOD_lineart.hh.

◆ LRT_MEMORY_POOL_1MB

#define LRT_MEMORY_POOL_1MB   (1 << 20)

◆ LRT_MIN3_INDEX

#define LRT_MIN3_INDEX ( a,
b,
c )
Value:
(a < b ? (a < c ? 0 : (b < c ? 1 : 2)) : (b < c ? 1 : 2))

Definition at line 600 of file MOD_lineart.hh.

◆ LRT_MIN3_INDEX_ABC

#define LRT_MIN3_INDEX_ABC ( x,
y,
z )
Value:
(x < y ? (x < z ? a : (y < z ? b : c)) : (y < z ? b : c))

Definition at line 604 of file MOD_lineart.hh.

◆ LRT_OBINDEX_HIGHER

◆ LRT_OBINDEX_LOWER

#define LRT_OBINDEX_LOWER   0x0FFFFF /* Lower 20 bits. */

◆ LRT_OBINDEX_SHIFT

#define LRT_OBINDEX_SHIFT   20

Definition at line 501 of file MOD_lineart.hh.

Referenced by lineart_object_load_single_instance().

◆ LRT_SHADOW_MASK_ENCLOSED_SHAPE

#define LRT_SHADOW_MASK_ENCLOSED_SHAPE   (1 << 2)

Definition at line 472 of file MOD_lineart.hh.

Referenced by lineart_edge_cut(), and lineart_shadow_register_enclosed_shapes().

◆ LRT_SHADOW_MASK_ILLUMINATED

#define LRT_SHADOW_MASK_ILLUMINATED   (1 << 0)

◆ LRT_SHADOW_MASK_ILLUMINATED_SHAPE

#define LRT_SHADOW_MASK_ILLUMINATED_SHAPE   (1 << 6)

Definition at line 476 of file MOD_lineart.hh.

Referenced by lineart_edge_cut(), and MOD_lineart_gpencil_generate_v3().

◆ LRT_SHADOW_MASK_INHIBITED

#define LRT_SHADOW_MASK_INHIBITED   (1 << 3)

Definition at line 473 of file MOD_lineart.hh.

Referenced by lineart_edge_cut().

◆ LRT_SHADOW_MASK_SHADED

#define LRT_SHADOW_MASK_SHADED   (1 << 1)

◆ LRT_SHADOW_MASK_UNDEFINED

#define LRT_SHADOW_MASK_UNDEFINED   0

Definition at line 469 of file MOD_lineart.hh.

Referenced by MOD_lineart_gpencil_generate_v3().

◆ LRT_SHADOW_SILHOUETTE_ERASED_GROUP

#define LRT_SHADOW_SILHOUETTE_ERASED_GROUP   (1 << 4)

◆ LRT_SHADOW_SILHOUETTE_ERASED_OBJECT

#define LRT_SHADOW_SILHOUETTE_ERASED_OBJECT   (1 << 5)

Definition at line 475 of file MOD_lineart.hh.

◆ LRT_SHADOW_TEST_SHAPE_BITS

#define LRT_SHADOW_TEST_SHAPE_BITS
Value:
#define LRT_SHADOW_MASK_INHIBITED
#define LRT_SHADOW_MASK_ILLUMINATED_SHAPE
#define LRT_SHADOW_MASK_ILLUMINATED
#define LRT_SHADOW_MASK_SHADED

Definition at line 478 of file MOD_lineart.hh.

Referenced by MOD_lineart_gpencil_generate_v3().

◆ LRT_THREAD_EDGE_COUNT

#define LRT_THREAD_EDGE_COUNT   1000

Controls how many edges a worker thread is processing at one request. There's no significant performance impact on choosing different values. Don't make it too small so that the worker thread won't request too many times.

Definition at line 487 of file MOD_lineart.hh.

Referenced by lineart_occlusion_make_task_info().

◆ LRT_TILE

#define LRT_TILE ( tile,
r,
c,
CCount )
Value:
tile[r * CCount + c]
const ccl_global KernelWorkTile * tile

Definition at line 594 of file MOD_lineart.hh.

◆ LRT_TILE_EDGE_COUNT_INITIAL

#define LRT_TILE_EDGE_COUNT_INITIAL   32

◆ LRT_TILE_SPLITTING_TRIANGLE_LIMIT

#define LRT_TILE_SPLITTING_TRIANGLE_LIMIT   100

◆ USE_VECTOR_LINE_INTERSECTION_IGN

#define USE_VECTOR_LINE_INTERSECTION_IGN

Enumeration Type Documentation

◆ eLineArtElementNodeFlag

Enumerator
LRT_ELEMENT_IS_ADDITIONAL 
LRT_ELEMENT_BORDER_ONLY 
LRT_ELEMENT_NO_INTERSECTION 
LRT_ELEMENT_INTERSECTION_DATA 

Definition at line 89 of file MOD_lineart.hh.

◆ eLineartShadowCameraType

Enumerator
LRT_SHADOW_CAMERA_DIRECTIONAL 
LRT_SHADOW_CAMERA_POINT 

Definition at line 282 of file MOD_lineart.hh.

◆ eLineartShadowSegmentFlag

Enumerator
LRT_SHADOW_CASTED 
LRT_SHADOW_FACING_LIGHT 

Definition at line 141 of file MOD_lineart.hh.

◆ eLineArtTileRecursiveLimit

Enumerator
LRT_TILE_RECURSIVE_PERSPECTIVE 
LRT_TILE_RECURSIVE_ORTHO 

Definition at line 271 of file MOD_lineart.hh.

◆ eLineartTriangleFlags

Enumerator
LRT_CULL_DONT_CARE 
LRT_CULL_USED 
LRT_CULL_DISCARD 
LRT_CULL_GENERATED 
LRT_TRIANGLE_INTERSECTION_ONLY 
LRT_TRIANGLE_NO_INTERSECTION 
LRT_TRIANGLE_MAT_BACK_FACE_CULLING 
LRT_TRIANGLE_FORCE_INTERSECTION 

Definition at line 458 of file MOD_lineart.hh.

Function Documentation

◆ ENUM_OPERATORS()

◆ lineart_intersect_seg_seg()

BLI_INLINE int lineart_intersect_seg_seg ( const double a1[2],
const double a2[2],
const double b1[2],
const double b2[2],
double * r_ratio,
bool * r_aligned )

◆ lineart_line_isec_2d_ignore_line2pos()

BLI_INLINE int lineart_line_isec_2d_ignore_line2pos ( const double a1[2],
const double a2[2],
const double b1[2],
const double b2[2],
double * r_a_ratio )

◆ MOD_lineart_chain_clear_picked_flag()

void MOD_lineart_chain_clear_picked_flag ( LineartCache * lc)

◆ MOD_lineart_chain_clip_at_border()

◆ MOD_lineart_chain_compute_length()

float MOD_lineart_chain_compute_length ( LineartEdgeChain * ec)

◆ MOD_lineart_chain_connect()

◆ MOD_lineart_chain_count()

int MOD_lineart_chain_count ( const LineartEdgeChain * ec)

Definition at line 1068 of file lineart_chain.cc.

References LineartEdgeChain::chain, count, and LISTBASE_FOREACH.

Referenced by MOD_lineart_gpencil_generate_v3().

◆ MOD_lineart_chain_discard_unused()

void MOD_lineart_chain_discard_unused ( LineartData * ld,
float threshold,
uint8_t max_occlusion )

◆ MOD_lineart_chain_feature_lines()

◆ MOD_lineart_chain_find_silhouette_backdrop_objects()

◆ MOD_lineart_chain_offset_towards_camera()

◆ MOD_lineart_chain_split_angle()

◆ MOD_lineart_chain_split_for_fixed_occlusion()

◆ MOD_lineart_clear_cache()

void MOD_lineart_clear_cache ( LineartCache ** lc)

◆ MOD_lineart_compute_feature_lines_v3()

bool MOD_lineart_compute_feature_lines_v3 ( Depsgraph * depsgraph,
GreasePencilLineartModifierData & lmd,
LineartCache ** cached_result,
bool enable_stroke_depth_offset )

This is the entry point of all line art calculations.

Returns
True when a change is made.

Definition at line 4981 of file lineart_cpu.cc.

References LineartData::_conf::angle_splitting_threshold, BKE_scene_camera_switch_update(), BLI_time_now_seconds(), GreasePencilLineartModifierData::calculation_flags, Scene::camera, LineartData::_conf::chain_smooth_tolerance, LineartCache::chains, LineartData::chains, LineartData::conf, DEG_get_evaluated(), DEG_get_evaluated_scene(), depsgraph, ListBase::first, GreasePencilLineartModifierData::flags, G, LineartData::geom, lineart_count_and_print_render_buffer_memory(), lineart_create_render_buffer_v3(), lineart_destroy_render_data_keep_init(), lineart_main_add_triangles(), lineart_main_bounding_area_make_initial(), lineart_main_bounding_areas_connect_post(), lineart_main_cull_triangles(), lineart_main_discard_out_of_frame_edges(), lineart_main_free_adjacent_data(), lineart_main_get_view_vector(), lineart_main_link_lines(), lineart_main_load_geometries(), lineart_main_make_enclosed_shapes(), lineart_main_occlusion_begin(), lineart_main_perspective_division(), lineart_main_remove_unused_lines_from_tiles(), lineart_main_transform_and_add_shadow(), lineart_main_try_generate_shadow_v3(), lineart_mem_destroy(), lineart_register_intersection_shadow_cuts(), lineart_triangle_size_get(), MEM_freeN(), MOD_LINEART_ALLOW_DUPLI_OBJECTS, MOD_lineart_chain_clear_picked_flag(), MOD_lineart_chain_clip_at_border(), MOD_lineart_chain_connect(), MOD_lineart_chain_feature_lines(), MOD_lineart_chain_find_silhouette_backdrop_objects(), MOD_lineart_chain_offset_towards_camera(), MOD_lineart_chain_split_angle(), MOD_lineart_chain_split_for_fixed_occlusion(), MOD_lineart_finalize_chains(), MOD_lineart_init_cache(), MOD_LINEART_OFFSET_TOWARDS_CUSTOM_CAMERA, MOD_lineart_smooth_chains(), MOD_LINEART_USE_CUSTOM_CAMERA, OB_CAMERA, LineartModifierRuntime::object_dependencies, printf, RE_GetSceneRender(), GreasePencilLineartModifierData::runtime, LineartCache::shadow_data_pool, LineartCache::shadow_elns, LineartData::_conf::shadow_enclose_shapes, LineartData::_conf::shadow_selection, LineartData::_conf::shadow_use_silhouette, LineartData::sizeof_triangle, GreasePencilLineartModifierData::source_camera, GreasePencilLineartModifierData::stroke_depth_offset, Object::type, LineartData::_conf::use_image_boundary_trimming, and LineartData::_geom::vertex_buffer_pointers.

Referenced by bake_strokes(), and blender::generate_strokes().

◆ MOD_lineart_destroy_render_data_v3()

void MOD_lineart_destroy_render_data_v3 ( GreasePencilLineartModifierData * lmd)

◆ MOD_lineart_finalize_chains()

◆ MOD_lineart_get_bounding_area()

LineartBoundingArea * MOD_lineart_get_bounding_area ( LineartData * ld,
double x,
double y )

Wrapper for more convenience.

Definition at line 4541 of file lineart_cpu.cc.

References lineart_get_bounding_area(), MOD_lineart_get_parent_bounding_area(), x, and y.

Referenced by MOD_lineart_chain_feature_lines().

◆ MOD_lineart_get_parent_bounding_area()

◆ MOD_lineart_gpencil_generate_v3()

void MOD_lineart_gpencil_generate_v3 ( const LineartCache * cache,
const blender::float4x4 & mat,
Depsgraph * depsgraph,
blender::bke::greasepencil::Drawing & drawing,
int8_t source_type,
Object * source_object,
Collection * source_collection,
int level_start,
int level_end,
int mat_nr,
int16_t edge_types,
uchar mask_switches,
uchar material_mask_bits,
uchar intersection_mask,
float thickness,
float opacity,
uchar shadow_selection,
uchar silhouette_mode,
const char * source_vgname,
const char * vgname,
int modifier_flags,
int modifier_calculation_flags )

Definition at line 5189 of file lineart_cpu.cc.

References LineartCache::all_enabled_edge_types, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::CurvesGeometry::attributes_for_write(), BKE_collection_has_object_recursive_instanced(), BKE_defvert_ensure_index(), BKE_defvert_find_index(), BKE_object_get_evaluated_mesh(), BLI_addtail(), LineartChainWriteInfo::chain, LineartEdgeChain::chain, LineartCache::chains, count, blender::bke::Curve, CURVE_TYPE_POLY, blender::bke::curves_new_nomain(), blender::bke::CurvesGeometry::deform_verts_for_write(), DEG_get_evaluated(), depsgraph, blender::bke::CurvesGeometry::fill_curve_types(), blender::bke::SpanAttributeWriter< T >::finish(), blender::bke::GeometrySet::from_curves(), G, Curves::geometry, blender::bke::GeometrySet::get_curves_for_write(), i, Collection::id, Object::id, LineartEdgeChain::index_offset, blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), Vector< T, InlineBufferCapacity, Allocator >::index_range(), blender::Span< T >::is_empty(), Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::geometry::join_geometries(), blender::IndexRange::last(), LINEART_SHADOW_FILTER_ILLUMINATED, LINEART_SHADOW_FILTER_ILLUMINATED_ENCLOSED_SHAPES, LINEART_SHADOW_FILTER_SHADED, LINEART_SILHOUETTE_FILTER_INDIVIDUAL, LINEART_SOURCE_COLLECTION, LINEART_SOURCE_OBJECT, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_only_span(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_span(), LRT_SHADOW_MASK_ILLUMINATED, LRT_SHADOW_MASK_ILLUMINATED_SHAPE, LRT_SHADOW_MASK_SHADED, LRT_SHADOW_MASK_UNDEFINED, LRT_SHADOW_TEST_SHAPE_BITS, max_ii(), MEM_callocN(), MOD_lineart_chain_count(), MOD_LINEART_EDGE_FLAG_CONTOUR, MOD_LINEART_EDGE_FLAG_INTERSECTION, MOD_LINEART_INTERSECTION_MATCH, MOD_LINEART_INVERT_COLLECTION, MOD_LINEART_INVERT_SILHOUETTE_FILTER, MOD_LINEART_INVERT_SOURCE_VGROUP, MOD_LINEART_MATCH_OUTPUT_VGROUP, MOD_LINEART_MATERIAL_MASK_ENABLE, MOD_LINEART_MATERIAL_MASK_MATCH, bDeformGroup::name, OB_MESH, LineartEdgeChain::object_ref, blender::bke::CurvesGeometry::offsets_for_write(), ID::orig_id, blender::bke::Point, LineartChainWriteInfo::point_count, blender::bke::CurvesGeometry::positions_for_write(), printf, blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), blender::Span< T >::size(), blender::bke::SpanAttributeWriter< T >::span, blender::StringRefBase::startswith(), blender::bke::greasepencil::Drawing::strokes(), blender::bke::greasepencil::Drawing::strokes_for_write(), blender::bke::greasepencil::Drawing::tag_topology_changed(), blender::math::transform_point(), Object::type, UNLIKELY, CurvesGeometry::vertex_group_names, Mesh::vertex_group_names, and MDeformWeight::weight.

Referenced by bake_strokes(), and blender::generate_strokes().

◆ MOD_lineart_init_cache()

LineartCache * MOD_lineart_init_cache ( )

Definition at line 3551 of file lineart_cpu.cc.

References MEM_callocN().

Referenced by MOD_lineart_compute_feature_lines_v3(), and blender::modify_geometry_set().

◆ MOD_lineart_smooth_chains()