vtkIceTCompositePass.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
26 #ifndef vtkIceTCompositePass_h
27 #define vtkIceTCompositePass_h
28 
29 #include "vtkNew.h" // needed for vtkWeakPointer.
30 #include "vtkRemotingViewsModule.h" // needed for export macro
31 #include "vtkRenderPass.h"
32 #include "vtkSynchronizedRenderers.h" // needed for vtkRawImage.
33 #include <memory> // for std::unique_pt
34 
35 class vtkFloatArray;
36 class vtkIceTContext;
37 class vtkMatrix4x4;
39 class vtkOpenGLHelper;
43 class vtkTextureObject;
45 
47 {
48 public:
49  static vtkIceTCompositePass* New();
51  void PrintSelf(ostream& os, vtkIndent indent) override;
52 
57  void Render(const vtkRenderState* s) override;
58 
64  void ReleaseGraphicsResources(vtkWindow* w) override;
65 
67 
72  vtkGetObjectMacro(Controller, vtkMultiProcessController);
73  virtual void SetController(vtkMultiProcessController* controller);
75 
77 
82  void SetRenderPass(vtkRenderPass*);
83  vtkGetObjectMacro(RenderPass, vtkRenderPass);
85 
87 
91  vtkSetVector2Macro(TileDimensions, int);
92  vtkGetVector2Macro(TileDimensions, int);
94 
96 
101  vtkSetVector2Macro(TileMullions, int);
102  vtkGetVector2Macro(TileMullions, int);
104 
106 
112  vtkSetMacro(DataReplicatedOnAllProcesses, bool);
113  vtkGetMacro(DataReplicatedOnAllProcesses, bool);
114  vtkBooleanMacro(DataReplicatedOnAllProcesses, bool);
116 
118 
126  vtkSetClampMacro(ImageReductionFactor, int, 1, 50);
127  vtkGetMacro(ImageReductionFactor, int);
129 
131 
135  vtkGetObjectMacro(OrderedCompositingHelper, vtkOrderedCompositingHelper);
136  virtual void SetOrderedCompositingHelper(vtkOrderedCompositingHelper* helper);
138 
140 
144  vtkGetMacro(RenderEmptyImages, bool);
145  vtkSetMacro(RenderEmptyImages, bool);
146  vtkBooleanMacro(RenderEmptyImages, bool);
148 
150 
158  vtkGetMacro(UseOrderedCompositing, bool);
159  vtkSetMacro(UseOrderedCompositing, bool);
160  vtkBooleanMacro(UseOrderedCompositing, bool);
162 
167  void GetLastRenderedTile(vtkSynchronizedRenderers::vtkRawImage& tile);
168 
173  vtkFloatArray* GetLastRenderedDepths();
174 
176 
180  vtkSetMacro(EnableFloatValuePass, bool);
182 
188  vtkFloatArray* GetLastRenderedRGBA32F();
189 
194  void PushIceTDepthBufferToScreen(const vtkRenderState* render_state);
195 
197 
206  vtkSetMacro(DisplayRGBAResults, bool);
207  vtkGetMacro(DisplayRGBAResults, bool);
208  vtkSetMacro(DisplayDepthResults, bool);
209  vtkGetMacro(DisplayDepthResults, bool);
211 
213 
216  struct IceTDrawParams;
217  void Draw(const vtkRenderState* render_state, const IceTDrawParams&);
219 
220 protected:
222  ~vtkIceTCompositePass() override;
223 
225 
228  virtual void SetupContext(const vtkRenderState*);
229  virtual void CleanupContext(const vtkRenderState*);
231 
237  void ReadyProgram(vtkOpenGLRenderWindow* context);
238 
242  void UpdateTileInformation(const vtkRenderState*);
243 
249  void DisplayResultsIfNeeded(const vtkRenderState*);
250 
255  void UpdateMatrices(const vtkRenderState*, double aspect);
256 
261 
266  int TileDimensions[2];
267  int TileMullions[2];
268 
270 
273 
275 
277 
281 
282  std::unique_ptr<vtkSynchronizedRenderers::vtkRawImage> LastRenderedRGBAColors;
283 
284 private:
286  void operator=(const vtkIceTCompositePass&) = delete;
287 
288  vtkNew<vtkMatrix4x4> ModelView;
289  vtkNew<vtkMatrix4x4> Projection;
290  vtkNew<vtkMatrix4x4> IceTProjection;
291 };
292 
293 #endif
#define VTKREMOTINGVIEWS_EXPORT
vtkIceTContext * IceTContext
std::unique_ptr< vtkSynchronizedRenderers::vtkRawImage > LastRenderedRGBAColors
vtkOrderedCompositingHelper * OrderedCompositingHelper
void PrintSelf(ostream &os, vtkIndent indent)
vtkNew< vtkFloatArray > LastRenderedRGBA32F
vtkTextureObject * ZTexture
vtkNew< vtkFloatArray > LastRenderedDepths
virtual void Render(const vtkRenderState *s)=0
This is a helper class for vtkIceTRenderManager and vtkOpenGLIceTRenderer.
virtual void ReleaseGraphicsResources(vtkWindow *w)
vtkMultiProcessController * Controller
static vtkObject * New()
void operator=(const vtkObjectBase &)
IceT enabled render pass for distributed rendering.
vtkOpenGLHelper * Program
vtkPixelBufferObject * PBO
helper to assist in determine process order when rendering