Hi,
I understand tessellation has returned but only for Nanite. I’m wanting to tessellate a water surface to increase the resolution of mesh near the camera, however because its translucent, it cant be nanite.
Any suggestions please?
All the best,
Leon.
Hi,
Tessellation can still be achieved by using Geometry Script, following is a screen capture of the results of the built in “Uniform Tessellation” node.
[Image Removed]
It may have performance considerations but an approach could be to create a higher poly “proxy” version of your water mesh up front for up close shots; toggle it off and on and update its vertex state as necessary.
Without knowing your exact use case other options could include:
- Creating your own tessellation shader - there are a number of resources online to use for reference
- Using the built in Water System
- Create a custom Vertex Factory to apply Tessellation when necessary
If you can supply some more information or a minimal project that demonstrates your use case I may be able to provide more concise information.
Kind Regards
Hi,
To find examples of non nanite tessellation I would investigate the previous UE 4 tessellation implementation to determine if there are techniques that can be ported. Places of interest could be the UEditableMesh::TessellatePolygons function in EditableMesh.cpp or the LidarPointCloudVertexFactory.usf and FlatTessellation.usf shaders.
Additionally, an internet search for Unreal Vertex Factory implementations and mobile friendly water shaders/ river generators may also reveal tutorial resources.
Best of luck
Hi Tristan,
Thanks for all the options.
Unfortunately we cant use the built in water system as we have quite a bespoke setup with custom UVs in mind.
Regarding use case, it’s for a winding river through the level.
I’m very interested in the tessellation shader but i couldn’t find any resources online that didn’t target Nanite in UE5. If you can please point me at one I do think that could be my easiest option with what we have already.
I will also investigate the geometry script though on first look I wasnt sure if i could feed it a custom static mesh, but will dig deeper over the next couple of days.
Thanks again, have a good weekend,
Leon.
Hi,
Thanks for the swift reply.
Because im using it at an artists level, im not sure of what goes on so much under the hood with these functions. A lot of the UE4 methods relied on a slot in the material for tesselation which doesnt exist in UE5 other than for Nanite. I’ll see if anyone in the code dept can help too with the functions you mentioned.
I’ll keep digging around.
Thanks again,
Leon.
I suggest making your own shader even tho it might be a bit tedious.
Keep in mind that the right approach is vertex morphing (for smooth LOD transitions) with CPU mapping the vertices and indices. No domain or hull shaders for obvious reasons, geometry shaders are too expensive and limited in terms of vertex count. Since it’s mostly CPU doing the work you are free to use more than one mesh component for water plane to balance out the computations by adding more draw calls.
You can look up how it’s done in the official water plugin tho honestly there are way too much stuff there and you can kind of get lost in the code