DemoCoder said:
Very slight noise remains, but almost invisible
All other areas look essentially identical to the original
Specular blocking has almost completely disappeared.
'Almost invisible'
'Essentially identical'
'almost completely disappeared.'
All of these are
qualified statements regarding the particular test cases being used, in the same way that I can say that a DXT1 compressed RGB texture with no magnification frequently looks 'essentially identical' to the original, but if I look closer there may be problems.
In the test cases examined, with the degree of specularity being used, the specular blocking might have been relatively minor, but take the same data with a shinier material property (a higher specular power function) and things might change.
Fundamentally speaking compress a spherical region of a normal map with DXT5 and it will band significantly more around one axis than the other. This is hardly a good thing.
DXT5
is highly usable if you are willing to sustain some reasonable level of overall quality loss (and given the memory footprint reduction it's almost certainly a good tradeoff for most developers). That is why we researched it in the first place.
And yes, I think claiming that adding a swizzle to existing instructions constitutes "extra instructions" over and above 3Dc is disingenuous. No additional instruction slots are consumed by the DXT5 version. With a single #define macro, you could handle this situation for your entire codebase of shaders.
The DXT5 version will consume an extra slot in SM2.0 unless you have the appropriate swizzle in hardware. Unless you have the 'arbitrary swizzle' cap bit set then you
will have to add an extra instruction to your shader that may or may not be optimised out depending on the underlying hardware. 3DC does not consume an extra instruction slot, requiring the same number of instructions as standard normal maps (replacing a dp3 with a dp2add).
Significantly better is in the eye of the beholder. IMHO, this is an oversell. It is only significant in pathological cases. In the majority of cases, I bet it is not visible to most people unless they perform zoomed screenshot analysis.
And yet people still somehow find cause to advocate the advantages of FP32 over FP24 today even though the precision differences are far further down in the noise floor than the case we are talking about here, and only visible by generating far more difficult pathological cases than those required to demonstrate issues with DXT5. I expect that some of the people making extravagant claims for the benefits of FP32 are people who would also happily downplay the precision and quality advantages of 3DC over DXT5.
Given that 3DC is apparently oversell compared to DXT5 (with errors down in the 6->8 bit range) then FP32 must be massively oversold since the differences with respect to FP24 are much smaller...
Anyway, I digress. Naturally some of this is in the eye of the beholder, but my suspicion is that most people with backgrounds in image compression would probably agree with me when I state that the quality advantages of 3DC
are significant.