Fix some messages. Add support for range scaling in TexImage.

pull/216/head
castano 14 years ago
parent 47df8ff7d6
commit 09e46ead48

@ -563,7 +563,7 @@ bool nv::ImageIO::saveFreeImage(FREE_IMAGE_FORMAT fif, Stream & s, const Image *
if (tags != NULL)
{
#pragma message(NV_FILE_LINE "TODO: Save image metadata")
#pragma NV_MESSAGE("TODO: Save image metadata")
//FreeImage_SetMetadata(
}

@ -1463,7 +1463,7 @@ CompressorInterface * Compressor::Private::chooseGpuCompressor(const Compression
}
else if (compressionOptions.format == Format_DXT1a)
{
#pragma message(NV_FILE_LINE "TODO: Implement CUDA DXT1a compressor.")
#pragma NV_MESSAGE("TODO: Implement CUDA DXT1a compressor.")
}
else if (compressionOptions.format == Format_DXT1n)
{

@ -999,6 +999,54 @@ void TexImage::scaleAlphaToCoverage(float coverage, float alphaRef/*= 0.5f*/)
}
}
bool TexImage::normalizeRange(float * rangeMin, float * rangeMax)
{
Vector2 range(FLT_MAX, -FLT_MAX);
// Compute range.
foreach (i, m->imageArray) {
FloatImage * img = m->imageArray[i];
if (img == NULL) continue;
const uint count = img->count();
for (uint p = 0; p < count; p++) {
float c = img->pixel(p);
if (c < range.x) range.x = c;
if (c > range.y) range.y = c;
}
}
if (range.x == range.y) {
// Single color image.
return false;
}
*rangeMin = range.x;
*rangeMax = range.y;
const float scale = 1.0f / (range.y - range.x);
const float bias = range.x * scale;
if (scale == 1.0f && bias == 0.0f) {
// Already normalized.
return true;
}
detach();
// Scale to range.
foreach (i, m->imageArray) {
FloatImage * img = m->imageArray[i];
if (img == NULL) continue;
img->scaleBias(0, 4, scale, bias);
//img->clamp(0, 4, 0.0f, 1.0f);
}
return true;
}
// Set normal map options.
void TexImage::toNormalMap(float sm, float medium, float big, float large)

@ -444,6 +444,7 @@ namespace nvtt
NVTT_API void setBorder(float r, float g, float b, float a);
NVTT_API void fill(float r, float g, float b, float a);
NVTT_API void scaleAlphaToCoverage(float coverage, float alphaRef = 0.5f);
NVTT_API bool normalizeRange(float * rangeMin, float * rangeMax);
// Set normal map options.
NVTT_API void toNormalMap(float sm, float medium, float big, float large);

@ -373,8 +373,8 @@ int main(int argc, char *argv[])
printf(" 1: \tWaterloo.\n");
printf(" 2: \tEpic.\n");
printf(" 3: \tFarbrausch.\n");
printf(" 4: \Lugaru.\n");
printf(" 5: \Quake 3.\n");
printf(" 4: \tLugaru.\n");
printf(" 5: \tQuake 3.\n");
printf(" -dec x \tDecompressor.\n");
printf(" 0: \tReference.\n");
printf(" 1: \tNVIDIA.\n");

Loading…
Cancel
Save