ImFusion SDK 4.3

Interfaces and wrapper classes for working with OpenGL/GLSL shaders. More...

+ Collaboration diagram for GLSL Shaders:

Detailed Description

Interfaces and wrapper classes for working with OpenGL/GLSL shaders.

OpenGL shaders are user-defined programs that are executed on the GPU as part of a certain rendering pipeline stage. Please refer to the OpenGL Wiki for more information on the technical details how shader execution on the GPU works.

For basic rendering tasks you can use the GL::FixedFunctionPipeline class providing general-purpose rendering capabilities for points, lines, and triangles. If those are not sufficient or need to implement a custom shader yourself. The GL::Program class represents the wrapper class for this concept and is formed of one or multiple shaders. The GL::ImageProgram class is a specialization to conveniently execute a fragment shader on a 2D or 3D image (or a sub region of it) in a pixel-perfect fashion.

Shader source code is provided by the Resource System infrastructure. By default, the source code is staticly defined at compile time of your application. However, ImFusionGL provides different mechanisms to flexibly assemble the final source code, optionally also in a polymorphic fashion at runtime:

Classes

class  AbstractInclude
 Base class for abstract GLSL includes. More...
 
class  ImageProgram
 Convenience class to execute a GLSL fragment shader on an image or volume. More...
 
class  MultiIncludable< BaseIncludeType, IncludeArgumentsTypes >
 Multi-AbstractIncludes allow for using multiple instances of the same AbstractInclude type in one shader. More...
 
class  MultiAbstractIncludeBase
 Non-templated base class of MultiIncludable to implement polymorphic interface. More...
 
class  MultiAbstractInclude< BaseIncludeType, IncludeArgumentsTypes >
 Concrete type for an instance of a Multi-AbstractInclude. More...
 
class  Program
 OpenGL GLSL program with a fragment and optional vertex and geometry shader. More...
 
class  ProgramCache
 Helper class to manage instances of the same base shader with different abstract includes and/or defines. More...
 
class  ProgramDecorator
 Interface to apply custom arguments to a shader program. More...
 

Enumerations

enum class  ShaderTextReplacement { ExactMatch = 1 << 0 , AllUppercase = 1 << 1 , AllLowercase = 1 << 2 }
 Bitfield enum describing how to perform text replacement in a shader when using the MultiIncludable interface. More...
 

Enumeration Type Documentation

◆ ShaderTextReplacement

enum class ShaderTextReplacement
strong

#include <ImFusion/Core/GL/MultiAbstractInclude.h>

Bitfield enum describing how to perform text replacement in a shader when using the MultiIncludable interface.

Enumerator
ExactMatch 

Replace exact matches of the base token with the replacement token.

AllUppercase 

Replace matches of toUpper(baseToken) with the replacement token.

AllLowercase 

Replace matches of toLower(baseToken) with the replacement token.

Search Tab / S to search, Esc to close