1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
// Copyright 2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
#include "ospray_testing.h"
#include "test_fixture.h"
namespace OSPRayTestScenes {
class ImageOpBase : public Base
{
public:
ImageOpBase()
{
samplesPerPixel = 4;
}
void SetUp() override;
protected:
std::string imageOpType;
cpp::ImageOperation imageOp;
};
void ImageOpBase::SetUp()
{
Base::SetUp();
instances.clear();
auto builder = ospray::testing::newBuilder("random_discs");
ospray::testing::setParam(builder, "rendererType", rendererType);
ospray::testing::commit(builder);
world = ospray::testing::buildWorld(builder);
ospray::testing::release(builder);
camera.setParam("position", vec3f(0.f, 0.f, -2.5f));
imageOp = cpp::ImageOperation(imageOpType);
frames = 1;
framebuffer = cpp::FrameBuffer(imgSize.x,
imgSize.y,
frameBufferFormat,
OSP_FB_COLOR | OSP_FB_ALBEDO | OSP_FB_NORMAL);
framebuffer.setParam("imageOperation", cpp::CopiedData(imageOp));
framebuffer.commit();
}
#ifdef OSPRAY_MODULE_DENOISER
class DenoiserOp : public ImageOpBase,
public ::testing::TestWithParam<
std::tuple<bool /*denoiseAlpha*/, OSPDenoiserQuality>>
{
public:
DenoiserOp()
{
ospLoadModule("denoiser");
rendererType = "pathtracer";
imageOpType = "denoiser";
}
void SetUp() override
{
ImageOpBase::SetUp();
auto params = GetParam();
imageOp.setParam("denoiseAlpha", std::get<0>(params));
imageOp.setParam("quality", std::get<1>(params));
imageOp.commit();
}
};
#endif
class ImageOp
: public ImageOpBase,
public ::testing::TestWithParam<
std::tuple<const char * /*image op*/, const char * /*renderer*/>>
{
public:
ImageOp()
{
auto params = GetParam();
imageOpType = std::get<0>(params);
rendererType = std::get<1>(params);
}
void SetUp() override
{
ImageOpBase::SetUp();
}
};
// Test Instantiations //////////////////////////////////////////////////////
#ifdef OSPRAY_MODULE_DENOISER
TEST_P(DenoiserOp, DenoiserOp)
{
PerformRenderTest();
}
INSTANTIATE_TEST_SUITE_P(DenoiserOp,
DenoiserOp,
::testing::Combine(::testing::Bool(),
::testing::Values(OSP_DENOISER_QUALITY_LOW,
OSP_DENOISER_QUALITY_MEDIUM,
OSP_DENOISER_QUALITY_HIGH)));
#endif
TEST_P(ImageOp, ImageOp)
{
PerformRenderTest();
}
INSTANTIATE_TEST_SUITE_P(
DebugOp, ImageOp, ::testing::Values(std::make_tuple("debug", "scivis")));
} // namespace OSPRayTestScenes
|