Substance Designer Normals/Height Map

Im experimenting with Substance in TD and have created a terrain in Substance using a high res plane with textures for height. Ive loaded the .sbsar into TD, the lighting details show up however there is no height to the terrain. I, guessing this is a limitation in TD? In Substance the geometry is viewed through a tessellation material.

Could you post the simplest of examples to help us reproduce/see your issue?

We donā€™t currently have support for tessellation shaders in TD, so this feature will not work right now. Sorry!

hi there
any plans to give them to us? would be very nice!
best
luka

I was experimenting with controlling GLSL vertex displacement with the height map last night. It looks nice, but unfortunately the shader is based on the standard 088 Phong and I havenā€™t been able to retrofit it to be a PBR shader yetā€¦ Dang shader errorsā€¦ Is it even possible? Or does displacement break PBR?

I was using the displacement shader from this example (bypassing the wavey bit) derivative.ca/Forum/viewtopic.ph ā€¦ 209#p34209

Maybe a more experienced GLSL programmer can make it happen.

Nah, there is nothing about PBR that would make a shader modifying vertices break in particular.

any plans to road map this Malcolm, would be a very interesting feature? Without it PBR seems a little redundant

How so? PBR is a lighting method designed to make surfaces look more like realistic materials, it has nothing to do with geometry or displacement. That is another feature entirely, which we are always considering and looking into adding ofcourse.

dont get me wrong I think whats already introduced is great. in Unreal or Unity, displacement with a Normals map is essential to a real and convincing looking object, without that weā€™re somewhat limited to very high poly meshes

Well displacement maps donā€™t really remove the need for high poly meshes though, they just change at what stage they are adjusted, and allow for dynamic adjustments on the fly. You still need vertices/polygons to displace. They would either be created beforehand and displaced, or created using a tessellation shader and displaced. If you donā€™t need dynamically adjust the number of polygons on the fly using tesselation shaders, starting with the full amount of polygons may be faster anyways.

Yeah agreed. I did alot of work with photogrammetry where extremely high poly retopologised meshes were projected to relatively low poly meshes in games engines. Would be great to reproduce this in TD. I also loved playing with the tesselation shader in Substance Designer and can only dream of the possibilities of similar in Touch!

I noticed that MAT operators now have an ā€œOpenGL Tesselated Wire Frameā€ mode. Iā€™m curious how that differs from the tesselation you are describing.

Iā€™ll take a crack at it. Not sure the PBR will do much in that particular demo, but I do need displacement and PBR in a few other cases.

Bruce

OpenGL Tesselated Wireframe is the driver creating wireframe out of the primitives I give it. Even if I give the driver a 4 point quad for example, it may tesselate that into two triangles so when you view it in that wireframe mode youā€™ll see two triangles instead of a quad.

Itā€™s unrelated to tesselation shaders which is a user controller way of tesselating geometry.

A while ago I adapted a displacement example from diatom on the forum for PBR, here it is. It reads the heightmap texture from the PBR material and displaces the vertices accordingly along the normals sampled from the normalmap texture in the PBR material.

As Malcolm said above, vertex displacement only gives good result if your geometry is already very high poly, as youā€™ll see on the sphere in my network.

displace-pbr.jpg

Tessellation is a different subject than displacement btw. Tessellation is a shader stage which can create extra triangles in your geometry where detail is needed on the fly.
So, you can play with this vertex displacement shader while we all hope for a user-accessible Tessellation shader stage in TD! :wink:

This example needs 099, substance material included.

EDIT: I moved the file to the Techniques forum

What youā€™re talking about there is a normal map - assuming you were doing the standard game engine workflow. A normal map is just a texture encoded with directional information so you can ā€˜fakeā€™ light bouncing off as if it was high poly detail on a lower poly mesh. Of course, you are mentioning displacement which is the weakness of a normal map on its own - the silhouette will not show the detail, since there is no actual geometry. People will use a normal map and then also displace in some cases to alleviate this a bitā€¦

Iā€™m brand new to TD, but I wouldnā€™t be surprised if there were ways to use a normal map, though that is a separate concern from displacing actual geometry. :smiley:

How does the ā€œHeight mapā€ parameter in the PBR MAT relate to all this? From the name it sounds like it would be for the kind of displacement mentioned in this thread. Or is it not fully supported yet?

A very good ā€œillustrationā€ of what tesselation and displacement can do combined with PBR
can be seen in this video showing how they use it in Notch from min 30 - 32:
cloudtrainingvideos.notch.one/No ā€¦ erials.mp4

Good exemple MXZEHN

My texture (mono16bit) in the PBR - Height Map, do nothing in my render.
Is it implemented ?

(nettoyeur did a solutionā€¦)

Itā€™s only working in experimental, Official it was not implemented in yet.
Thereā€™s a bunch of new parameters now as well, including a ā€œDisplace Verticesā€ toggle to do real vertex displacement.