File: test_imageop.cpp

package info (click to toggle)
ospray 3.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,048 kB
  • sloc: cpp: 80,569; ansic: 951; sh: 805; makefile: 170; python: 69
file content (114 lines) | stat: -rw-r--r-- 2,539 bytes parent folder | download | duplicates (2)
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