diff options
author | K. S. Ernest (iFire) Lee <ernest.lee@chibifire.com> | 2021-04-06 22:05:56 -0700 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2021-04-13 00:12:12 +0200 |
commit | d840165a324b5c218ca3a4882f030986855c8383 (patch) | |
tree | 7c5f4b091ecc647f2b6ed48135945f84c6dc2de9 /thirdparty/etc2comp/EtcColorFloatRGBA.h | |
parent | b895071895cffcbcda7f4156d7175ba5b8068852 (diff) |
Add `etcpak` library for faster ETC/ETC2/S3TC imports.
- `etc` module was renamed to `etcpak` and modified to use the new library.
- PKM importer is removed in the process, it's obsolete.
- Old library `etc2comp` is removed.
- S3TC compression no longer done via `squish` (but decompression still is).
- Slight modifications to etcpak sources for MinGW compatibility,
to fix LLVM `-Wc++11-narrowing` errors, and to allow using vendored or
system libpng.
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
Diffstat (limited to 'thirdparty/etc2comp/EtcColorFloatRGBA.h')
-rw-r--r-- | thirdparty/etc2comp/EtcColorFloatRGBA.h | 321 |
1 files changed, 0 insertions, 321 deletions
diff --git a/thirdparty/etc2comp/EtcColorFloatRGBA.h b/thirdparty/etc2comp/EtcColorFloatRGBA.h deleted file mode 100644 index f2ca2c1f71..0000000000 --- a/thirdparty/etc2comp/EtcColorFloatRGBA.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright 2015 The Etc2Comp Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "EtcConfig.h" -#include "EtcColor.h" - -#include <math.h> - -namespace Etc -{ - - class ColorFloatRGBA - { - public: - - ColorFloatRGBA(void) - { - fR = fG = fB = fA = 0.0f; - } - - ColorFloatRGBA(float a_fR, float a_fG, float a_fB, float a_fA) - { - fR = a_fR; - fG = a_fG; - fB = a_fB; - fA = a_fA; - } - - inline ColorFloatRGBA operator+(ColorFloatRGBA& a_rfrgba) - { - ColorFloatRGBA frgba; - frgba.fR = fR + a_rfrgba.fR; - frgba.fG = fG + a_rfrgba.fG; - frgba.fB = fB + a_rfrgba.fB; - frgba.fA = fA + a_rfrgba.fA; - return frgba; - } - - inline ColorFloatRGBA operator+(float a_f) - { - ColorFloatRGBA frgba; - frgba.fR = fR + a_f; - frgba.fG = fG + a_f; - frgba.fB = fB + a_f; - frgba.fA = fA; - return frgba; - } - - inline ColorFloatRGBA operator-(float a_f) - { - ColorFloatRGBA frgba; - frgba.fR = fR - a_f; - frgba.fG = fG - a_f; - frgba.fB = fB - a_f; - frgba.fA = fA; - return frgba; - } - - inline ColorFloatRGBA operator-(ColorFloatRGBA& a_rfrgba) - { - ColorFloatRGBA frgba; - frgba.fR = fR - a_rfrgba.fR; - frgba.fG = fG - a_rfrgba.fG; - frgba.fB = fB - a_rfrgba.fB; - frgba.fA = fA - a_rfrgba.fA; - return frgba; - } - - inline ColorFloatRGBA operator*(float a_f) - { - ColorFloatRGBA frgba; - frgba.fR = fR * a_f; - frgba.fG = fG * a_f; - frgba.fB = fB * a_f; - frgba.fA = fA; - - return frgba; - } - - inline ColorFloatRGBA ScaleRGB(float a_f) - { - ColorFloatRGBA frgba; - frgba.fR = a_f * fR; - frgba.fG = a_f * fG; - frgba.fB = a_f * fB; - frgba.fA = fA; - - return frgba; - } - - inline ColorFloatRGBA RoundRGB(void) - { - ColorFloatRGBA frgba; - frgba.fR = roundf(fR); - frgba.fG = roundf(fG); - frgba.fB = roundf(fB); - - return frgba; - } - - inline ColorFloatRGBA ToLinear() - { - ColorFloatRGBA frgbaLinear; - frgbaLinear.fR = LogToLinear(fR); - frgbaLinear.fG = LogToLinear(fG); - frgbaLinear.fB = LogToLinear(fB); - frgbaLinear.fA = fA; - - return frgbaLinear; - } - - inline ColorFloatRGBA ToLog(void) - { - ColorFloatRGBA frgbaLog; - frgbaLog.fR = LinearToLog(fR); - frgbaLog.fG = LinearToLog(fG); - frgbaLog.fB = LinearToLog(fB); - frgbaLog.fA = fA; - - return frgbaLog; - } - - inline static ColorFloatRGBA ConvertFromRGBA8(unsigned char a_ucR, - unsigned char a_ucG, unsigned char a_ucB, unsigned char a_ucA) - { - ColorFloatRGBA frgba; - - frgba.fR = (float)a_ucR / 255.0f; - frgba.fG = (float)a_ucG / 255.0f; - frgba.fB = (float)a_ucB / 255.0f; - frgba.fA = (float)a_ucA / 255.0f; - - return frgba; - } - - inline static ColorFloatRGBA ConvertFromRGB4(unsigned char a_ucR4, - unsigned char a_ucG4, - unsigned char a_ucB4) - { - ColorFloatRGBA frgba; - - unsigned char ucR8 = (unsigned char)((a_ucR4 << 4) + a_ucR4); - unsigned char ucG8 = (unsigned char)((a_ucG4 << 4) + a_ucG4); - unsigned char ucB8 = (unsigned char)((a_ucB4 << 4) + a_ucB4); - - frgba.fR = (float)ucR8 / 255.0f; - frgba.fG = (float)ucG8 / 255.0f; - frgba.fB = (float)ucB8 / 255.0f; - frgba.fA = 1.0f; - - return frgba; - } - - inline static ColorFloatRGBA ConvertFromRGB5(unsigned char a_ucR5, - unsigned char a_ucG5, - unsigned char a_ucB5) - { - ColorFloatRGBA frgba; - - unsigned char ucR8 = (unsigned char)((a_ucR5 << 3) + (a_ucR5 >> 2)); - unsigned char ucG8 = (unsigned char)((a_ucG5 << 3) + (a_ucG5 >> 2)); - unsigned char ucB8 = (unsigned char)((a_ucB5 << 3) + (a_ucB5 >> 2)); - - frgba.fR = (float)ucR8 / 255.0f; - frgba.fG = (float)ucG8 / 255.0f; - frgba.fB = (float)ucB8 / 255.0f; - frgba.fA = 1.0f; - - return frgba; - } - - inline static ColorFloatRGBA ConvertFromR6G7B6(unsigned char a_ucR6, - unsigned char a_ucG7, - unsigned char a_ucB6) - { - ColorFloatRGBA frgba; - - unsigned char ucR8 = (unsigned char)((a_ucR6 << 2) + (a_ucR6 >> 4)); - unsigned char ucG8 = (unsigned char)((a_ucG7 << 1) + (a_ucG7 >> 6)); - unsigned char ucB8 = (unsigned char)((a_ucB6 << 2) + (a_ucB6 >> 4)); - - frgba.fR = (float)ucR8 / 255.0f; - frgba.fG = (float)ucG8 / 255.0f; - frgba.fB = (float)ucB8 / 255.0f; - frgba.fA = 1.0f; - - return frgba; - } - - // quantize to 4 bits, expand to 8 bits - inline ColorFloatRGBA QuantizeR4G4B4(void) const - { - ColorFloatRGBA frgba = *this; - - // quantize to 4 bits - frgba = frgba.ClampRGB().ScaleRGB(15.0f).RoundRGB(); - unsigned int uiR4 = (unsigned int)frgba.fR; - unsigned int uiG4 = (unsigned int)frgba.fG; - unsigned int uiB4 = (unsigned int)frgba.fB; - - // expand to 8 bits - frgba.fR = (float) ((uiR4 << 4) + uiR4); - frgba.fG = (float) ((uiG4 << 4) + uiG4); - frgba.fB = (float) ((uiB4 << 4) + uiB4); - - frgba = frgba.ScaleRGB(1.0f/255.0f); - - return frgba; - } - - // quantize to 5 bits, expand to 8 bits - inline ColorFloatRGBA QuantizeR5G5B5(void) const - { - ColorFloatRGBA frgba = *this; - - // quantize to 5 bits - frgba = frgba.ClampRGB().ScaleRGB(31.0f).RoundRGB(); - unsigned int uiR5 = (unsigned int)frgba.fR; - unsigned int uiG5 = (unsigned int)frgba.fG; - unsigned int uiB5 = (unsigned int)frgba.fB; - - // expand to 8 bits - frgba.fR = (float)((uiR5 << 3) + (uiR5 >> 2)); - frgba.fG = (float)((uiG5 << 3) + (uiG5 >> 2)); - frgba.fB = (float)((uiB5 << 3) + (uiB5 >> 2)); - - frgba = frgba.ScaleRGB(1.0f / 255.0f); - - return frgba; - } - - // quantize to 6/7/6 bits, expand to 8 bits - inline ColorFloatRGBA QuantizeR6G7B6(void) const - { - ColorFloatRGBA frgba = *this; - - // quantize to 6/7/6 bits - ColorFloatRGBA frgba6 = frgba.ClampRGB().ScaleRGB(63.0f).RoundRGB(); - ColorFloatRGBA frgba7 = frgba.ClampRGB().ScaleRGB(127.0f).RoundRGB(); - unsigned int uiR6 = (unsigned int)frgba6.fR; - unsigned int uiG7 = (unsigned int)frgba7.fG; - unsigned int uiB6 = (unsigned int)frgba6.fB; - - // expand to 8 bits - frgba.fR = (float)((uiR6 << 2) + (uiR6 >> 4)); - frgba.fG = (float)((uiG7 << 1) + (uiG7 >> 6)); - frgba.fB = (float)((uiB6 << 2) + (uiB6 >> 4)); - - frgba = frgba.ScaleRGB(1.0f / 255.0f); - - return frgba; - } - - inline ColorFloatRGBA ClampRGB(void) - { - ColorFloatRGBA frgba = *this; - if (frgba.fR < 0.0f) { frgba.fR = 0.0f; } - if (frgba.fR > 1.0f) { frgba.fR = 1.0f; } - if (frgba.fG < 0.0f) { frgba.fG = 0.0f; } - if (frgba.fG > 1.0f) { frgba.fG = 1.0f; } - if (frgba.fB < 0.0f) { frgba.fB = 0.0f; } - if (frgba.fB > 1.0f) { frgba.fB = 1.0f; } - - return frgba; - } - - inline ColorFloatRGBA ClampRGBA(void) - { - ColorFloatRGBA frgba = *this; - if (frgba.fR < 0.0f) { frgba.fR = 0.0f; } - if (frgba.fR > 1.0f) { frgba.fR = 1.0f; } - if (frgba.fG < 0.0f) { frgba.fG = 0.0f; } - if (frgba.fG > 1.0f) { frgba.fG = 1.0f; } - if (frgba.fB < 0.0f) { frgba.fB = 0.0f; } - if (frgba.fB > 1.0f) { frgba.fB = 1.0f; } - if (frgba.fA < 0.0f) { frgba.fA = 0.0f; } - if (frgba.fA > 1.0f) { frgba.fA = 1.0f; } - - return frgba; - } - - inline int IntRed(float a_fScale) - { - return (int)roundf(fR * a_fScale); - } - - inline int IntGreen(float a_fScale) - { - return (int)roundf(fG * a_fScale); - } - - inline int IntBlue(float a_fScale) - { - return (int)roundf(fB * a_fScale); - } - - inline int IntAlpha(float a_fScale) - { - return (int)roundf(fA * a_fScale); - } - - float fR, fG, fB, fA; - }; - -} - |