KiCad PCB EDA Suite
KIGFX::ANTIALIASING_SMAA Class Reference

#include <antialiasing.h>

Inheritance diagram for KIGFX::ANTIALIASING_SMAA:
KIGFX::OPENGL_PRESENTOR

Public Member Functions

 ANTIALIASING_SMAA (OPENGL_COMPOSITOR *aCompositor)
 
bool Init () override
 
unsigned int CreateBuffer () override
 
VECTOR2U GetInternalBufferSize () override
 
void OnLostBuffers () override
 
void Begin () override
 
void DrawBuffer (GLuint buffer) override
 
void Present () override
 

Private Member Functions

void loadShaders ()
 
void updateUniforms ()
 

Private Attributes

bool areBuffersInitialized
 
unsigned int smaaBaseBuffer
 
unsigned int smaaEdgesBuffer
 
unsigned int smaaBlendBuffer
 
unsigned int smaaAreaTex
 
unsigned int smaaSearchTex
 
bool shadersLoaded
 
std::unique_ptr< SHADERpass_1_shader
 
GLint pass_1_metrics
 
std::unique_ptr< SHADERpass_2_shader
 
GLint pass_2_metrics
 
std::unique_ptr< SHADERpass_3_shader
 
GLint pass_3_metrics
 
OPENGL_COMPOSITORcompositor
 

Detailed Description

Definition at line 98 of file antialiasing.h.

Constructor & Destructor Documentation

◆ ANTIALIASING_SMAA()

ANTIALIASING_SMAA::ANTIALIASING_SMAA ( OPENGL_COMPOSITOR aCompositor)

Definition at line 207 of file antialiasing.cpp.

207 :
208 areBuffersInitialized( false ),
209 shadersLoaded( false ),
210 compositor( aCompositor )
211{
212 smaaBaseBuffer = 0;
213 smaaEdgesBuffer = 0;
214 smaaBlendBuffer = 0;
215 smaaAreaTex = 0;
216 smaaSearchTex = 0;
217
218 pass_1_metrics = 0;
219 pass_2_metrics = 0;
220 pass_3_metrics = 0;
221}
OPENGL_COMPOSITOR * compositor
Definition: antialiasing.h:138
unsigned int smaaEdgesBuffer
Definition: antialiasing.h:120
unsigned int smaaBaseBuffer
Definition: antialiasing.h:119
unsigned int smaaBlendBuffer
Definition: antialiasing.h:121
unsigned int smaaSearchTex
Definition: antialiasing.h:125

References pass_1_metrics, pass_2_metrics, pass_3_metrics, smaaAreaTex, smaaBaseBuffer, smaaBlendBuffer, smaaEdgesBuffer, and smaaSearchTex.

Member Function Documentation

◆ Begin()

void ANTIALIASING_SMAA::Begin ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 463 of file antialiasing.cpp.

464{
467}
static const COLOR4D BLACK
Definition: color4d.h:394
virtual void ClearBuffer(const COLOR4D &aColor) override
Clear the selected buffer (set by the SetBuffer() function).
virtual void SetBuffer(unsigned int aBufferHandle) override
Set the selected buffer as the rendering target.

References KIGFX::COLOR4D::BLACK, KIGFX::OPENGL_COMPOSITOR::ClearBuffer(), compositor, KIGFX::OPENGL_COMPOSITOR::SetBuffer(), and smaaBaseBuffer.

◆ CreateBuffer()

unsigned int ANTIALIASING_SMAA::CreateBuffer ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 450 of file antialiasing.cpp.

451{
453}
virtual unsigned int CreateBuffer() override
Prepare a new buffer that may be used as a rendering target.

References compositor, KIGFX::OPENGL_COMPOSITOR::CreateBuffer(), and KIGFX::OPENGL_COMPOSITOR::GetScreenSize().

◆ DrawBuffer()

void ANTIALIASING_SMAA::DrawBuffer ( GLuint  buffer)
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 456 of file antialiasing.cpp.

