|
Blender V4.3
|
#include "BLI_linklist.h"#include "BLI_listbase.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 <math.h>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 |
Typedefs | |
| typedef struct LineartModifierRuntime | LineartModifierRuntime |
| 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) } |
Definition at line 455 of file MOD_lineart.hh.
Referenced by lineart_line_isec_2d_ignore_line2pos(), and MOD_lineart_chain_split_for_fixed_occlusion().
Definition at line 609 of file MOD_lineart.hh.
Definition at line 454 of file MOD_lineart.hh.
Referenced by lineart_point_on_line_segment(), and lineart_triangle_edge_image_space_occlusion().
| #define LRT_CLAMP | ( | a, | |
| Min, | |||
| Max ) a = a < Min ? Min : (a > Max ? Max : a) |
Definition at line 599 of file MOD_lineart.hh.
Definition at line 615 of file MOD_lineart.hh.
Referenced by lineart_shadow_finalize_shadow_edges_task().
| #define LRT_DOUBLE_CLOSE_ENOUGH | ( | a, | |
| b ) (((a) + DBL_EDGE_LIM) >= (b) && ((a)-DBL_EDGE_LIM) <= (b)) |
Definition at line 611 of file MOD_lineart.hh.
Referenced by lineart_edge_cut(), lineart_intersect_seg_seg(), lineart_line_isec_2d_ignore_line2pos(), lineart_point_on_line_segment(), lineart_shadow_cast_onto_triangle(), lineart_shadow_edge_cut(), and lineart_triangle_2v_intersection_math().
| #define LRT_DOUBLE_CLOSE_ENOUGH_TRI | ( | a, | |
| b ) (((a) + DBL_TRIANGLE_LIM) >= (b) && ((a)-DBL_TRIANGLE_LIM) <= (b)) |
Definition at line 612 of file MOD_lineart.hh.
Referenced by lineart_intersect_seg_seg().
| #define LRT_DOUBLE_CLOSE_LOOSER | ( | a, | |
| b ) (((a) + DBL_LOOSER) >= (b) && ((a)-DBL_LOOSER) <= (b)) |
Definition at line 610 of file MOD_lineart.hh.
Definition at line 506 of file MOD_lineart.hh.
Referenced by lineart_geometry_object_load().
| #define LRT_LIGHT_CONTOUR_TARGET 0xFFFFFFFF |
Definition at line 509 of file MOD_lineart.hh.
Referenced by lineart_edge_from_triangle(), and lineart_occlusion_is_adjacent_intersection().
Definition at line 601 of file MOD_lineart.hh.
Definition at line 605 of file MOD_lineart.hh.
| #define LRT_MEMORY_POOL_1MB (1 << 20) |
Definition at line 457 of file MOD_lineart.hh.
Referenced by lineart_count_and_print_render_buffer_memory(), and lineart_mem_new_static_pool().
Definition at line 603 of file MOD_lineart.hh.
Definition at line 607 of file MOD_lineart.hh.
| #define LRT_OBINDEX_HIGHER 0xFFF00000 /* Higher 12 bits. */ |
Definition at line 505 of file MOD_lineart.hh.
Referenced by lineart_create_edges_from_isec_data(), lineart_shadow_finalize_shadow_edges_task(), lineart_shadow_register_silhouette(), and MOD_lineart_chain_find_silhouette_backdrop_objects().
| #define LRT_OBINDEX_LOWER 0x0FFFFF /* Lower 20 bits. */ |
Definition at line 504 of file MOD_lineart.hh.
Referenced by lineart_load_tri_task(), and lineart_shadow_finalize_shadow_edges_task().
| #define LRT_OBINDEX_SHIFT 20 |
Definition at line 503 of file MOD_lineart.hh.
Referenced by lineart_object_load_single_instance().
| #define LRT_SHADOW_MASK_ENCLOSED_SHAPE (1 << 2) |
Definition at line 473 of file MOD_lineart.hh.
Referenced by lineart_edge_cut(), and lineart_shadow_register_enclosed_shapes().
| #define LRT_SHADOW_MASK_ILLUMINATED (1 << 0) |
Definition at line 471 of file MOD_lineart.hh.
Referenced by lineart_edge_cut(), lineart_register_shadow_cuts(), and MOD_lineart_gpencil_generate_v3().
| #define LRT_SHADOW_MASK_ILLUMINATED_SHAPE (1 << 6) |
Definition at line 477 of file MOD_lineart.hh.
Referenced by lineart_edge_cut(), and MOD_lineart_gpencil_generate_v3().
| #define LRT_SHADOW_MASK_INHIBITED (1 << 3) |
Definition at line 474 of file MOD_lineart.hh.
Referenced by lineart_edge_cut().
| #define LRT_SHADOW_MASK_SHADED (1 << 1) |
Definition at line 472 of file MOD_lineart.hh.
Referenced by lineart_edge_cut(), lineart_register_shadow_cuts(), lineart_shadow_cast_generate_edges(), and MOD_lineart_gpencil_generate_v3().
| #define LRT_SHADOW_MASK_UNDEFINED 0 |
Definition at line 470 of file MOD_lineart.hh.
Referenced by MOD_lineart_gpencil_generate_v3().
| #define LRT_SHADOW_SILHOUETTE_ERASED_GROUP (1 << 4) |
Definition at line 475 of file MOD_lineart.hh.
Referenced by lineart_shadow_register_silhouette(), and MOD_lineart_chain_find_silhouette_backdrop_objects().
| #define LRT_SHADOW_SILHOUETTE_ERASED_OBJECT (1 << 5) |
Definition at line 476 of file MOD_lineart.hh.
| #define LRT_SHADOW_TEST_SHAPE_BITS |
Definition at line 479 of file MOD_lineart.hh.
Referenced by MOD_lineart_gpencil_generate_v3().
| #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 488 of file MOD_lineart.hh.
Referenced by lineart_occlusion_make_task_info().
Definition at line 597 of file MOD_lineart.hh.
| #define LRT_TILE_EDGE_COUNT_INITIAL 32 |
Definition at line 279 of file MOD_lineart.hh.
Referenced by lineart_bounding_area_split(), and lineart_main_bounding_area_make_initial().
| #define LRT_TILE_SPLITTING_TRIANGLE_LIMIT 100 |
Definition at line 278 of file MOD_lineart.hh.
Referenced by lineart_bounding_area_link_triangle(), lineart_bounding_area_split(), and lineart_main_bounding_area_make_initial().
| #define USE_VECTOR_LINE_INTERSECTION_IGN |
| typedef enum eLineArtElementNodeFlag eLineArtElementNodeFlag |
| typedef enum eLineartTriangleFlags eLineartTriangleFlags |
| typedef struct LineartAdjacentEdge LineartAdjacentEdge |
| typedef struct LineartBoundingArea LineartBoundingArea |
Bounding area diagram:
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.
| typedef struct LineartCache LineartCache |
| typedef struct LineartChainRegisterEntry LineartChainRegisterEntry |
| typedef struct LineartData LineartData |
| typedef struct LineartEdge LineartEdge |
| typedef struct LineartEdgeChain LineartEdgeChain |
| typedef struct LineartEdgeChainItem LineartEdgeChainItem |
| typedef struct LineartEdgeSegment LineartEdgeSegment |
| typedef struct LineartElementLinkNode LineartElementLinkNode |
| typedef struct LineartModifierRuntime LineartModifierRuntime |
| typedef struct LineartObjectInfo LineartObjectInfo |
| typedef struct LineartObjectLoadTaskInfo LineartObjectLoadTaskInfo |
| typedef struct LineartPendingEdges LineartPendingEdges |
| typedef struct LineartRenderTaskInfo LineartRenderTaskInfo |
| typedef struct LineartShadowEdge LineartShadowEdge |
| typedef struct LineartShadowSegment LineartShadowSegment |
| typedef struct LineartStaticMemPool LineartStaticMemPool |
| typedef struct LineartStaticMemPoolNode LineartStaticMemPoolNode |
| typedef struct LineartTriangle LineartTriangle |
| typedef struct LineartTriangleAdjacent LineartTriangleAdjacent |
| typedef struct LineartTriangleThread LineartTriangleThread |
| typedef struct LineartVert LineartVert |
| Enumerator | |
|---|---|
| LRT_ELEMENT_IS_ADDITIONAL | |
| LRT_ELEMENT_BORDER_ONLY | |
| LRT_ELEMENT_NO_INTERSECTION | |
| LRT_ELEMENT_INTERSECTION_DATA | |
Definition at line 88 of file MOD_lineart.hh.
| Enumerator | |
|---|---|
| LRT_SHADOW_CAMERA_DIRECTIONAL | |
| LRT_SHADOW_CAMERA_POINT | |
Definition at line 281 of file MOD_lineart.hh.
| Enumerator | |
|---|---|
| LRT_SHADOW_CASTED | |
| LRT_SHADOW_FACING_LIGHT | |
Definition at line 140 of file MOD_lineart.hh.
| Enumerator | |
|---|---|
| LRT_TILE_RECURSIVE_PERSPECTIVE | |
| LRT_TILE_RECURSIVE_ORTHO | |
Definition at line 270 of file MOD_lineart.hh.
Definition at line 459 of file MOD_lineart.hh.
| 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 ) |
Definition at line 631 of file MOD_lineart.hh.
References cross_v2v2_db(), fabs(), interpd(), LRT_DOUBLE_CLOSE_ENOUGH, LRT_DOUBLE_CLOSE_ENOUGH_TRI, ratiod(), sub_v2_v2v2_db(), v, x, and y.
Referenced by lineart_edge_first_bounding_area(), and lineart_triangle_edge_image_space_occlusion().
| 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 ) |
Definition at line 783 of file MOD_lineart.hh.
References cross_v2v2_db(), DBL_EDGE_LIM, fabs(), interpd(), LRT_DOUBLE_CLOSE_ENOUGH, ratiod(), sub_v2_v2v2_db(), v, x, and y.
Referenced by lineart_shadow_cast_onto_triangle().
| void MOD_lineart_chain_clear_picked_flag | ( | LineartCache * | lc | ) |
Definition at line 1077 of file lineart_chain.cc.
References LineartCache::chains, and LISTBASE_FOREACH.
Referenced by bake_strokes(), blender::generate_strokes(), and MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_chain_clip_at_border | ( | LineartData * | ld | ) |
Definition at line 1238 of file lineart_chain.cc.
References BLI_addhead(), BLI_addtail(), BLI_pophead(), LineartEdgeChain::chain, LineartData::chain_data_pool, LineartData::chains, ListBase::first, is_inside(), ListBase::last, lineart_chain_create_crossing_point(), lineart_mem_acquire(), LRT_ECI_INSIDE, LineartEdgeChainItem::next, LineartEdgeChainItem::prev, and true.
Referenced by MOD_lineart_compute_feature_lines_v3().
| float MOD_lineart_chain_compute_length | ( | LineartEdgeChain * | ec | ) |
Length is in image space.
Definition at line 1035 of file lineart_chain.cc.
References LineartEdgeChain::chain, copy_v2_v2(), ListBase::first, len_v2v2(), LISTBASE_FOREACH, and LineartEdgeChainItem::pos.
Referenced by MOD_lineart_chain_discard_unused().
| void MOD_lineart_chain_connect | ( | LineartData * | ld | ) |
This function only connects two different chains. It will not do any clean up or smart chaining. So no: removing overlapping chains, removal of short isolated segments, and no loop reduction is implemented yet.
Definition at line 930 of file lineart_chain.cc.
References BLI_addtail(), BLI_pophead(), BLI_remlink(), LineartData::_conf::chaining_image_threshold, LineartData::chains, LineartData::conf, LineartChainRegisterEntry::ec, ListBase::first, LineartChainRegisterEntry::is_left, ListBase::last, lineart_bounding_area_get_end_point(), lineart_chain_connect(), lineart_chain_get_closest_cre(), LineartBoundingArea::linked_chains, MOD_LINEART_EDGE_FLAG_LOOSE, LineartChainRegisterEntry::picked, LineartEdgeChain::picked, and LineartData::_conf::use_loose_edge_chain.
Referenced by MOD_lineart_compute_feature_lines_v3().
| 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().
| void MOD_lineart_chain_discard_unused | ( | LineartData * | ld, |
| float | threshold, | ||
| uint8_t | max_occlusion ) |
Definition at line 1055 of file lineart_chain.cc.
References BLI_remlink(), LineartData::chains, ListBase::first, LineartEdgeChain::level, MOD_lineart_chain_compute_length(), and LineartEdgeChain::next.
Referenced by MOD_lineart_chain_split_for_fixed_occlusion().
| void MOD_lineart_chain_feature_lines | ( | LineartData * | ld | ) |
Definition at line 177 of file lineart_chain.cc.
References LineartEdgeChain::chain, LineartData::conf, e, LineartVert::fbcoord, ListBase::first, LineartEdge::flags, LineartData::_conf::fuzzy_everything, LineartVert::gloc, LineartTriangle::gn, LineartVert::index, interp_v3_v3v3_db(), interpf(), LineartEdgeChain::intersection_mask, ListBase::last, LineartEdgeChainItem::line_type, lineart_chain_append_point(), lineart_chain_create(), lineart_chain_prepend_point(), lineart_line_get_connected(), LISTBASE_FOREACH_BACKWARD, LRT_ITER_ALL_LINES_BEGIN, LRT_ITER_ALL_LINES_END, LRT_ITER_ALL_LINES_NEXT, LineartEdgeChainItem::material_mask_bits, LineartEdgeSegment::material_mask_bits, MOD_LINEART_EDGE_FLAG_ALL_TYPE, MOD_LINEART_EDGE_FLAG_CHAIN_PICKED, MOD_LINEART_EDGE_FLAG_CONTOUR, MOD_lineart_get_bounding_area(), N, LineartEdgeSegment::next, normalize_v3(), LineartEdgeChain::object_ref, LineartEdgeChainItem::occlusion, LineartEdgeSegment::occlusion, POS_TO_FLOAT, LineartEdgeSegment::prev, LineartEdgeSegment::ratio, LineartEdge::segments, LineartEdgeChainItem::shadow_mask_bits, LineartEdgeSegment::shadow_mask_bits, LineartEdge::t1, LineartEdge::t2, LineartEdgeChain::type, LineartEdge::v1, LineartEdge::v2, VERT_COORD_TO_FLOAT, and zero_v3().
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_chain_find_silhouette_backdrop_objects | ( | LineartData * | ld | ) |
Definition at line 1399 of file lineart_chain.cc.
References LineartData::chains, LineartData::geom, LineartData::_geom::line_buffer_pointers, lineart_find_matching_eln(), LISTBASE_FOREACH, LRT_OBINDEX_HIGHER, LRT_SHADOW_SILHOUETTE_ERASED_GROUP, MOD_LINEART_EDGE_FLAG_CONTOUR, and LineartElementLinkNode::object_ref.
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_chain_offset_towards_camera | ( | LineartData * | ld, |
| float | dist, | ||
| bool | use_custom_camera ) |
Definition at line 1360 of file lineart_chain.cc.
References LineartData::_conf::active_camera_pos, add_v3_v3(), LineartData::_conf::cam_is_persp, LineartData::_conf::camera_pos, LineartData::chains, LineartData::conf, copy_v3fl_v3db(), dot_v3v3(), len_v3(), LISTBASE_FOREACH, mul_v3_fl(), LineartData::_conf::near_clip, normalize_v3(), normalize_v3_v3(), sub_v3_v3v3(), and LineartData::_conf::view_vector.
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_chain_split_angle | ( | LineartData * | ld, |
| float | angle_threshold_rad ) |
This should always be the last stage!, see the end of MOD_lineart_chain_split_for_fixed_occlusion().
Definition at line 1303 of file lineart_chain.cc.
References angle_v2v2v2(), BLI_addtail(), BLI_pophead(), LineartEdgeChain::chain, LineartData::chains, ListBase::first, LineartEdgeChainItem::gpos, LineartEdgeChainItem::index, LineartEdgeChain::intersection_mask, ListBase::last, LineartEdgeChain::level, LineartEdgeChainItem::line_type, lineart_chain_append_point(), lineart_chain_create(), LineartEdgeChain::loop_id, M_PI, LineartEdgeChain::material_mask_bits, LineartEdgeChainItem::material_mask_bits, LineartEdgeChainItem::next, LineartEdgeChainItem::normal, LineartEdgeChain::object_ref, LineartEdgeChainItem::pos, LineartEdgeChainItem::prev, LineartEdgeChain::shadow_mask_bits, LineartEdgeChainItem::shadow_mask_bits, and LineartEdgeChain::type.
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_chain_split_for_fixed_occlusion | ( | LineartData * | ld | ) |
Definition at line 663 of file lineart_chain.cc.
References BLI_addtail(), BLI_pophead(), LineartEdgeChain::chain, LineartData::_conf::chain_preserve_details, LineartData::_conf::chaining_image_threshold, LineartData::chains, LineartData::conf, DBL_EDGE_LIM, e, ListBase::first, LineartEdgeChainItem::gpos, LineartEdgeChainItem::index, LineartEdgeChain::intersection_mask, ListBase::last, LineartEdgeChainItem::line_type, lineart_bounding_area_link_chain(), lineart_chain_append_point(), lineart_chain_create(), lineart_chain_fix_ambiguous_segments(), lineart_point_overlapping(), LISTBASE_FOREACH, LineartEdgeChain::loop_id, LineartEdgeChainItem::material_mask_bits, LineartData::_conf::max_occlusion_level, MOD_lineart_chain_discard_unused(), LineartEdgeChainItem::next, LineartEdgeChainItem::normal, LineartEdgeChain::object_ref, LineartEdgeChainItem::occlusion, LineartEdgeChainItem::pos, LineartEdgeChainItem::prev, LineartEdgeChainItem::shadow_mask_bits, and LineartEdgeChain::type.
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_clear_cache | ( | struct LineartCache ** | lc | ) |
Definition at line 3586 of file lineart_cpu.cc.
References lineart_mem_destroy(), and MEM_freeN().
Referenced by bake_single_target(), bake_strokes(), blender::generate_strokes(), and blender::modify_geometry_set().
| bool MOD_lineart_compute_feature_lines_v3 | ( | struct Depsgraph * | depsgraph, |
| struct GreasePencilLineartModifierData & | lmd, | ||
| struct LineartCache ** | cached_result, | ||
| bool | enable_stroke_depth_offset ) |
This is the entry point of all line art calculations.
Definition at line 5025 of file lineart_cpu.cc.
References LineartData::_conf::angle_splitting_threshold, BKE_scene_camera_switch_update(), BLI_time_now_seconds(), GreasePencilLineartModifierData::calculation_flags, LineartData::_conf::chain_smooth_tolerance, LineartCache::chains, LineartData::chains, LineartData::conf, DEG_get_evaluated_object(), 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().
| void MOD_lineart_destroy_render_data_v3 | ( | struct GreasePencilLineartModifierData * | lmd | ) |
Definition at line 3563 of file lineart_cpu.cc.
References G, GreasePencilLineartModifierData::la_data_ptr, lineart_destroy_render_data(), MEM_freeN(), and printf.
Referenced by bake_strokes(), and blender::generate_strokes().
| void MOD_lineart_finalize_chains | ( | LineartData * | ld | ) |
Definition at line 1097 of file lineart_chain.cc.
References BLI_assert, LineartData::chains, ELEM, LineartData::geom, LineartElementLinkNode::global_index_offset, LIKELY, lineart_find_matching_eln_obj(), LISTBASE_FOREACH, MOD_LINEART_EDGE_FLAG_INTERSECTION, MOD_LINEART_EDGE_FLAG_LIGHT_CONTOUR, MOD_LINEART_EDGE_FLAG_PROJECTED_SHADOW, and LineartData::_geom::vertex_buffer_pointers.
Referenced by MOD_lineart_compute_feature_lines_v3().
| LineartBoundingArea * MOD_lineart_get_bounding_area | ( | LineartData * | ld, |
| double | x, | ||
| double | y ) |
Wrapper for more convenience.
Definition at line 4585 of file lineart_cpu.cc.
References lineart_get_bounding_area(), and MOD_lineart_get_parent_bounding_area().
Referenced by MOD_lineart_chain_feature_lines().
| LineartBoundingArea * MOD_lineart_get_parent_bounding_area | ( | LineartData * | ld, |
| double | x, | ||
| double | y ) |
This only gets initial "biggest" tile.
Definition at line 4516 of file lineart_cpu.cc.
References col, LineartData::_qtree::count_x, LineartData::_qtree::count_y, LineartData::_qtree::initials, int, LineartData::qtree, LineartData::_qtree::tile_height, LineartData::_qtree::tile_width, and x.
Referenced by lineart_bounding_area_get_end_point(), lineart_bounding_area_link_chain(), and MOD_lineart_get_bounding_area().
| 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, | ||
| struct 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 5234 of file lineart_cpu.cc.
References LineartCache::all_enabled_edge_types, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::CurvesGeometry::attributes_for_write(), BKE_collection_has_object_recursive_instanced(), BKE_defvert_ensure_index(), BKE_id_defgroup_name_index(), BKE_object_get_evaluated_mesh(), LineartChainWriteInfo::chain, LineartEdgeChain::chain, LineartCache::chains, count, CURVE_TYPE_POLY, blender::bke::curves_new_nomain(), DEG_get_evaluated_object(), 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(), Collection::id, Mesh::id, Object::id, blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), 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, LRT_SHADOW_MASK_ILLUMINATED, LRT_SHADOW_MASK_ILLUMINATED_SHAPE, LRT_SHADOW_MASK_SHADED, LRT_SHADOW_MASK_UNDEFINED, LRT_SHADOW_TEST_SHAPE_BITS, max_ii(), 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_MATERIAL_MASK_ENABLE, MOD_LINEART_MATERIAL_MASK_MATCH, OB_MESH, LineartEdgeChain::object_ref, blender::bke::CurvesGeometry::offsets_for_write(), ID::orig_id, LineartChainWriteInfo::point_count, blender::bke::CurvesGeometry::positions_for_write(), printf, blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), blender::bke::SpanAttributeWriter< T >::span, 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, Mesh::verts_num, and MDeformWeight::weight.
Referenced by bake_strokes(), and blender::generate_strokes().
| LineartCache * MOD_lineart_init_cache | ( | ) |
Definition at line 3579 of file lineart_cpu.cc.
References MEM_callocN.
Referenced by MOD_lineart_compute_feature_lines_v3(), and blender::modify_geometry_set().
| void MOD_lineart_smooth_chains | ( | LineartData * | ld, |
| float | tolerance ) |
Definition at line 1120 of file lineart_chain.cc.
References BLI_listbase_reverse(), BLI_remlink(), LineartData::chains, dist_to_line_segment_v2(), dist_to_line_v2(), dot_v2v2(), len_v2(), LISTBASE_FOREACH, LineartEdgeChainItem::next, normalize_v2_v2(), LineartEdgeChainItem::pos, sub_v2_v2v2(), and vec3().
Referenced by MOD_lineart_compute_feature_lines_v3().