Why doesn't UE4 have plausible POM?

Hi.

Im curios why UE4 does not have plausible POM support.
Let me clarify what i mean by this.

POM that looks at heightmap data and creates a pom effect without the need to create elaborate material setups.
Lets take Cryengine for example.

You add a heightmap to the heightmap texture slot. Done.
Where as in UE4 you are left to create very elaborate setups in order to get POM to work and look like well… POM. And on top of that its super expensive on the renderer.

Is this to do with deferred rendering?
I am not dissing on the engine. Just merely trying to understand why something that has been around for years in gaming engines took a step back when it comes to usability.

It does as of 4.9. Take a look at this thread: POM material - Rendering - Epic Developer Community Forums towards the end. RyanB has integrated it to master (So its available now, if you cherry pick it, which I have done) complete with Pixel Depth for proper intersections.

It still involves some serious material setups.
I’m not a material guy… if something needs more than 2 nodes i lose interest.

Also the question is still unasnwered. i am curios whats different to other engines… why it requires such exhaustive setups as opposed to saying hi here is your pom.
And why is it expensive… and what is considered expensive? If by expensive they mean a GTX 670 cant handle it… then something is seriously wrong.

Its not even that complex of a setup. It is only one node “ParallaxOcclusionMapping” with a bunch of inputs. Unfortunately your not going to get anything simpler, as the material editor is not designed like that, the beauty of it being a material function, is it can be well integrated into numerous types of materials, rather than just having a hardcoded POM shader and that is it. If you think its too difficult to use, then its only your loss really.

It can be expensive because it has loops that perform anywhere from 4 to 32 steps (potentially more). Alot of the high quality POM pics u see, use a step of around 128 or higher. As for performance in an individual game or on a individual GPU, you will need to run your own tests.

Umm… It’s expensive because it provide good real visuals compared to other methods - it’s created by instructions, not by magic :stuck_out_tongue:
It’s considered as a high/very high feature everywhere, including CryEngine

As every other powerful technique with good visuals - you should use it wisely with LoD system and so on.

edit: Also, I’m moving this thread to Rendering section

So its not a matter of the way the deferred renderer works but more a matter of it not being implemented?
By implemented i mean plugging in a heightmap to a POM input on the material where you would plug in normal map, base color etc.

Its easy to say its a loss if viewed as too difficult but take a look at cryengines POM. It works.
Questioning why something is not working or implemented a certain way is just that… a question and should not evolve into cheap remarks.

Wasnt a cheap remark, was merely a statement, you don’t have to use it, but really your the only one missing out by choosing not to use it. The way it is implemented is actually my preferred method, than having a POM input, why you may ask? Because its more customizable, I can feed it into a triplanar material and have triplanar parallax, can’t do that with an input only method, I can have animated POM, I can have landscape based POM, and the list goes on.

Fair enough… im having a bad day. POM seems over complicated for my desired results. Following the methods provided in the thread results in water looking surfaces.
Guess im just grumpy after that…

So it comes down to giving users flexibility but enforces a firm understanding of the material editor and all its functions?

I don’t think it’s to do with deferred rendering, no.

All that POM does really is distort the texture coordinates of a surface based of the viewer’s position and viewing angle to create an illusion of a 3D object, but as far as the engine is concerned it’s still a flat surface. This is why the effect always “sinks into” the surface, never extrudes outwards. It’s still a very expensive calculation nonetheless.

There are some additional tricks around self-shadowing which I don’t know if Epic handle before or during the lighting phase, but POM should be perfectly compatible with a deferred renderer.

So for a quick and dirty POM using the new POM Material Function. Results as follows:


You can use the following network. Requires heightmap, normal map, and base color. Min Steps and Max Steps should really be either left as default (8 and 32) or configured how you want, 128 will give you a smooth step, but is quite expensive. I am using the Kite Demo textures for this example.

Yes that… that is what i was talking about. I want that… need to wait for 4.9 though. Too scared to migrate my project to a preview build. That gives me hope… thx Galaxy