457{
458 // draw to internal buffer
460}
virtual void DrawBuffer(unsigned int aBufferHandle) override
Draw the selected buffer to the output buffer.

References compositor, KIGFX::OPENGL_COMPOSITOR::DrawBuffer(), and smaaBaseBuffer.

◆ GetInternalBufferSize()

VECTOR2U ANTIALIASING_SMAA::GetInternalBufferSize ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 224 of file antialiasing.cpp.

225{
226 return compositor->GetScreenSize();
227}

References compositor, and KIGFX::OPENGL_COMPOSITOR::GetScreenSize().

◆ Init()

bool ANTIALIASING_SMAA::Init ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 416 of file antialiasing.cpp.

417{
418 if( !shadersLoaded )
419 loadShaders();
420
422 {
424 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
425 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
426
428 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
429 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
430
432 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
433 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
434
437 }
438
439 // Nothing to initialize
440 return true;
441}

References areBuffersInitialized, compositor, KIGFX::OPENGL_COMPOSITOR::CreateBuffer(), loadShaders(), shadersLoaded, smaaBaseBuffer, smaaBlendBuffer, smaaEdgesBuffer, and updateUniforms().

◆ loadShaders()

void ANTIALIASING_SMAA::loadShaders ( )
private

Definition at line 230 of file antialiasing.cpp.

