Terrain Shaders in Shader Graph - New in Unity 6.3

The Asset Store is such a tiny part of their near two billion yearly revenue that it doesn’t really factor in any meaningful decision making at the company.

1 Like

Thanks for the clarification, I think this factor still exists, but the impact is smaller.

I believe they’re referring to Unity not wanting to step on toes of established asset creators with popular solutions

1 Like

Hi,
I was wondering, is there any downside to bypassing the “Layer” system entirely and just building your layers from material properties or embedded textures?

I edited the sample sub graphs to work with this method, but wasn’t sure if layers help with performance in some way

Per Unity’s own data from years ago, the main consumers of asset store assets are engine newbies who don’t know gamedev or know very little. This is not what funds Unity the company. Asset Store could stop existing tomorrow with practically no impact on Unity’s bottom line. It might have long term impacts for new user acquisition, but that’s pretty much it.

I know indies see asset store ecosystem as this cornerstone thing no other engine has, but Unity the company is not making decisions based on Asset Store simply because indies can’t sustain Unity as it exists today with thousands of employees and nearly two billion of yearly revenue out of which Asset Store portion is really, and I mean really tiny.

If all indies stopped using the engine tomorrow, Unity would do just fine. Hence them considering Asset Store at all in major feature decisions is so incomprehensible to me. A multinational megacorporation does not care about individual asset store creators. Unity has outgrown indies as the driving force behind any kind of decision making.

1 Like

Did you even read what I said?

I’m not talking about unitys bottom line. I’m talking about them probably not being eager to undercut popular asset store asset creators.

Solutions like this new terrain shader probably take away sales from packages like microsplat. I’m sure Unity factors that in.

Multinational corporations caring about individual asset store creators bringing in them pittance compared to their main clients (large mobile studios, large industry development houses, etc) and even military contracts is a naive idea. No individual asset or creator dictates Unity’s direction is what I’m saying. It’s a nonstarter.

Cancelling new terrain has nothing to do with the asset store or creators on it. The cost/benefit analysis likely didn’t pan out. Most of their main money makers don’t need high end terrain tools with limited export targets or already have custom implementations so they gain nothing by reinventing the wheel.

It’s very weird to me you still seemingly can’t grasp my point and think it has anything to do with how much money Unity makes from the asset store :face_with_monocle:

Anyways….

Shader Graph targets for terrain are amazing. The example nodes are super useful as well. Thank you to the world building team.

1 Like

No, there’s no downside to bypassing the layer system. You can create your own layers with your own samplers and expose the texture parameters to the material if you want to manage things that way. And you can make auto materials that get applied based on slope angle and altitude if you want. No splat map required.

The reason you might want to use the layer system that’s already in place is so you can use Unity’s tools for painting and editing the layer masks, but it’s not required and there’s no performance advantage to doing it that way.

5 Likes

Omg great work! I’m a huge fan for u Ben. I’ve been working a lot on shader graph recently watching a lot of your content about it and have some trouble that really hard implement right way to terrain. But yet you guys did a great job! Really looking forward to this features and can’t wait for LTS released soon!

Thanks Ben, appreciate the response. Been getting really amazing results so far setting up procedural texturing with the angle based masks, and finally having full control over tiling separation between close / far with the camera distance node.

This is a fantastic new feature

1 Like

We need an entirely new terrain system, not just adding more decorations to an outdated relic.

3 Likes

The current terrain system is just garbage, and this pile of garbage has probably been in the engine for over a decade without any substantial improvements.We need to get the new terrain system team back.

5 Likes

This is really astonishing update and useful sample.
I’m interested in CSNOH packing scheme.
It’s cheaper but has sufficient visual quality.

While each terrain shader is ordered descending by cost in custom editor, it’s very intuitive and meaningful.
Thanks!

Seems like the Layer Mask in the Terrain Texture node can only sample the first four layers. How can the other 4 layers be accessed? Increasing the input Index just results in the output 0, and the terrain is still doing 2 passes.

The behavior here is different depending on if you’re using URP or HDRP. In URP, you create a shader with 4 layers and then the terrain is rendered twice, the first time for the first 4 layers and then the second time for the next 4 layers. In HDRP, you can create a shader that supports up to 8 layers all together. We are working on some templates that will be available in the Template Browser that illustrate this.

4 Likes

Thank you for taking a look at it. I’m glad you like it!

1 Like

Alrighty thanks Ben for the insight! I’ll wait for the templates to see if there’s a method to isolate rendering layer logic despite the 2 passes to ensure only expensive layer effects are used minimally on any layer 0-7 and not duplicated twice.

Would be nice to support arbitraty number of layers in the terrain shaders (single pass).

Maybe it’s already possible now? Just ignore layers and assign all textures (including splat maps) manually? The painting could still work (it just modifies splat maps).

I’ll explore this when we upgrade to 6.3. It seems super useful to use texture arrays for layers and then sample 1-4 layers with highest value in splat map. Since it’s texture array, it’s possible to “sample dynamically”.

Can someone competent reply whether this is valid approach?

3 Likes