mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
170 lines
5.8 KiB
C++
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
|