231{
232 // Load constant textures
233 glEnable( GL_TEXTURE_2D );
234 glActiveTexture( GL_TEXTURE0 );
235
236 glGenTextures( 1, &smaaAreaTex );
237 glBindTexture( GL_TEXTURE_2D, smaaAreaTex );
238 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
239 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
240 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
241 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
242 glTexImage2D( GL_TEXTURE_2D, 0, GL_RG8, AREATEX_WIDTH, AREATEX_HEIGHT, 0, GL_RG,
243 GL_UNSIGNED_BYTE, areaTexBytes );
244 checkGlError( "loading smaa area tex", __FILE__, __LINE__ );
245
246 glGenTextures( 1, &smaaSearchTex );
247 glBindTexture( GL_TEXTURE_2D, smaaSearchTex );
248 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
249 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
250 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
251 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
252 glTexImage2D( GL_TEXTURE_2D, 0, GL_R8, SEARCHTEX_WIDTH, SEARCHTEX_HEIGHT, 0, GL_RED,
253 GL_UNSIGNED_BYTE, searchTexBytes );
254 checkGlError( "loading smaa search tex", __FILE__, __LINE__ );
255
256 // Quality settings:
257 // THRESHOLD: intended to exclude spurious edges in photorealistic game graphics
258 // but in a high-contrast CAD application, all edges are intentional
259 // should be set fairly low, so user color choices do not affect antialiasing
260 // MAX_SEARCH_STEPS: steps of 2px, searched in H/V direction to discover true angle of edges
261 // improves AA for lines close H/V but creates fuzzyness at junctions
262 // MAX_SEARCH_STEPS_DIAG: steps of 1px, searched in diagonal direction
263 // improves lines close to 45deg but turns small circles into octagons
264 // CORNER_ROUNDING: SMAA can distinguish actual corners from aliasing jaggies,
265 // we want to preserve those as much as possible
266 // Edge Detection: In Eeschema, when a single pixel line changes color, edge detection using
267 // color is too aggressive and leads to a white spot at the transition point
268 std::string quality_string;
269 std::string edge_detect_shader;
270
271 // trades imperfect AA of shallow angles for a near artifact-free reproduction of fine features
272 // jaggies are smoothed over max 5px (original step + 2px in both directions)
273 quality_string = "#define SMAA_THRESHOLD 0.005\n"
274 "#define SMAA_MAX_SEARCH_STEPS 1\n"
275 "#define SMAA_MAX_SEARCH_STEPS_DIAG 2\n"
276 "#define SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR 1.5\n"
277 "#define SMAA_CORNER_ROUNDING 0\n";
278 edge_detect_shader = BUILTIN_SHADERS::glsl_smaa_pass_1_frag_luma;
279
280 // set up shaders
281 std::string vert_preamble( R"SHADER(
282#version 120
283#define SMAA_GLSL_2_1
284#define SMAA_INCLUDE_VS 1
285#define SMAA_INCLUDE_PS 0
286uniform vec4 SMAA_RT_METRICS;
287)SHADER" );
288
289 std::string frag_preamble( R"SHADER(
290#version 120
291#define SMAA_GLSL_2_1
292#define SMAA_INCLUDE_VS 0
293#define SMAA_INCLUDE_PS 1
294uniform vec4 SMAA_RT_METRICS;
295)SHADER" );
296
297 //
298 // Set up pass 1 Shader
299 //
300 pass_1_shader = std::make_unique<SHADER>();
301 pass_1_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_VERTEX, vert_preamble, quality_string,
302 BUILTIN_SHADERS::glsl_smaa_base,
303 BUILTIN_SHADERS::glsl_smaa_pass_1_vert );
304 pass_1_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_FRAGMENT, frag_preamble,
305 quality_string, BUILTIN_SHADERS::glsl_smaa_base, edge_detect_shader );
306 pass_1_shader->Link();
307 checkGlError( "linking pass 1 shader", __FILE__, __LINE__ );
308
309 GLint smaaColorTexParameter = pass_1_shader->AddParameter( "colorTex" );
310 checkGlError( "pass1: getting colorTex uniform", __FILE__, __LINE__ );
311 pass_1_metrics = pass_1_shader->AddParameter( "SMAA_RT_METRICS" );
312 checkGlError( "pass1: getting metrics uniform", __FILE__, __LINE__ );
313
314 pass_1_shader->Use();
315 checkGlError( "pass1: using shader", __FILE__, __LINE__ );
316 pass_1_shader->SetParameter( smaaColorTexParameter, 0 );
317 checkGlError( "pass1: setting colorTex uniform", __FILE__, __LINE__ );
318 pass_1_shader->Deactivate();
319 checkGlError( "pass1: deactivating shader", __FILE__, __LINE__ );
320
321 //
322 // set up pass 2 shader
323 //
324 pass_2_shader = std::make_unique<SHADER>();
325 pass_2_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_VERTEX, vert_preamble, quality_string,
326 BUILTIN_SHADERS::glsl_smaa_base,
327 BUILTIN_SHADERS::glsl_smaa_pass_2_vert );
328 pass_2_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_FRAGMENT, frag_preamble,
329 quality_string, BUILTIN_SHADERS::glsl_smaa_base,
330 BUILTIN_SHADERS::glsl_smaa_pass_2_frag );
331 pass_2_shader->Link();
332 checkGlError( "linking pass 2 shader", __FILE__, __LINE__ );
333
334 GLint smaaEdgesTexParameter = pass_2_shader->AddParameter( "edgesTex" );
335 checkGlError( "pass2: getting colorTex uniform", __FILE__, __LINE__ );
336 GLint smaaAreaTexParameter = pass_2_shader->AddParameter( "areaTex" );
337 checkGlError( "pass2: getting areaTex uniform", __FILE__, __LINE__ );
338 GLint smaaSearchTexParameter = pass_2_shader->AddParameter( "searchTex" );
339 checkGlError( "pass2: getting searchTex uniform", __FILE__, __LINE__ );
340 pass_2_metrics = pass_2_shader->AddParameter( "SMAA_RT_METRICS" );
341 checkGlError( "pass2: getting metrics uniform", __FILE__, __LINE__ );
342
343 pass_2_shader->Use();
344 checkGlError( "pass2: using shader", __FILE__, __LINE__ );
345 pass_2_shader->SetParameter( smaaEdgesTexParameter, 0 );
346 checkGlError( "pass2: setting colorTex uniform", __FILE__, __LINE__ );
347 pass_2_shader->SetParameter( smaaAreaTexParameter, 1 );
348 checkGlError( "pass2: setting areaTex uniform", __FILE__, __LINE__ );
349 pass_2_shader->SetParameter( smaaSearchTexParameter, 3 );
350 checkGlError( "pass2: setting searchTex uniform", __FILE__, __LINE__ );
351 pass_2_shader->Deactivate();
352 checkGlError( "pass2: deactivating shader", __FILE__, __LINE__ );
353
354 //
355 // set up pass 3 shader
356 //
357 pass_3_shader = std::make_unique<SHADER>();
358 pass_3_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_VERTEX, vert_preamble, quality_string,
359 BUILTIN_SHADERS::glsl_smaa_base,
360 BUILTIN_SHADERS::glsl_smaa_pass_3_vert );
361 pass_3_shader->LoadShaderFromStrings( KIGFX::SHADER_TYPE_FRAGMENT, frag_preamble,
362 quality_string, BUILTIN_SHADERS::glsl_smaa_base,
363 BUILTIN_SHADERS::glsl_smaa_pass_3_frag );
364 pass_3_shader->Link();
365
366 GLint smaaP3ColorTexParameter = pass_3_shader->AddParameter( "colorTex" );
367 checkGlError( "pass3: getting colorTex uniform", __FILE__, __LINE__ );
368 GLint smaaBlendTexParameter = pass_3_shader->AddParameter( "blendTex" );
369 checkGlError( "pass3: getting blendTex uniform", __FILE__, __LINE__ );
370 pass_3_metrics = pass_3_shader->AddParameter( "SMAA_RT_METRICS" );
371 checkGlError( "pass3: getting metrics uniform", __FILE__, __LINE__ );
372
373 pass_3_shader->Use();
374 checkGlError( "pass3: using shader", __FILE__, __LINE__ );
375 pass_3_shader->SetParameter( smaaP3ColorTexParameter, 0 );
376 checkGlError( "pass3: setting colorTex uniform", __FILE__, __LINE__ );
377 pass_3_shader->SetParameter( smaaBlendTexParameter, 1 );
378 checkGlError( "pass3: setting blendTex uniform", __FILE__, __LINE__ );
379 pass_3_shader->Deactivate();
380 checkGlError( "pass3: deactivating shader", __FILE__, __LINE__ );
381
382 shadersLoaded = true;
383}
#define AREATEX_HEIGHT
Definition: SmaaAreaTex.h:34
const unsigned char areaTexBytes[]
Stored in R8G8 format.
Definition: SmaaAreaTex.h:43
#define AREATEX_WIDTH
Copyright (C) 2013 Jorge Jimenez ([email protected]) Copyright (C) 2013 Jose I.
Definition: SmaaAreaTex.h:33
#define SEARCHTEX_HEIGHT
Definition: SmaaSearchTex.h:34
static const unsigned char searchTexBytes[]
Stored in R8 format.
Definition: SmaaSearchTex.h:43
#define SEARCHTEX_WIDTH
Copyright (C) 2013 Jorge Jimenez ([email protected]) Copyright (C) 2013 Jose I.
Definition: SmaaSearchTex.h:33
std::unique_ptr< SHADER > pass_1_shader
Definition: antialiasing.h:129
std::unique_ptr< SHADER > pass_3_shader
Definition: antialiasing.h:135
std::unique_ptr< SHADER > pass_2_shader
Definition: antialiasing.h:132
@ SHADER_TYPE_VERTEX
Vertex shader.
Definition: shader.h:46
@ SHADER_TYPE_FRAGMENT
Fragment shader.
Definition: shader.h:47
int checkGlError(const std::string &aInfo, const char *aFile, int aLine, bool aThrow)
Check if a recent OpenGL operation has failed.
Definition: utils.cpp:45

