|
Blender V5.0
|
#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 |
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) } |
| #define DBL_EDGE_LIM 1e-9 |
Definition at line 454 of file MOD_lineart.hh.
Referenced by lineart_line_isec_2d_ignore_line2pos(), and MOD_lineart_chain_split_for_fixed_occlusion().
| #define DBL_LOOSER 1e-5 |
Definition at line 606 of file MOD_lineart.hh.
| #define DBL_TRIANGLE_LIM 1e-8 |
Definition at line 453 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 ) |
Definition at line 596 of file MOD_lineart.hh.
| #define LRT_CLOSE_LOOSER_v3 | ( | a, | |
| b ) |
Definition at line 612 of file MOD_lineart.hh.
Referenced by lineart_shadow_finalize_shadow_edges_task().
| #define LRT_DOUBLE_CLOSE_ENOUGH | ( | a, | |
| b ) |
Definition at line 608 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 ) |
| #define LRT_DOUBLE_CLOSE_LOOSER | ( | a, | |
| b ) |
Definition at line 607 of file MOD_lineart.hh.
| #define LRT_EDGE_IDENTIFIER | ( | obi, | |
| e ) |
Definition at line 504 of file MOD_lineart.hh.
Referenced by lineart_geometry_object_load().
| #define LRT_LIGHT_CONTOUR_TARGET 0xFFFFFFFF |
Definition at line 507 of file MOD_lineart.hh.
Referenced by lineart_edge_from_triangle(), and lineart_occlusion_is_adjacent_intersection().
| #define LRT_MAX3_INDEX | ( | a, | |
| b, | |||
| c ) |
Definition at line 598 of file MOD_lineart.hh.
Definition at line 602 of file MOD_lineart.hh.
| #define LRT_MEMORY_POOL_1MB (1 << 20) |
Definition at line 456 of file MOD_lineart.hh.
Referenced by lineart_count_and_print_render_buffer_memory(), and lineart_mem_new_static_pool().
| #define LRT_MIN3_INDEX | ( | a, | |
| b, | |||
| c ) |
Definition at line 600 of file MOD_lineart.hh.
| #define LRT_OBINDEX_HIGHER 0xFFF00000 /* Higher 12 bits. */ |
Definition at line 503 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 502 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 501 of file MOD_lineart.hh.
Referenced by lineart_object_load_single_instance().
| #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().
| #define LRT_SHADOW_MASK_ILLUMINATED (1 << 0) |
Definition at line 470 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 476 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 473 of file MOD_lineart.hh.
Referenced by lineart_edge_cut().
| #define LRT_SHADOW_MASK_SHADED (1 << 1) |
Definition at line 471 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 469 of file MOD_lineart.hh.
Referenced by MOD_lineart_gpencil_generate_v3().
| #define LRT_SHADOW_SILHOUETTE_ERASED_GROUP (1 << 4) |
Definition at line 474 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 475 of file MOD_lineart.hh.
| #define LRT_SHADOW_TEST_SHAPE_BITS |
Definition at line 478 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 487 of file MOD_lineart.hh.
Referenced by lineart_occlusion_make_task_info().
| #define LRT_TILE | ( | tile, | |
| r, | |||
| c, | |||
| CCount ) |
Definition at line 594 of file MOD_lineart.hh.
| #define LRT_TILE_EDGE_COUNT_INITIAL 32 |
Definition at line 280 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 279 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 |
| 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.
| Enumerator | |
|---|---|
| LRT_SHADOW_CAMERA_DIRECTIONAL | |
| LRT_SHADOW_CAMERA_POINT | |
Definition at line 282 of file MOD_lineart.hh.
| Enumerator | |
|---|---|
| LRT_SHADOW_CASTED | |
| LRT_SHADOW_FACING_LIGHT | |
Definition at line 141 of file MOD_lineart.hh.
| Enumerator | |
|---|---|
| LRT_TILE_RECURSIVE_PERSPECTIVE | |
| LRT_TILE_RECURSIVE_ORTHO | |
Definition at line 271 of file MOD_lineart.hh.
Definition at line 458 of file MOD_lineart.hh.
| ENUM_OPERATORS | ( | eLineArtElementNodeFlag | , |
| LRT_ELEMENT_INTERSECTION_DATA | ) |
References 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 628 of file MOD_lineart.hh.
References BLI_INLINE, 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 780 of file MOD_lineart.hh.
References BLI_INLINE, 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, swap, 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, swap, 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(), view, 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(), 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, swap, 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, swap, and LineartEdgeChain::type.
Referenced by MOD_lineart_compute_feature_lines_v3().
| void MOD_lineart_clear_cache | ( | LineartCache ** | lc | ) |
Definition at line 3557 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 | ( | Depsgraph * | depsgraph, |
| GreasePencilLineartModifierData & | lmd, | ||
| LineartCache ** | cached_result, | ||
| bool | enable_stroke_depth_offset ) |
This is the entry point of all line art calculations.
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().
| void MOD_lineart_destroy_render_data_v3 | ( | GreasePencilLineartModifierData * | lmd | ) |
Definition at line 3535 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 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().
| LineartBoundingArea * MOD_lineart_get_parent_bounding_area | ( | LineartData * | ld, |
| double | x, | ||
| double | y ) |
This only gets initial "biggest" tile.
Definition at line 4480 of file lineart_cpu.cc.
References col, LineartData::_qtree::count_x, LineartData::_qtree::count_y, LineartData::_qtree::initials, LineartData::qtree, LineartData::_qtree::tile_height, LineartData::_qtree::tile_width, x, and y.
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, | ||
| 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().
| 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().
| 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, and sub_v2_v2v2().
Referenced by MOD_lineart_compute_feature_lines_v3().