Closed laurelkeys closed 3 years ago
iterations: number of downsampling iterations used for blurring, which indirectly controls the spread distance / radius
For the user, it makes more sense to expose the distance or radius parameter.
threshold: filters out pixels under this level of brightness soft_threshold: makes the trasition between under/over-threshold gradual (0 = hard, 1 = soft)
Maybe you can find a way to expose only one parameter for the threshold instead of 2 ? Or call one of them differently ? I think Unity calls it "soft knee"
Maybe you can find a way to expose only one parameter for the threshold instead of 2 ? Or call one of them differently ? I think Unity calls it "soft knee"
I used threshold
instead of knee
as I thought that'd make its purpose clearer (i.e. to soften the threshold, so 0 is a harsh boundary and 1 is a "soft" one), since using knee
refers to shape of the function that is used for thresholding:
However, it may be better to use soft knee
so it's more familiar, Unity uses that (as you mentioned) and Blender calls it knee
(GIMP calls if softness
, btw). What do you think?
However, it may be better to use soft knee so it's more familiar, Unity uses that (as you mentioned) and Blender calls it knee (GIMP calls if softness, btw). What do you think?
I think the less parameter we have, the better it is. And if we can use something that is already established by the community, it's also better.
I have tested the bloom build you provided.
First of all, thanks for sharing a build, it really makes reviewing/testing easier.
I have encountered python issues with your build. But it's not related to your work and not a problem for testing. Although it's worth saying, as it may be related to your build. There is module import errors in the python console where opening appleseed.studio.
The bloom post process works well, good job !
In order to be able to use that post process, I think we need some kind of changes to see the post process effect interactively. A first step could be to add a button somewhere that render the post process without rendering the whole scene. Maybe in Rendering > Render post process
. A better way to do this would be to run post process when releasing a slider in the post process editor window. That would be perfect. What do you think @dictoon ? This could be done in a separate PR.
Regarding performance, it takes around 6seconds on a 4K frame on my 6-core 4Ghz AMD Processor, which I is too slow. But improvements can be made in a future work.
Added Bloom as a new post-processing stage. Its 5 parameters are:
iterations
: number of downsampling iterations used for blurring, which indirectly controls the spread distance / radiusintensity
: strength of the Bloom effect (i.e. blending factor with the original image)threshold
: filters out pixels under this level of brightnesssoft_threshold
: makes the trasition between under/over-threshold gradual (0 = hard, 1 = soft)debug_blur
: toggle to show only the Bloom target image, which is composited with the final renderMain changes:
ImageEffectApplier
s used in the Bloom stage, for:The implementation is pretty similar to Keijiro Takahashi's KinoBloom (used in EEVEE) and to Unity's Post-Processing Bloom.
However, instead of using the sampling filters from Jorge Jimenez's SIGGRAPH2014 presentation, it is based on Marius Bjørge's "Bandwidth-Efficient Rendering" presentation from SIGGRAPH2015 (and also, it is not implemented with shaders).