004e3d39fa9e65c7043eb97ec5bfe7183bc3ee87
This patch redesigns the Glare node to improve the user experience. The improvements are as follows. Two new outputs were added, Glare and Highlights. The Glare output gives the generated glare without the input, and is useful when the user wants to adjust the glare before adding it to the image. The Highlights output gives the areas that are considered highlights when computing the glare, and is useful if the user wants to temporally check the highlights while doing adjustments or wants to use those as a base for creating a custom glare setup. The Mix node option was removed and a new Strength single value input was added to serve the same functionality. The Mix option had a range of [-1, 1], where the [-1, 0] sub-range essentially controlled the strength of the glare, 0 being full strength and -1 being zero strength. While the [0, 1] range returned the generated glare with an attenuated version of the image added, that is, it was useless except for the value of 1, which returned the generate glare only. Aside from being a very intuitive range, it also meant that the power of glare can't be boosted beyond the full strength of, you guessed it, 0. The newly added Strength input has a soft range of [0, 1] and can be boosted beyond 1. If the users want the glare only, they can use the newly provided Glare output. The Size node option used for Bloom and Fog Glow was removed and a new Size single value input was added. The Size node option had yet another very intuitive range of [1, 9], and it was related exponentially to the actual size of the Glare. For Bloom, the actual bloom size relative to the image was 2^(Size-9), so a Size of 8 means the bloom covers half of the image. For Fog Glow, the actual bloom size in pixels is 2^Size, so the glare size is not relative to the image size and would thus change as the image resolution change. Furthermore, the maximum possible glare size was 512 pixels, and the user couldn't make fine adjustments to the size. The newly added Size input has a range [0, 1], where 1 means the glare covers the entire image, 0.5 means it covers half the image, and so on. That means it is consistent between Bloom and Fog Glow, it is relative to the image size, it allows as large of a glare as possible, it is continuous for Fog Glow, but not for Bloom because that requires an algorithmic change that will be implemented separately. The Threshold, Streaks, Streaks Angle, Iterations, Fade, and Color Modulation node option was turned into a single value node input to allow the option to be used in node groups. --- Versioning was added to transfer node options into sockets, but it is not all 1:1 versioning, since the old Size option was not relative to the image size, so it depends on runtime information of the input size. As a guess, we assume the render size in that case. Versioning the [0, 1] range of the Mix option intentionally omits the attenuation of the image input, because that is almost certainly not what the user wants and was probably done thinking it controls the strength. Glare code now sets the alpha channel to 1, that's because it was already ignored in the mixing step, but now that we expose the Glare output, we need to set it to 1. So this is not a functional change. The get_glare_size() method was renamed for clarity since it now conflicts with the newly added Size input. --- This is a partial implementation of #124176 to address #131325. In particular, it adjust existing functionality, it doesn't add any new ones. Those will be added in separate patches. Pull Request: https://projects.blender.org/blender/blender/pulls/132499
…
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%
