Commit de7ea53b authored by David E. DeMarle's avatar David E. DeMarle Committed by David E. DeMarle

Allow backend agnostic render passes.

Promoting RenderPass and thus FrameBufferObject and RenderState to
Rendering Core allows other modules to define RenderPasses that are
are independent of RenderingBackend choice.
parent 23debf07
Pipeline #10287 passed with stage
......@@ -23,6 +23,7 @@ set(Module_SRCS
vtkDiscretizableColorTransferFunction.cxx
vtkDistanceToCamera.cxx
vtkFollower.cxx
vtkFrameBufferObjectBase.cxx
vtkFrustumCoverageCuller.cxx
vtkGenericRenderWindowInteractor.cxx
vtkGenericVertexAttributeMapping.cxx
......@@ -68,6 +69,8 @@ set(Module_SRCS
vtkRenderer.cxx
vtkRendererDelegate.cxx
vtkRendererSource.cxx
vtkRenderPass.cxx
vtkRenderState.cxx
vtkRenderWindowCollection.cxx
vtkRenderWindow.cxx
vtkRenderWindowInteractor.cxx
......@@ -164,6 +167,7 @@ set_source_files_properties(
vtkAbstractPicker
vtkAbstractPropPicker
vtkCuller
vtkFrameBufferObjectBase
vtkGPUInfoList.cxx
vtkHardwareSelector
vtkImageMapper3D
......@@ -173,6 +177,8 @@ set_source_files_properties(
vtkProp
vtkProp3D
vtkRendererDelegate
vtkRenderPass
vtkRenderState
vtkShader
vtkShaderDeviceAdapter
vtkShaderDeviceAdapter2
......@@ -188,6 +194,7 @@ set_source_files_properties(
set_source_files_properties(
vtkAbstractInteractionDevice
vtkAbstractRenderDevice
vtkRenderState
vtkRenderWidget
WRAP_EXCLUDE
)
......
/*=========================================================================
Program: Visualization Toolkit
Module: vtkFrameBufferObjectBase.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.
=========================================================================*/
#include "vtkFrameBufferObjectBase.h"
#include "vtkObjectFactory.h"
//----------------------------------------------------------------------------
vtkFrameBufferObjectBase::vtkFrameBufferObjectBase()
{
}
//----------------------------------------------------------------------------
vtkFrameBufferObjectBase::~vtkFrameBufferObjectBase()
{
}
// ----------------------------------------------------------------------------
void vtkFrameBufferObjectBase::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
}
/*=========================================================================
Program: Visualization Toolkit
Module: vtkFrameBufferObjectBase.h
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.
=========================================================================*/
// .NAME vtkFrameBufferObjectBase - abstract interface to OpenGL FBOs
// .SECTION Description
// API for classes that encapsulate an OpenGL Frame Buffer Object.
#ifndef vtkFrameBufferObjectBase_h
#define vtkFrameBufferObjectBase_h
#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkObject.h"
class vtkRenderer;
class vtkProp;
class vtkInformation;
class VTKRENDERINGCORE_EXPORT vtkFrameBufferObjectBase : public vtkObject
{
public:
vtkTypeMacro(vtkFrameBufferObjectBase, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
virtual int *GetLastSize() = 0;
virtual void GetLastSize (int &_arg1, int &_arg2) = 0;
virtual void GetLastSize (int _arg[2]) = 0;
protected:
vtkFrameBufferObjectBase(); // no default constructor.
~vtkFrameBufferObjectBase();
private:
vtkFrameBufferObjectBase(const vtkFrameBufferObjectBase &); // Not implemented.
void operator=(const vtkFrameBufferObjectBase &); // Not implemented.
};
#endif
......@@ -15,7 +15,7 @@
#include "vtkRenderPass.h"
#include <cassert>
#include "vtkOpenGLRenderer.h"
#include "vtkRenderer.h"
// ----------------------------------------------------------------------------
// Description:
......@@ -97,6 +97,15 @@ void vtkRenderPass::UpdateGeometry(vtkRenderer *renderer)
renderer->UpdateGeometry();
}
// ----------------------------------------------------------------------------
void vtkRenderPass::SetLastRenderingUsedDepthPeeling(vtkRenderer *renderer,
bool value)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->LastRenderingUsedDepthPeeling = value;
}
// ----------------------------------------------------------------------------
void vtkRenderPass::PrintSelf(ostream& os, vtkIndent indent)
{
......
......@@ -42,26 +42,24 @@
#ifndef vtkRenderPass_h
#define vtkRenderPass_h
#include "vtkRenderingOpenGLModule.h" // For export macro
#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkObject.h"
class vtkRenderState;
class vtkWindow;
class vtkRenderer;
class VTKRENDERINGOPENGL_EXPORT vtkRenderPass : public vtkObject
class VTKRENDERINGCORE_EXPORT vtkRenderPass : public vtkObject
{
public:
vtkTypeMacro(vtkRenderPass,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
//BTX
// Description:
// Perform rendering according to a render state \p s.
// It modifies NumberOfRenderedProps.
// \pre s_exists: s!=0
virtual void Render(const vtkRenderState *s)=0;
//ETX
// Description:
// Number of props rendered at the last Render call.
......@@ -112,6 +110,7 @@ class VTKRENDERINGOPENGL_EXPORT vtkRenderPass : public vtkObject
// Modify protected member LastRenderingUsedDepthPeeling on Renderer.
// See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
// Note - OpenGL1 specific, remove when completely switched to OpenGL2
void SetLastRenderingUsedDepthPeeling(vtkRenderer *renderer,
bool value);
......
......@@ -15,7 +15,7 @@
#include "vtkRenderState.h"
#include <cassert>
#include "vtkRenderer.h"
#include "vtkFrameBufferObject.h"
#include "vtkFrameBufferObjectBase.h"
// ----------------------------------------------------------------------------
// Description:
......@@ -65,7 +65,7 @@ vtkRenderer *vtkRenderState::GetRenderer() const
// ----------------------------------------------------------------------------
// Description:
// Return the FrameBuffer.
vtkFrameBufferObject *vtkRenderState::GetFrameBuffer() const
vtkFrameBufferObjectBase *vtkRenderState::GetFrameBuffer() const
{
return this->FrameBuffer;
}
......@@ -74,7 +74,7 @@ vtkFrameBufferObject *vtkRenderState::GetFrameBuffer() const
// Description:
// Set the FrameBuffer.
// \post is_set: GetFrameBuffer()==fbo
void vtkRenderState::SetFrameBuffer(vtkFrameBufferObject *fbo)
void vtkRenderState::SetFrameBuffer(vtkFrameBufferObjectBase *fbo)
{
this->FrameBuffer = fbo;
assert("post: is_set" && this->GetFrameBuffer() == fbo);
......
......@@ -26,15 +26,15 @@
#ifndef vtkRenderState_h
#define vtkRenderState_h
#include "vtkRenderingOpenGL2Module.h" // For export macro
#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkObject.h"
class vtkRenderer;
class vtkProp;
class vtkFrameBufferObject;
class vtkFrameBufferObjectBase;
class vtkInformation;
class VTKRENDERINGOPENGL2_EXPORT vtkRenderState
class VTKRENDERINGCORE_EXPORT vtkRenderState
{
public:
// Description:
......@@ -63,12 +63,12 @@ class VTKRENDERINGOPENGL2_EXPORT vtkRenderState
// Return the FrameBuffer. This is the framebuffer in use. NULL means it is
// the FrameBuffer provided by the RenderWindow (it can actually be an FBO
// in case the RenderWindow is in off screen mode).
vtkFrameBufferObject *GetFrameBuffer() const;
vtkFrameBufferObjectBase *GetFrameBuffer() const;
// Description:
// Set the FrameBuffer. See GetFrameBuffer().
// \post is_set: GetFrameBuffer()==fbo
void SetFrameBuffer(vtkFrameBufferObject *fbo);
void SetFrameBuffer(vtkFrameBufferObjectBase *fbo);
// Description:
// Get the window size of the state.
......@@ -118,7 +118,7 @@ class VTKRENDERINGOPENGL2_EXPORT vtkRenderState
// The framebuffer in use. NULL means the FrameBuffer provided by
// the RenderWindow (it can actually be an FBO in case the RenderWindow
// is in off screen mode).
vtkFrameBufferObject *FrameBuffer;
vtkFrameBufferObjectBase *FrameBuffer;
// Description:
// Subset of props to render. A renderpass might ignore this filtered list
......
......@@ -33,6 +33,7 @@
#include "vtkProp3DCollection.h"
#include "vtkPropCollection.h"
#include "vtkRendererDelegate.h"
#include "vtkRenderPass.h"
#include "vtkRenderWindow.h"
#include "vtkTimerLog.h"
#include "vtkVolume.h"
......@@ -40,6 +41,7 @@
vtkCxxSetObjectMacro(vtkRenderer, Delegate, vtkRendererDelegate);
vtkCxxSetObjectMacro(vtkRenderer, BackgroundTexture, vtkTexture);
vtkCxxSetObjectMacro(vtkRenderer, Pass, vtkRenderPass);
//----------------------------------------------------------------------------
// Return NULL if no override is supplied.
......@@ -125,6 +127,8 @@ vtkRenderer::vtkRenderer()
this->TexturedBackground = false;
this->BackgroundTexture = NULL;
this->Pass = 0;
}
vtkRenderer::~vtkRenderer()
......@@ -1464,6 +1468,17 @@ void vtkRenderer::PrintSelf(ostream& os, vtkIndent indent)
{
os << "null" << endl;
}
os << indent << "Pass:";
if(this->Pass!=0)
{
os << "exists" << endl;
}
else
{
os << "null" << endl;
}
}
int vtkRenderer::VisibleActorCount()
......
......@@ -46,6 +46,7 @@ class vtkCullerCollection;
class vtkLight;
class vtkHardwareSelector;
class vtkRendererDelegate;
class vtkRenderPass;
class vtkTexture;
class VTKRENDERINGCORE_EXPORT vtkRenderer : public vtkViewport
......@@ -521,6 +522,11 @@ public:
vtkGetMacro(UseShadows,int);
vtkBooleanMacro(UseShadows,int);
// Set/Get a custom render pass.
// Initial value is NULL.
void SetPass(vtkRenderPass *p);
vtkGetObjectMacro(Pass, vtkRenderPass);
//BTX
protected:
vtkRenderer();
......@@ -619,9 +625,6 @@ protected:
// Temporary collection used by vtkRenderWindow::CaptureGL2PSSpecialProps.
vtkPropCollection *GL2PSSpecialPropCollection;
// Friend class to allow render passes to access functions.
friend class vtkRenderPass;
// Description:
// Ask all props to update and draw any opaque and translucent
// geometry. This includes both vtkActors and vtkVolumes
......@@ -710,6 +713,9 @@ protected:
bool TexturedBackground;
vtkTexture* BackgroundTexture;
friend class vtkRenderPass;
vtkRenderPass *Pass;
private:
vtkRenderer(const vtkRenderer&); // Not implemented.
void operator=(const vtkRenderer&); // Not implemented.
......
......@@ -77,9 +77,7 @@ set(Module_SRCS
vtkPolyDataPainter.cxx
vtkPolygonsPainter.cxx
vtkPrimitivePainter.cxx
vtkRenderPass.cxx
vtkRenderPassCollection.cxx
vtkRenderState.cxx
vtkRenderbuffer.cxx
vtkRepresentationPainter.cxx
vtkScalarsToColorsPainter.cxx
......@@ -138,8 +136,6 @@ set(${vtk-module}_HDRS
set_source_files_properties(
vtkImageProcessingPass
vtkOpenGLRenderWindow
vtkRenderPass
vtkRenderState
vtkPainter
vtkPolyDataPainter
vtkPrimitivePainter
......@@ -148,7 +144,6 @@ set_source_files_properties(
set_source_files_properties(
vtkLightingHelper
vtkRenderState
vtkOpenGLState
vtkOpenGLGL2PSHelper
vtkShader2
......
......@@ -23,7 +23,7 @@
#include "vtkMatrix4x4.h"
#include "vtkgluPickMatrix.h"
#include "vtkCamera.h"
#include "vtkFrameBufferObject.h"
#include "vtkFrameBufferObjectBase.h"
#include "vtkOpenGLError.h"
vtkStandardNewMacro(vtkCameraPass);
......@@ -108,7 +108,7 @@ void vtkCameraPass::Render(const vtkRenderState *s)
int vsize;
vtkMatrix4x4 *matrix=vtkMatrix4x4::New();
vtkFrameBufferObject *fbo=s->GetFrameBuffer();
vtkFrameBufferObjectBase *fbo=s->GetFrameBuffer();
if(fbo==0)
{
......
......@@ -25,7 +25,7 @@
#ifndef vtkFrameBufferObject_h
#define vtkFrameBufferObject_h
#include "vtkObject.h"
#include "vtkFrameBufferObjectBase.h"
#include "vtkRenderingOpenGLModule.h" // For export macro
#include "vtkSmartPointer.h" // needed for vtkSmartPointer.
#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
......@@ -40,7 +40,7 @@ class vtkPixelBufferObject;
class vtkOpenGLExtensionManager;
class vtkOpenGLRenderWindow;
class VTKRENDERINGOPENGL_EXPORT vtkFrameBufferObject : public vtkObject
class VTKRENDERINGOPENGL_EXPORT vtkFrameBufferObject : public vtkFrameBufferObjectBase
{
public:
static vtkFrameBufferObject* New();
......
......@@ -51,7 +51,6 @@ public:
vtkStandardNewMacro(vtkOpenGLRenderer);
vtkCxxSetObjectMacro(vtkOpenGLRenderer,ShaderProgram,vtkShaderProgram2);
vtkCxxSetObjectMacro(vtkOpenGLRenderer, Pass, vtkRenderPass);
#define VTK_MAX_LIGHTS 8
......@@ -84,7 +83,6 @@ vtkOpenGLRenderer::vtkOpenGLRenderer()
this->ShaderProgram=0;
this->BackgroundTexture = 0;
this->Pass = 0;
}
// Internal method temporarily removes lights before reloading them
......@@ -1086,15 +1084,6 @@ void vtkOpenGLRenderer::PrintSelf(ostream& os, vtkIndent indent)
os << indent << "PickedId" << this->PickInfo->PickedId<< "\n";
os << indent << "NumPicked" << this->PickInfo->NumPicked<< "\n";
os << indent << "PickedZ " << this->PickedZ << "\n";
os << indent << "Pass:";
if(this->Pass!=0)
{
os << "exists" << endl;
}
else
{
os << "null" << endl;
}
}
......
......@@ -70,11 +70,6 @@ public:
virtual void SetShaderProgram(vtkShaderProgram2 *program);
//ETX
// Description:
// Set/Get a custom render pass.
// Initial value is NULL.
void SetPass(vtkRenderPass *p);
vtkGetObjectMacro(Pass, vtkRenderPass);
protected:
vtkOpenGLRenderer();
......@@ -168,7 +163,6 @@ protected:
vtkShaderProgram2 *ShaderProgram;
friend class vtkRenderPass;
vtkRenderPass *Pass;
private:
vtkOpenGLRenderer(const vtkOpenGLRenderer&); // Not implemented.
......
/*=========================================================================
Program: Visualization Toolkit
Module: vtkRenderPass.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.
=========================================================================*/
#include "vtkRenderPass.h"
#include <cassert>
#include "vtkRenderer.h"
#include "vtkOpenGLRenderer.h"
// ----------------------------------------------------------------------------
// Description:
// Default constructor. Do nothing.
vtkRenderPass::vtkRenderPass()
{
this->NumberOfRenderedProps = 0;
}
// ----------------------------------------------------------------------------
// Description:
// Destructor. Do nothing.
vtkRenderPass::~vtkRenderPass()
{
}
// ----------------------------------------------------------------------------
// Description:
// Release graphics resources and ask components to release their own
// resources. Default implementation is empty.
// \pre w_exists: w!=0
void vtkRenderPass::ReleaseGraphicsResources(vtkWindow *w)
{
assert("pre: w_exists" && w != 0);
// empty implementation;
static_cast<void>(w); // avoid warning in release mode.
}
// ----------------------------------------------------------------------------
// Description:
// Call UpdateCamera() on Renderer. This ugly mechanism gives access to
// a protected method of Renderer to subclasses of vtkRenderPass.
// \pre renderer_exists: renderer!=0
void vtkRenderPass::UpdateCamera(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->UpdateCamera();
}
// ----------------------------------------------------------------------------
// Description:
// Call ClearLights() on Renderer. See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
void vtkRenderPass::ClearLights(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer != 0);
vtkOpenGLRenderer *oRenderer = static_cast<vtkOpenGLRenderer *>(renderer);
oRenderer->ClearLights();
}
// ----------------------------------------------------------------------------
// Description:
// Call UpdateLightGeometry() on Renderer. See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
void vtkRenderPass::UpdateLightGeometry(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->UpdateLightGeometry();
}
// ----------------------------------------------------------------------------
// Description:
// Call UpdateLights() on Renderer. See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
void vtkRenderPass::UpdateLights(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->UpdateLights();
}
// ----------------------------------------------------------------------------
// Description:
// Call UpdateGeometry() on Renderer. See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
void vtkRenderPass::UpdateGeometry(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->UpdateGeometry();
}
// ----------------------------------------------------------------------------
// Description:
// Modify protected member LastRenderingUsedDepthPeeling on Renderer.
// See note about UpdateCamera().
// \pre renderer_exists: renderer!=0
void vtkRenderPass::SetLastRenderingUsedDepthPeeling(vtkRenderer *renderer,
bool value)
{
assert("pre: renderer_exists" && renderer != 0);
renderer->LastRenderingUsedDepthPeeling = value;
}
// ----------------------------------------------------------------------------
void vtkRenderPass::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os ,indent);
os << indent << "NumberOfRenderedProps:" << this->NumberOfRenderedProps
<< endl;
}
/*=========================================================================
Program: Visualization Toolkit
Module: vtkRenderState.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.
=========================================================================*/
#include "vtkRenderState.h"
#include <cassert>
#include "vtkRenderer.h"
#include "vtkFrameBufferObject.h"
// ----------------------------------------------------------------------------
// Description:
// Constructor. All values are initialized to 0 or NULL.
// \pre renderer_exists: renderer!=0
// \post renderer_is_set: GetRenderer()==renderer.
// \post valid_state: IsValid()
vtkRenderState::vtkRenderState(vtkRenderer *renderer)
{
assert("pre: renderer_exists" && renderer!=0);
this->Renderer = renderer;
this->FrameBuffer = 0;
this->PropArray = 0;
this->PropArrayCount = 0;
this->RequiredKeys = 0;
assert("post: renderer_is_set" && this->GetRenderer() == renderer);
assert("post: is_valid" && this->IsValid());
}
// ----------------------------------------------------------------------------
// Description:
// Destructor. As a vtkRenderState does not own any of its variables,
// the destructor does nothing.
vtkRenderState::~vtkRenderState()
{
}
// ----------------------------------------------------------------------------
// Description:
// Tells if the RenderState is a valid one (Renderer is not null).
bool vtkRenderState::IsValid() const
{
return this->Renderer != 0;
}
// ----------------------------------------------------------------------------
// Description:
// Return the Renderer.
// \post result_exists: result!=0
vtkRenderer *vtkRenderState::GetRenderer() const
{
assert("post: valid_result" && this->Renderer != 0);
return this->Renderer;
}
// ----------------------------------------------------------------------------
// Description:
// Return the FrameBuffer.
vtkFrameBufferObject *vtkRenderState::GetFrameBuffer() const
{
return this->FrameBuffer;
}
// ----------------------------------------------------------------------------
// Description:
// Set the FrameBuffer.
// \post is_set: GetFrameBuffer()==fbo
void vtkRenderState::SetFrameBuffer(vtkFrameBufferObject *fbo)
{
this->FrameBuffer = fbo;
assert("post: is_set" && this->GetFrameBuffer() == fbo);
}
// ----------------------------------------------------------------------------
// Description:
// Get the window size of the state.
void vtkRenderState::GetWindowSize(int size[2]) const
{
if (this->FrameBuffer==0)
{
this->Renderer->GetTiledSize(&size[0], &size[1]);
}
else
{
this->FrameBuffer->GetLastSize(size);
}
}
// ----------------------------------------------------------------------------
// Description:
// Return the array of filtered props
vtkProp **vtkRenderState::GetPropArray() const
{
return this->PropArray;
}
// ----------------------------------------------------------------------------
// Description:
// Return the size of the array of filtered props.
// \post positive_result: result>=0
int vtkRenderState::GetPropArrayCount() const
{
assert("post: positive_result" && this->PropArrayCount >= 0);
return this->PropArrayCount;
}
// ----------------------------------------------------------------------------
// Description:
// Set the array of of filtered props and its size.
// \pre positive_size: propArrayCount>=0
// \pre valid_null_array: propArray!=0 || propArrayCount==0
// \post is_set: GetPropArray()==propArray && GetPropArrayCount()==propArrayCount
void vtkRenderState::SetPropArrayAndCount(vtkProp **propArray,
int propArrayCount)
{
assert("pre: positive_size" && propArrayCount >= 0);
assert("pre: valid_null_array" && (propArray != 0 || propArrayCount == 0));
this->PropArray = propArray;
this->PropArrayCount = propArrayCount;
assert("post: is_set" && this->GetPropArray() == propArray
&& this->GetPropArrayCount() == propArrayCount);
}
// ----------------------------------------------------------------------------
// Description:
// Return the required property keys for the props.
vtkInformation *vtkRenderState::GetRequiredKeys() const
{
return this->RequiredKeys;
}
// ----------------------------------------------------------------------------
// Description:
// Set the required property keys for the props.
// \post is_set: GetRequiredKeys()==keys
void vtkRenderState::SetRequiredKeys(vtkInformation *keys)
{
this->RequiredKeys = keys;
assert("post: is_set" && this->GetRequiredKeys() == keys);
}
/*=========================================================================
Program: Visualization Toolkit
Module: vtkRenderState.h
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.
=========================================================================*/
// .NAME vtkRenderState - Context in which a vtkRenderPass will render.
// .SECTION Description
// vtkRenderState is a ligthweight effective class which gather information
// used by a vtkRenderPass to perform its execution.
// .SECTION Implementation Notes