Gimp .dds format


#1

I have been using this guide for the Gimp .dds format and have a few questions for others.

I am using these settings currently for everything (excluding heightmaps).

Compression
Diffuse- DXT-1
Normal- DXT-5
Specular-DXT-1

For all three:
Generate mipmaps
Filter-Box
Wrap mode-Repeat (My images use repeat)
Apply gamma correction at 2.2 (I adjust in game also)

I have found nothing really seems to change using the other settings with respect to the engine except file size.

What settings do others use and for what situations?

Have you found using any other settings to actually have an effect on the textures in game?


#2

I’d like to help, but I’m not really sure what you’re asking…

As far as I am aware DDS format is stored in a way the graphics card can read directly instead of biasing how a storage drive would prefer and having to jiggle bits around to suit it, and that the graphics card directly decompresses it as opposed to the cpu. It just means that texture loading is faster.

I’m guessing you already know that…

What differences are you expecting other than that? Could you maybe elaborate a bit further?


#3

The dds exporter has options like so for compression for instance,

Advanced Options Menu

Compression

NOTE: Use perceptual error metric becomes available when some type of compression method from
main menu (Compression:) is selected.

The Use perceptual error metric is supposed to enhance visual quality. I would suggest experimenting with the texture in a rendering program to see how it affects the model according to the texture type (Compression:) in question.

Doesn’t do anything I can detect though visually.

Then there’s this basically suggesting DXT5 is best for diffuse images,

NOTE 2: When creating and saving textures using the DXT5 format, I think it best to use AExp or, preferably, one of the YCoCg-ttypes over the typical DXT5 format when possible With modern hardware, the performance hit would be negligible.

YCoCg (DXT5) High-quality compression of color images can be achieved by using the DXT5 format after converting the RGB_ data to CoCg_Y. In other words, the luma (Y) is stored in the alpha channel and the chroma (CoCg) is stored in the first two of the 5:6:5 color channels. For color images, this technique
results in a 4:1 compression ratio with very good quality – generally better than 4:2:0 JPEG at the highest quality setting.

But from posts in the forum I see people using DXT1, which is supposedly best for black and white images. I see no quality difference between the two myself.
Edit: No difference between DXT5 and DXT1 in quality(Just file size). YCoCg /dxt5 doesn’t work at all.

Then for mipmaps,

Mipmaps

Filter:

  1. Default – no filtering is applied to image. Possibly/probably causes visual anomalies such as excessively sharp edges and stair-stepping artifacts.
  2. Nearest – bilinear filter, sharp switching between mipmaps?
  3. Box – is a polyphase box filter. Outside of the Lanczos and Kaiser falters, it’s a good choice for most cases. It’s also much faster than the other filters.
  4. Triangle – uses a triangle filter. The kernel has a larger width and thus produces blurrier results than the box flter.
  5. Quadratic – gaussian-type filter?
  6. B-Spline – trilinear filter?
  7. Mitchell – sync-type filter. Used primarily to reduce loss of detail while upsampling.
  8. Lanczos – similar to the Kaiser filter, the results are usually indistinguishable between the two.
    Lanczos may handle ringing and artifacts better. Can be tuned with Warp filter selections.
  9. Kaiser - Kaiser-windowed sync filter. It’s generally considered the best choice for downsampling filters, but in order to obtain best results it is advisable to experiment with Warp modes as is done with the Lanczos filter. Otherwise the resulting images could suffer from ringing artifacts or the result may not be as sharp as desired.

Tried Box and triangle as this says there would be a noticeable difference with blur but results were not really perceptible.

This is why I am asking about what options people are using and for what images they use it for.

Edit: Added missing YCoCg (DXT5) info.


#4

IIRC

DXT1 = rgb palette with no alpha or optional variant with 1 bit alpha (either opaque or trasparent)
DXT3 = rgb palette + 4 bit alpha
DXT5 = rgb palette + alpha palette

So the correct choices would be:

opaque textures (eg. a wall) : dxt1
semitransparent textures (eg. shaded glass): dxt5
textures with sharp alpha (eg. foliage): dxt3

I don’t think dxt compressed normal maps is a good idea, you will lose some degree of detail and the result might be suboptimal when converted back to the actual normal vector… the correct compression for normal maps would be 3dc.

Regarding the mipmaps filters, those are used just to create the mipmap layers of the dds.
If your texture is “pixel specific” like a minecraft texture for example, you’ll have to go with nearest, but it really depends on the subject of the texture, usually default is fine.


#5

Thanks for clarifying.


#6

The SDK don’t like that at all. Looked good in Blender though.