VTK
vtkOpenGLFXAAFilter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkOpenGLFXAAFilter.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=========================================================================*/
15
40#ifndef vtkOpenGLFXAAFilter_h
41#define vtkOpenGLFXAAFilter_h
42
43#include "vtkRenderingOpenGL2Module.h" // For export macro
44#include "vtkObject.h"
45#include "vtkFXAAOptions.h" // For DebugOptions enum
46
47#include <string> // For std::string
48
49class vtkFXAAOptions;
56
57class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLFXAAFilter: public vtkObject
58{
59public:
62 virtual void PrintSelf(ostream &os, vtkIndent indent);
63
67 void Execute(vtkOpenGLRenderer *ren);
68
72 void ReleaseGraphicsResources();
73
79 void UpdateConfiguration(vtkFXAAOptions *opts);
80
82
86 vtkSetClampMacro(RelativeContrastThreshold, float, 0.f, 1.f)
87 vtkGetMacro(RelativeContrastThreshold, float)
88 vtkSetClampMacro(HardContrastThreshold, float, 0.f, 1.f)
89 vtkGetMacro(HardContrastThreshold, float)
90 vtkSetClampMacro(SubpixelBlendLimit, float, 0.f, 1.f)
91 vtkGetMacro(SubpixelBlendLimit, float)
92 vtkSetClampMacro(SubpixelContrastThreshold, float, 0.f, 1.f)
93 vtkGetMacro(SubpixelContrastThreshold, float)
94 virtual void SetUseHighQualityEndpoints(bool val);
95 vtkGetMacro(UseHighQualityEndpoints, bool)
96 vtkBooleanMacro(UseHighQualityEndpoints, bool)
97 vtkSetClampMacro(EndpointSearchIterations, int, 0, VTK_INT_MAX)
98 vtkGetMacro(EndpointSearchIterations, int)
99 virtual void SetDebugOptionValue(vtkFXAAOptions::DebugOption opt);
100 vtkGetMacro(DebugOptionValue, vtkFXAAOptions::DebugOption)
102
103protected:
106
107 void Prepare();
108 void FreeGLObjects();
109 void CreateGLObjects();
110 void LoadInput();
111 void ApplyFilter();
112 void SubstituteFragmentShader(std::string &fragShader);
113 void Finalize();
114
115 void StartTimeQuery(vtkOpenGLRenderTimer *timer);
116 void EndTimeQuery(vtkOpenGLRenderTimer *timer);
117 void PrintBenchmark();
118
119 // Cache GL state that we modify
120 bool BlendState;
121 bool DepthTestState;
122
123 int Viewport[4]; // x, y, width, height
124
125 // Used to measure execution time:
126 vtkOpenGLRenderTimer *PreparationTimer;
128
129 // Parameters:
130 float RelativeContrastThreshold;
131 float HardContrastThreshold;
132 float SubpixelBlendLimit;
133 float SubpixelContrastThreshold;
134 int EndpointSearchIterations;
135
136 bool UseHighQualityEndpoints;
137 vtkFXAAOptions::DebugOption DebugOptionValue;
138
139 // Set to true when the shader definitions change so we know when to rebuild.
140 bool NeedToRebuildShader;
141
144
148
149private:
150 vtkOpenGLFXAAFilter(const vtkOpenGLFXAAFilter&) VTK_DELETE_FUNCTION;
151 void operator=(const vtkOpenGLFXAAFilter&) VTK_DELETE_FUNCTION;
152};
153
154#endif // vtkOpenGLFXAAFilter_h
Configuration for FXAA implementations.
a simple class to control print indentation
Definition: vtkIndent.h:40
abstract base class for most VTK objects
Definition: vtkObject.h:60
OpenGL buffer object.
Perform FXAA antialiasing on the current framebuffer.
static vtkOpenGLFXAAFilter * New()
Asynchronously measures GPU execution time.
OpenGL renderer.
The VertexArrayObject class uses, or emulates, vertex array objects.
The ShaderProgram uses one or more Shader objects.
abstracts an OpenGL texture object.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
#define VTK_INT_MAX
Definition: vtkType.h:153