3D textures for landscape rendering


I’m planning to use a 3D texture to render a landscape. This texture consists of 4 2D textures - one for each terrain level. When using mipmapping this texture is reduced in all 3 dimensions for each mipmap level. This results in a pretty grey landscape in the far distance.

Do you have any suggestions ? I need mipmaps that only become smaller in the x and z dimension. I think this could be done by a pixel shader but this is the last thing I would try.

You can control filtering of dimensions vs LOD but you cannot control filtering on each texture axis independently. This would completely break the prefiltered storage mechanism inherent in MIP mapping and require much more texture storage for such a scenario.

You could do this but it will require 4 independent textures rather and multipass or multitexture.


so I see the following possibilities:

  1. not using mipmapping
    -> this looks quite ugly

  2. enlarge the 3d texture in y dimension by repeating slices of the texure cube
    -> my 256(x-dim.), 256(z-dim), 4(y-dim) texture would become a 256(x-dim.), 256(z-dim), 4*256(y-dim) texture and the last mipmap level would be 1x1x4 (x,z,y)

this uses extremly much texture memory and would be quite slow I think

  1. manually bled between 2d Textures
    -> this would limit the number of terrain levels per polygon to the number of textures that can be rendered in one pass or several passes are needed

Is there anybody who can give me any tips? Is there a solution I do not see?