0906201a4c8fb84229a964dd25ba756cd9e2f044
Currently, some compositor operations produce en empty output buffer by specifying a COM_AREA_NONE canvas to indicate an invalid output, for instance, when the Mask operation references an invalid mask. The intention is that this buffer would signal that a fallback value should fill the canvas of consumer operations. The aforementioned behavior is currently implemented in a rather hacky way, where it is implemented using the Translate operation as part of canvas conversion in COM_convert_canvas, where the operation would clear the entire buffer with zeros since out of bounds checking would always take the out of bound case due to the empty buffer. This behavior is problematic because we can't control the fallback value, which would ideally be an opaque black color. Moreover, since implicit type conversion happen before canvas conversion by design, value typed buffers would eventually become transparent, which is rather unexpected to the end user since float/value outputs can't have transparency. This is not a good design or implementation, but a redesign will be too complex for now. So to fix this, we workaround it by handling the empty buffer case explicitly in the Translate operation and fill the output using a fallback black color, which works for both value and color typed buffers, since this would also be the output of the value to color implicit conversion. Pull Request: https://projects.blender.org/blender/blender/pulls/118340
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
