131 if (
tile.pixel_rows.is_empty()) {
139 ®ion,
int2(pixel_row.start_image_coordinate.x, pixel_row.start_image_coordinate.y));
141 int2(pixel_row.start_image_coordinate.x + pixel_row.num_pixels + 1,
142 pixel_row.start_image_coordinate.y + 1));
152 if (image_buffer.
planes == 8) {
158 &image, image_tile.
image_tile, &image_buffer, &
tile->dirty_region);
167 if (
tile.flags.dirty) {
182 MEM_delete(node_data);
221 : destination(group.start_destination),
234 tile_buffer.
write_pixel(destination, destination_color);
292 printf(
"Tile %d compression rate: %d->%d = %d%%\n",
296 int(100.0 *
float(encoded_size) /
float(decoded_size)));
303 for (
const int64_t group_index : group_range) {
309 copy_command.apply(item);
310 copy_command.mix_source_and_write_destination<T>(image_buffer);
322 if (
tile.tile_number == tile_number) {
349 this->vert_tris = {};
void BKE_image_partial_update_mark_region(Image *image, const ImageTile *image_tile, const ImBuf *image_buffer, const rcti *updated_region)
Mark a region of the image to update.
void BKE_image_partial_update_mark_full_update(Image *image)
Mark the whole image to be updated.
MINLINE int max_ii(int a, int b)
void BLI_rcti_init_minmax(struct rcti *rect)
void BLI_rcti_do_minmax_v(struct rcti *rect, const int xy[2])
Contains defines and structs used throughout the imbuf module.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object instance
void append_non_duplicates(const T &value)
draw_view in_light_buf[] float
ccl_global const KernelWorkTile * tile
NodeData & node_data_get(blender::bke::pbvh::Node &node)
void mark_image_dirty(blender::bke::pbvh::Node &node, Image &image, ImageUser &image_user)
void copy_pixels(blender::bke::pbvh::Tree &pbvh, Image &image, ImageUser &image_user, image::TileNumber tile_number)
void collect_dirty_tiles(blender::bke::pbvh::Node &node, Vector< image::TileNumber > &r_dirty_tiles)
PBVHData & data_get(blender::bke::pbvh::Tree &pbvh)
blender::VecBase< int8_t, 2 > char2
VecBase< int32_t, 2 > int2
ImBufFloatBuffer float_buffer
void write_pixel(const int2 coordinate, float4 new_value)
float4 read_pixel(const int2 coordinate)
TileNumber get_tile_number() const
void mix_source_and_write_destination(image::ImageBufferAccessor< T > &tile_buffer) const
DeltaCopyPixelCommand encode_delta(const CopyPixelCommand &next_command) const
bool can_be_extended(const CopyPixelCommand &command) const
void apply(const DeltaCopyPixelCommand &item)
CopyPixelCommand()=default
CopyPixelCommand(const CopyPixelGroup &group)
int64_t start_delta_index
image::TileNumber tile_number
Vector< CopyPixelGroup > groups
void print_compression_rate()
Vector< DeltaCopyPixelCommand > command_deltas
void copy_pixels(ImBuf &tile_buffer, IndexRange group_range) const
CopyPixelTile(image::TileNumber tile_number)
Vector< CopyPixelTile > tiles
std::optional< std::reference_wrapper< CopyPixelTile > > find_tile(image::TileNumber tile_number)
DeltaCopyPixelCommand(char2 delta_source_1, char2 delta_source_2, uint8_t mix_factor)
Vector< UDIMTileUndo > undo_regions
void mark_region(Image &image, const image::ImageTileWrapper &image_tile, ImBuf &image_buffer)
UDIMTilePixels * find_tile_data(const image::ImageTileWrapper &image_tile)
void rebuild_undo_regions()
static void free_func(void *instance)
struct blender::bke::pbvh::pixels::NodeData::@53 flags
Vector< UVPrimitivePaintInput > uv_primitives
void collect_dirty_tiles(Vector< image::TileNumber > &r_dirty_tiles)
Vector< UDIMTilePixels > tiles
CopyPixelTiles tiles_copy_pixels
ushort2 start_image_coordinate
ushort uv_primitive_index
float2 start_barycentric_coord
Vector< PackedPixelRow > pixel_rows
void mark_dirty(const PackedPixelRow &pixel_row)
struct blender::bke::pbvh::pixels::UDIMTilePixels::@52 flags
UDIMTileUndo(short tile_number, rcti ®ion)