References AREATEX_HEIGHT, AREATEX_WIDTH, areaTexBytes, checkGlError(), pass_1_metrics, pass_1_shader, pass_2_metrics, pass_2_shader, pass_3_metrics, pass_3_shader, SEARCHTEX_HEIGHT, SEARCHTEX_WIDTH, searchTexBytes, KIGFX::SHADER_TYPE_FRAGMENT, KIGFX::SHADER_TYPE_VERTEX, shadersLoaded, smaaAreaTex, and smaaSearchTex.

Referenced by Init().

◆ OnLostBuffers()

void ANTIALIASING_SMAA::OnLostBuffers ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 444 of file antialiasing.cpp.

445{
446 areBuffersInitialized = false;
447}

References areBuffersInitialized.

◆ Present()

void ANTIALIASING_SMAA::Present ( )
overridevirtual

Implements KIGFX::OPENGL_PRESENTOR.

Definition at line 497 of file antialiasing.cpp.

498{
499 auto sourceTexture = compositor->GetBufferTexture( smaaBaseBuffer );
500
501 glDisable( GL_BLEND );
502 glDisable( GL_DEPTH_TEST );
503 glEnable( GL_TEXTURE_2D );
504
505 //
506 // pass 1: main-buffer -> smaaEdgesBuffer
507 //
510
511 glActiveTexture( GL_TEXTURE0 );
512 glBindTexture( GL_TEXTURE_2D, sourceTexture );
513 checkGlError( "binding colorTex", __FILE__, __LINE__ );
514 pass_1_shader->Use();
515 checkGlError( "using smaa pass 1 shader", __FILE__, __LINE__ );
516 draw_fullscreen_triangle();
517 pass_1_shader->Deactivate();
518
519 //
520 // pass 2: smaaEdgesBuffer -> smaaBlendBuffer
521 //
524
525 auto edgesTex = compositor->GetBufferTexture( smaaEdgesBuffer );
526
527 glActiveTexture( GL_TEXTURE0 );
528 glBindTexture( GL_TEXTURE_2D, edgesTex );
529 glActiveTexture( GL_TEXTURE1 );
530 glBindTexture( GL_TEXTURE_2D, smaaAreaTex );
531 glActiveTexture( GL_TEXTURE3 );
532 glBindTexture( GL_TEXTURE_2D, smaaSearchTex );
533
534 pass_2_shader->Use();
535 draw_fullscreen_triangle();
536 pass_2_shader->Deactivate();
537
538 //
539 // pass 3: colorTex + BlendBuffer -> output
540 //
543 auto blendTex = compositor->GetBufferTexture( smaaBlendBuffer );
544
545 glActiveTexture( GL_TEXTURE0 );
546 glBindTexture( GL_TEXTURE_2D, sourceTexture );
547 glActiveTexture( GL_TEXTURE1 );
548 glBindTexture( GL_TEXTURE_2D, blendTex );
549
550 pass_3_shader->Use();
551 draw_fullscreen_triangle();
552 pass_3_shader->Deactivate();
553}
static const unsigned int DIRECT_RENDERING
GLenum GetBufferTexture(unsigned int aBufferHandle)

