Blender
V3.3
|
Classes | |
struct | TrianglePaintInput |
struct | Triangles |
struct | PackedPixelRow |
struct | UDIMTilePixels |
struct | UDIMTileUndo |
struct | NodeData |
struct | EncodePixelsUserData |
Functions | |
NodeData & | BKE_pbvh_pixels_node_data_get (PBVHNode &node) |
void | BKE_pbvh_pixels_mark_image_dirty (PBVHNode &node, Image &image, ImageUser &image_user) |
static float2 | calc_barycentric_delta (const float2 uvs[3], const float2 start_uv, const float2 end_uv) |
static float2 | calc_barycentric_delta_x (const ImBuf *image_buffer, const float2 uvs[3], const int x, const int y) |
static void | extract_barycentric_pixels (UDIMTilePixels &tile_data, const ImBuf *image_buffer, const int triangle_index, const float2 uvs[3], const int minx, const int miny, const int maxx, const int maxy) |
static void | init_triangles (PBVH *pbvh, PBVHNode *node, NodeData *node_data, const MLoop *mloop) |
static void | do_encode_pixels (void *__restrict userdata, const int n, const TaskParallelTLS *__restrict UNUSED(tls)) |
static bool | should_pixels_be_updated (PBVHNode *node) |
static int64_t | count_nodes_to_update (PBVH *pbvh) |
static bool | find_nodes_to_update (PBVH *pbvh, Vector< PBVHNode * > &r_nodes_to_update) |
static void | apply_watertight_check (PBVH *pbvh, Image *image, ImageUser *image_user) |
static void | update_pixels (PBVH *pbvh, Mesh *mesh, Image *image, ImageUser *image_user) |
Variables | |
constexpr bool | USE_WATERTIGHT_CHECK = false |
|
static |
Definition at line 236 of file pbvh_pixels.cc.
References BKE_image_acquire_ibuf(), BKE_image_partial_update_mark_full_update(), BKE_image_release_ibuf(), copy_v4_fl(), copy_v4_uchar(), dest, blender::bke::pbvh::pixels::NodeData::find_tile_data(), blender::bke::image::ImageTileWrapper::get_tile_number(), image(), LISTBASE_FOREACH, node, PBVH::nodes, blender::bke::pbvh::pixels::PackedPixelRow::num_pixels, PBVH_Leaf, blender::bke::pbvh::pixels::UDIMTilePixels::pixel_rows, ImBuf::rect, ImBuf::rect_float, blender::bke::pbvh::pixels::PackedPixelRow::start_image_coordinate, ImageUser::tile, PBVH::totnode, x, and ImBuf::x.
Referenced by update_pixels().
void blender::bke::pbvh::pixels::BKE_pbvh_pixels_mark_image_dirty | ( | PBVHNode & | node, |
Image & | image, | ||
ImageUser & | image_user | ||
) |
Definition at line 357 of file pbvh_pixels.cc.
References BKE_image_acquire_ibuf(), BKE_image_release_ibuf(), BLI_assert, blender::bke::pbvh::pixels::NodeData::dirty, blender::bke::pbvh::pixels::NodeData::flags, blender::bke::image::ImageTileWrapper::get_tile_number(), image(), LISTBASE_FOREACH, blender::bke::pbvh::pixels::NodeData::mark_region(), node, tile, and ImageUser::tile.
Referenced by blender::ed::sculpt_paint::paint::image::do_mark_dirty_regions().
Definition at line 350 of file pbvh_pixels.cc.
References BLI_assert, and node.
Referenced by blender::ed::sculpt_paint::paint::image::do_paint_pixels(), and blender::ed::sculpt_paint::paint::image::do_push_undo_tile().
|
static |
Calculate the delta of two neighbor UV coordinates in the given image buffer.
Definition at line 34 of file pbvh_pixels.cc.
References barycentric_weights_v2().
Referenced by calc_barycentric_delta_x().
|
static |
Definition at line 47 of file pbvh_pixels.cc.
References calc_barycentric_delta(), x, ImBuf::x, y, and ImBuf::y.
Referenced by do_encode_pixels().
Definition at line 185 of file pbvh_pixels.cc.
References node, PBVH::nodes, result, should_pixels_be_updated(), and PBVH::totnode.
Referenced by find_nodes_to_update().
|
static |
Definition at line 114 of file pbvh_pixels.cc.
References BKE_image_acquire_ibuf(), BKE_image_release_ibuf(), calc_barycentric_delta_x(), ceil(), clamp_f(), data, blender::bke::pbvh::pixels::TrianglePaintInput::delta_barycentric_coord_u, extract_barycentric_pixels(), blender::math::floor(), blender::bke::pbvh::pixels::Triangles::get_paint_input(), blender::bke::image::ImageTileWrapper::get_tile_number(), blender::bke::image::ImageTileWrapper::get_tile_offset(), image(), LISTBASE_FOREACH, PBVH::looptri, max_fff(), min_fff(), min_ii(), node, blender::bke::pbvh::pixels::UDIMTilePixels::pixel_rows, blender::bke::pbvh::pixels::Triangles::size(), tile, ImageUser::tile, blender::bke::pbvh::pixels::UDIMTilePixels::tile_number, blender::bke::pbvh::pixels::NodeData::tiles, MLoopTri::tri, blender::bke::pbvh::pixels::NodeData::triangles, x, ImBuf::x, y, and ImBuf::y.
Referenced by update_pixels().
|
static |
Definition at line 57 of file pbvh_pixels.cc.
References barycentric_inside_triangle_v2(), barycentric_weights(), barycentric_weights_v2(), is_inside(), blender::bke::pbvh::pixels::PackedPixelRow::num_pixels, blender::bke::pbvh::pixels::UDIMTilePixels::pixel_rows, blender::bke::pbvh::pixels::PackedPixelRow::start_barycentric_coord, blender::bke::pbvh::pixels::PackedPixelRow::start_image_coordinate, blender::bke::pbvh::pixels::PackedPixelRow::triangle_index, x, ImBuf::x, y, and ImBuf::y.
Referenced by do_encode_pixels().
|
static |
Find the nodes that needs to be updated.
The nodes that require updated are added to the r_nodes_to_update parameter. Will fill in r_visited_polygons with polygons that are owned by nodes that do not require updates.
returns if there were any nodes found (true).
Definition at line 206 of file pbvh_pixels.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::pbvh::pixels::NodeData::clear_data(), count_nodes_to_update(), node, PBVH::nodes, PBVH_RebuildPixels, blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), should_pixels_be_updated(), and PBVH::totnode.
Referenced by update_pixels().
|
static |
Definition at line 97 of file pbvh_pixels.cc.
References blender::bke::pbvh::pixels::Triangles::append(), PBVH::looptri, node, MLoopTri::tri, blender::bke::pbvh::pixels::NodeData::triangles, and MLoop::v.
Referenced by update_pixels().
Definition at line 170 of file pbvh_pixels.cc.
References node, PBVH_Leaf, and PBVH_RebuildPixels.
Referenced by count_nodes_to_update(), and find_nodes_to_update().
|
static |
Definition at line 278 of file pbvh_pixels.cc.
References apply_watertight_check(), BKE_pbvh_parallel_range_settings(), BLI_task_parallel_range(), CD_MLOOPUV, CustomData_get_layer(), do_encode_pixels(), find_nodes_to_update(), image(), init_triangles(), Mesh::ldata, blender::bke::pbvh::pixels::Triangles::mem_size(), mesh, Mesh::mloop, node, PBVH::nodes, num_pixels, blender::bke::pbvh::pixels::PackedPixelRow::num_pixels, PBVH_Leaf, PBVH_RebuildPixels, blender::bke::pbvh::pixels::NodeData::rebuild_undo_regions(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::bke::pbvh::pixels::NodeData::tiles, PBVH::totnode, blender::bke::pbvh::pixels::NodeData::triangles, USE_WATERTIGHT_CHECK, and user_data.
Referenced by BKE_pbvh_build_pixels().
|
constexpr |
During debugging this check could be enabled. It will write to each image pixel that is covered by the PBVH.
Definition at line 29 of file pbvh_pixels.cc.
Referenced by update_pixels().