From a52f9cee0695a2f518fa199d899ca89c241b6b64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Tue, 6 Feb 2018 06:32:29 +0100 Subject: [PATCH] ABI/API: Restore InputOptions::setColorTransform(ColorTransform) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The only colortransform actually implemented was the transform from RGB to YCoCG (ColorTransform_YCoCg). Restore the full enum for API compatibility, and allow the transform to be specified using InputOptions::setColortransform. Fixes part of https://github.com/castano/nvidia-texture-tools/issues/259 Signed-off-by: Stefan BrĂ¼ns --- src/nvtt/Context.cpp | 5 +++++ src/nvtt/InputOptions.cpp | 8 ++++++++ src/nvtt/InputOptions.h | 3 +++ src/nvtt/nvtt.h | 12 ++++++++++++ 4 files changed, 28 insertions(+) diff --git a/src/nvtt/Context.cpp b/src/nvtt/Context.cpp index 37c201b..d5a9944 100644 --- a/src/nvtt/Context.cpp +++ b/src/nvtt/Context.cpp @@ -277,6 +277,11 @@ bool Compressor::Private::compress(const InputOptions::Private & inputOptions, c // Resize input. img.resize(w, h, d, ResizeFilter_Box); + // Apply color transform. + if (inputOptions.colorTransform == ColorTransform_YCoCg) { + img.toYCoCg(); + } + nvtt::Surface tmp = img; if (!img.isNormalMap()) { tmp.toGamma(inputOptions.outputGamma); diff --git a/src/nvtt/InputOptions.cpp b/src/nvtt/InputOptions.cpp index 04861cd..95af5e6 100644 --- a/src/nvtt/InputOptions.cpp +++ b/src/nvtt/InputOptions.cpp @@ -104,6 +104,8 @@ void InputOptions::reset() m.inputGamma = 2.2f; m.outputGamma = 2.2f; + m.colorTransform = ColorTransform_None; + m.generateMipmaps = true; m.maxLevel = -1; m.mipmapFilter = MipmapFilter_Box; @@ -337,6 +339,12 @@ void InputOptions::setNormalizeMipmaps(bool normalize) m.normalizeMipmaps = normalize; } +// Set color transform. +void InputOptions::setColorTransform(ColorTransform t) +{ + m.colorTransform = t; +} + // Set linear transform for the given channel. // Stub for ABI compatibily, never implemented void InputOptions::setLinearTransform(int, float, float, float, float) diff --git a/src/nvtt/InputOptions.h b/src/nvtt/InputOptions.h index b28c8fb..c8c9073 100644 --- a/src/nvtt/InputOptions.h +++ b/src/nvtt/InputOptions.h @@ -55,6 +55,9 @@ namespace nvtt float inputGamma; float outputGamma; + // Color transform. + ColorTransform colorTransform; + // Mipmap generation options. bool generateMipmaps; int maxLevel; diff --git a/src/nvtt/nvtt.h b/src/nvtt/nvtt.h index b3b6166..049dad9 100644 --- a/src/nvtt/nvtt.h +++ b/src/nvtt/nvtt.h @@ -249,6 +249,17 @@ namespace nvtt ResizeFilter_Mitchell, }; + // Color transformation. + // deprecated since 2.1.0 + enum ColorTransform + { + ColorTransform_None, + ColorTransform_Linear, + ColorTransform_Swizzle, + ColorTransform_YCoCg, + ColorTransform_ScaledYCoCg, + }; + // Extents rounding mode. enum RoundMode { @@ -323,6 +334,7 @@ namespace nvtt NVTT_API void setNormalizeMipmaps(bool b); // Set color transforms. + NVTT_API void setColorTransform(ColorTransform t); NVTT_API void setLinearTransform(int channel, float w0, float w1, float w2, float w3); // Set resizing options.