Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions
MOD_lineart.h File Reference
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_threads.h"
#include <math.h>

Go to the source code of this file.

Classes

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
 

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)   tile[r * CCount + c]
 
#define LRT_CLAMP(a, Min, Max)   a = a < Min ? Min : (a > Max ? Max : a)
 
#define LRT_MAX3_INDEX(a, b, c)   (a > b ? (a > c ? 0 : (b > c ? 1 : 2)) : (b > c ? 1 : 2))
 
#define LRT_MIN3_INDEX(a, b, c)   (a < b ? (a < c ? 0 : (b < c ? 1 : 2)) : (b < c ? 1 : 2))
 
#define LRT_MAX3_INDEX_ABC(x, y, z)   (x > y ? (x > z ? a : (y > z ? b : c)) : (y > z ? b : c))
 
#define LRT_MIN3_INDEX_ABC(x, y, z)   (x < y ? (x < z ? a : (y < z ? b : c)) : (y < z ? b : c))
 
#define DBL_LOOSER   1e-5
 
#define LRT_DOUBLE_CLOSE_LOOSER(a, b)   (((a) + DBL_LOOSER) >= (b) && ((a)-DBL_LOOSER) <= (b))
 
#define LRT_DOUBLE_CLOSE_ENOUGH(a, b)   (((a) + DBL_EDGE_LIM) >= (b) && ((a)-DBL_EDGE_LIM) <= (b))
 
#define LRT_DOUBLE_CLOSE_ENOUGH_TRI(a, b)    (((a) + DBL_TRIANGLE_LIM) >= (b) && ((a)-DBL_TRIANGLE_LIM) <= (b))
 
#define LRT_CLOSE_LOOSER_v3(a, b)
 
#define USE_VECTOR_LINE_INTERSECTION_IGN
 

Typedefs

typedef struct LineartStaticMemPoolNode LineartStaticMemPoolNode
 
typedef struct LineartStaticMemPool LineartStaticMemPool
 
typedef struct LineartTriangleAdjacent LineartTriangleAdjacent
 
typedef struct LineartTriangle LineartTriangle
 
typedef struct LineartTriangleThread LineartTriangleThread
 
typedef enum eLineArtElementNodeFlag eLineArtElementNodeFlag
 
typedef struct LineartElementLinkNode LineartElementLinkNode
 
typedef struct LineartEdgeSegment LineartEdgeSegment
 
typedef struct LineartShadowEdge LineartShadowEdge
 
typedef struct LineartShadowSegment LineartShadowSegment
 
typedef struct LineartVert LineartVert
 
typedef struct LineartEdge LineartEdge
 
typedef struct LineartEdgeChain LineartEdgeChain
 
typedef struct LineartEdgeChainItem LineartEdgeChainItem
 
typedef struct LineartChainRegisterEntry LineartChainRegisterEntry
 
typedef struct LineartAdjacentEdge LineartAdjacentEdge
 
typedef struct LineartPendingEdges LineartPendingEdges
 
typedef struct LineartData LineartData
 
typedef struct LineartCache LineartCache
 
typedef enum eLineartTriangleFlags eLineartTriangleFlags
 
typedef struct LineartRenderTaskInfo LineartRenderTaskInfo
 
typedef struct LineartObjectInfo LineartObjectInfo
 
typedef struct LineartObjectLoadTaskInfo LineartObjectLoadTaskInfo
 
typedef struct LineartBoundingArea LineartBoundingArea
 

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

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 (struct LineartGpencilModifierData *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 (struct Depsgraph *depsgraph, struct LineartGpencilModifierData *lmd, struct LineartCache **cached_result, bool enable_stroke_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 (LineartCache *cache, struct Depsgraph *depsgraph, struct Object *ob, struct bGPDlayer *gpl, struct bGPDframe *gpf, int8_t source_type, void *source_reference, int level_start, int level_end, int mat_nr, int16_t edge_types, uint8_t mask_switches, uint8_t material_mask_bits, uint8_t intersection_mask, int16_t thickness, float opacity, uint8_t shadow_selection, uint8_t silhouette_mode, const char *source_vgname, const char *vgname, int modifier_flags, int modifier_calculation_flags)
 
float MOD_lineart_chain_compute_length (LineartEdgeChain *ec)
 
void ED_operatortypes_lineart (void)
 

Macro Definition Documentation

◆ DBL_EDGE_LIM

#define DBL_EDGE_LIM   1e-9

Definition at line 432 of file MOD_lineart.h.

◆ DBL_LOOSER

#define DBL_LOOSER   1e-5

Definition at line 586 of file MOD_lineart.h.

◆ DBL_TRIANGLE_LIM

#define DBL_TRIANGLE_LIM   1e-8

Definition at line 431 of file MOD_lineart.h.

◆ LRT_CLAMP

#define LRT_CLAMP (   a,
  Min,
  Max 
)    a = a < Min ? Min : (a > Max ? Max : a)

Definition at line 576 of file MOD_lineart.h.

◆ LRT_CLOSE_LOOSER_v3

#define LRT_CLOSE_LOOSER_v3 (   a,
 
)
Value:
LRT_DOUBLE_CLOSE_LOOSER(a[2], b[2]))
#define LRT_DOUBLE_CLOSE_LOOSER(a, b)
Definition: MOD_lineart.h:587
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)

