So...

  • When a planet is created using an elevation or height texture, that means that its relief is based on the pixels of Texture Data modifier textures
  • These textures usually have the darkest parts as the lowest points of the planet, and brightest parts as the highest points
  • Linking them to a generate height modifier and setting the values accordingly shapes the relief based on those values
  • Only 8 bits per channel of these textures are used, or 256 values
  • The higher their resolution, the smaller of an area are the pixels going to cover

Let's say that I use textures to model the real relief of the lunar surface in SR2. The darkest part of it, or minimum value should be -9093m high, and the brightest part 10761m as it actually is on the moon (I can set these parameters in a generate height modifier).

From lowest to highest point the change in elevation is 19854m. Since all textures can only have 8 bits of their channels used, we divide this number by 256.

That's 77m. In other words, the game only makes changes to the relief in increments of 77 meters using this height map and generate height modifier arrangement.

This means that in the areas of the moon with only subtle changes such as the maria even an increase in one value of a pixel in the textures must be reflected with a 77m rise in the terrain. Depending on the roughness of the body, that can cause some seriously awful banding or pixelation effects across it.

And that gets worse with resolution. You would think that by increasing the resolution you would increase the detail in the relief, but you don't. What you're actually doing is making the area on the surface covered by the individual pixels of the textures smaller.

If one pixel covered an area of 1000m on the surface in the original image the one with a higher resolution must cover more than that. Let's say 100m. Now, instead of having changes in increments of 77 meters every 1000m you have changes in increments of 77 meters every 100 meters! Even on the smoothest bodies this causes a banding effect.

WORST OF ALL, you're not even adding more detail by increasing the resolution, you can't. Most of the features at those scales don't get close to that kind of change in elevation. You don't expect 100m wide craters to be 77m deep, but they have to be in order to affect the planet's relief.

I propose a solution to this, add support 16-bit textures. With 16-bit textures the game has 65536 values to work with, and in the example of the moon I gave, it would cover increments of up to 0.3m. That's more than enough for any feature on any body of this nature to be accurately represented at that scale.

Example of the elevation pixelation/banding found in higher resolution elevation textures:

Suggestion Submitted

1 Comment

11 Upvotes

Log in in to upvote this post.