Sign in to follow this  

Avoid repetitive texture look

This topic is 3569 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, I have created a terrain with texture splatting. Every layer consists of a seamless texture, that is repeated several times over the whole terrain. Since my terrain is really big my textures are repeated thousand times in every direction, which gives a really repetitive look: Is there an EASY way to avoid this repetitive look? Another question (that may be related to this problem?): If I use a desert texture it looks ok from a close view: cause you can see details. But from a bigger view distance it looks terrible (it looks like if its just one color): Is there a way to... add detail to such a desert texture? Or is the texture itself the problem? Thanks!

Share this post


Link to post
Share on other sites
One of the oldest and simplest techniques to the first problem is to use what some people call a 'detail map'. Essentially, make a second texture that just contains subtle variations, it can even just be a greyscale noise texture that slightly perturbs the base texture. Then you tile the two textures at different frequencies which are not evenly divisible. This gives you almost infinite variety across your surface, and can even be done on older fixed-function hardware.

Edit: If you do this, a very common setup is to use a texture like I described (with values centered around mid-grey, 128). Then have the detail map use the 'ADDSIGNED' blend mode, which is like a combination of additive and subtractive blending (values > 128 are added, < 128 are subtracted). Make sense?

Share this post


Link to post
Share on other sites
It depends on what you mean by "easy" (If you are going through the trouble to make a terrain renderer-- which isn't easy by any means--you ought to spend the time needed to make it look as good as possible...)

People have mentioned the detail texture option but this not is really going to help in your case.

There are are least two straightforward and fairly cheap methods you can use.

.................................................................................
1) sample two sizes of the base textures and between them lerp by distance. This method is use in the PC/XboX360 game "Two Worlds".

This is a suprisingly effective means to avoid the ugly tiling repetitions. Just sample each texture twice, using larger scale on for distant areas. Blend in a pixel shader like this: final.rgb=lerp(smallscale.rgb,big.scale.rgb,distance).

To make this completely free by saving both the double sample and the lerps, you can modofy the mip maps to already contain the different scaled textures...however this may look odd in sharp angles nearby.

.................................................................................
2) a "macro" texture, that is to give the terrain textures large-scale structure.

To get a macro texture, you can try taking a a satallite photo and flatening it out out a bit, removing the dark shadwos as so on, and greying it a bit. Then apply the large macro texture over the whole terrain, and then blend it with the color texture.

To blend you might what to try something like this in your pixel shader: final.rgb=saturate((colortex.rgb*macro.rgb)*1.2);

................................................................................

These two methods can and probably should be combined to get the best result.

However, there are more sophisticated methods you can consider, mostly involving
the use of perlin noise and procedural generation. In my own terrain renderer, tiling is completely nonapparent and the terrain has essentially unlimited detail with very large macro structures.

Share this post


Link to post
Share on other sites
What you could also do:

1. Create multiple variations of each texture (e.g. grass1, grass2, etc.). Make sure they look almost the same and the textures should be tileable with each other. Now when you render something that has grass, randomly select one of the textures you made. This should reduce repetition a bit, but not entirely as the borders will be the same for each texture (they are tileable).

2. You can reduce repetition by obscuring it. Plant a lot of trees (anything) on the grass and the repetition is not visible anymore; be sure to use more than one (tree) model and rotate them randomly otherwise you will only move the problem.

3. Increase texture size. If you double the resolution of your texture, repetition will be reduced to a quarter; texture size will go up 4x though..

Share this post


Link to post
Share on other sites
i mentioned this in the lounge thread 'Kojima : Blu-Ray not big enough for MGS4. '

unless u use a unique texture theres not much u can do about the tiling.
ways to reduce it -
- have a lowres unique texture covering the whole terrain, add detail textures to this to make it look 'more detailed' :)
- in your paint program, try using a high pass filter to remove the large details from the grass etc textures
-use more than one different grass texture

Share this post


Link to post
Share on other sites
Maybe you could consider a tiling approach like these?

http://research.microsoft.com/~cohen/WangFinal.pdf

http://graphics.stanford.edu/papers/tile_mapping_gh2004/

Share this post


Link to post
Share on other sites
One really simple technique I found was to use multiple tiled layers with irregular frequencies. First of all, the frequency of the layer you're using is way the hell too high. Back it down a bit. Then modulate in more layers to taste, with different frequencies. Avoid multiples. That is, if one is tiled every 8 units, don't tile the other every 32 units. Make it something weird like 5 and 13 or whatever makes you happy.

Watch out for one thing though -- modulating multiple textures together like this tends to create a really dark result. You may need to add an overbright factor to bring it back into a normal range. Just multiply the whole thing by a constant to get the desired light level.

Share this post


Link to post
Share on other sites

This topic is 3569 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this