World Displacement / Height map with custom UVs

I’ve got a material setup that has a scaleable UV so I can put the materials on static meshes that can also be scaled. For example, if I take a UE4’s static mesh cube and place it in the viewport, then scale it, I can slap this material on and scale it as well.

This works well for most of my uses except for World Displacement (tesselation). I really want my material to “pop”. I’m having trouble setting it up though because I can’t get the UVs to work.

If you look at the above, not pictured: if I take my “Append” from Scale Material group → Displacement Texture’s UVs, it gives me an error. “Node Transform Local space is only supported for vertex, compute, or pixel shader”

If I leave the material as-is pictured, I end up seeing the tesselation, but the bumps are as if the texture was not scaled like I have it. It also cripples the edges so there is alpha gaps.

I would like to use my scaleable UV but my understanding is that the displacement is GPU-driven, and only accepts local coordinate spaces since it has no information about the world. Is there an alternative way to do this or an easier method to use my heightmap?

Hey. I’m not in front of a PC but have a few pointers that might help.

  • There’s a Transform node for switching spaces (eg local2world).
  • You have nothing plugged in to the tessellation multiplier so the mesh wont tessellate
  • If you use editor planes / cubes you wont get very high polycount meshes as the max multiplier is/was around 15 (you can get around this by editing the shader usf files (up to the D3D limit (think it was 64x))
    Depending on your goal, I’d consider Parallax Occlusion Mapping since you’d need a lot of tris for that sort of detail

I still get the error about the local space even with the transform node, but the mesh not tesselating has been fixed, thanks. Any ideas about converting from local to world for the displacement UV?