Skip to content
Snippets Groups Projects
Commit 3db581f4 authored by Lucas Gandel's avatar Lucas Gandel
Browse files

Add tests for texture coloring with interpolated scalars

parent 79969286
No related branches found
No related tags found
No related merge requests found
......@@ -69,6 +69,7 @@ vtk_add_test_cxx(vtkRenderingOpenGL2CxxTests tests
TestPBRMapping.cxx
TestPBRMaterials.cxx
TestPBRMaterialsCoat.cxx
TestPBRTextureInterpolateScalars.cxx
TestPointFillPass.cxx
TestPointGaussianMapper.cxx
TestPointGaussianMapperOpacity.cxx
......@@ -95,6 +96,7 @@ vtk_add_test_cxx(vtkRenderingOpenGL2CxxTests tests
TestTexture16Bits.cxx,NO_DATA
TestTexture32Bits.cxx,NO_DATA
TestTextureBufferEmulation.cxx,NO_DATA,NO_VALID,NO_OUTPUT
TestTextureInterpolateScalars.cxx
TestToneMappingPass.cxx,NO_DATA
TestUserShader.cxx
TestUserShader2.cxx
......
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkDiscretizableColorTransferFunction.h"
#include "vtkElevationFilter.h"
#include "vtkJPEGReader.h"
#include "vtkNew.h"
#include "vtkOpenGLRenderWindow.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkRegressionTestImage.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkTestUtilities.h"
#include "vtkTexture.h"
#include "vtkTexturedSphereSource.h"
//------------------------------------------------------------------------------
int TestPBRTextureInterpolateScalars(int argc, char* argv[])
{
vtkNew<vtkRenderer> renderer;
renderer->SetBackground(0.5, 0.5, 0.5);
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->SetSize(300, 300);
renderWindow->AddRenderer(renderer);
vtkNew<vtkRenderWindowInteractor> iren;
iren->SetRenderWindow(renderWindow);
vtkNew<vtkTexturedSphereSource> sphere;
sphere->SetThetaResolution(64);
sphere->SetPhiResolution(32);
vtkNew<vtkElevationFilter> elevationFilter;
elevationFilter->SetLowPoint(0, 0, -0.5);
elevationFilter->SetHighPoint(0, 0, 0.5);
elevationFilter->SetInputConnection(sphere->GetOutputPort());
// Use Paraview's Rainbow Desaturated colormap preset
vtkNew<vtkDiscretizableColorTransferFunction> ctf;
ctf->AddRGBPoint(0.11, 0.278431, 0.278431, 0.858824);
ctf->AddRGBPoint(0.22, 0, 0, 0.360784);
ctf->AddRGBPoint(0.33, 0, 1, 1);
ctf->AddRGBPoint(0.44, 0, 0.501961, 0);
ctf->AddRGBPoint(0.55, 1, 1, 0);
ctf->AddRGBPoint(0.66, 1, 0.380392, 0);
ctf->AddRGBPoint(0.77, 0.419608, 0, 0);
ctf->AddRGBPoint(0.88, 0.878431, 0.301961, 0.301961);
ctf->DiscretizeOn();
ctf->SetNumberOfValues(8);
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(elevationFilter->GetOutputPort());
mapper->SetLookupTable(ctf);
mapper->SetColorModeToMapScalars();
mapper->InterpolateScalarsBeforeMappingOn();
vtkNew<vtkActor> actor;
renderer->AddActor(actor);
actor->SetMapper(mapper);
const char* file = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/clouds.jpeg");
vtkNew<vtkJPEGReader> reader;
reader->SetFileName(file);
delete[] file;
vtkNew<vtkTexture> tex;
tex->InterpolateOn();
tex->SetBlendingMode(vtkTexture::VTK_TEXTURE_BLENDING_MODE_MODULATE);
tex->SetInputConnection(reader->GetOutputPort());
tex->UseSRGBColorSpaceOn();
actor->GetProperty()->SetBaseColorTexture(tex);
actor->GetProperty()->SetInterpolationToPBR();
renderWindow->SetMultiSamples(0);
renderer->ResetCamera();
renderer->GetActiveCamera()->Elevation(80);
renderer->GetActiveCamera()->OrthogonalizeViewUp();
renderer->GetActiveCamera()->Zoom(1.5);
renderer->ResetCameraClippingRange();
renderWindow->Render();
int retVal = vtkRegressionTestImage(renderWindow);
if (retVal == vtkRegressionTester::DO_INTERACTOR)
{
iren->Start();
}
return !retVal;
}
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkDiscretizableColorTransferFunction.h"
#include "vtkElevationFilter.h"
#include "vtkJPEGReader.h"
#include "vtkNew.h"
#include "vtkOpenGLRenderWindow.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkRegressionTestImage.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkTestUtilities.h"
#include "vtkTexture.h"
#include "vtkTexturedSphereSource.h"
//------------------------------------------------------------------------------
int TestTextureInterpolateScalars(int argc, char* argv[])
{
vtkNew<vtkRenderer> renderer;
renderer->SetBackground(0.5, 0.5, 0.5);
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->SetSize(300, 300);
renderWindow->AddRenderer(renderer);
vtkNew<vtkRenderWindowInteractor> iren;
iren->SetRenderWindow(renderWindow);
vtkNew<vtkTexturedSphereSource> sphere;
sphere->SetThetaResolution(64);
sphere->SetPhiResolution(32);
vtkNew<vtkElevationFilter> elevationFilter;
elevationFilter->SetLowPoint(0, 0, -0.5);
elevationFilter->SetHighPoint(0, 0, 0.5);
elevationFilter->SetInputConnection(sphere->GetOutputPort());
// Use Paraview's Rainbow Desaturated colormap preset
vtkNew<vtkDiscretizableColorTransferFunction> ctf;
ctf->AddRGBPoint(0.11, 0.278431, 0.278431, 0.858824);
ctf->AddRGBPoint(0.22, 0, 0, 0.360784);
ctf->AddRGBPoint(0.33, 0, 1, 1);
ctf->AddRGBPoint(0.44, 0, 0.501961, 0);
ctf->AddRGBPoint(0.55, 1, 1, 0);
ctf->AddRGBPoint(0.66, 1, 0.380392, 0);
ctf->AddRGBPoint(0.77, 0.419608, 0, 0);
ctf->AddRGBPoint(0.88, 0.878431, 0.301961, 0.301961);
ctf->DiscretizeOn();
ctf->SetNumberOfValues(8);
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(elevationFilter->GetOutputPort());
mapper->SetLookupTable(ctf);
mapper->SetColorModeToMapScalars();
mapper->InterpolateScalarsBeforeMappingOn();
vtkNew<vtkActor> actor;
renderer->AddActor(actor);
actor->SetMapper(mapper);
const char* file = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/clouds.jpeg");
vtkNew<vtkJPEGReader> reader;
reader->SetFileName(file);
delete[] file;
vtkNew<vtkTexture> tex;
tex->InterpolateOn();
tex->SetBlendingMode(vtkTexture::VTK_TEXTURE_BLENDING_MODE_MODULATE);
tex->SetInputConnection(reader->GetOutputPort());
actor->SetTexture(tex);
renderWindow->SetMultiSamples(0);
renderer->ResetCamera();
renderer->GetActiveCamera()->Elevation(80);
renderer->GetActiveCamera()->OrthogonalizeViewUp();
renderer->GetActiveCamera()->Zoom(1.5);
renderer->ResetCameraClippingRange();
renderWindow->Render();
int retVal = vtkRegressionTestImage(renderWindow);
if (retVal == vtkRegressionTester::DO_INTERACTOR)
{
iren->Start();
}
return !retVal;
}
b18332f3b35167a29c8455601cd4a2a0ad5a8ff0f46ea382efab5552e9d6cea34e7d37c108acadc03dae4f6796d398a7a22beb85645a25af14c9d258a40a083b
1722896a88ba80acbb8a328fee4d45f72e737192d77ee09e4bf13f4f1c40dc35cb9d81f948eb967583269c0620ac821851ec60f0063daf3f1b277fbd7ba0ed5d
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment