I’ve had to extend the size of my terrain and in the process the textures have become blurred, losing all sense of height and scale. I’ve read about texture splatting but I’m not convenience it will help with detail. You’re basically sampling 2 textures based off an alpha map. This means 2 more textures in memory and it still looks repetitive.
I’ve also seen where a detail map is used to add details such as grass or dirt but this too seems like it is resources intensive as you need the grass texture and another texture in memory for the detail.
In both cases you would need a significant sized texture image to get detail and randomness.
Is there a better, inexpensive way to get detail and non-repetitive terrain or have I totally misinterpreted these two methods?
If it is just for the randomness you could use a deterministic random number generator in the shader to add some high-frequency noise to your height map. Perlin noise is the standard approach for this kind of application.
If you want to have it a little faster, another option would be to subdivide your current height map into blocks, which are in x- and y- direction just ring buffers and upload asynchronously only the needed parts, e.g. whenever the player enters a new block you have to send a new row/column of blocks to the GPU. Perhaps maintain the x-/y- ringbuffer of blocks in a texture (the one you’re actually reading from during rendering). At block transitions upload the next piece of height map to another texture (let's call it B). Then bind the ringbuffer texture as render target view, place a quad over the tile you want to replace and let the shader that fetches from texture B additionally add some perlin noise. By scaling the block size down it is possible to avoid framerate hiccups.
You could also generate terrains by only using Perlin noise.
Thanks for the reply Tsus. I've already added some noise to the heightmap but unfortunately they're created dynamically which means they can have large flat areas that show the repetition of the textures. I'm going to give texture splatting another go and see if I can minimize the texture resolutions to keep things fast. If it doesn’t look right I'll look into your 2nd option.
Also, if your detail textures feel too repetitive when tiled, you can use a high-pass filter to even them out and lessen the effect. There's a decent Gamasutra article on it. Googling "detail texture high pass filter" returned it as the top result for me.
Thanks for the link I'll check it out. As it stands now, I don't have enough texture slots to do the texture blending I was trying to implement. And I was thinking about it, this is not going to reduce the repetitiveness of the terrain anyway. Once again I'm at a fork in the road- having to decide on features vs quality. I don't think I can have lighting, shadows, a multi-textured terrain with details and maintain decent frame rate, requirements/specs, etc...
Scaling a texture helps with the pixelation and blurry look when up close but at a distance the terrain looks repettitive.