121 lines
3.1 KiB
C++
121 lines
3.1 KiB
C++
// SPDX-License-Identifier: BSD-3-Clause
|
|
// Copyright Contributors to the OpenColorIO Project.
|
|
|
|
#include <stdio.h>
|
|
#include <sstream>
|
|
#include <string>
|
|
|
|
#include <OpenColorIO/OpenColorIO.h>
|
|
|
|
#include "GPUHelpers.h"
|
|
#include "GPUUnitTest.h"
|
|
|
|
namespace OCIO = OCIO_NAMESPACE;
|
|
|
|
|
|
const float g_epsilon = 1e-6f;
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, scale_with_low_and_high_clippings)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMinInValue(0.1f);
|
|
range->setMaxInValue(1.1f);
|
|
range->setMinOutValue(0.5f);
|
|
range->setMaxOutValue(1.5f);
|
|
|
|
test.setProcessor(range);
|
|
|
|
test.setTestWideRange(true);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, scale_with_low_clipping)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMinInValue(0.2f);
|
|
range->setMinOutValue(0.2f);
|
|
|
|
test.setProcessor(range);
|
|
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, scale_with_high_clipping)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMaxInValue(0.9f);
|
|
range->setMaxOutValue(0.9f);
|
|
|
|
test.setProcessor(range);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, scale_with_low_and_high_clippings_2)
|
|
{
|
|
// The similar test above is only an offset, this test is a scale & offset.
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMinInValue(0.1f);
|
|
range->setMaxInValue(1.1f);
|
|
range->setMinOutValue(-0.5f);
|
|
range->setMaxOutValue(1.5f);
|
|
|
|
test.setProcessor(range);
|
|
|
|
test.setTestWideRange(true);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, arbitrary_1)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMinInValue (0.4000202f);
|
|
range->setMaxInValue (0.6000502f);
|
|
range->setMinOutValue(0.4000601f);
|
|
range->setMaxOutValue(0.6000801f);
|
|
|
|
test.setProcessor(range);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, arbitrary_1_no_clamp)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setStyle(OCIO::RANGE_NO_CLAMP);
|
|
range->setMinInValue (0.4000202f);
|
|
range->setMaxInValue (0.6000502f);
|
|
range->setMinOutValue(0.4000601f);
|
|
range->setMaxOutValue(0.6000801f);
|
|
|
|
test.setProcessor(range);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, arbitrary_2)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setMinInValue(-0.010201f);
|
|
range->setMaxInValue (0.601102f);
|
|
range->setMinOutValue(0.209803f);
|
|
range->setMaxOutValue(1.600208f);
|
|
|
|
test.setProcessor(range);
|
|
|
|
test.setTestWideRange(true);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|
|
|
|
OCIO_ADD_GPU_TEST(RangeOp, arbitrary_2_no_clamp)
|
|
{
|
|
OCIO::RangeTransformRcPtr range = OCIO::RangeTransform::Create();
|
|
range->setStyle(OCIO::RANGE_NO_CLAMP);
|
|
range->setMinInValue(-0.010201f);
|
|
range->setMaxInValue (0.601102f);
|
|
range->setMinOutValue(0.209803f);
|
|
range->setMaxOutValue(1.600208f);
|
|
|
|
test.setProcessor(range);
|
|
|
|
test.setTestWideRange(true);
|
|
test.setErrorThreshold(g_epsilon);
|
|
}
|