Current functionality level: ESSL 3.0 Error checking - compile-time check for static recursion - location layout range/overlap semantics Performance Testing - thread safety Interfacing - Put glslang in a namespace Functionality - "const" compile-time constant propagation in the front-end has to be complete, for all built-in functions GLSL 1.2 - Handle multiple compilation units per stage - Allow initializers on uniform declarations. The value is set at link time. - signature matching takes type conversions into account, ambiguity is an error GLSL 1.3 . flat is for both user and predeclared built-in in/out variables GLSL 1.3 (Non-ES) - Preprocessor token pasting (##), ## does macro expansion after pasting not before - non-perspective (linear) interpolation (noperspective) - add gl_ClipDistance[] to both vertex and fragment shaders - only statically used built-ins have to be redeclared as flat - Link: Deprecated mixing fixed vertex/fragment stage with programmable fragment/vertex stage. - Deprecated gl_ClipVertex - deprecate almost all built-in state - ftransform() is deprecated - Deprecated built-in vertex inputs (attributes) and some outputs (varyings). GLSL 1.4 (Non-ES) - track as removed in this release, but present in others: - Use of gl_ClipVertex. Use gl_ClipDistance instead. - Built-in vertex shader inputs. - Built-in uniforms except for depth range parameters - Built-in interface between vertex and fragment: gl_TexCoord, gl_FogFragCoord, and all the color values. - Built-in two-sided coloring. - Fixed functionality for a programmable stage. Supply shaders for all stages currently being used. - ftransform(). Use invariant outputs instead. GLSL 1.5 (Non-ES) - Deprecated gl_MaxVaryingComponents - Add new minimum maximums for gl_MaxVertexOutputComponents, gl_MaxGeometryInputComponents, gl_MaxGeometryOutputComponents, and gl_MaxFragmentInputComponents, rather than relying on gl_MaxVaryingComponents. Also, corrected gl_MaxVaryingComponents to be 60 instead of 64. - Added gl_PrimitiveID as an input to fragment shaders. - Added gl_FragCoord qualifiers origin_upper_left, and pixel_center_integer to modify the values returned by gl_FragCoord (and have no affect on any other aspect of the pipeline or language). - Added support for multi-sample textures through sampler2DMS and sampler2DMSArray support in texelFetch() and textureSize(). - Broadened interface blocks from just uniforms to in and out interfaces as well. - Broaden array usage to include vertex shader inputs (vertex in). - Added geometry shaders. This includes targeting layers in FBO rendering. - geometry shader layouts: they must be declared, telling the system the primitive input and output types and maximum number of vertices. - Added geometry shader constants. - gl_FragCoord qualifiers use the layout(): origin_upper_left and pixel_center_integer. - Broaden structure usage to include geometry inputs and geometry outputs. GLSL 4.0 GLSL 4.1 GLSL 4.2 GLSL 4.3 GLSL 4.4