When compressing DXT textures you usually compress the whole texture at a time. The goal in recent research areas (http://www.sjbrown.co.uk/squish/ for example) has been how to choose the end-points of the color line. There is a limit to this research area and some configurations of colors will still produce bad results, even using brute force methods to search the entire problem space.
There are some cases however where texture compression quality can be improved even further (which typically appear on sharp color discontinuities for example).
What if you had more data than just the input image?
Such as in the case of a UV unwrapped model. You can also input/output the triangle mesh that goes along with it. This will allow you to move pieces of the texture around to get better texture compression quality.
For example, a UV unwrapped model on the texture is built up of "islands" of triangle meshes. These islands are disconnected from each other and can move around freely.
As such, we can adjust the location of the islands in the texture, moving them 1 to 3 pixels to the right and 1 to 3 pixels down to see if the texture compression for those blocks improved.
Because they can move freely, we can also re-order and re-orient them in order to take better advantage of color coherency between island borders, as well as to line up the sharp color discontinuities with DXT block borders.
Its also technically possible to warp the islands's meshes themselves to line up the texture problem areas better with the DXT blocks.
No comments:
Post a Comment