Finally, Parallax Occlusion Mapping!

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!

B_2BteCU8AAKuWU.jpg

1 Like