Set correct DXT5n swizzle code.

Select swizzle codes in nvtt instead of nvimage.
This commit is contained in:
castano
2008-10-01 22:28:57 +00:00
parent b284669993
commit 68be24bf00
4 changed files with 43 additions and 14 deletions

View File

@ -371,6 +371,9 @@ void nv::SlowCompressor::compressDXT5n(const CompressionOptions::Private & compr
ColorBlock rgba;
BlockDXT5 block;
squish::WeightedClusterFit fit;
fit.SetMetric(0, 1, 0);
for (uint y = 0; y < h; y += 4) {
for (uint x = 0; x < w; x += 4) {
@ -389,7 +392,18 @@ void nv::SlowCompressor::compressDXT5n(const CompressionOptions::Private & compr
}
// Compress Y.
OptimalCompress::compressDXT1G(rgba, &block.color);
//OptimalCompress::compressDXT1G(rgba, &block.color);
/*if (rgba.isSingleColor())
{
OptimalCompress::compressDXT1G(rgba.color(0), &block.color);
}
else*/
{
squish::ColourSet colours((uint8 *)rgba.colors(), squish::kWeightColourByAlpha);
fit.SetColourSet(&colours, 0);
fit.Compress(&block.color);
}
if (outputOptions.outputHandler != NULL) {
outputOptions.outputHandler->writeData(&block, sizeof(block));

View File

@ -453,14 +453,21 @@ bool Compressor::Private::outputHeader(const InputOptions::Private & inputOption
}
else if (compressionOptions.format == Format_DXT5n) {
header.setFourCC('D', 'X', 'T', '5');
if (inputOptions.isNormalMap) header.setNormalFlag(true);
if (inputOptions.isNormalMap) {
header.setNormalFlag(true);
header.setSwizzleCode('A', '2', 'D', '5');
//header.setSwizzleCode('x', 'G', 'x', 'R');
}
}
else if (compressionOptions.format == Format_BC4) {
header.setFourCC('A', 'T', 'I', '1');
}
else if (compressionOptions.format == Format_BC5) {
header.setFourCC('A', 'T', 'I', '2');
if (inputOptions.isNormalMap) header.setNormalFlag(true);
if (inputOptions.isNormalMap) {
header.setNormalFlag(true);
header.setSwizzleCode('A', '2', 'X', 'Y');
}
}
else if (compressionOptions.format == Format_CTX1) {
header.setFourCC('C', 'T', 'X', '1');
@ -905,7 +912,8 @@ bool Compressor::Private::compressMipmap(const Mipmap & mipmap, const InputOptio
{
nvDebugCheck(cudaSupported);
cuda->setImage(image, inputOptions.alphaMode);
cuda->compressDXT1(compressionOptions, outputOptions);
//cuda->compressDXT1(compressionOptions, outputOptions);
cuda->compressDXT1_Tex(compressionOptions, outputOptions);
}
else
{
@ -993,7 +1001,16 @@ bool Compressor::Private::compressMipmap(const Mipmap & mipmap, const InputOptio
}
else
{
slow.compressDXT5n(compressionOptions, outputOptions);
/*if (cudaEnabled)
{
nvDebugCheck(cudaSupported);
cuda->setImage(image, inputOptions.alphaMode);
cuda->compressDXT5n(compressionOptions, outputOptions);
}
else*/
{
slow.compressDXT5n(compressionOptions, outputOptions);
}
}
}
else if (compressionOptions.format == Format_BC4)