Definition at line 592 of file MOD_lineart.h.

◆ LRT_DOUBLE_CLOSE_ENOUGH

#define LRT_DOUBLE_CLOSE_ENOUGH (   a,
 
)    (((a) + DBL_EDGE_LIM) >= (b) && ((a)-DBL_EDGE_LIM) <= (b))

Definition at line 588 of file MOD_lineart.h.

◆ LRT_DOUBLE_CLOSE_ENOUGH_TRI

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

Definition at line 589 of file MOD_lineart.h.

◆ LRT_DOUBLE_CLOSE_LOOSER

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

Definition at line 587 of file MOD_lineart.h.

◆ 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
Definition: MOD_lineart.h:481
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
unsigned __int64 uint64_t
Definition: stdint.h:90

Definition at line 483 of file MOD_lineart.h.

◆ LRT_LIGHT_CONTOUR_TARGET

#define LRT_LIGHT_CONTOUR_TARGET   0xFFFFFFFF

Definition at line 486 of file MOD_lineart.h.

◆ LRT_MAX3_INDEX

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

Definition at line 578 of file MOD_lineart.h.

◆ LRT_MAX3_INDEX_ABC

#define LRT_MAX3_INDEX_ABC (   x,
  y,
  z 
)    (x > y ? (x > z ? a : (y > z ? b : c)) : (y > z ? b : c))

Definition at line 582 of file MOD_lineart.h.

◆ LRT_MEMORY_POOL_1MB

#define LRT_MEMORY_POOL_1MB   (1 << 20)

Definition at line 434 of file MOD_lineart.h.

◆ LRT_MIN3_INDEX

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

Definition at line 580 of file MOD_lineart.h.

◆ LRT_MIN3_INDEX_ABC

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

Definition at line 584 of file MOD_lineart.h.

◆ LRT_OBINDEX_HIGHER

#define LRT_OBINDEX_HIGHER   0xFFF00000 /* Higher 12 bits. */

Definition at line 482 of file MOD_lineart.h.

◆ LRT_OBINDEX_LOWER

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

Definition at line 481 of file MOD_lineart.h.

◆ LRT_OBINDEX_SHIFT

#define LRT_OBINDEX_SHIFT   20

Definition at line 480 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_ENCLOSED_SHAPE

#define LRT_SHADOW_MASK_ENCLOSED_SHAPE   (1 << 2)

Definition at line 450 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_ILLUMINATED

#define LRT_SHADOW_MASK_ILLUMINATED   (1 << 0)

Definition at line 448 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_ILLUMINATED_SHAPE

#define LRT_SHADOW_MASK_ILLUMINATED_SHAPE   (1 << 6)

Definition at line 454 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_INHIBITED

#define LRT_SHADOW_MASK_INHIBITED   (1 << 3)

Definition at line 451 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_SHADED

#define LRT_SHADOW_MASK_SHADED   (1 << 1)

Definition at line 449 of file MOD_lineart.h.

◆ LRT_SHADOW_MASK_UNDEFINED

#define LRT_SHADOW_MASK_UNDEFINED   0

Definition at line 447 of file MOD_lineart.h.

◆ LRT_SHADOW_SILHOUETTE_ERASED_GROUP

#define LRT_SHADOW_SILHOUETTE_ERASED_GROUP   (1 << 4)

Definition at line 452 of file MOD_lineart.h.

◆ LRT_SHADOW_SILHOUETTE_ERASED_OBJECT

