Search Unity

Bloom effect requires adjustments for any supported screen resolution!

Discussion in 'Universal Render Pipeline' started by JasonSpine, Aug 19, 2020.

  1. JasonSpine

    JasonSpine

    Joined:
    May 14, 2015
    Posts:
    20
    Scene looks as the developer intended only for the screen resolution used during adjusting Bloom settings.

    I made some screenshots to show you how Bloom effect behaves for different resolutions with the same Bloom settings. The greater the resolution, the smaller the glow.

    It might be better for you to see the difference if you to download all screenshots and look at them one after another with the Image Browser on your PC.
    01 BloomSettings.png

    02 BloomEffect1280x720.png
    03 BloomEffect1920x1080.png
    04 BloomEffect3840x2160.png

    I know, I can try to adjust bloom settings for all supported resolutions and interpolate between them.

    But all game developers using bloom would be happy if URP developers would implement some kind of formula that would require bloom settings for a single resolution, and would recalculate bloom settings for other resolutions.
     
    burningmime, Sylmerria and JesOb like this.
  2. Memoriesin8bit

    Memoriesin8bit

    Joined:
    Feb 20, 2020
    Posts:
    10
    I usually don't like to dig out old threads from the grave, but it's been almost a year and this problem still persists.

    So, did anyone ever find a reliable workaround for this? I've been trying to replicate a reasonable scale but even when combining intensity and scattering, the effects look inherently different between say HD, 4K and 8K and you can just get a so-so approximation.
     
  3. UnityLighting

    UnityLighting

    Joined:
    Mar 31, 2015
    Posts:
    3,874
    This is a logical technical issue
    The problem is on low-resolutions that make bloom more blurred
     
  4. Memoriesin8bit

    Memoriesin8bit

    Joined:
    Feb 20, 2020
    Posts:
    10
    I would understand if this affected only lower resolutions, but the effect is continuous. So you can have a perfectly well looking slight bloom effect around objects at HD resolution which then diminishes drastically at 4k and 8k. If you're making a game for limited range of resolutions, that's probably fine, but otherwise it can become a problem - especially if you're making a stylized game that heavily relies on glow effects (lasers, light sabers, etc)
     
  5. UnityLighting

    UnityLighting

    Joined:
    Mar 31, 2015
    Posts:
    3,874
    Use scripting to change bloom intensity for different resolutions
     
  6. Memoriesin8bit

    Memoriesin8bit

    Joined:
    Feb 20, 2020
    Posts:
    10
    That is what I have been trying to do. Without much success.
    If you have a very bright emission, you can turn up the intensity to resolution. Works fine.
    But if an object should only emit a faint glow, changing up the intensity will only make it brighter and it'll eventually end up with a very harsh effect while the former halo around it entirely disappears. I tried to compensate this with scattering, but I have either not found the right formula to keep the effect representable or it's simply not possible with this particular implementation....
     
  7. youlweb

    youlweb

    Joined:
    Mar 19, 2016
    Posts:
    5
    This is definitely an issue for any production environment. It is hard to achieve consistency.
     
  8. anthonov

    anthonov

    Joined:
    Sep 24, 2015
    Posts:
    160
    my game graphics are exclusively bloomed lines.
    I'm on Unity 2020.1
    I just realized after 4 months of release that my game looks very different on screens with different resolutions than mine.

    In my version of Unity "Scatter : Set the radius of the bloom effect in a range from 0 to 1."
    So 0 to 1 what ? percent ? inch ? screen width ?

    Meanwhile in Unreal Engine 4 "Bloom size : The size in percent of the screen width"
     
    Last edited: May 15, 2022
  9. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,791
    The problem is that it downscales the buffer to say half the native resolution and then blur with fixed pixel width (which you need to, because blur starts looking weird if you do very high width kernel blurs).

    So as the resolution of that bloom buffer changes, so does the size of bloom.

    The solution is to sort of always downsize your buffer to a fixed resolution and then do the blur. That would fix the issue. Things might look a bit worse, since arbitrary downscales typically look worse than half / quarter etc

    You may want to have it handle doing it in multiple passes if the starting res is too high for better results.
     
  10. anthonov

    anthonov

    Joined:
    Sep 24, 2015
    Posts:
    160
    I don't know how to dig into this, but for now, in my case I'm going to just lock screen resolution.
     
    Last edited: May 15, 2022
  11. Bordeaux_Fox

    Bordeaux_Fox

    Joined:
    Nov 14, 2018
    Posts:
    589
    How is bloom done for different resolutions in other game engines like Unreal or Godot? Is there any pratical fix at all?