Grass Texture Splatting


Hi, I’m working on some terrain materials for a personal project: a top-down RTS game (think of Warcraft but with a camera that can be rotated around the vertical axis). So no time constraints nor obligations.

Anyway, I created a grass texture which tiles nicely. Some problems when I use it for 3d grass clumps, but nothing major.
I also have a displacement map that I built in sync with the albedo map.

Now I want to splat this texture with other textures to get some terrain going.

Using the displacement map as a mask to modulate the linear blending works better than expected, but of course it is less than ideal because the grass blades get progressively “cut” at an increasing height.

This doesn’t look bad, per se, and I guess it would be less noticeable if I used a dirt texture rather than a flat color. However, the original idea was to mask entire clumps as the blend goes from grass to dirt.

I’d like to avoid handpainting another texture just for the grass, but it if comes to that I can do it and stick the heightmap into the A channel of the albedo. An idea I had was to create the map by going through the photoshop layers stack of the clumps (about 100) and fill them with about 5 or 6 shades of grey, effectively making a heightmap with discrete values. Then, by blending at intermediate values, I’d be able to isolate specific parts. However, this might be tricky as I have some clump lines which go in a cycle (clump A above clump B above clump C above clump A).

Do you think this is the best approach? Would you suggest something different? I’m wondering if I should actually make a heightmap at all - do you think it would improve the visuals, considering how the terrain will be viewed?