#define LRT_SHADOW_SILHOUETTE_ERASED_OBJECT   (1 << 5)

Definition at line 453 of file MOD_lineart.h.

◆ LRT_SHADOW_TEST_SHAPE_BITS

#define LRT_SHADOW_TEST_SHAPE_BITS
Value:
LRT_SHADOW_MASK_ILLUMINATED_SHAPE)
#define LRT_SHADOW_MASK_INHIBITED
Definition: MOD_lineart.h:451
#define LRT_SHADOW_MASK_ILLUMINATED
Definition: MOD_lineart.h:448
#define LRT_SHADOW_MASK_SHADED
Definition: MOD_lineart.h:449

Definition at line 456 of file MOD_lineart.h.

◆ 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 465 of file MOD_lineart.h.

◆ LRT_TILE

#define LRT_TILE (   tile,
  r,
  c,
  CCount 
)    tile[r * CCount + c]

Definition at line 574 of file MOD_lineart.h.

◆ LRT_TILE_EDGE_COUNT_INITIAL

#define LRT_TILE_EDGE_COUNT_INITIAL   32

Definition at line 258 of file MOD_lineart.h.

◆ LRT_TILE_SPLITTING_TRIANGLE_LIMIT

#define LRT_TILE_SPLITTING_TRIANGLE_LIMIT   100

Definition at line 257 of file MOD_lineart.h.

◆ USE_VECTOR_LINE_INTERSECTION_IGN

#define USE_VECTOR_LINE_INTERSECTION_IGN

Typedef Documentation

◆ eLineArtElementNodeFlag

◆ eLineartTriangleFlags

◆ LineartAdjacentEdge

◆ LineartBoundingArea

Bounding area diagram:

+----+ <----U (Upper edge Y value)
| |
+----+ <----B (Bottom edge Y value)
^ ^
L R (Left/Right edge X value)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its X
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its Y
#define U
#define B
#define R
#define L
char Upper(char ch)
Definition: utility_io.cpp:142

Example structure when subdividing 1 bounding areas: 1 area can be divided into 4 smaller children to accommodate image areas with denser triangle distribution.

+--+--+-----+
+--+--+ |
+--+--+-----+
| | |
+-----+-----+

lp/rp/up/bp is the list for storing pointers to adjacent bounding areas.

◆ LineartCache

typedef struct LineartCache LineartCache

◆ LineartChainRegisterEntry

◆ LineartData

typedef struct LineartData LineartData

◆ LineartEdge

typedef struct LineartEdge LineartEdge

◆ LineartEdgeChain

◆ LineartEdgeChainItem

◆ LineartEdgeSegment

◆ LineartElementLinkNode

◆ LineartObjectInfo

◆ LineartObjectLoadTaskInfo

◆ LineartPendingEdges

◆ LineartRenderTaskInfo

◆ LineartShadowEdge

◆ LineartShadowSegment

◆ LineartStaticMemPool

◆ LineartStaticMemPoolNode

◆ LineartTriangle

◆ LineartTriangleAdjacent

◆ LineartTriangleThread

◆ LineartVert

typedef struct LineartVert LineartVert

Enumeration Type Documentation

◆ eLineArtElementNodeFlag

Enumerator
LRT_ELEMENT_IS_ADDITIONAL 
LRT_ELEMENT_BORDER_ONLY 
LRT_ELEMENT_NO_INTERSECTION 
LRT_ELEMENT_INTERSECTION_DATA 

Definition at line 71 of file MOD_lineart.h.

◆ eLineartShadowCameraType

Enumerator
LRT_SHADOW_CAMERA_DIRECTIONAL 
LRT_SHADOW_CAMERA_POINT 

Definition at line 260 of file MOD_lineart.h.

◆ eLineartShadowSegmentFlag

Enumerator
LRT_SHADOW_CASTED 
LRT_SHADOW_FACING_LIGHT 

Definition at line 122 of file MOD_lineart.h.

◆ eLineArtTileRecursiveLimit

Enumerator
LRT_TILE_RECURSIVE_PERSPECTIVE 
LRT_TILE_RECURSIVE_ORTHO 

Definition at line 249 of file MOD_lineart.h.

◆ 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 436 of file MOD_lineart.h.

Function Documentation

◆ ED_operatortypes_lineart()

void ED_operatortypes_lineart ( void  )

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

void MOD_lineart_chain_clip_at_border ( LineartData ld)

◆ MOD_lineart_chain_compute_length()

