Home Technical Talk

Vector displacement?

gnoop
polycounter
Offline / Send Message
gnoop polycounter
With all new games techniques coming my guess the vector displacement is what gonna store all  that hires geo in games, replace lods, normal maps   etc,
The problem is the vector displacement have always been a pain in ass in my experience while supposedly should replace all the puzzles of normal map baking..   I have never tried to do it  for a game yet so I mean offline renderers mostly.   It's never-ending zbrush test spheres export  and still  all kinds of wrong  every time over UV seams.

Is it really easier than  normal maps ?    Am I right when think that with vector displacement it  should work on long triangles   like normal maps or it's still same rules as for  b&w displacement and you need pretty tessellated mesh , not something like lod03  coming into hires model at close  ?  

Replies

  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    You still need a tessellated mesh. The only difference between regular displacement, and vector displacement is that you store the direction of the offset too, not just the length. Regular displacement almost always offsets along the vertex normals, while this can offset in any direction. There is also a less obvious use case of "vector displacement" which is foliage movement in games. This doesn't require a highly tessellated mesh but it technically does vector displacement without a map provided. Its usually math based. Oh. And you need normal maps anyways, because game engines doesn't alter the vertex normals after applying a displacement.

    People showing those vector displacements in nodevember is absolutely bananas though.
  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    Thanks Obscura.     So all those talks  about  how U5 is gonna be all hires models  through keeping hires meshes in floating point images  and no normal map necessary is not  about vector displacement ?



  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    That is a very specific implementation and its different from the type of displacement you could currently do .  You could call nanite a type of displacement, but its a specific case of it where the target mesh is created on the fly, and always starts from a plane. The UVs of the source mesh is also automatically altered in a way that it makes 100% uv space usage. You could mimic this behavior, like I did in my breakdown, but it wouldn't be as efficient to render as nanite. There is a lot of optimizations in the background and it also runs in compute shaders. It also has a different purpose than regular displacement or vector displacement. While those are intended to make offsets to add more detail to a mesh, nanite creates an entirely new mesh basically. Its more like a renderer on its own.
  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    Thanks Obscura     Somehow I thought it's basically vector displacement in its core
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    Well. It is and not at the same time. Its weird. This is because of how exactly it works. You should rather think of it as a high quality and very efficient remesher. And not something that you use to add more details to a lowpoly mesh.
Sign In or Register to comment.