VTK
vtkOpenGLRenderer.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLRenderer.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
26 #ifndef vtkOpenGLRenderer_h
27 #define vtkOpenGLRenderer_h
28 
29 #include "vtkRenderingOpenGL2Module.h" // For export macro
30 #include "vtkRenderer.h"
31 #include "vtkSmartPointer.h" // For vtkSmartPointer
32 #include <vector> // STL Header
33 #include <string> // Ivars
34 
36 class vtkRenderPass;
37 class vtkOpenGLState;
38 class vtkOpenGLTexture;
40 class vtkTextureObject;
42 class vtkShaderProgram;
43 class vtkShadowMapPass;
44 
45 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLRenderer : public vtkRenderer
46 {
47 public:
50  void PrintSelf(ostream& os, vtkIndent indent) override;
51 
55  void DeviceRender(void) override;
56 
60  void DeviceRenderOpaqueGeometry() override;
61 
69 
70  void Clear(void) override;
71 
75  int UpdateLights(void) override;
76 
84 
92 
98 
105 
106  // Get the state object used to keep track of
107  // OpenGL state
109 
110  // get the standard lighting uniform declarations
111  // for the current set of lights
112  const char *GetLightingUniforms();
113 
114  // update the lighting uniforms for this shader if they
115  // are out of date
117 
118  // get the complexity of the current lights as a int
119  // 0 = no lighting
120  // 1 = headlight
121  // 2 = directional lights
122  // 3 = positional lights
124  NoLighting = 0,
125  Headlight = 1,
126  Directional = 2,
127  Positional = 3
128  };
129  vtkGetMacro(LightingComplexity, int);
130 
131  // get the number of lights turned on
132  vtkGetMacro(LightingCount, int);
133 
139 
140 protected:
142  ~vtkOpenGLRenderer() override;
143 
147  void CheckCompilation(unsigned int fragmentShader);
148 
149  // Internal method to release graphics resources in any derived renderers.
151 
157  int UpdateGeometry() override;
158 
165 
166  friend class vtkOpenGLProperty;
167  friend class vtkOpenGLTexture;
169  friend class vtkOpenGLImageResliceMapper;
170 
175 
180 
185 
190 
191  // Is rendering at translucent geometry stage using depth peeling and
192  // rendering a layer other than the first one? (Boolean value)
193  // If so, the uniform variables UseTexture and Texture can be set.
194  // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
196 
197  friend class vtkRenderPass;
198 
201 
206 
211 
212 private:
213  vtkOpenGLRenderer(const vtkOpenGLRenderer&) = delete;
214  void operator=(const vtkOpenGLRenderer&) = delete;
215 };
216 
217 #endif
vtkOpenGLRenderer::~vtkOpenGLRenderer
~vtkOpenGLRenderer() override
vtkOpenGLRenderer::GetDepthPeelingHigherLayer
int GetDepthPeelingHigherLayer()
Is rendering at translucent geometry stage using depth peeling and rendering a layer other than the f...
vtkOpenGLRenderer::LightingDeclaration
std::string LightingDeclaration
Definition: vtkOpenGLRenderer.h:202
vtkOpenGLRenderer::Clear
void Clear(void) override
Clear the image to the background color.
vtkDepthPeelingPass
Implement Depth Peeling for use within a framebuffer pass.
Definition: vtkDepthPeelingPass.h:68
vtkOpenGLRenderer::HaveAppleQueryAllocationBug
static bool HaveAppleQueryAllocationBug()
Indicate if this system is subject to the apple/NVIDIA bug that causes crashes in the driver when too...
vtkOpenGLRenderer::GetCurrentTexturedBackground
vtkTexture * GetCurrentTexturedBackground()
Check and return the textured background for the current state If monocular or stereo left eye,...
vtkOpenGLRenderer::FXAAFilter
vtkOpenGLFXAAFilter * FXAAFilter
FXAA is delegated to an instance of vtkOpenGLFXAAFilter.
Definition: vtkOpenGLRenderer.h:174
vtkSmartPointer< vtkTransform >
vtkOpenGLProperty
OpenGL property.
Definition: vtkOpenGLProperty.h:30
vtkRenderer.h
vtkOpenGLRenderer::IsDualDepthPeelingSupported
bool IsDualDepthPeelingSupported()
Dual depth peeling may be disabled for certain runtime configurations.
vtkOpenGLRenderer::LightingComplexityEnum
LightingComplexityEnum
Definition: vtkOpenGLRenderer.h:123
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:61
vtkOpenGLRenderer::DepthPeelingPass
vtkDepthPeelingPass * DepthPeelingPass
Depth peeling is delegated to an instance of vtkDepthPeelingPass.
Definition: vtkOpenGLRenderer.h:179
vtkShadowMapPass
Implement a shadow mapping render pass.
Definition: vtkShadowMapPass.h:64
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
vtkOpenGLRenderer::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *w) override
vtkOpenGLRenderer::UpdateLightingUniforms
void UpdateLightingUniforms(vtkShaderProgram *prog)
vtkOpenGLRenderer::LightingUpdateTime
vtkMTimeType LightingUpdateTime
Definition: vtkOpenGLRenderer.h:205
vtkOpenGLRenderer::HaveApplePrimitiveIdBug
bool HaveApplePrimitiveIdBug()
Indicate if this system is subject to the Apple/AMD bug of not having a working glPrimitiveId <rdar:/...
vtkTexture
handles properties associated with a texture map
Definition: vtkTexture.h:72
vtkOpenGLRenderer::New
static vtkOpenGLRenderer * New()
vtkOrderIndependentTranslucentPass
Implement OIT rendering using average color.
Definition: vtkOrderIndependentTranslucentPass.h:43
vtkShaderProgram
The ShaderProgram uses one or more Shader objects.
Definition: vtkShaderProgram.h:48
vtkOpenGLRenderer::LightingComplexity
int LightingComplexity
Definition: vtkOpenGLRenderer.h:203
vtkOpenGLRenderer::UpdateGeometry
int UpdateGeometry() override
Ask all props to update and draw any opaque and translucent geometry.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkTextureObject
abstracts an OpenGL texture object.
Definition: vtkTextureObject.h:45
vtkOpenGLRenderer::UpdateLights
int UpdateLights(void) override
Ask lights to load themselves into graphics pipeline.
vtkSmartPointer.h
vtkOpenGLRenderer
OpenGL renderer.
Definition: vtkOpenGLRenderer.h:46
vtkOpenGLFXAAFilter
Perform FXAA antialiasing on the current framebuffer.
Definition: vtkOpenGLFXAAFilter.h:59
vtkOpenGLRenderer::DeviceRenderTranslucentPolygonalGeometry
void DeviceRenderTranslucentPolygonalGeometry() override
Render translucent polygonal geometry.
vtkOpenGLImageSliceMapper
OpenGL mapper for image slice display.
Definition: vtkOpenGLImageSliceMapper.h:38
vtkOpenGLRenderer::GetLightingUniforms
const char * GetLightingUniforms()
vtkOpenGLRenderer::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkOpenGLRenderer::HaveApplePrimitiveIdBugValue
bool HaveApplePrimitiveIdBugValue
Definition: vtkOpenGLRenderer.h:199
vtkOpenGLRenderer::DepthPeelingHigherLayer
int DepthPeelingHigherLayer
Definition: vtkOpenGLRenderer.h:195
vtkX3D::string
@ string
Definition: vtkX3D.h:490
vtkOpenGLRenderer::UserLightTransform
vtkSmartPointer< vtkTransform > UserLightTransform
Optional user transform for lights.
Definition: vtkOpenGLRenderer.h:210
vtkOpenGLRenderer::HaveApplePrimitiveIdBugChecked
bool HaveApplePrimitiveIdBugChecked
Definition: vtkOpenGLRenderer.h:200
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkOpenGLRenderer::SetUserLightTransform
void SetUserLightTransform(vtkTransform *transform)
Set the user light transform applied after the camera transform.
vtkOpenGLRenderer::vtkOpenGLRenderer
vtkOpenGLRenderer()
vtkOpenGLTexture
OpenGL texture map.
Definition: vtkOpenGLTexture.h:37
vtkOpenGLRenderer::TranslucentPass
vtkOrderIndependentTranslucentPass * TranslucentPass
Fallback for transparency.
Definition: vtkOpenGLRenderer.h:184
vtkOpenGLState
OpenGL state storage.
Definition: vtkOpenGLState.h:68
vtkOpenGLRenderer::GetState
vtkOpenGLState * GetState()
vtkOpenGLRenderer::DeviceRender
void DeviceRender(void) override
Concrete open gl render method.
vtkOpenGLRenderer::CheckCompilation
void CheckCompilation(unsigned int fragmentShader)
Check the compilation status of some fragment shader source.
vtkOpenGLRenderer::LightingCount
int LightingCount
Definition: vtkOpenGLRenderer.h:204
vtkOpenGLRenderer::DeviceRenderOpaqueGeometry
void DeviceRenderOpaqueGeometry() override
Overridden to support hidden line removal.
vtkOpenGLRenderer::ShadowMapPass
vtkShadowMapPass * ShadowMapPass
Shadows are delegated to an instance of vtkShadowMapPass.
Definition: vtkOpenGLRenderer.h:189
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302
vtkRenderPass
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:59