tornavis/source/blender/compositor/realtime_compositor
Omar Emara 48d7d60c96 Realtime Compositor: Rewrite inpaint node
This patch rewrites the Inpaint node in the Realtime Compositor. The old
method suffered from discontinuities and singularities in the inpainting
regions. Furthermore, it ignored semi-transparent areas.

The new method is inspired by a two pass method described by the paper:

  Rosner, Jakub, et al. "Fast GPU-based image warping and inpainting for
  frame interpolation." International Conferences on Computer Graphics,
  Vision and Mathematics. 2010.

In particular, we first fill the inpainting region using jump flooding,
then we apply a variable size blur pass whose size is proportional to
the distance to the inpainting boundary. The smoothed region is then
mixed with the input using its alpha.

The new method is much closer to the Bertalmio-style diffusion-based
inpainting methods, and thus can more accurately close holes than
existing methods.

The aforementioned method requires variable size blur, which is quite
expensive for this use case, so a new implementation was added that
approximates the method using a separable implementation, which provides
a visually pleasing result assuming a sufficiently smooth radius field,
which is true for our case since the field is an SDF.

Fixes: #114422

Pull Request: https://projects.blender.org/blender/blender/pulls/114849
2023-11-22 13:23:02 +01:00
..
algorithms Realtime Compositor: Rewrite inpaint node 2023-11-22 13:23:02 +01:00
cached_resources Realtime Compositor: Rewrite inpaint node 2023-11-22 13:23:02 +01:00
intern Realtime Compositor: Support full precision compositing 2023-11-08 08:32:00 +01:00
shaders Realtime Compositor: Rewrite inpaint node 2023-11-22 13:23:02 +01:00
CMakeLists.txt Realtime Compositor: Rewrite inpaint node 2023-11-22 13:23:02 +01:00
COM_compile_state.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_context.hh Realtime Compositor: Support full precision compositing 2023-11-08 08:32:00 +01:00
COM_conversion_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_domain.hh Realtime Compositor: Immediately realize wrapped translations 2023-11-02 12:39:41 +01:00
COM_evaluator.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_input_descriptor.hh Realtime Compositor: Immediately realize transformations 2023-10-12 11:04:50 +02:00
COM_input_single_value_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_node_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_operation.hh Realtime Compositor: Support full precision compositing 2023-11-08 08:32:00 +01:00
COM_realize_on_domain_operation.hh Realtime Compositor: Immediately realize transformations 2023-10-12 11:04:50 +02:00
COM_reduce_to_single_value_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_result.hh Realtime Compositor: Support full precision compositing 2023-11-08 08:32:00 +01:00
COM_scheduler.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_shader_node.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_shader_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_simple_operation.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_static_cache_manager.hh Realtime Compositor: Support full precision compositing 2023-11-08 08:32:00 +01:00
COM_texture_pool.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
COM_utilities.hh License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00