Files
ThirdParty-6/ParaView-5.0.1/ParaViewCore/ClientServerCore/Rendering/vtkPVSynchronizedRenderer.h

170 lines
5.8 KiB
C++

/*=========================================================================
Program: ParaView
Module: vtkPVSynchronizedRenderer.h
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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.
=========================================================================*/
// .NAME vtkPVSynchronizedRenderer - synchronizes and composites renderers among
// processes in ParaView configurations.
// .SECTION Description
//
#ifndef vtkPVSynchronizedRenderer_h
#define vtkPVSynchronizedRenderer_h
#include "vtkPVClientServerCoreRenderingModule.h" //needed for exports
#include "vtkObject.h"
class vtkIceTSynchronizedRenderers;
class vtkImageProcessingPass;
class vtkPKdTree;
class vtkPVSession;
class vtkRenderer;
class vtkRenderPass;
class vtkSynchronizedRenderers;
class vtkOpenGLRenderer;
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkPVSynchronizedRenderer : public vtkObject
{
public:
static vtkPVSynchronizedRenderer* New();
vtkTypeMacro(vtkPVSynchronizedRenderer, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Set this flag to true before calling Initialize() to disable using
// vtkIceTSynchronizedRenderers for parallel rendering.
vtkSetMacro(DisableIceT, bool);
vtkGetMacro(DisableIceT, bool);
// Must be called once to initialize the class. Id is uniquefier. It is
// typically same as the id passed to vtkPVView::Initialize(). This makes it
// possible to identify what view this instance corresponds to.
// vtkPVSynchronizedRenderer passes this id to vtkIceTSynchronizedRenderers.
// vtkIceTSynchronizedRenderers uses the id to ensure that the correct group
// of views is shown on a tile-display.
void Initialize(vtkPVSession* session, unsigned int id);
// Description:
// kd tree that gives processes ordering. Initial value is a NULL pointer.
// This is used only when UseOrderedCompositing is true.
void SetKdTree(vtkPKdTree *kdtree);
// Description:
// Set the renderer that is being synchronized.
void SetRenderer(vtkRenderer*);
// Description:
// Enable/Disable parallel rendering.
virtual void SetEnabled(bool enabled);
vtkGetMacro(Enabled, bool);
vtkBooleanMacro(Enabled, bool);
// Description:
// Get/Set the image reduction factor.
// This needs to be set on all processes and must match up.
void SetImageReductionFactor(int);
vtkGetMacro(ImageReductionFactor, int);
// Description:
// Set to true if data is replicated on all processes. This will enable IceT
// to minimize communications since data is available on all process. Off by
// default.
void SetDataReplicatedOnAllProcesses(bool);
vtkGetMacro(DataReplicatedOnAllProcesses, bool);
vtkBooleanMacro(DataReplicatedOnAllProcesses, bool);
// Description:
// Get/Set an image processing pass to process the rendered images.
void SetImageProcessingPass(vtkImageProcessingPass*);
vtkGetObjectMacro(ImageProcessingPass, vtkImageProcessingPass);
// Description:
// Get/Set geometry rendering pass. This pass is used to render the geometry.
// If none specified then default rendering pipeline is used. This is
// typically the render-pass pipeline after the CameraPass. The CameraPass is
// setup by ParaView specially since ParaView needs some customizations for
// multiviews/icet etc.
void SetRenderPass(vtkRenderPass*);
vtkGetObjectMacro(RenderPass, vtkRenderPass);
// Description:
// Passes the compressor configuration to the client-server synchronizer, if
// any. This affects the image compression used to relay images back to the
// client.
// See vtkPVClientServerSynchronizedRenderers::ConfigureCompressor() for
// details.
void ConfigureCompressor(const char* configuration);
void SetLossLessCompression(bool);
// Description:
// Activates or de-activated the use of Depth Buffer in an ImageProcessingPass
void SetUseDepthBuffer(bool);
// Description:
// Enable/Disable empty images optimization.
void SetRenderEmptyImages(bool);
//BTX
// Description:
// Not for the faint hearted. This internal vtkSynchronizedRenderers instances
// are exposed for advanced users that want to do advanced tricks with
// rendering. These will change without notice. Do not use them unless you
// know what you are doing.
// ParallelSynchronizer is the vtkSynchronizedRenderers used to synchronize
// rendering between processes in an MPI group -- typically
// vtkIceTSynchronizedRenderers when available.
// CSSynchronizer is the client-server vtkSynchronizedRenderers used in
// client-server configurations.
vtkGetObjectMacro(ParallelSynchronizer, vtkSynchronizedRenderers);
vtkGetObjectMacro(CSSynchronizer, vtkSynchronizedRenderers);
protected:
vtkPVSynchronizedRenderer();
~vtkPVSynchronizedRenderer();
// Description:
// Sets up the render passes on the renderer. This won't get called on
// processes where vtkIceTSynchronizedRenderers is used. In that case the
// passes are forwarded to the vtkIceTSynchronizedRenderers instance.
virtual void SetupPasses();
vtkSynchronizedRenderers* CSSynchronizer;
vtkSynchronizedRenderers* ParallelSynchronizer;
vtkImageProcessingPass *ImageProcessingPass;
vtkRenderPass* RenderPass;
enum ModeEnum
{
INVALID,
BUILTIN,
CLIENT,
SERVER,
BATCH
};
ModeEnum Mode;
bool Enabled;
bool DisableIceT;
int ImageReductionFactor;
vtkOpenGLRenderer* Renderer;
bool UseDepthBuffer;
bool RenderEmptyImages;
bool DataReplicatedOnAllProcesses;
private:
vtkPVSynchronizedRenderer(const vtkPVSynchronizedRenderer&); // Not implemented
void operator=(const vtkPVSynchronizedRenderer&); // Not implemented
//ETX
};
#endif