References KIGFX::COLOR4D::BLACK, checkGlError(), KIGFX::OPENGL_COMPOSITOR::ClearBuffer(), compositor, KIGFX::OPENGL_COMPOSITOR::DIRECT_RENDERING, KIGFX::OPENGL_COMPOSITOR::GetBufferTexture(), pass_1_shader, pass_2_shader, pass_3_shader, KIGFX::OPENGL_COMPOSITOR::SetBuffer(), smaaAreaTex, smaaBaseBuffer, smaaBlendBuffer, smaaEdgesBuffer, and smaaSearchTex.

◆ updateUniforms()

void ANTIALIASING_SMAA::updateUniforms ( )
private

Definition at line 386 of file antialiasing.cpp.

387{
388 auto dims = compositor->GetScreenSize();
389
390 pass_1_shader->Use();
391 checkGlError( "pass1: using shader", __FILE__, __LINE__ );
392 pass_1_shader->SetParameter( pass_1_metrics, 1.f / float( dims.x ), 1.f / float( dims.y ),
393 float( dims.x ), float( dims.y ) );
394 checkGlError( "pass1: setting metrics uniform", __FILE__, __LINE__ );
395 pass_1_shader->Deactivate();
396 checkGlError( "pass1: deactivating shader", __FILE__, __LINE__ );
397
398 pass_2_shader->Use();
399 checkGlError( "pass2: using shader", __FILE__, __LINE__ );
400 pass_2_shader->SetParameter( pass_2_metrics, 1.f / float( dims.x ), 1.f / float( dims.y ),
401 float( dims.x ), float( dims.y ) );
402 checkGlError( "pass2: setting metrics uniform", __FILE__, __LINE__ );
403 pass_2_shader->Deactivate();
404 checkGlError( "pass2: deactivating shader", __FILE__, __LINE__ );
405
406 pass_3_shader->Use();
407 checkGlError( "pass3: using shader", __FILE__, __LINE__ );
408 pass_3_shader->SetParameter( pass_3_metrics, 1.f / float( dims.x ), 1.f / float( dims.y ),
409 float( dims.x ), float( dims.y ) );
410 checkGlError( "pass3: setting metrics uniform", __FILE__, __LINE__ );
411 pass_3_shader->Deactivate();
412 checkGlError( "pass3: deactivating shader", __FILE__, __LINE__ );
413}

