- Home /
Apply colors to a mesh with a splatMap
I'm generating a mesh using a heightMap to which I add some PerlinNoise so it doesn't look all flat.
What I want to do now is color that mesh so that low grounds are green, medium brown and hight white (to make it look like a very simple mointain with snow at the top). To do so I created a splatMap from my heightMap hopping I could assign colors to areas I know will be around given height.
I wrote a shader to map the splatMap to my colors of choice, it looks like this :
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.r * _ColorPlain +
c.b * _ColorMountain +
(1-c.b-c.r) * _ColorTop;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
But when I apply a material using this shader to my mesh it's just a mix of all three colors weighted by the areas on the splatMap. When I apply the material to a plane it looks just right (but it's obviously flat). I hope I can achieve the result I want, maybe not with a splatMap ? I don't know why it doesn't work when I try to apply the texture to my mesh.
Thx in advance to anyone reading this and I'll be happy to provide any other info that could help solving my issue :)
Your answer
Follow this Question
Related Questions
Make Sprite-Diffuse shader work on mesh renderer? 0 Answers
Trouble with mesh rendering order 0 Answers
How to modify output color of built-in Terrain Shader with more than 4 Splat Textures? 2 Answers
Custom shader working in viewport but not in play mode 0 Answers
How to force the compilation of a shader in Unity? 5 Answers