While I still don't have the approval of my professor, I plan to talk in my diploma also about efficient texture storing, meaning texture compression.
Traditionally, one can lower either the spatial resolution, or the colour resolution. Now we want to have both high detail textures and no colour banding.
So the problem is, how to keep the spatial details high without sacrificing too much colour resolution. Lets have a look at that picture:
We could may be lower the resolution of some less necessary colour cannels, especially R and B. To show the effect, now any tile of 8x8 texels get only one RB-value, but G is still stored per texel.
Now we have of course a visible tile structure. Lets try to use a bilinear interpolation of the RB-channels:
The entire pic is now very blurry. I tested in earlier times that one can lower the R-channel by factor 2/3 (so it is upscaled with 1.5) and B-channel even by factor 0.5 (upscale with 2.0 then) without noticable blurryness. May be we should try another colour model. I took YCbCr. Y (Brightness) will be stored full-res, but CbCr (Colour) only once per 8x8 tile:
That looks much better. Lets go to even larger tiles of 16x16:
Now finally we can easily see the tile structure. Lets – even though one expects blurryness – try it again, to use a bilinear filter for the CbCr-Channels:
This is still acceptable, if you know that only one color is stored only for 256 texels.
To avoid visible tiling artifacts, Simon Fenney suggests to use a bilinear filtering of the reference colours. (Have a look at http://www.powervr.com/Downloads/Factsheets/.) His compression method is not simple RB-downsampling, but more sophisticated.
Nevertheless, I think, to deliver best sharpness its best to use the YCbCr colour system and sacrifice CbCr information only. Traditional texture compression techniques are still working in the RGB colour space. But even though the reference colours are stored 5:6:5, so the resolution of G ist the highest, YCbCr offers more flexibility and allows larger tiles without too much visible losses.
On the other hand, DXT1 is often good enough, and uses fully independent tiles, which are also nicely small.
Traditionally, one can lower either the spatial resolution, or the colour resolution. Now we want to have both high detail textures and no colour banding.
So the problem is, how to keep the spatial details high without sacrificing too much colour resolution. Lets have a look at that picture:
We could may be lower the resolution of some less necessary colour cannels, especially R and B. To show the effect, now any tile of 8x8 texels get only one RB-value, but G is still stored per texel.
Now we have of course a visible tile structure. Lets try to use a bilinear interpolation of the RB-channels:
The entire pic is now very blurry. I tested in earlier times that one can lower the R-channel by factor 2/3 (so it is upscaled with 1.5) and B-channel even by factor 0.5 (upscale with 2.0 then) without noticable blurryness. May be we should try another colour model. I took YCbCr. Y (Brightness) will be stored full-res, but CbCr (Colour) only once per 8x8 tile:
That looks much better. Lets go to even larger tiles of 16x16:
Now finally we can easily see the tile structure. Lets – even though one expects blurryness – try it again, to use a bilinear filter for the CbCr-Channels:
This is still acceptable, if you know that only one color is stored only for 256 texels.
To avoid visible tiling artifacts, Simon Fenney suggests to use a bilinear filtering of the reference colours. (Have a look at http://www.powervr.com/Downloads/Factsheets/.) His compression method is not simple RB-downsampling, but more sophisticated.
Nevertheless, I think, to deliver best sharpness its best to use the YCbCr colour system and sacrifice CbCr information only. Traditional texture compression techniques are still working in the RGB colour space. But even though the reference colours are stored 5:6:5, so the resolution of G ist the highest, YCbCr offers more flexibility and allows larger tiles without too much visible losses.
On the other hand, DXT1 is often good enough, and uses fully independent tiles, which are also nicely small.