Files
godot/thirdparty/etcpak/Error.cpp
K. S. Ernest (iFire) Lee d840165a32 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>
2021-04-13 00:12:12 +02:00

49 lines
1.0 KiB
C++

#include <stdint.h>
#include "Error.hpp"
#include "Math.hpp"
float CalcMSE3( const Bitmap& bmp, const Bitmap& out )
{
float err = 0;
const uint32_t* p1 = bmp.Data();
const uint32_t* p2 = out.Data();
size_t cnt = bmp.Size().x * bmp.Size().y;
for( size_t i=0; i<cnt; i++ )
{
uint32_t c1 = *p1++;
uint32_t c2 = *p2++;
err += sq( ( c1 & 0x000000FF ) - ( c2 & 0x000000FF ) );
err += sq( ( ( c1 & 0x0000FF00 ) >> 8 ) - ( ( c2 & 0x0000FF00 ) >> 8 ) );
err += sq( ( ( c1 & 0x00FF0000 ) >> 16 ) - ( ( c2 & 0x00FF0000 ) >> 16 ) );
}
err /= cnt * 3;
return err;
}
float CalcMSE1( const Bitmap& bmp, const Bitmap& out )
{
float err = 0;
const uint32_t* p1 = bmp.Data();
const uint32_t* p2 = out.Data();
size_t cnt = bmp.Size().x * bmp.Size().y;
for( size_t i=0; i<cnt; i++ )
{
uint32_t c1 = *p1++;
uint32_t c2 = *p2++;
err += sq( ( c1 >> 24 ) - ( c2 & 0xFF ) );
}
err /= cnt;
return err;
}