Announcement

Collapse
No announcement yet.

Finally, Parallax Occlusion Mapping!!

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

    #16
    I'm still interested to see your POM version, what I have now i'ts not perfect and needs improvment
    hope to see more information (videos and pics) about your POM very soon.

    Regards

    Comment


      #17
      Hello all! Sorry for being away. IRL problems again. Also I took a long, ultimately failed detour on this that I can safely talk about now:

      I got permission cleared from the author (which I didn't realize I didn't need!) of a very advanced, very fast displacement mapping algorithm, and spent a long time struggling with getting custom non-material-editor shaders to cooperate. At a certain point the number of caveats necessary snowballed to the point where it was unmanageable and I had to give up on that branch. I will add it in a free update should the material editor support multi-pass shaders in the future. When it does, we're talking a realistic 2-4x speedup with no disadvantage beyond an extra draw call.

      However I'm still confident the older algorithm (similar to Majority's, which I assume is based on Tatarchuk's work) is worthy of release, especially given my improvements. You can expect:
      • Silhouette clipping at arbitrary UV coordinates
      • Hard or soft shadows from a single light source via Blueprints, with the shadows output separately to process as you like
      • - Shadows are aware of not only the light source's angle, but also its distance and width
      • - Shadows don't assume a directional light source like in most implementations. It can be a point (noticeable difference on large surfaces) or even change its parameters per pixel!
      • Custom Node texture object workaround which doesn't prevent multiple POM instances in the same graph (this will probably fix terrain too, still need to test that)
      • Better-than-binary post-raymarch solution finder
      • Viewing angle driven iteration counts (toying with the idea of allowing custom exponents for the falloff)
      • Dynamic LOD system which drastically improves performance
      • As many operations as feasible kept outside custom nodes to allow for maximum optimization
      • Built in heightmap channel selector, in case your heightmap is packed in with a normal map or the like
      • No plugins, post effects, or additional render targets needed
      • Lots of setup examples provided in the style of Epic's content walkthroughs, including glitch effects!
      • The ease and convenience that comes with an actively maintained package distributed through the Marketplace
      • Your requested feature HERE??


      Post release features will include the following if and when UE4 is updated to support them:
      • Displacement-aware pixel depths
      • 2-4x speed increase
      • Eliminating the Blueprint workarounds to implement shadows
      • Wider platform support (via better leveraging of the cross-compiler)
      • Custom Node-free setup
      • Shader-level antialiasing
      • Anything else that comes up really. I'm going to use this too, and want it to be the best!


      Stay tuned!

      Click image for larger version

