diff --git a/src/nvtt/InputOptions.cpp b/src/nvtt/InputOptions.cpp index 4931311..2ab62a3 100644 --- a/src/nvtt/InputOptions.cpp +++ b/src/nvtt/InputOptions.cpp @@ -90,6 +90,10 @@ void InputOptions::reset() m.maxLevel = -1; m.mipmapFilter = MipmapFilter_Box; + m.kaiserWidth = 10; + m.kaiserAlpha = 8.0f; + m.kaiserStretch = 0.75f; + m.normalizeMipmaps = false; m.convertToNormalMap = false; m.heightFactors.set(0.0f, 0.0f, 0.0f, 1.0f); @@ -207,13 +211,20 @@ void InputOptions::setWrapMode(WrapMode mode) /// Set mipmapping options. -void InputOptions::setMipmapping(bool generateMipmaps, MipmapFilter filter/*= MipmapFilter_Kaiser*/, int maxLevel/*= -1*/) +void InputOptions::setMipmapping(bool generateMipmaps, MipmapFilter filter/*= MipmapFilter_Box*/, int maxLevel/*= -1*/) { m.generateMipmaps = generateMipmaps; m.mipmapFilter = filter; m.maxLevel = maxLevel; } +/// Set Kaiser filter parameters. +void InputOptions::setKaiserParameters(int width, float alpha, float stretch) +{ + m.kaiserWidth = width; + m.kaiserAlpha = alpha; + m.kaiserStretch = stretch; +} /// Set quantization options. /// @warning Do not enable dithering unless you know what you are doing. Quantization diff --git a/src/nvtt/InputOptions.h b/src/nvtt/InputOptions.h index 31cec29..e6eb2c7 100644 --- a/src/nvtt/InputOptions.h +++ b/src/nvtt/InputOptions.h @@ -68,7 +68,12 @@ namespace nvtt bool generateMipmaps; int maxLevel; MipmapFilter mipmapFilter; - + + // Kaiser filter parameters. + uint kaiserWidth; + float kaiserAlpha; + float kaiserStretch; + // Normal map options. bool normalMap; bool normalizeMipmaps; diff --git a/src/nvtt/nvtt.cpp b/src/nvtt/nvtt.cpp index d08e3c7..f32abcd 100644 --- a/src/nvtt/nvtt.cpp +++ b/src/nvtt/nvtt.cpp @@ -331,8 +331,8 @@ static FloatImage * createMipmap(const FloatImage * floatImage, const InputOptio } else /*if (inputOptions.mipmapFilter == MipmapFilter_Kaiser)*/ { - Kernel1 kernel(10); - kernel.initKaiser(8.0, 0.75f); + Kernel1 kernel(inputOptions.kaiserWidth); + kernel.initKaiser(inputOptions.kaiserAlpha, inputOptions.kaiserStretch); result = floatImage->downSample(kernel, (FloatImage::WrapMode)inputOptions.wrapMode); } diff --git a/src/nvtt/nvtt.h b/src/nvtt/nvtt.h index 465796e..f53ee26 100644 --- a/src/nvtt/nvtt.h +++ b/src/nvtt/nvtt.h @@ -26,9 +26,6 @@ #include -//#define HAVE_S3QUANT -//#define HAVE_ATITC - // Function linkage #if NVTT_SHARED #ifdef NVTT_EXPORTS @@ -173,8 +170,9 @@ namespace nvtt NVTT_API void setWrapMode(WrapMode mode); // Set mipmapping options. - NVTT_API void setMipmapping(bool generateMipmaps, MipmapFilter filter = MipmapFilter_Kaiser, int maxLevel = -1); - + NVTT_API void setMipmapping(bool generateMipmaps, MipmapFilter filter = MipmapFilter_Box, int maxLevel = -1); + NVTT_API void setKaiserParameters(int width, float alpha, float stretch); + // Set quantization options. NVTT_API void setQuantization(bool colorDithering, bool alphaDithering, bool binaryAlpha, int alphaThreshold = 127);