As a Roblox developer, it is currently too hard to make custom materials look good with smooth terrain. Roblox currently supports replacing built-in smooth terrain materials through the use of MaterialVariants. However, when you replace a built-in material you only have control over these characteristics:
- Color maps
- Normal maps
- Roughness maps
- Metalness maps
Other factors are not possible to change, such as:
- Height maps (or how materials blend together)
- How ‘smooth’ materials are when being painted
Of these two factors, the first one can be sort of changed because Roblox will automatically guess how to blend materials based on the normal maps you provide. The second option on the other hand is something we have no control over whatsoever and is what I want to focus on here.
Currently, the shape of smooth terrain falls in what looks like one of four categories shown in the image below:
On the right you have very smooth terrain and a more triangular, rocky shape of terrain. On the left you have full-on voxel-like shaped terrain and another blocky type terrain which allows for 45 degree angles.
When you start painting terrain in your scene, the shape of the terrain is fully determined by the material you are painting. Grass will always be smooth and Brick will always be blocky. Depending on the style of your materials, this can be very undesirable. Consider the following example scene I built using my own custom materials.
You may notice in the bottom that the Cobblestone material looks a little ‘choppy’. The shadows are not that clean. This is because the Cobblestone material is not fully smooth. If it were as smooth as Grass for example, it would not have these ugly artifacts. The Rock material in the background also does not look that great in my opinion. The texture I created for this material is rather smooth, but the shape of the material is very spiky. If I were to replace the Rock material with a Sandstone material with the same color, the shape would be more smooth such as in the image below.
It is my opinion that this smoother shape for the custom Rock material looks better. However, I would only be able to set this smoother shape by replacing the Rock material with another material of the right shape (in this case, Sandstone). Although this works, this practice is strongly discouraged! It also creates a problem where there is only a finite number of ‘smooth’ materials I would be able to map my textures to, despite there being many more materials in total.
My feature request would be to let us decide on a per-material basis what the shape of that material would be, simply choosing from a selection of shapes as shown in the very first image of this post. Taking this feature request a step further, it would be amazing if there were even more shapes to choose from. We already have dozens of materials, but when it comes to their shapes within smooth terrain, we are currently very limited. What about a rocky surface that is a little less spiky? Or what about a smooth surface that is a bit more wobbly so it could be used for custom sand?
If Roblox is able to address this issue, I would be able to create more immersive worlds. I have never been a fan of smooth terrain, but the ability to use custom materials on them has made the feature a lot more enticing. However, as long as I am unable to specify per material what their shape looks like, I would rather stick with meshes and terrain built out of parts, as that gives me a lot more control.