VTK  9.7.20260915
vtkOpenGLRenderer.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
122
123#ifndef vtkOpenGLRenderer_h
124#define vtkOpenGLRenderer_h
125
126#include "vtkRenderer.h"
127
128#include "vtkOpenGLQuadHelper.h" // for ivar
129#include "vtkPBRIrradianceTexture.h" // for ivar
130#include "vtkPBRLUTTexture.h" // for ivar
131#include "vtkPBRPrefilterTexture.h" // for ivar
132#include "vtkRenderingOpenGL2Module.h" // For export macro
133#include "vtkSmartPointer.h" // For vtkSmartPointer
134#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
135#include <string> // Ivars
136
137VTK_ABI_NAMESPACE_BEGIN
138class vtkFloatArray;
140class vtkRenderPass;
141class vtkOpenGLState;
142class vtkOpenGLTexture;
144class vtkTextureObject;
146class vtkShaderProgram;
147class vtkShadowMapPass;
148class vtkSSAOPass;
149class vtkPolyData;
153class vtkCameraPass;
155
156class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkOpenGLRenderer : public vtkRenderer
157{
158public:
163 void PrintSelf(ostream& os, vtkIndent indent) override;
164
168 void DeviceRender() override;
169
174
182
183 void Clear() override;
184
188 int UpdateLights() override;
189
197
203
210
211 // Get the state object used to keep track of
212 // OpenGL state
214
215 // get the standard lighting uniform declarations
216 // for the current set of lights
217 const char* GetLightingUniforms();
218
219 // update the lighting uniforms for this shader if they
220 // are out of date
222
223 // get the complexity of the current lights as a int
224 // 0 = no lighting
225 // 1 = headlight
226 // 2 = directional lights
227 // 3 = positional lights
235 vtkGetMacro(LightingComplexity, int);
236
237 // get the number of lights turned on
238 vtkGetMacro(LightingCount, int);
239
241
244 vtkSetSmartPointerMacro(EnvMapLookupTable, vtkPBRLUTTexture);
246 vtkSetSmartPointerMacro(EnvMapIrradiance, vtkPBRIrradianceTexture);
248 vtkSetSmartPointerMacro(EnvMapPrefiltered, vtkPBRPrefilterTexture);
251
256
258
261 vtkSetMacro(UseSphericalHarmonics, bool);
262 vtkGetMacro(UseSphericalHarmonics, bool);
263 vtkBooleanMacro(UseSphericalHarmonics, bool);
265
280 void SetEnvironmentTexture(vtkTexture* texture, bool isSRGB = false) override;
281
282 // Method to release graphics resources
284
285protected:
288
292 void CheckCompilation(unsigned int fragmentShader);
293
299 int UpdateGeometry(vtkFrameBufferObjectBase* fbo = nullptr) override;
300
307
308 friend class vtkOpenGLProperty;
309 friend class vtkOpenGLTexture;
312
317
322
327
332
337
338 // Is rendering at translucent geometry stage using depth peeling and
339 // rendering a layer other than the first one? (Boolean value)
340 // If so, the uniform variables UseTexture and Texture can be set.
341 // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
343
344 friend class vtkRenderPass;
345
350
356
361
362private:
363 vtkOpenGLRenderer(const vtkOpenGLRenderer&) = delete;
364 void operator=(const vtkOpenGLRenderer&) = delete;
365
371};
372
373#define vtkOpenGLRenderer_OVERRIDE_ATTRIBUTES vtkOpenGLRenderer::CreateOverrideAttributes()
374VTK_ABI_NAMESPACE_END
375#endif
Implement the camera render pass.
Implement Depth Peeling for use within a framebuffer pass.
dynamic, self-adjusting array of float
abstract interface to OpenGL FBOs
Screen space render pass that blur a given image using the hexagonal bokeh method.
a simple class to control print indentation
Definition vtkIndent.h:108
Perform FXAA antialiasing on the current framebuffer.
vtkPBRPrefilterTexture * GetEnvMapPrefiltered()
Get environment textures used for image based lighting.
vtkSmartPointer< vtkPBRIrradianceTexture > EnvMapIrradiance
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetEnvironmentTexture(vtkTexture *texture, bool isSRGB=false) override
Set/Get the environment texture used for image based lighting.
vtkSmartPointer< vtkFloatArray > SphericalHarmonics
vtkPBRLUTTexture * GetEnvMapLookupTable()
Get environment textures used for image based lighting.
vtkShadowMapPass * ShadowMapPass
Shadows are delegated to an instance of vtkShadowMapPass.
vtkOpenGLState * GetState()
std::string LightingDeclaration
vtkDepthPeelingPass * DepthPeelingPass
Depth peeling is delegated to an instance of vtkDepthPeelingPass.
static bool HaveAppleQueryAllocationBug()
Indicate if this system is subject to the apple/NVIDIA bug that causes crashes in the driver when too...
friend class vtkOpenGLImageResliceMapper
vtkSSAOPass * SSAOPass
SSAO is delegated to an instance of vtkSSAOPass.
bool IsDualDepthPeelingSupported()
Dual depth peeling may be disabled for certain runtime configurations.
vtkSmartPointer< vtkPBRLUTTexture > EnvMapLookupTable
friend class vtkRenderPass
static vtkOverrideAttribute * CreateOverrideAttributes()
vtkSmartPointer< vtkPBRPrefilterTexture > EnvMapPrefiltered
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,...
const char * GetLightingUniforms()
vtkSmartPointer< vtkTexturedActor2D > BackgroundGradientActor
int UpdateLights() override
Ask lights to load themselves into graphics pipeline.
vtkOrderIndependentTranslucentPass * TranslucentPass
Fallback for transparency.
vtkMTimeType LightingUpdateTime
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
void DeviceRender() override
Concrete open gl render method.
vtkPBRIrradianceTexture * GetEnvMapIrradiance()
Get environment textures used for image based lighting.
friend class vtkOpenGLImageSliceMapper
int UpdateGeometry(vtkFrameBufferObjectBase *fbo=nullptr) override
Ask all props to update and draw any opaque and translucent geometry.
void UpdateLightingUniforms(vtkShaderProgram *prog)
vtkSmartPointer< vtkPolyDataMapper2D > BackgroundMapper
friend class vtkOpenGLTexture
vtkFloatArray * GetSphericalHarmonics()
Get spherical harmonics coefficients used for irradiance.
void Clear() override
Clear the image to the background color.
vtkSmartPointer< vtkTexturedActor2D > BackgroundTextureActor
~vtkOpenGLRenderer() override
vtkSmartPointer< vtkPolyData > BackgroundQuad
friend class vtkOpenGLProperty
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.
Attribute for vtkObjectFactory overrides.
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
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Perform part of the rendering of a vtkRenderer.
Implement a screen-space ambient occlusion pass.
Definition vtkSSAOPass.h:37
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:168
actor that draws 2D data with texture support
window superclass for vtkRenderWindow
Definition vtkWindow.h:62
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE