/*========================================================================= Program: Visualization Toolkit Module: TestLightingMapPass.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // This test ... TO DO // // The command line arguments are: // -I => run in interactive mode; unless this is used, the program will // not allow interaction and exit #include "vtkRegressionTestImage.h" #include "vtkTestUtilities.h" #include "vtkActor.h" #include "vtkCameraPass.h" #include "vtkCellArray.h" #include "vtkInformation.h" #include "vtkLight.h" #include "vtkLightingMapPass.h" #include "vtkOpenGLRenderer.h" #include "vtkPLYReader.h" #include "vtkPolyData.h" #include "vtkPolyDataMapper.h" #include "vtkProperty.h" #include "vtkRenderPassCollection.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkSequencePass.h" #include "vtkSmartPointer.h" #include "vtkTestUtilities.h" int TestLightingMapLuminancePass(int argc, char* argv[]) { bool interactive = false; for (int i = 0; i < argc; ++i) { if (!strcmp(argv[i], "-I")) { interactive = true; } } // 0. Prep data const char* fileName = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/dragon.ply"); vtkSmartPointer reader = vtkSmartPointer::New(); reader->SetFileName(fileName); reader->Update(); delete[] fileName; vtkSmartPointer mapper = vtkSmartPointer::New(); mapper->SetInputConnection(reader->GetOutputPort()); vtkSmartPointer actor = vtkSmartPointer::New(); actor->SetMapper(mapper); actor->GetProperty()->SetAmbientColor(0.2, 0.2, 1.0); actor->GetProperty()->SetDiffuseColor(1.0, 0.65, 0.7); actor->GetProperty()->SetSpecularColor(1.0, 1.0, 1.0); actor->GetProperty()->SetSpecular(0.5); actor->GetProperty()->SetDiffuse(0.7); actor->GetProperty()->SetAmbient(0.5); actor->GetProperty()->SetSpecularPower(20.0); actor->GetProperty()->SetOpacity(1.0); // actor->GetProperty()->SetRepresentationToWireframe(); // 1. Set up renderer, window, & interactor vtkSmartPointer interactor = vtkSmartPointer::New(); vtkSmartPointer window = vtkSmartPointer::New(); vtkSmartPointer renderer = vtkSmartPointer::New(); window->AddRenderer(renderer); interactor->SetRenderWindow(window); vtkSmartPointer light = vtkSmartPointer::New(); light->SetLightTypeToSceneLight(); light->SetPosition(0.0, 0.0, 1.0); light->SetPositional(true); light->SetFocalPoint(0.0, 0.0, 0.0); light->SetIntensity(1.0); renderer->AddLight(light); renderer->AddActor(actor); // 2. Set up rendering passes vtkSmartPointer lightingPass = vtkSmartPointer::New(); lightingPass->SetRenderType(vtkLightingMapPass::LUMINANCE); vtkSmartPointer passes = vtkSmartPointer::New(); passes->AddItem(lightingPass); vtkSmartPointer sequence = vtkSmartPointer::New(); sequence->SetPasses(passes); vtkSmartPointer cameraPass = vtkSmartPointer::New(); cameraPass->SetDelegatePass(sequence); vtkOpenGLRenderer* glRenderer = vtkOpenGLRenderer::SafeDownCast(renderer); glRenderer->SetPass(cameraPass); // 3. Render image and compare against baseline window->Render(); int retVal = vtkRegressionTestImage(window); if (interactive || retVal == vtkRegressionTester::DO_INTERACTOR) { interactor->Start(); } return !retVal; }