2018 HDRP Terrain

I alredy read somewhere about fail around terrain in HDRP.
Can someone share a good experiance with? Im trying to upgrade project o HDRP, but simply cant do it because of missing terrain shader.

Nobody can share good experiences with it because HDRP has not supported terrain up to this moment. Unity are working on it, and once it reaches a stage where people can actually try it, you will hear a different story. Probably still not a perfect story initially, but only time will tell.

4 Likes

While it doesn't support the built-in terrain at the moment there is an excellent workflow you can use. The new Standard Lit Shader can be layered and can be vertex painted for painting layers and for placing foliage and objects. You simply use your own custom 3d mesh for terrain sections. It uses height based blending and looks great under the new rendering pipeline. Take a look at their demo of what can be done with this workflow. It's simply stunning.

https://blogs.unity3d.com/2018/03/12/photogrammetry-in-unity-making-real-world-objects-into-digital-assets/

1 Like

that sounds better for me =)
thx for advice.

1 Like

The shader looks like a common multi texture shader on objects, also using detail texture in the shader.

About terrain mesh, this will work great when your game is about a small game level It won’t work if you are making an open world because you’ll need terrain mesh LOD.
Anyway ShaderLit is a good shader for those making photogrammetry.

no problem to create common LOD (component) for mesh terrain.

1 Like

I was meaning progressive LOD.
As you move the camera the mesh nearest parts are detailled while far ones have less polygons, a real terrain LOD.
Perhaps some vertex shader could work.

2 Likes

How do you avoid seams?

While there are benefits to the built-in LODing functionality of the terrain you can still use large terrains with custom geometry. Naughty Dog does this with all of their games, using Maya as the level editor and to produce the terrain meshes. You have to learn how to work in that workflow. You can create your own LODs for the terrain chunks and LOD them in a very similar way that the built-in terrain does it’s LODing. You would also want to put a heavy focus on using a culling system or just use the built in occlusion culling. Mask things in fog for long draw distances and then hide your terrain chunks that fall well beyond the fog. There are a ton of tricks you can do to get amazing performance. You get performance improvements out of the box using custom terrain. Create a default Unity terrain and then import in your own custom mesh terrain and you’ll see right away you are saving draw calls on your mesh terrain, depending on how complex the material is on your custom terrain.

1 Like

Very easily in my case whenever I did mesh lod terrain: I simply decimate polys inside the cell instead of the border edges, which are always the lod 0 density. This way there is never an issue, and while there is a little waste along the edges, it is never enough to worry about.

All LOD tools I know of have a preserve edges option.

There are conditions where if your lod 0 is super-duper high (it shouldn’t be if it’s a game anyway) then these super dense polygons really far away could potentially cause problems, I haven’t seen any yet.

I prefer a dedicated terrain system because speed / ease of authoring, not really for performance.

3 Likes

Just got done watching the Unite 2018 Roadmap stream. I dont want to go into detail or I will probably get something wrong, but broadly speaking 2018.3 is the new target for all manner of terrain system improvements, including pipeline-related and performance stuff.

1 Like

Won't be able to listen to those cos, well I can't - so I'll wait for subs or some docs going on :)

Ahh, that makes sense. Is it noticeable or odd looking to have low poly areas surrounded by high poly strips? I presume not since it’s only in the distance.

1 Like

To be honest they had to cram so much in that most of the actual detail was on the slides rather than spoken. I might attempt a few choice screenshots.

Just rewound the livestream to the earlier roadmap talk and to be honest the youtube closed captions actually seemed to be working quite well, albeit I only tried them for a very short portion of the talk.

Anyway, screenshots of some relevance to this thread...

3538292--283901--Roadmap-TerrainTools.png
3538292--283902--Roadmap-TerrainRendering.png
3538292--283903--Roadmap-TerrainScripting.png
3538292--283904--Roadmap-TerrainPerformance.png
3538292--283905--Roadmap-TerrainPerformanceUpdated.png

5 Likes

Absolutely excellent (it was actually bang on what I was estimating) - but lovely to see it in print, thanks :)

1 Like

Yep, simple meshes LOD can do the job, it’s possible to make great levels with meshes, last game using them is God Of War on PS4. Not everyone is making open world games.

Heck yeah. That’ll help out a current project immensely.

Fingers crossed that it actually gets into our hands.

1 Like

Thery need a system where they handle stitching “pole” tile neighbor, at least 3 (7 neighbors) and 5 poles (9 neighbors) on top of poles (typical 8 neighbors) and it will be universal and planet ready.

The great is that is they still only to mach 4 edges to 4 distincts neighbor (diagonal only are problem, BUT they don’t factor on the math or code).

Basically just something to skew the mesh, on a plane, onto a sphere or arbitrary curvature, in order to have non euclidian but still quad tiling.

Regarding spherical terrain (planets):

There are so many dependant systems that it would make much more sense to not do that... yet.

So the idea that it should be the same terrain from space to ground level, that's not really logical from a perf or tech perspective due to the amount of things that would just not work at all (nav/physics/etc).

Instead I would have a (still flat) tiled terrain that duplicates at the edges, to represent the planet at ground level, and a proxy 3D planet model with tessellation that matches up to those stiched terrains conformed to a box-sphere model, then at a suitable point, crossfade between them, probably when entering the atmosphere.

A shader can give the same curvature during the transition to ground. It's work to do, but considerably more reliable, stable and effective than trying to make terrain support planets from anywhere in the solar system while still supporting all the other Unity features.

Done right, I don't even anticipate people noticing.