VTK  9.7.20260728
vtkGLSLModLight.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
7
8#ifndef vtkGLSLModLight_h
9#define vtkGLSLModLight_h
10
11#include "vtkGLSLModifierBase.h"
12
13#include "vtkOpenGLRenderer.h" // for ivar
14#include "vtkRenderingOpenGL2Module.h" // for export macro
15
16VTK_ABI_NAMESPACE_BEGIN
17class vtkActor;
21
22class VTKRENDERINGOPENGL2_EXPORT vtkGLSLModLight : public vtkGLSLModifierBase
23{
24public:
27 void PrintSelf(ostream& os, vtkIndent indent) override;
28
30 {
31 int Complexity = 0;
32 int Count = 0;
33 bool IBL = false;
34 };
35
37
38 vtkSetMacro(UsePBRTextures, bool);
39 vtkGetMacro(UsePBRTextures, bool);
40
41 vtkSetMacro(UseAnisotropy, bool);
42 vtkGetMacro(UseAnisotropy, bool);
43
44 vtkSetMacro(UseClearCoat, bool);
45 vtkGetMacro(UseClearCoat, bool);
46
47 // vtkGLSLModifierBase virtuals:
48 bool ReplaceShaderValues(vtkOpenGLRenderer* renderer, std::string& vertexShader,
49 std::string& tessControlShader, std::string& tessEvalShader, std::string& geometryShader,
50 std::string& fragmentShader, vtkAbstractMapper* mapper, vtkActor* actor) override;
52 vtkAbstractMapper* mapper, vtkActor* actor, vtkOpenGLVertexArrayObject* VAO = nullptr) override;
53 bool IsUpToDate(vtkOpenGLRenderer* renderer, vtkAbstractMapper* mapper, vtkActor* actor) override;
54
55protected:
57 ~vtkGLSLModLight() override;
58
62 bool LastLightIBL = false;
63
65 bool UsePBRTextures = false;
66 bool UseAnisotropy = false;
67 bool UseClearCoat = false;
68
74 unsigned int CachedLocLinkCount = 0;
88
89private:
90 vtkGLSLModLight(const vtkGLSLModLight&) = delete;
91 void operator=(const vtkGLSLModLight&) = delete;
92};
93
94VTK_ABI_NAMESPACE_END
95#endif
abstract class specifies interface to map data
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
Implement light kit support in the OpenGL renderer for vtkCellGrid.
bool SetShaderParameters(vtkOpenGLRenderer *renderer, vtkShaderProgram *program, vtkAbstractMapper *mapper, vtkActor *actor, vtkOpenGLVertexArrayObject *VAO=nullptr) override
bool ReplaceShaderValues(vtkOpenGLRenderer *renderer, std::string &vertexShader, std::string &tessControlShader, std::string &tessEvalShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkActor *actor) override
Abstract interfaces to replace shader values and apply parameters as uniform values.
unsigned int CachedLocLinkCount
bool IsUpToDate(vtkOpenGLRenderer *renderer, vtkAbstractMapper *mapper, vtkActor *actor) override
Whether mod needs to be re-applied.
static vtkGLSLModLight * New()
static LightStatsBasic GetBasicLightStats(vtkOpenGLRenderer *renderer, vtkActor *actor)
~vtkGLSLModLight() override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkShaderProgram * CachedLocProgram
a simple class to control print indentation
Definition vtkIndent.h:108
Key for vtkObjectBase values.
OpenGL renderer.
The VertexArrayObject class uses, or emulates, vertex array objects.
The ShaderProgram uses one or more Shader objects.