Name:	B_2BteCU8AAKuWU.jpg
Views:	1
Size:	38.2 KB
ID:	1072172
      Last edited by SFtheWolf; 04-08-2015, 09:14 PM.
      Senior CEO in Chief of Game Builder Club and Building 3d Game Birds Gameapp Maker Co.

      Oldskooler PreDigital CRTify illustrious Patreon

      Comment


        #18
        Originally posted by SF View Post
        Hello all! Sorry for being away. IRL problems again. Also I took a long, ultimately failed detour on this that I can safely talk about now:

        I got permission cleared from the author (which I didn't realize I didn't need!) of a very advanced, very fast displacement mapping algorithm, and spent a long time struggling with getting custom non-material-editor shaders to cooperate. At a certain point the number of caveats necessary snowballed to the point where it was unmanageable and I had to give up on that branch. I will add it in a free update should the material editor support multi-pass shaders in the future. When it does, we're talking a realistic 2-4x speedup with no disadvantage beyond an extra draw call.

        However I'm still confident the older algorithm (similar to Majority's, which I assume is based on Tatarchuk's work) is worthy of release, especially given my improvements. You can expect:
        • Silhouette clipping at arbitrary UV coordinates
        • Hard or soft shadows from a single light source via Blueprints, with the shadows output separately to process as you like
        • - Shadows are aware of not only the light source's angle, but also its distance and width
        • - Shadows don't assume a directional light source like in most implementations. It can be a point (noticeable difference on large surfaces) or even change its parameters per pixel!
        • Custom Node texture object workaround which doesn't prevent multiple POM instances in the same graph (this will probably fix terrain too, still need to test that)
        • Better-than-binary post-raymarch solution finder
        • Viewing angle driven iteration counts (toying with the idea of allowing custom exponents for the falloff)
        • Dynamic LOD system which drastically improves performance
        • As many operations as feasible kept outside custom nodes to allow for maximum optimization
        • Built in heightmap channel selector, in case your heightmap is packed in with a normal map or the like
        • No plugins, post effects, or additional render targets needed
        • Lots of setup examples provided in the style of Epic's content walkthroughs, including glitch effects!
        • The ease and convenience that comes with an actively maintained package distributed through the Marketplace
        • Your requested feature HERE??


        Post release features will include the following if and when UE4 is updated to support them:
        • Displacement-aware pixel depths
        • 2-4x speed increase
        • Eliminating the Blueprint workarounds to implement shadows
        • Wider platform support (via better leveraging of the cross-compiler)
        • Custom Node-free setup
        • Shader-level antialiasing
        • Anything else that comes up really. I'm going to use this too, and want it to be the best!


        Stay tuned!

        [ATTACH=CONFIG]34253[/ATTACH]
        Sounds fantastic! Especially interested in:[*] Custom Node texture object workaround which doesn't prevent multiple POM instances in the same graph (this will probably fix terrain too, still need to test that)

        So, this is going to be released on the Marketplace?

        Comment


          #19
          Correct!

          I forgot to mention by the way that spiky thing is an old screenshot. Lots of release features like shadows aren't depicted in it.
          Senior CEO in Chief of Game Builder Club and Building 3d Game Birds Gameapp Maker Co.

          Oldskooler PreDigital CRTify illustrious Patreon

          Comment


            #20
            Great work mate. I am planning on buying this when it comes out. Any ETAs ?
            ArtStation

            General Development Blog

            Comment


              #21
              Looking good.
              check my blog - cybereality.com

              Comment


                #22
                Sorry for the delay, my health took a turn for the worse as it so often tends to.
                Oh gosh, I know this was a while ago, but are you OK now?

                A self-shadowing blueprint light source sounds pretty awesome! Also, Daniel W. commented on that POM thread, saying a Pixel Depth Offset material node is coming in UE 4.8: this will allow you to push pixels back into the screen, making post-process Ambient Occlusion possible. If you can use it, this will be huge.

                Viewing angle driven iteration counts (toying with the idea of allowing custom exponents for the falloff)
                Sorry, I tried to find a better solution than a simple fresnel falloff, and I just couldn't. I tried pixel depth, a combination of pixel depth and fresnel, and even just hard-coding the samples, but nothing improved performance better than fresnel by itself: more samples at oblique angles, less samples when viewed head-on. I think the reason for this is the majority of screenspace for a material like this will be viewed head on, and only a small portion of the screen will glance the edges. Also, the instruction count is much lower than if you wanted to combine another distance-based system to eliminate ridiculous sampling in the background. Even one extra instruction performed worse than simply allowing the samples to accumulate in the distance. You can still try your own solutions, though.

                Comment


                  #23
                  Just a question regarding what my eyes are seeing.
                  Can we perhaps have a wireframe shot of one of the screens?
                  http://celestialarch.com
                  Free UE4 things available. More coming

                  Comment


                    #24
                    Flat quad, I'm pretty sure. POM is a pixel parallax operation, not a vertex displacement one.

                    Comment


                      #25
                      Originally posted by mariomguy View Post
                      Flat quad, I'm pretty sure. POM is a pixel parallax operation, not a vertex displacement one.
                      That is correct.
                      VFX Artist
                      Portfolio: Here

                      Comment


                        #26
                        Yip. Why im curious to see a wireframe. I've never seen POM go beyond the limits of the silhouette.
                        The last time i saw POM was using Cryengine and also as you can see in the first picture the borders are retained.

                        So i'm curious to see a wireframe cause technically i should only see a plane or a sphere.
                        And im assuming the loss of respect for borders is caused by this thing called sillhoute clipping...
                        which then also makes me wonder how tileable textures behave
                        If this system has a interface like plug in your map and select value then yes i would buy it.
                        http://celestialarch.com
                        Free UE4 things available. More coming

                        Comment


                          #27
                          Originally posted by SF View Post
                          Correct!

                          I forgot to mention by the way that spiky thing is an old screenshot. Lots of release features like shadows aren't depicted in it.
                          Great! I really want to get my huge landscape to have working POM without having to deal with the problems we've had with referencing height maps in the other thread. I'll buy it as soon as it's out, my only concern is that marketplace submissions are so awfully slow that it'll be quite a while before it's available. Any idea when you will submit it to Epic? Also do you have any plans on releasing it though some other distribution method? So we don't have to wait three months for Epic to release it.

                          Comment


                            #28
                            Yip. Why im curious to see a wireframe. I've never seen POM go beyond the limits of the silhouette.
                            The POM shader in the other thread has silhouette clipping too, but it's so basic it doesn't work within itself, and doesn't work when you tile the texture. I tried writing it so it does, but it only worked for me in one direction, and not within itself. This one seems to be capable of clipping within itself, so the pixels glancing the surface will be capable of rendering the object behind it instead of flattening out the POM calculation.

                            Comment


                              #29
                              Also wondering how it would work on terrain when blending it with something that doesnt have this POM.
                              I read somewhere that 2 blending layers don't work so well when POM is involved

                              Its not that im against the idea of this, its just that after seeing content on the marketplace being released with half of the features you would think should be compulsory for that specific asset i am very skeptical about anything on the marketplace or going to the marketplace. And im hoping asking a lot of questions and pointing out potential let downs or flaws could help the creator add features they perhaps forgot about.
                              Last edited by C-Arch; 04-12-2015, 01:49 AM.
                              http://celestialarch.com
                              Free UE4 things available. More coming

                              Comment


                                #30
                                Originally posted by TAN_ View Post
                                Great work mate. I am planning on buying this when it comes out. Any ETAs ?
                                I expect to go gold in the next week or two! After that it's up to the Marketplace process.

                                Originally posted by mariomguy View Post
                                Oh gosh, I know this was a while ago, but are you OK now?
                                Not particularly, thanks for asking though. I'm too disabled to hold down a desk job. I have constant severe head pain (waiting on a neurologist appointment) and when it gets bad just surviving the day feels like an accomplishment. I'm on painkillers strong enough that I sometimes don't notice when I'm burning myself on the oven. I'm also struggling with complex PTSD and a possible heart condition among other things. If I ever disappear for a period please just assume it's health and not that I've given up on anything I'm doing.

                                Originally posted by mariomguy View Post
                                A self-shadowing blueprint light source sounds pretty awesome! Also, Daniel W. commented on that POM thread, saying a Pixel Depth Offset material node is coming in UE 4.8: this will allow you to push pixels back into the screen, making post-process Ambient Occlusion possible. If you can use it, this will be huge.
                                I will definitely add that as soon as it's out! I don't think it would even be difficult to include.

                                Originally posted by mariomguy View Post
                                Sorry, I tried to find a better solution than a simple fresnel falloff, and I just couldn't. I tried pixel depth, a combination of pixel depth and fresnel, and even just hard-coding the samples, but nothing improved performance better than fresnel by itself: more samples at oblique angles, less samples when viewed head-on. I think the reason for this is the majority of screenspace for a material like this will be viewed head on, and only a small portion of the screen will glance the edges. Also, the instruction count is much lower than if you wanted to combine another distance-based system to eliminate ridiculous sampling in the background. Even one extra instruction performed worse than simply allowing the samples to accumulate in the distance. You can still try your own solutions, though.
                                Sounds like you're having the same difficulties I am. Might scrap this part.

                                Originally posted by Crocopede View Post
                                Just a question regarding what my eyes are seeing.
                                Can we perhaps have a wireframe shot of one of the screens?
                                The screenshots are of the material editor default shapes. This is 100% pixel displacement using the mesh surface as a canvas. No vertices are being moved. If you wanted to get some really bizarre and unique effects you could move the vertices too!

                                Originally posted by Sitrec View Post
                                Also do you have any plans on releasing it though some other distribution method? So we don't have to wait three months for Epic to release it.
                                My only concern with direct purchases is the fact that I plan to provide updates and I don't think I can manually keep track of customers as a sole proprietor without it sucking up a disproportionate amount of time (especially since direct contact with people stresses me out). I'll see if there are any good solutions to this and update everyone here, because I don't want to wait 3 months either!

                                I'm also going to be setting up a Patreon soon (I finally feel comfortable doing so after they kicked 8chan/ED off). The primary reward for backers will be early access to basically whatever I'm working on at the moment, whether it be new graphics tech or music draughts or sky[]scraper alpha builds.

                                Originally posted by mariomguy View Post
                                The POM shader in the other thread has silhouette clipping too, but it's so basic it doesn't work within itself, and doesn't work when you tile the texture. I tried writing it so it does, but it only worked for me in one direction, and not within itself. This one seems to be capable of clipping within itself, so the pixels glancing the surface will be capable of rendering the object behind it instead of flattening out the POM calculation.
                                The way mine works is you can set arbitrary UV clipping borders. Using those, the material function outputs a 1 bit mask that you can then send to your opacity output, or process however you like. This lets you set the clipping points to something more complex than just constants in case you want a specific effect. It's still not as perfect as true geometry (nothing will be) but it's the most robust solution I've seen. It also avoids that "black fin" problem certain setups will get when wrapping UVs around a cylinder or what have you.

                                Originally posted by Crocopede View Post
                                Also wondering how it would work on terrain when blending it with something that doesnt have this POM.
                                I read somewhere that 2 blending layers don't work so well when POM is involved
                                The workaround for the custom node brokenness can cause issues with multiple POM materials in one graph but I'm using shared samplers which seems to sidestep that. I will update here when I do the terrain/blending tests. Of course, there will be always be additional considerations and some aesthetic tweaking required to get multiple POM/non-POM materials to look correct together, since you're relying on an optical illusion.


                                Great questions all! Thanks for being so communicative.
                                Senior CEO in Chief of Game Builder Club and Building 3d Game Birds Gameapp Maker Co.

                                Oldskooler PreDigital CRTify illustrious Patreon

                                Comment

                                Working...
                                X