Browse Source

DebugTools: support half floats in CompareImage for pixel views.

For images it was supported already, but here I forgot somehow.
pull/620/head
Vladimír Vondruš 3 years ago
parent
commit
8150e06616
  1. 30
      src/Magnum/DebugTools/CompareImage.h
  2. 9
      src/Magnum/DebugTools/Test/CompareImageTest.cpp

30
src/Magnum/DebugTools/CompareImage.h

@ -662,6 +662,12 @@ template<> constexpr PixelFormat pixelFormatFor<Int>(PixelFormat) {
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<1, Int>>(PixelFormat expected) {
return pixelFormatFor<Int>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Half>(PixelFormat) {
return PixelFormat::R16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<1, Half>>(PixelFormat expected) {
return pixelFormatFor<Half>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Float>(PixelFormat) {
return PixelFormat::R32F;
}
@ -717,6 +723,12 @@ template<> constexpr PixelFormat pixelFormatFor<Math::Vector2<Int>>(PixelFormat)
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<2, Int>>(PixelFormat expected) {
return pixelFormatFor<Math::Vector2<Int>>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector2<Half>>(PixelFormat) {
return PixelFormat::RG16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<2, Half>>(PixelFormat expected) {
return pixelFormatFor<Math::Vector2<Half>>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector2<Float>>(PixelFormat) {
return PixelFormat::RG32F;
}
@ -792,6 +804,15 @@ template<> constexpr PixelFormat pixelFormatFor<Math::Vector<3, Int>>(PixelForma
}
/* Skipping Math::Color3<Int>, as integer colors should always match normalized
types */
template<> constexpr PixelFormat pixelFormatFor<Math::Vector3<Half>>(PixelFormat) {
return PixelFormat::RGB16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<3, Half>>(PixelFormat expected) {
return pixelFormatFor<Math::Vector3<Half>>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Math::Color3<Half>>(PixelFormat) {
return PixelFormat::RGB16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector3<Float>>(PixelFormat) {
return PixelFormat::RGB32F;
}
@ -872,6 +893,15 @@ template<> constexpr PixelFormat pixelFormatFor<Math::Vector<4, Int>>(PixelForma
}
/* Skipping Math::Color4<Int>, as integer colors should always match normalized
types */
template<> constexpr PixelFormat pixelFormatFor<Math::Vector4<Half>>(PixelFormat) {
return PixelFormat::RGBA16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector<4, Half>>(PixelFormat expected) {
return pixelFormatFor<Math::Vector4<Half>>(expected);
}
template<> constexpr PixelFormat pixelFormatFor<Math::Color4<Half>>(PixelFormat) {
return PixelFormat::RGBA16F;
}
template<> constexpr PixelFormat pixelFormatFor<Math::Vector4<Float>>(PixelFormat) {
return PixelFormat::RGBA32F;
}

9
src/Magnum/DebugTools/Test/CompareImageTest.cpp

@ -1709,6 +1709,9 @@ template<UnsignedInt dimensions> void CompareImageTest::pixelFormatFor() {
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Math::Vector<dimensions, Int>>(PixelFormat{})),
pixelFormat(PixelFormat::R32I, dimensions, false));
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Math::Vector<dimensions, Half>>(PixelFormat{})),
pixelFormat(PixelFormat::R16F, dimensions, false));
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Math::Vector<dimensions, Float>>(PixelFormat{})),
pixelFormat(PixelFormat::R32F, dimensions, false));
@ -1767,6 +1770,12 @@ void CompareImageTest::pixelFormatForColor() {
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Math::Color4<Short>>(PixelFormat{})),
PixelFormat::RGBA16Snorm);
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Color3h>(PixelFormat{})),
PixelFormat::RGB16F);
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Color4h>(PixelFormat{})),
PixelFormat::RGBA16F);
CORRADE_COMPARE(
(Implementation::pixelFormatFor<Color3>(PixelFormat{})),
PixelFormat::RGB32F);

Loading…
Cancel
Save