Vital
Loading...
Searching...
No Matches
Shaders Class Reference

Manages and provides access to vertex and fragment shaders used by the OpenGL rendering pipeline. More...

#include <shaders.h>

Public Types

enum  VertexShader {
  kImageVertex , kPassthroughVertex , kScaleVertex , kRotaryModulationVertex ,
  kLinearModulationVertex , kGainMeterVertex , kAnalogFilterResponseVertex , kCombFilterResponseVertex ,
  kPositiveFlangeFilterResponseVertex , kNegativeFlangeFilterResponseVertex , kDigitalFilterResponseVertex , kDiodeFilterResponseVertex ,
  kDirtyFilterResponseVertex , kFormantFilterResponseVertex , kLadderFilterResponseVertex , kPhaserFilterResponseVertex ,
  kEqFilterResponseVertex , kLineVertex , kFillVertex , kBarHorizontalVertex ,
  kBarVerticalVertex , kNumVertexShaders
}
 An enumeration of all available vertex shaders. More...
 
enum  FragmentShader {
  kImageFragment , kTintedImageFragment , kGainMeterFragment , kFilterResponseFragment ,
  kColorFragment , kFadeSquareFragment , kCircleFragment , kRingFragment ,
  kDiamondFragment , kRoundedCornerFragment , kRoundedRectangleFragment , kRoundedRectangleBorderFragment ,
  kRotarySliderFragment , kRotaryModulationFragment , kHorizontalSliderFragment , kVerticalSliderFragment ,
  kLinearModulationFragment , kModulationKnobFragment , kLineFragment , kFillFragment ,
  kBarFragment , kNumFragmentShaders
}
 An enumeration of all available fragment shaders. More...
 

Public Member Functions

 Shaders (OpenGLContext &open_gl_context)
 Constructs a Shaders object associated with an OpenGLContext.
 
GLuint getVertexShaderId (VertexShader shader)
 Retrieves the OpenGL shader ID for a given vertex shader.
 
GLuint getFragmentShaderId (FragmentShader shader)
 Retrieves the OpenGL shader ID for a given fragment shader.
 
OpenGLShaderProgram * getShaderProgram (VertexShader vertex_shader, FragmentShader fragment_shader, const GLchar **varyings=nullptr)
 Retrieves or creates an OpenGLShaderProgram from a given vertex and fragment shader pair.
 

Detailed Description

Manages and provides access to vertex and fragment shaders used by the OpenGL rendering pipeline.

This class compiles and links various vertex and fragment shaders used throughout the UI. Shaders are retrieved and cached as needed. It supports multiple categories of shaders for different rendering tasks, such as image rendering, filter response curves, modulation arcs, and more.

Shaders are stored as enums and can be requested by their enum values. The class ensures that each shader is compiled once, and it creates specialized shader programs by linking vertex and fragment shaders.

Member Enumeration Documentation

◆ FragmentShader

An enumeration of all available fragment shaders.

Fragment shaders handle pixel-level rendering for different effects and graphical elements.

Enumerator
kImageFragment 
kTintedImageFragment 
kGainMeterFragment 
kFilterResponseFragment 
kColorFragment 
kFadeSquareFragment 
kCircleFragment 
kRingFragment 
kDiamondFragment 
kRoundedCornerFragment 
kRoundedRectangleFragment 
kRoundedRectangleBorderFragment 
kRotarySliderFragment 
kRotaryModulationFragment 
kHorizontalSliderFragment 
kVerticalSliderFragment 
kLinearModulationFragment 
kModulationKnobFragment 
kLineFragment 
kFillFragment 
kBarFragment 
kNumFragmentShaders 

◆ VertexShader

An enumeration of all available vertex shaders.

Each vertex shader corresponds to a certain type of geometry or pipeline configuration.

Enumerator
kImageVertex 
kPassthroughVertex 
kScaleVertex 
kRotaryModulationVertex 
kLinearModulationVertex 
kGainMeterVertex 
kAnalogFilterResponseVertex 
kCombFilterResponseVertex 
kPositiveFlangeFilterResponseVertex 
kNegativeFlangeFilterResponseVertex 
kDigitalFilterResponseVertex 
kDiodeFilterResponseVertex 
kDirtyFilterResponseVertex 
kFormantFilterResponseVertex 
kLadderFilterResponseVertex 
kPhaserFilterResponseVertex 
kEqFilterResponseVertex 
kLineVertex 
kFillVertex 
kBarHorizontalVertex 
kBarVerticalVertex 
kNumVertexShaders 

Constructor & Destructor Documentation

◆ Shaders()

Shaders::Shaders ( OpenGLContext & open_gl_context)

Constructs a Shaders object associated with an OpenGLContext.

Parameters
open_gl_contextThe OpenGLContext used for shader compilation and linking.

Member Function Documentation

◆ getFragmentShaderId()

GLuint Shaders::getFragmentShaderId ( FragmentShader shader)
inline

Retrieves the OpenGL shader ID for a given fragment shader.

Parameters
shaderThe fragment shader enum value.
Returns
The compiled OpenGL shader ID.

◆ getShaderProgram()

OpenGLShaderProgram * Shaders::getShaderProgram ( VertexShader vertex_shader,
FragmentShader fragment_shader,
const GLchar ** varyings = nullptr )

Retrieves or creates an OpenGLShaderProgram from a given vertex and fragment shader pair.

Parameters
vertex_shaderThe vertex shader enum value.
fragment_shaderThe fragment shader enum value.
varyingsOptional transform feedback varyings.
Returns
A pointer to the linked OpenGLShaderProgram.

◆ getVertexShaderId()

GLuint Shaders::getVertexShaderId ( VertexShader shader)
inline

Retrieves the OpenGL shader ID for a given vertex shader.

Parameters
shaderThe vertex shader enum value.
Returns
The compiled OpenGL shader ID.

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