float MOD_lineart_chain_compute_length ( LineartEdgeChain ec)

◆ MOD_lineart_chain_connect()

void MOD_lineart_chain_connect ( LineartData ld)

◆ MOD_lineart_chain_count()

int MOD_lineart_chain_count ( const LineartEdgeChain ec)

Definition at line 1035 of file lineart_chain.c.

References LineartEdgeChain::chain, count, and LISTBASE_FOREACH.

Referenced by lineart_gpencil_generate().

◆ MOD_lineart_chain_discard_unused()

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

◆ MOD_lineart_chain_feature_lines()

void MOD_lineart_chain_feature_lines ( LineartData ld)

◆ MOD_lineart_chain_find_silhouette_backdrop_objects()

void MOD_lineart_chain_find_silhouette_backdrop_objects ( LineartData ld)

◆ MOD_lineart_chain_offset_towards_camera()

void MOD_lineart_chain_offset_towards_camera ( LineartData ld,
float  dist,
bool  use_custom_camera 
)

◆ MOD_lineart_chain_split_angle()

void MOD_lineart_chain_split_angle ( LineartData ld,
float  angle_threshold_rad 
)

◆ MOD_lineart_chain_split_for_fixed_occlusion()

void MOD_lineart_chain_split_for_fixed_occlusion ( LineartData ld)

◆ MOD_lineart_compute_feature_lines()

bool MOD_lineart_compute_feature_lines ( Depsgraph depsgraph,
LineartGpencilModifierData 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 4957 of file lineart_cpu.c.

References LineartData::_conf::angle_splitting_threshold, BKE_scene_camera_switch_update(), LineartGpencilModifierData::calculation_flags, Scene::camera, LineartData::_conf::chain_smooth_tolerance, LineartData::chains, LineartCache::chains, LineartData::conf, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), depsgraph, ListBase::first, LineartGpencilModifierData::flags, G, LineartData::geom, lineart_count_and_print_render_buffer_memory(), lineart_create_render_buffer(), lineart_destroy_render_data_keep_init(), lineart_init_cache(), 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(), lineart_mem_destroy(), lineart_register_intersection_shadow_cuts(), lineart_triangle_size_get(), LRT_ALLOW_DUPLI_OBJECTS, LRT_GPENCIL_OFFSET_TOWARDS_CUSTOM_CAMERA, LRT_USE_CUSTOM_CAMERA, MEM_freeN, 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_smooth_chains(), NULL, OB_CAMERA, PIL_check_seconds_timer(), scene, LineartCache::shadow_data_pool, LineartCache::shadow_elns, LineartData::_conf::shadow_enclose_shapes, LineartData::_conf::shadow_selection, LineartData::_conf::shadow_use_silhouette, LineartData::sizeof_triangle, LineartGpencilModifierData::source_camera, LineartGpencilModifierData::stroke_depth_offset, Object::type, LineartData::_conf::use_image_boundary_trimming, and LineartData::_geom::vertex_buffer_pointers.

Referenced by bake_strokes(), bakeModifier(), and generateStrokes().

◆ MOD_lineart_destroy_render_data()

void MOD_lineart_destroy_render_data ( struct LineartGpencilModifierData lmd)

◆ MOD_lineart_finalize_chains()

void MOD_lineart_finalize_chains ( LineartData ld)

◆ MOD_lineart_get_bounding_area()

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

Wrapper for more convenience.

Definition at line 4511 of file lineart_cpu.c.

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

Referenced by MOD_lineart_chain_feature_lines().

◆ MOD_lineart_get_parent_bounding_area()

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

◆ MOD_lineart_gpencil_generate()

void MOD_lineart_gpencil_generate ( LineartCache cache,
struct Depsgraph depsgraph,
struct Object ob,
struct bGPDlayer gpl,
struct bGPDframe gpf,
int8_t  source_type,
void source_reference,
int  level_start,
int  level_end,
int  mat_nr,
int16_t  edge_types,
uint8_t  mask_switches,
uint8_t  material_mask_bits,
uint8_t  intersection_mask,
int16_t  thickness,
float  opacity,
uint8_t  shadow_selection,
uint8_t  silhouette_mode,
const char *  source_vgname,
const char *  vgname,
int  modifier_flags,
int  modifier_calculation_flags 
)

◆ MOD_lineart_smooth_chains()

void MOD_lineart_smooth_chains ( LineartData ld,
float  tolerance 
)