Announcement

Collapse
No announcement yet.

[Tutorial] Anamorphic Bloom

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    [Tutorial] Anamorphic Bloom

    I wanted to have anamorphic bloom for quite a long time now and I finally found a way to do it natively, without cheating with particles.
    I detailed my findings in an articles on my personal blog : http://www.froyok.fr/blog/2017-05-an...nreal-engine-4

    It seems that the engine already support it since a few versions, but I didn't find any documentation for it. I simply discovered it by looking in the source code this week. However the default effect wasn't enough for me so I went further and tweaked the engine source code to enhance the effect. I only tested it with the Unreal Engine 4.15, I did not yet tested the 4.16 version and the new Convolution Bloom. However the advantage of my modification is that I don't change performances (unless I'm mistaken).

    I would love to hear some feedback from a Rendering dev about it. I'm sure it is possible to do better but the engine code is a bit too complex for me unfortunately. Some hints could help.



    Last edited by Froyok; 05-21-2017, 12:22 PM.
    - [Marketplace] Sci-fi and Glitch Post-process
    - [Tutorial] Anamorphic Bloom
    - [Tutorial] True First Person Camera
    - [Tutorial] Realtime Distance Field textures
    - [Tutorial] Seamless Portals

    Twitter - Portfolio

    #2
    This is actually very interesting. I imagine those controls to be natively supported in 4.17. Thanks for sharing!
    [Submitted] Advanced Data Validation

    Comment


      #3
      No way! Did you notice any performance loss when you cranked it up to 11?
      there's also r.bloomQuality which could solve some of the artifacts you experienced

      Really great timing, been working out anamorphic lens flares myself over the weekend

      I used a Post Process for mine,
      Just used a HLSL directional blur shader on the bright parts of the scene and layered it back on
      however it's really resource intensive, needs about 100 samples for it to look smooth
      Click image for larger version

Name:	c846e776bdf2428b90cfb8717ceb966c.jpg
Views:	1
Size:	650.5 KB
ID:	1128388
      Last edited by Bankworthy; 05-21-2017, 10:14 PM.

      Comment


        #4
        Originally posted by Bankworthy View Post
        No way! Did you notice any performance loss when you cranked it up to 11?
        there's also r.bloomQuality which could solve some of the artifacts you experienced

        Really great timing, been working out anamorphic lens flares myself over the weekend

        I used a Post Process for mine,
        Just used a HLSL directional blur shader on the bright parts of the scene and layered it back on
        however it's really resource intensive, needs about 100 samples for it to look smooth
        [*ATTACH=CONFIG]141949[/ATTACH]
        The performances shouldn't change from the default bloom that much (I guess the pixel coverage is a bit bigger but the whole system is identical). So it should be stable. The thing is, I have a very good rig so I don't experience performances issues really often. I need to do some profiling. As for the BloomQuality, I'm always on "Epic" in the editor, but again I have to try it to see how it will behave.

        Nice example in your case ! That's the goal i was looking for !
        100 iterations is indeed very expensive, using a downscaled intermediate render-target should be much more interesting is this case. This is basically how the default bloom works.
        - [Marketplace] Sci-fi and Glitch Post-process
        - [Tutorial] Anamorphic Bloom
        - [Tutorial] True First Person Camera
        - [Tutorial] Realtime Distance Field textures
        - [Tutorial] Seamless Portals

        Twitter - Portfolio

        Comment


          #5
          Well I have to give a try to this solution aswell. Anyway would like a native support for customs lens like UDK or so on, to fake aswell the far away lights.
          Hevedy - Instance Tools: https://hevedy.itch.io/hevedyinstances
          Hevedy - Image Tools: https://hevedy.itch.io/imagetools

          Comment


            #6
            Originally posted by Froyok View Post
            I wanted to have anamorphic bloom for quite a long time now and I finally found a way to do it natively, without cheating with particles.
            I detailed my findings in an articles on my personal blog : http://www.froyok.fr/blog/2017-05-an...nreal-engine-4

            It seems that the engine already support it since a few versions, but I didn't find any documentation for it. I simply discovered it by looking in the source code this week. However the default effect wasn't enough for me so I went further and tweaked the engine source code to enhance the effect. I only tested it with the Unreal Engine 4.15, I did not yet tested the 4.16 version and the new Convolution Bloom. However the advantage of my modification is that I don't change performances (unless I'm mistaken).

            I would love to hear some feedback from a Rendering dev about it. I'm sure it is possible to do better but the engine code is a bit too complex for me unfortunately. Some hints could help.



            One day, we'll be able to do that as a plugin.
            George Rolfe.
            Technical Coordinator at Orbit Solutions Pty Ltd.

            Comment


              #7
              I would love to do is as a plugin too, hacking the engine each time a new version comes out is annoying.
              - [Marketplace] Sci-fi and Glitch Post-process
              - [Tutorial] Anamorphic Bloom
              - [Tutorial] True First Person Camera
              - [Tutorial] Realtime Distance Field textures
              - [Tutorial] Seamless Portals

              Twitter - Portfolio

              Comment


                #8
                This is a nifty little engine modification, thanks for sharing. As far as dealing with engine changes, tis the life of a developer with an evolving platform! That's why you need to version lock for your projects, rather than update every time a new version comes out

                Comment


                  #9
                  Originally posted by Derjyn View Post
                  This is a nifty little engine modification, thanks for sharing. As far as dealing with engine changes, tis the life of a developer with an evolving platform! That's why you need to version lock for your projects, rather than update every time a new version comes out
                  I've tried a few methods of getting a hook into the post-processing stack for external modification (like adding a delegate in PostProcessing.cpp that could be used outside the engine module) but it's always been a bit of a rabbithole that eventually results in abandoning that and just directly adding code to the engine itself again. But, usually that always comes as a result of time constraints, so I'm hoping to figure out a decent and as unobtrusive a workaround as possible eventually.
                  Trent Polack (@mittense)
                  Personal Site | Development Blog | Joy Machine

                  Comment

                  Working...
                  X