From 2d68aafc9f50d746ba1351c8c767a34e65abfc0f Mon Sep 17 00:00:00 2001 From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com> Date: Tue, 3 Dec 2024 17:54:00 -0500 Subject: [PATCH] Add unit test for vtkAxesActor in webgpu - This unit test exercises rendering actors that embed other actors. --- Rendering/WebGPU/Testing/Cxx/CMakeLists.txt | 1 + .../WebGPU/Testing/Cxx/TestAxesActor.cxx | 65 +++++++++++++++++++ .../Data/Baseline/TestAxesActor.png.sha512 | 1 + 3 files changed, 67 insertions(+) create mode 100644 Rendering/WebGPU/Testing/Cxx/TestAxesActor.cxx create mode 100644 Rendering/WebGPU/Testing/Data/Baseline/TestAxesActor.png.sha512 diff --git a/Rendering/WebGPU/Testing/Cxx/CMakeLists.txt b/Rendering/WebGPU/Testing/Cxx/CMakeLists.txt index ad809bfeaf2..378ba559e96 100644 --- a/Rendering/WebGPU/Testing/Cxx/CMakeLists.txt +++ b/Rendering/WebGPU/Testing/Cxx/CMakeLists.txt @@ -14,6 +14,7 @@ endif () # (vtk/vtk#19322): Add baselines for these unit tests vtk_add_test_cxx(vtkRenderingWebGPUCxxTests tests TestActorFaceCullingProperty.cxx,NO_DATA + TestAxesActor.cxx,NO_DATA TestCellScalarMappedColors.cxx,NO_DATA TestCompositePolyDataMapper.cxx,NO_DATA TestComputeDoublePipelineRenderBuffer.cxx,NO_DATA diff --git a/Rendering/WebGPU/Testing/Cxx/TestAxesActor.cxx b/Rendering/WebGPU/Testing/Cxx/TestAxesActor.cxx new file mode 100644 index 00000000000..8467ec41c30 --- /dev/null +++ b/Rendering/WebGPU/Testing/Cxx/TestAxesActor.cxx @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen +// SPDX-License-Identifier: BSD-3-Clause + +#include "vtkActor.h" +#include "vtkAxesActor.h" +#include "vtkCamera.h" +#include "vtkConeSource.h" +#include "vtkNew.h" +#include "vtkOrientationMarkerWidget.h" +#include "vtkPolyDataMapper.h" +#include "vtkProperty.h" +#include "vtkRegressionTestImage.h" +#include "vtkRenderWindow.h" +#include "vtkRenderWindowInteractor.h" +#include "vtkRenderer.h" + +//------------------------------------------------------------------------------ +int TestAxesActor(int argc, char* argv[]) +{ + vtkNew<vtkRenderer> renderer; + renderer->SetBackground(0.1, 0.1, 0.1); + + vtkNew<vtkRenderWindow> renderWindow; + renderWindow->SetSize(800, 800); + renderWindow->AddRenderer(renderer); + + vtkNew<vtkRenderWindowInteractor> iren; + iren->SetRenderWindow(renderWindow); + + vtkNew<vtkConeSource> cone; + // map elevation output to graphics primitives. + vtkNew<vtkPolyDataMapper> mapper; + // mapper->SetLookupTable(lut); + mapper->SetInputConnection(cone->GetOutputPort()); + vtkNew<vtkActor> actor; + actor->SetMapper(mapper); + renderer->AddActor(actor); + + vtkNew<vtkAxesActor> axes; + axes->SetShaftTypeToCylinder(); + axes->SetNormalizedTipLength(0.4, 0.4, 0.4); + // FIXME: the vtkCaptionActor2D does not render text with webgpu. An override for + // vtkPolyDataMapper2D must be implemented in webgpu. + // https://gitlab.kitware.com/vtk/vtk/-/issues/19551 + axes->SetAxisLabels(false); + vtkNew<vtkOrientationMarkerWidget> om; + om->SetOrientationMarker(axes); + om->SetInteractor(iren); + om->EnabledOn(); + om->InteractiveOn(); + + renderer->ResetCamera(); + renderer->GetActiveCamera()->Azimuth(45); + renderer->GetActiveCamera()->Elevation(45); + renderer->GetActiveCamera()->OrthogonalizeViewUp(); + renderWindow->Render(); + + int retVal = vtkRegressionTestImageThreshold(renderWindow, 0.05); + if (retVal == vtkRegressionTester::DO_INTERACTOR) + { + iren->Start(); + } + + return !retVal; +} diff --git a/Rendering/WebGPU/Testing/Data/Baseline/TestAxesActor.png.sha512 b/Rendering/WebGPU/Testing/Data/Baseline/TestAxesActor.png.sha512 new file mode 100644 index 00000000000..27b819d0c37 --- /dev/null +++ b/Rendering/WebGPU/Testing/Data/Baseline/TestAxesActor.png.sha512 @@ -0,0 +1 @@ +886465c51a5139ff595b17bbde3a13fd90fe355aaeeae771ac075a97e6ffc424787870464929ead886dc9beac5a9361a5f49644112c5b10bafd076a0e82a4432 -- GitLab