References checkGlError(), compositor, KIGFX::OPENGL_COMPOSITOR::GetScreenSize(), pass_1_metrics, pass_1_shader, pass_2_metrics, pass_2_shader, pass_3_metrics, and pass_3_shader.

Referenced by Init().

Member Data Documentation

◆ areBuffersInitialized

bool KIGFX::ANTIALIASING_SMAA::areBuffersInitialized
private

Definition at line 117 of file antialiasing.h.

Referenced by Init(), and OnLostBuffers().

◆ compositor

OPENGL_COMPOSITOR* KIGFX::ANTIALIASING_SMAA::compositor
private

◆ pass_1_metrics

GLint KIGFX::ANTIALIASING_SMAA::pass_1_metrics
private

Definition at line 130 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), loadShaders(), and updateUniforms().

◆ pass_1_shader

std::unique_ptr<SHADER> KIGFX::ANTIALIASING_SMAA::pass_1_shader
private

Definition at line 129 of file antialiasing.h.

Referenced by loadShaders(), Present(), and updateUniforms().

◆ pass_2_metrics

GLint KIGFX::ANTIALIASING_SMAA::pass_2_metrics
private

Definition at line 133 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), loadShaders(), and updateUniforms().

◆ pass_2_shader

std::unique_ptr<SHADER> KIGFX::ANTIALIASING_SMAA::pass_2_shader
private

Definition at line 132 of file antialiasing.h.

Referenced by loadShaders(), Present(), and updateUniforms().

◆ pass_3_metrics

GLint KIGFX::ANTIALIASING_SMAA::pass_3_metrics
private

Definition at line 136 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), loadShaders(), and updateUniforms().

◆ pass_3_shader

std::unique_ptr<SHADER> KIGFX::ANTIALIASING_SMAA::pass_3_shader
private

Definition at line 135 of file antialiasing.h.

Referenced by loadShaders(), Present(), and updateUniforms().

◆ shadersLoaded

bool KIGFX::ANTIALIASING_SMAA::shadersLoaded
private

Definition at line 127 of file antialiasing.h.

Referenced by Init(), and loadShaders().

◆ smaaAreaTex

unsigned int KIGFX::ANTIALIASING_SMAA::smaaAreaTex
private

Definition at line 124 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), loadShaders(), and Present().

◆ smaaBaseBuffer

unsigned int KIGFX::ANTIALIASING_SMAA::smaaBaseBuffer
private

Definition at line 119 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), Begin(), DrawBuffer(), Init(), and Present().

◆ smaaBlendBuffer

unsigned int KIGFX::ANTIALIASING_SMAA::smaaBlendBuffer
private

Definition at line 121 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), Init(), and Present().

◆ smaaEdgesBuffer

unsigned int KIGFX::ANTIALIASING_SMAA::smaaEdgesBuffer
private

Definition at line 120 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), Init(), and Present().

◆ smaaSearchTex

unsigned int KIGFX::ANTIALIASING_SMAA::smaaSearchTex
private

Definition at line 125 of file antialiasing.h.

Referenced by ANTIALIASING_SMAA(), loadShaders(), and Present().


The documentation for this class was generated from the following files: