VTK  9.2.6
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 "vtkDeprecation.h" // for VTK_DEPRECATED_IN_9_1_0
30#include "vtkRenderer.h"
31#include "vtkRenderingOpenGL2Module.h" // For export macro
32#include "vtkSmartPointer.h" // For vtkSmartPointer
33#include <string> // Ivars
34#include <vector> // STL Header
35
36class vtkFloatArray;
38class vtkRenderPass;
39class vtkOpenGLState;
49class vtkSSAOPass;
50
51class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLRenderer : public vtkRenderer
52{
53public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
61 void DeviceRender(void) override;
62
67
75
76 void Clear(void) override;
77
81 int UpdateLights(void) override;
82
90
98 "Removed in 9.1.0 as this bug does not affect any macOS release that VTK supports")
99 bool HaveApplePrimitiveIdBug();
100
105 static bool HaveAppleQueryAllocationBug();
106
112 bool IsDualDepthPeelingSupported();
113
114 // Get the state object used to keep track of
115 // OpenGL state
116 vtkOpenGLState* GetState();
117
118 // get the standard lighting uniform declarations
119 // for the current set of lights
120 const char* GetLightingUniforms();
121
122 // update the lighting uniforms for this shader if they
123 // are out of date
124 void UpdateLightingUniforms(vtkShaderProgram* prog);
125
126 // get the complexity of the current lights as a int
127 // 0 = no lighting
128 // 1 = headlight
129 // 2 = directional lights
130 // 3 = positional lights
132 {
133 NoLighting = 0,
134 Headlight = 1,
135 Directional = 2,
136 Positional = 3
137 };
138 vtkGetMacro(LightingComplexity, int);
139
140 // get the number of lights turned on
141 vtkGetMacro(LightingCount, int);
142
144
151
153
160
165
167
170 vtkSetMacro(UseSphericalHarmonics, bool);
171 vtkGetMacro(UseSphericalHarmonics, bool);
172 vtkBooleanMacro(UseSphericalHarmonics, bool);
174
178 void SetEnvironmentTexture(vtkTexture* texture, bool isSRGB = false) override;
179
180 // Method to release graphics resources
182
183protected:
186
190 void CheckCompilation(unsigned int fragmentShader);
191
197 int UpdateGeometry(vtkFrameBufferObjectBase* fbo = nullptr) override;
198
205
206 friend class vtkOpenGLProperty;
207 friend class vtkOpenGLTexture;
209 friend class vtkOpenGLImageResliceMapper;
210
215
220
225
230
235
236 // Is rendering at translucent geometry stage using depth peeling and
237 // rendering a layer other than the first one? (Boolean value)
238 // If so, the uniform variables UseTexture and Texture can be set.
239 // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
241
242 friend class vtkRenderPass;
243
248
253
259
260private:
261 vtkOpenGLRenderer(const vtkOpenGLRenderer&) = delete;
262 void operator=(const vtkOpenGLRenderer&) = delete;
263};
264
265#endif
Implement Depth Peeling for use within a framebuffer pass.
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
abstract interface to OpenGL FBOs
a simple class to control print indentation
Definition: vtkIndent.h:40
Perform FXAA antialiasing on the current framebuffer.
OpenGL mapper for image slice display.
OpenGL property.
OpenGL renderer.
vtkPBRPrefilterTexture * GetEnvMapPrefiltered()
Get environment textures used for image based lighting.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPBRPrefilterTexture * EnvMapPrefiltered
void SetEnvironmentTexture(vtkTexture *texture, bool isSRGB=false) override
Overridden in order to connect the texture to the environment map textures.
vtkSmartPointer< vtkFloatArray > SphericalHarmonics
vtkPBRLUTTexture * GetEnvMapLookupTable()
Get environment textures used for image based lighting.
vtkShadowMapPass * ShadowMapPass
Shadows are delegated to an instance of vtkShadowMapPass.
vtkPBRIrradianceTexture * EnvMapIrradiance
std::string LightingDeclaration
vtkDepthPeelingPass * DepthPeelingPass
Depth peeling is delegated to an instance of vtkDepthPeelingPass.
vtkPBRLUTTexture * EnvMapLookupTable
vtkSSAOPass * SSAOPass
SSAO is delegated to an instance of vtkSSAOPass.
void Clear(void) override
Clear the image to the background color.
vtkSmartPointer< vtkTransform > UserLightTransform
Optional user transform for lights.
vtkTransform * GetUserLightTransform()
Set the user light transform applied after the camera transform.
void DeviceRenderTranslucentPolygonalGeometry(vtkFrameBufferObjectBase *fbo=nullptr) override
Render translucent polygonal geometry.
vtkTexture * GetCurrentTexturedBackground()
Check and return the textured background for the current state If monocular or stereo left eye,...
vtkOrderIndependentTranslucentPass * TranslucentPass
Fallback for transparency.
vtkMTimeType LightingUpdateTime
int UpdateLights(void) override
Ask lights to load themselves into graphics pipeline.
void DeviceRenderOpaqueGeometry(vtkFrameBufferObjectBase *fbo=nullptr) override
Overridden to support hidden line removal.
static vtkOpenGLRenderer * New()
vtkOpenGLFXAAFilter * FXAAFilter
FXAA is delegated to an instance of vtkOpenGLFXAAFilter.
void ReleaseGraphicsResources(vtkWindow *w) override
vtkPBRIrradianceTexture * GetEnvMapIrradiance()
Get environment textures used for image based lighting.
int UpdateGeometry(vtkFrameBufferObjectBase *fbo=nullptr) override
Ask all props to update and draw any opaque and translucent geometry.
void SetUserLightTransform(vtkTransform *transform)
Set the user light transform applied after the camera transform.
void DeviceRender(void) override
Concrete open gl render method.
vtkFloatArray * GetSphericalHarmonics()
Get spherical harmonics coefficients used for irradiance.
~vtkOpenGLRenderer() override
void CheckCompilation(unsigned int fragmentShader)
Check the compilation status of some fragment shader source.
int GetDepthPeelingHigherLayer()
Is rendering at translucent geometry stage using depth peeling and rendering a layer other than the f...
OpenGL state storage.
OpenGL texture map.
Implement OIT rendering using average color.
precompute irradiance texture used in physically based rendering
precompute BRDF look-up table texture used in physically based rendering
precompute prefilter texture used in physically based rendering
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:60
abstract specification for renderers
Definition: vtkRenderer.h:73
Implement a screen-space ambient occlusion pass.
Definition: vtkSSAOPass.h:46
The ShaderProgram uses one or more Shader objects.
Implement a shadow mapping render pass.
Hold a reference to a vtkObjectBase instance.
abstracts an OpenGL texture object.
handles properties associated with a texture map
Definition: vtkTexture.h:69
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:61
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
#define VTK_DEPRECATED_IN_9_1_0(reason)
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287