Skip to content

Instantly share code, notes, and snippets.

@vicrucann
Created February 17, 2017 23:17
Show Gist options
  • Save vicrucann/52af27f40b396ad0a1dfd738422c4997 to your computer and use it in GitHub Desktop.
Save vicrucann/52af27f40b396ad0a1dfd738422c4997 to your computer and use it in GitHub Desktop.
GLSL syntax highlighter for Qt Creator
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- the version of this file shows the largest supported OpenGL version, second digit is the minor patch level (Y.XP = supports GLSL X.Y0 with patchlevel P -->
<language name="GLSL" section="Sources" extensions="*.glsl;*.vsh;*.vert;*.tcsh;*.tcs;*.tesh;*.tes;*.gsh;*.geo;*.geom;*.fsh;*.frag;*.csh;*.cs" mimetype="text/x-glslsrc" version="4.31" kateversion="2.4" author="Robert Menzel ([email protected])" license="LGPL">
<highlighting>
<!-- ####################################################################################################### keywords -->
<list name="keywordsCompatibility">
<!-- compatibility mode, older GLSL versions -->
<item>attribute</item>
<item>varying</item>
</list>
<list name="keywords110">
<!-- keywords in the GLSL spec, also keywordsCompatibility -->
<item>const</item>
<item>uniform</item>
<item>break</item>
<item>continue</item>
<item>do</item>
<item>for</item>
<item>while</item>
<item>if</item>
<item>else</item>
<item>in</item>
<item>out</item>
<item>inout</item>
<item>true</item>
<item>false</item>
<item>discard</item>
<item>return</item>
<item>struct</item>
</list>
<list name="keywords100ES">
<!-- also all of keywords110 -->
<item>invariant</item>
</list>
<list name="keywords120">
<!-- also all of keywords100ES-->
<item>centroid</item>
</list>
<list name="keywords130">
<!-- also all of 120 -->
<item>flat</item>
<item>smooth</item>
<item>noperspective</item>
<item>switch</item>
<item>case</item>
<item>default</item>
</list>
<list name="keywords140">
<!-- also all of 130 -->
<item>layout</item>
</list>
<list name="keywords400">
<!-- also all of 140 -->
<item>patch</item>
<item>sample</item>
<item>subroutine</item>
</list>
<list name="keywords420">
<!-- also all of 400 -->
<item>coherent</item>
<item>volatile</item>
<item>restrict</item>
<item>readonly</item>
<item>writeonly</item>
</list>
<list name="keywords430">
<!-- also all of 420 -->
<item>buffer</item>
<item>shared</item>
</list>
<list name="keywordsPrecision">
<!-- 100ES 420 -->
<item>lowp</item>
<item>mediump</item>
<item>highp</item>
<item>precision</item>
</list>
<!-- ####################################################################################################### variables -->
<list name="keywordstypes100es">
<!-- 100ES -->
<item>float</item>
<item>int</item>
<item>void</item>
<item>bool</item>
<item>mat2</item>
<item>mat3</item>
<item>mat4</item>
<item>vec2</item>
<item>vec3</item>
<item>vec4</item>
<item>ivec2</item>
<item>ivec3</item>
<item>ivec4</item>
<item>bvec2</item>
<item>bvec3</item>
<item>bvec4</item>
<item>sampler2D</item>
<item>samplerCube</item>
</list>
<list name="keywordstypes110">
<!-- also all of keywordstypes100es -->
<item>sampler1D</item>
<item>sampler3D</item>
<item>sampler1DShadow</item>
<item>sampler2DShadow</item>
</list>
<list name="keywordstypes120">
<!-- also all of keywordstypes110 -->
<item>mat2x2</item>
<item>mat3x2</item>
<item>mat4x2</item>
<item>mat2x3</item>
<item>mat3x3</item>
<item>mat4x3</item>
<item>mat2x4</item>
<item>mat3x4</item>
<item>mat4x4</item>
</list>
<list name="keywordstypes130">
<!-- also all of keywordstypes120 -->
<item>uint</item>
<item>uvec2</item>
<item>uvec3</item>
<item>uvec4</item>
<item>samplerCubeShadow</item>
<item>sampler1DArray</item>
<item>sampler2DArray</item>
<item>sampler1DArrayShadow</item>
<item>sampler2DArrayShadow</item>
<item>isampler1D</item>
<item>isampler2D</item>
<item>isampler3D</item>
<item>isamplerCube</item>
<item>isampler1DArray</item>
<item>isampler2DArray</item>
<item>usampler1D</item>
<item>usampler2D</item>
<item>usampler3D</item>
<item>usamplerCube</item>
<item>usampler1DArray</item>
<item>usampler2DArray</item>
</list>
<list name="keywordstypes140">
<!-- also all of keywordstypes130 -->
<item>sampler2DRect</item>
<item>sampler2DRectShadow</item>
<item>isampler2DRect</item>
<item>usampler2DRect</item>
<item>samplerBuffer</item>
<item>isamplerBuffer</item>
<item>usamplerBuffer</item>
</list>
<list name="keywordstypes150">
<!-- also all of keywordstypes140 -->
<item>sampler2DMS</item>
<item>isampler2DMS</item>
<item>usampler2DMS</item>
<item>sampler2DMSArray</item>
<item>isampler2DMSArray</item>
<item>usampler2DMSArray</item>
</list>
<list name="keywordsRemovedInES3">
<!-- what is in 330 but not in 300 es -->
<item>noperspective</item>
<item>samplerBuffer</item>
<item>isamplerBuffer</item>
<item>usamplerBuffer</item>
<item>sampler1D</item>
<item>sampler1DShadow</item>
<item>sampler1DArray</item>
<item>sampler1DArrayShadow</item>
<item>isampler1D</item>
<item>usampler1D</item>
<item>sampler2DMS</item>
<item>isampler2DMS</item>
<item>usampler2DMS</item>
<item>sampler2DMSArray</item>
<item>isampler2DMSArray</item>
<item>usampler2DMSArray</item>
</list>
<list name="keywordstypes400">
<!-- also all of keywordstypes150 -->
<item>double</item>
<item>dvec2</item>
<item>dvec3</item>
<item>dvec4</item>
<item>dmat2</item>
<item>dmat3</item>
<item>dmat4</item>
<item>dmat2x2</item>
<item>dmat3x2</item>
<item>dmat4x2</item>
<item>dmat2x3</item>
<item>dmat3x3</item>
<item>dmat4x3</item>
<item>dmat2x4</item>
<item>dmat3x4</item>
<item>dmat4x4</item>
<item>samplerCubeArray</item>
<item>samplerCubeArrayShadow</item>
<item>isamplerCubeArray</item>
<item>usamplerCubeArray</item>
</list>
<list name="keywordstypes420">
<!-- also all of keywordstypes400 -->
<item>atomic_uint</item>
<item>image1D</item>
<item>iimage1D</item>
<item>uimage1D</item>
<item>image2D</item>
<item>iimage2D</item>
<item>uimage2D</item>
<item>image3D</item>
<item>iimage3D</item>
<item>uimage3D</item>
<item>image2DRect</item>
<item>iimage2DRect</item>
<item>uimage2DRect</item>
<item>imageCube</item>
<item>iimageCube</item>
<item>uimageCube</item>
<item>imageBuffer</item>
<item>iimageBuffer</item>
<item>uimageBuffer</item>
<item>image1DArray</item>
<item>iimage1DArray</item>
<item>uimage1DArray</item>
<item>image2DArray</item>
<item>iimage2DArray</item>
<item>uimage2DArray</item>
<item>imageCubeArray</item>
<item>iimageCubeArray</item>
<item>uimageCubeArray</item>
<item>image2DMS</item>
<item>iimage2DMS</item>
<item>uimage2DMS</item>
<item>image2DMSArray</item>
<item>iimage2DMSArray</item>
<item>uimage2DMSArray</item>
</list>
<list name="reservedkeywords">
<!-- reserved keywords in the GLSL spec for GLSL 430, also marked as reserved in older version! -->
<item>common</item>
<item>partition</item>
<item>active</item>
<item>asm</item>
<item>class</item>
<item>union</item>
<item>enum</item>
<item>typedef</item>
<item>template</item>
<item>this</item>
<item>resource</item>
<item>goto</item>
<item>inline</item>
<item>noinline</item>
<item>public</item>
<item>static</item>
<item>extern</item>
<item>external</item>
<item>interface</item>
<item>long</item>
<item>short</item>
<item>half</item>
<item>fixed</item>
<item>unsigned</item>
<item>superp</item>
<item>input</item>
<item>output</item>
<item>hvec2</item>
<item>hvec3</item>
<item>hvec4</item>
<item>fvec2</item>
<item>fvec3</item>
<item>fvec4</item>
<item>sampler3DRect</item>
<item>filter</item>
<item>sizeof</item>
<item>cast</item>
<item>namespace</item>
<item>using</item>
</list>
<!-- ####################################################################################################### layout -->
<list name="layoutqualifier300ES">
<!-- uniform and shader storage block layout qualifiers -->
<item>shared</item>
<item>std140</item>
<item>packed</item>
<item>row_major</item>
<item>column_major</item>
<!-- output layout qualifier -->
<item>location</item>
</list>
<list name="layoutqualifier150">
<!-- geometry shader inputs -->
<item>points</item>
<item>lines</item>
<item>lines_adjacency</item>
<item>triangles</item>
<item>triangles_adjacency</item>
<!-- fragment shader layout -->
<item>origin_upper_left</item>
<item>pixel_center_integer</item>
<!-- geometry shader outputs -->
<item>line_strip</item>
<item>triangle_strip</item>
<item>max_vertices</item>
<!-- uniform and shader storage block layout qualifiers -->
<item>shared</item>
<item>std140</item>
<item>packed</item>
<item>row_major</item>
<item>column_major</item>
</list>
<list name="layoutqualifier330">
<!-- output layout qualifier -->
<item>location</item>
</list>
<list name="layoutqualifier400">
<!-- tessellation evaluation inputs, already in GS input: triangles -->
<item>quads</item>
<item>isolines</item>
<item>equal_spacing</item>
<item>fractional_even_spacing</item>
<item>fractional_odd_spacing</item>
<item>cw</item>
<item>ccw</item>
<item>point_mode</item>
<item>invocations</item>
<item>index</item>
<item>stream</item>
</list>
<list name="layoutqualifier420">
<!-- fragment shader outputs -->
<item>depth_any</item>
<item>depth_greater</item>
<item>depth_less</item>
<item>depth_unchanged</item>
<!-- Atomic Counter Layout Qualifiers, also: binding -->
<item>offset</item>
<item>binding</item>
<!-- image format layout qualifier -->
<!-- float-image-format-qualifier -->
<item>rgba32f</item>
<item>rgba16f</item>
<item>rg32f</item>
<item>rg16f</item>
<item>r11f_g11f_b10f</item>
<item>r32f</item>
<item>r16f</item>
<item>rgba16</item>
<item>rgb10_a2</item>
<item>rgba8</item>
<item>rg16</item>
<item>rg8</item>
<item>r16</item>
<item>r8</item>
<item>rgba16_snorm</item>
<item>rgba8_snorm</item>
<item>rg16_snorm</item>
<item>rg8_snorm</item>
<item>r16_snorm</item>
<item>r8_snorm</item>
<!-- int-image-format-qualifier -->
<item>rgba32i</item>
<item>rgba16i</item>
<item>rgba8i</item>
<item>rg32i</item>
<item>rg16i</item>
<item>rg8i</item>
<item>r32i</item>
<item>r16i</item>
<item>r8i</item>
<!-- uint-image-format-qualifier -->
<item>rgba32ui</item>
<item>rgba16ui</item>
<item>rgb10_a2ui</item>
<item>rgba8ui</item>
<item>rg32ui</item>
<item>rg16ui</item>
<item>rg8ui</item>
<item>r32ui</item>
<item>r16ui</item>
<item>r8ui</item>
</list>
<list name="layoutqualifier430">
<!-- compute shader -->
<item>local_size_x</item>
<item>local_size_y</item>
<item>local_size_z</item>
<item>std430</item>
</list>
<!-- ####################################################################################################### buildin variables -->
<list name="buildinvariables100ES">
<!--only these variables -->
<item>gl_FragColor</item>
<item>gl_FragData</item>
<item>gl_Position</item>
<item>gl_PointSize</item>
<!-- fragment shader -->
<item>gl_FragCoord</item>
<item>gl_FrontFacing</item>
<item>gl_PointCoord</item>
<item>gl_FragColor</item>
<item>gl_FragData</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRange</item>
</list>
<list name="buildinvariablesDeprecated">
<item>gl_FragColor</item>
<item>gl_FragData</item>
<item>gl_Vertex</item>
<item>gl_MultiTexCoord0</item>
<item>gl_MultiTexCoord1</item>
<item>gl_MultiTexCoord2</item>
<item>gl_MultiTexCoord3</item>
<item>gl_MultiTexCoord4</item>
<item>gl_MultiTexCoord5</item>
<item>gl_MultiTexCoord6</item>
<item>gl_MultiTexCoord7</item>
<item>gl_FogCoord</item>
<item>gl_ModelViewMatrix</item>
<item>gl_ProjectionMatrix</item>
<item>gl_ModelViewProjectionMatrix</item>
<item>gl_TextureMatrix</item>
<item>gl_NormalMatrix</item>
<item>gl_ModelViewMatrixInverse</item>
<item>gl_ProjectionMatrixInverse</item>
<item>gl_ModelViewProjectionMatrixInverse</item>
<item>gl_TextureMatrixInverse</item>
<item>gl_ModelViewMatrixTranspose</item>
<item>gl_ProjectionMatrixTranspose</item>
<item>gl_ModelViewProjectionMatrixTranspose</item>
<item>gl_TextureMatrixTranspose</item>
<item>gl_ModelViewMatrixInverseTranspose</item>
<item>gl_ProjectionMatrixInverseTranspose</item>
<item>gl_ModelViewProjectionMatrixInverseTranspose</item>
<item>gl_TextureMatrixInverseTranspose</item>
<item>gl_NormalScale</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRange</item>
<item>gl_ClipPlane</item>
<item>gl_PointParameters</item>
<item>gl_Point</item>
<item>gl_MaterialParameters</item>
<item>gl_FrontMaterial</item>
<item>gl_BackMaterial</item>
<item>gl_LightSourceParameters</item>
<item>gl_LightSourceParameters</item>
<item>gl_LightSource</item>
<item>gl_LightModelParameters</item>
<item>gl_LightModel</item>
<item>gl_LightModelProducts</item>
<item>gl_FrontLightModelProduct</item>
<item>gl_LightModelProducts</item>
<item>gl_BackLightModelProduct</item>
<item>gl_LightProducts</item>
<item>gl_FrontLightProduct</item>
<item>gl_LightProducts</item>
<item>gl_BackLightProduct</item>
<item>gl_TextureEnvColor</item>
<item>gl_EyePlaneS</item>
<item>gl_EyePlaneT</item>
<item>gl_EyePlaneR</item>
<item>gl_EyePlaneQ</item>
<item>gl_ObjectPlaneS</item>
<item>gl_ObjectPlaneT</item>
<item>gl_ObjectPlaneR</item>
<item>gl_ObjectPlaneQ</item>
<item>gl_FogParameters</item>
<item>gl_FrontColor</item>
<item>gl_BackColor</item>
<item>gl_FrontSecondaryColor</item>
<item>gl_BackSecondaryColor</item>
<item>gl_TexCoord</item>
<item>gl_Color</item>
<item>gl_SecondaryColor</item>
<item>gl_TexCoord</item>
</list>
<list name="buildinvariables110">
<!-- vertex shader -->
<item>gl_Position</item>
<item>gl_PointSize</item>
<item>gl_ClipDistance</item>
<item>gl_VertexID</item>
<!-- fragment shader -->
<item>gl_FragCoord</item>
<item>gl_FragDepth</item>
<item>gl_FrontFacing</item>
</list>
<list name="buildinvariables120">
<item>gl_PointCoord</item>
</list>
<list name="buildinvariables140">
<item>gl_InstanceID</item>
</list>
<list name="buildinvariables150">
<!-- geometry shader -->
<item>gl_in</item>
<item>gl_PrimitiveIDIn</item>
<item>gl_InvocationID</item>
<item>gl_PrimitiveID</item>
<item>gl_Layer</item>
<item>gl_PerVertex</item>
</list>
<list name="buildinvariables400">
<!-- tessellation control -->
<item>gl_MaxPatchVertices</item>
<item>gl_PatchVerticesIn</item>
<item>gl_out</item>
<item>gl_TessLevelOuter</item>
<item>gl_TessLevelInner</item>
<!-- tessellation evaluation -->
<item>gl_TessCoord</item>
<!-- fragment shader -->
<item>gl_SampleID</item>
<item>gl_SamplePosition</item>
<item>gl_SampleMaskIn</item>
<item>gl_SampleMask</item>
</list>
<list name="buildinvariables410">
<item>gl_ViewportIndex</item>
</list>
<list name="buildinvariables430">
<!-- compute shader -->
<item>gl_NumWorkGroups</item>
<item>gl_WorkGroupSize</item>
<item>gl_WorkGroupID</item>
<item>gl_LocalInvocationID</item>
<item>gl_GlobalInvocationID</item>
<item>gl_LocalInvocationIndex</item>
</list>
<!-- ####################################################################################################### buildin constants -->
<list name="buildinconstants100ES">
<item>gl_MaxVertexAttribs</item>
<item>gl_MaxVertexUniformVectors</item>
<item>gl_MaxVaryingVector</item>
<item>gl_MaxVertexTextureImageUnits</item>
<item>gl_MaxCombinedTextureImageUnits</item>
<item>gl_MaxTextureImageUnits</item>
<item>gl_MaxFragmentUniformVectors</item>
<item>gl_MaxDrawBuffers</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRange</item>
<item>gl_NumSamples</item>
</list>
<list name="buildinconstants110">
<item>gl_MaxLights</item>
<item>gl_MaxClipPlanes</item>
<item>gl_MaxTextureUnits</item>
<item>gl_MaxTextureCoords</item>
<item>gl_MaxVertexAttribs</item>
<item>gl_MaxVertexUniformComponents</item>
<item>gl_MaxVaryingFloats</item>
<item>gl_MaxVertexTextureImageUnits</item>
<item>gl_MaxCombinedTextureImageUnits</item>
<item>gl_MaxTextureImageUnits</item>
<item>gl_MaxFragmentUniformComponents</item>
<item>gl_MaxDrawBuffers</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRange</item>
<item>gl_NumSamples</item>
</list>
<list name="buildinconstants130">
<!-- also 110 -->
<item>gl_MaxVaryingComponents</item>
<item>gl_MaxClipDistances</item>
</list>
<list name="buildinconstants150">
<!-- also 130 -->
<item>gl_MaxVertexOutputComponents</item>
<item>gl_MaxGeometryInputComponents</item>
<item>gl_MaxGeometryOutputComponents</item>
<item>gl_MaxFragmentInputComponents</item>
<item>gl_MaxGeometryTextureImageUnits</item>
<item>gl_MaxGeometryOutputVertices</item>
<item>gl_MaxGeometryTotalOutputComponents</item>
<item>gl_MaxGeometryUniformComponents</item>
<item>gl_MaxGeometryVaryingComponents</item>
</list>
<list name="buildinconstants300ES">
<item>gl_MaxVertexAttribs</item>
<item>gl_MaxVertexUniformVectors</item>
<item>gl_MaxVertexOutputVectors</item>
<item>gl_MaxFragmentInputVectors</item>
<item>gl_MaxVertexTextureImageUnits</item>
<item>gl_MaxCombinedTextureImageUnits</item>
<item>gl_MaxTextureImageUnits</item>
<item>gl_MaxFragmentUniformVectors</item>
<item>gl_MaxDrawBuffers</item>
<item>gl_MinProgramTexelOffset</item>
<item>gl_MaxProgramTexelOffset</item>
<item>gl_DepthRangeParameters</item>
<item>gl_DepthRange</item>
<item>gl_NumSamples</item>
</list>
<list name="buildinconstants400">
<!-- also 150 -->
<item>gl_MaxTessControlInputComponents</item>
<item>gl_MaxTessControlOutputComponents</item>
<item>gl_MaxTessControlTextureImageUnits</item>
<item>gl_MaxTessControlUniformComponents</item>
<item>gl_MaxTessControlTotalOutputComponents</item>
<item>gl_MaxTessEvaluationInputComponents</item>
<item>gl_MaxTessEvaluationOutputComponents</item>
<item>gl_MaxTessEvaluationTextureImageUnits</item>
<item>gl_MaxTessEvaluationUniformComponents</item>
<item>gl_MaxTessPatchComponents</item>
<item>gl_MaxPatchVertices</item>
<item>gl_MaxTessGenLevel</item>
</list>
<list name="buildinconstants410">
<!-- also 400 -->
<item>gl_MaxViewports</item>
<item>gl_MaxVertexUniformVectors</item>
<item>gl_MaxFragmentUniformVectors</item>
<item>gl_MaxVaryingVectors</item>
</list>
<list name="buildinconstants420">
<!-- also 410 -->
<item>gl_MaxImageUnits</item>
<item>gl_MaxCombinedImageUnitsAndFragmentOutputs</item>
<item>gl_MaxImageSamples</item>
<item>gl_MaxVertexImageUniforms</item>
<item>gl_MaxTessControlImageUniforms</item>
<item>gl_MaxTessEvaluationImageUniforms</item>
<item>gl_MaxGeometryImageUniforms</item>
<item>gl_MaxFragmentImageUniforms</item>
<item>gl_MaxCombinedImageUniforms</item>
<item>gl_MaxVertexAtomicCounters</item>
<item>gl_MaxTessControlAtomicCounters</item>
<item>gl_MaxTessEvaluationAtomicCounters</item>
<item>gl_MaxGeometryAtomicCounters</item>
<item>gl_MaxFragmentAtomicCounters</item>
<item>gl_MaxCombinedAtomicCounters</item>
<item>gl_MaxAtomicCounterBindings</item>
<item>gl_MaxVertexAtomicCounterBuffers</item>
<item>gl_MaxTessControlAtomicCounterBuffers</item>
<item>gl_MaxTessEvaluationAtomicCounterBuffers</item>
<item>gl_MaxGeometryAtomicCounterBuffers</item>
<item>gl_MaxFragmentAtomicCounterBuffers</item>
<item>gl_MaxCombinedAtomicCounterBuffers</item>
<item>gl_MaxAtomicCounterBufferSize</item>
<item>gl_MinProgramTexelOffset</item>
<item>gl_MaxProgramTexelOffset</item>
</list>
<list name="buildinconstants430">
<!-- also 420 -->
<item>gl_MaxComputeWorkGroupCount</item>
<item>gl_MaxComputeWorkGroupSize</item>
<item>gl_MaxComputeUniformComponents</item>
<item>gl_MaxComputeTextureImageUnits</item>
<item>gl_MaxComputeImageUniforms</item>
<item>gl_MaxComputeAtomicCounters</item>
<item>gl_MaxComputeAtomicCounterBuffers</item>
</list>
<!-- ####################################################################################################### buildin functions -->
<list name="buildinfunctionsDeprecatedES">
<item>texture2D</item>
<item>texture2DProj</item>
<item>texture2DLod</item>
<item>texture2DProjLod</item>
<item>textureCube</item>
<item>textureCubeLod</item>
</list>
<list name="buildinfunctionsDeprecated">
<!-- also buildinfunctionsDeprecatedES -->
<item>ftransform</item>
<item>texture1D</item>
<item>texture1DProj</item>
<item>texture1DLod</item>
<item>texture1DProjLod</item>
<item>texture3D</item>
<item>texture3DProj</item>
<item>texture3DLod</item>
<item>texture3DProjLod</item>
<item>shadow1D</item>
<item>shadow2D</item>
<item>shadow1DProj</item>
<item>shadow2DProj</item>
<item>shadow1DLod</item>
<item>shadow2DLod</item>
<item>shadow1DProjLod</item>
<item>shadow2DProjLod</item>
</list>
<list name="buildinfunctions100ES">
<!-- also buildinfunctionsDeprecated -->
<item>radians</item>
<item>degrees</item>
<item>sin</item>
<item>cos</item>
<item>tan</item>
<item>asin</item>
<item>acos</item>
<item>atan</item>
<item>pow</item>
<item>exp</item>
<item>log</item>
<item>exp2</item>
<item>log2</item>
<item>sqrt</item>
<item>inversesqrt</item>
<item>abs</item>
<item>sign</item>
<item>floor</item>
<item>ceil</item>
<item>fract</item>
<item>mod</item>
<item>min</item>
<item>max</item>
<item>clamp</item>
<item>mix</item>
<item>step</item>
<item>smoothstep</item>
<item>length</item>
<item>distance</item>
<item>dot</item>
<item>cross</item>
<item>normalize</item>
<item>faceforward</item>
<item>reflect</item>
<item>refract</item>
<item>matrixCompMult</item>
<item>lessThan</item>
<item>lessThenEqual</item>
<item>greaterThan</item>
<item>greaterThanEqual</item>
<item>equal</item>
<item>notEqual</item>
<item>any</item>
<item>all</item>
<item>not</item>
</list>
<list name="buildinfunctions110">
<!-- also buildinfunctions100ES and buildinfunctionsDeprecated -->
<item>dFdx</item>
<item>dFdy</item>
<item>fwidth</item>
</list>
<list name="buildinfunctions110Noise">
<item>noise1</item>
<item>noise2</item>
<item>noise3</item>
<item>noise4</item>
</list>
<list name="buildinfunctions120">
<!-- also 110, and buildinfunctionsDeprecated -->
<item>outerProduct</item>
<item>transpose</item>
</list>
<list name="buildinfunctions130">
<!-- also 110, no buildinfunctionsDeprecated -->
<item>trunc</item>
<item>round</item>
<item>roundEven</item>
<item>modf</item>
<item>isnan</item>
<item>isinf</item>
<item>sinh</item>
<item>cosh</item>
<item>tanh</item>
<item>asinh</item>
<item>acosh</item>
<item>atanh</item>
<item>textureSize</item>
<item>texture</item>
<item>textureProj</item>
<item>textureLod</item>
<item>textureOffset</item>
<item>texelFetch</item>
<item>texelFetchOffset</item>
<item>textureProjOffset</item>
<item>textureLodOffset</item>
<item>textureProjLod</item>
<item>textureProjLodOffset</item>
<item>textureGrad</item>
<item>textureGradOffset</item>
<item>textureProjGrad</item>
<item>textureProjGradOffset</item>
</list>
<list name="buildinfunctions140">
<item>determinant</item>
<item>inverse</item>
</list>
<list name="buildinfunctions150">
<item>EmitVertex</item>
<item>EndPrimitive</item>
</list>
<list name="buildinfunctions300ES">
<!-- also 100ES 110 120 130 140 330 -->
<item>packSnorm2x16</item>
<item>unpackUnorm2x16</item>
<item>packUnorm2x16</item>
<item>unpackUnorm2x16</item>
<item>packHalf2x16</item>
<item>unpackHalf2x16</item>
</list>
<list name="buildinfunctions330">
<item>floatBitsToInt</item>
<item>floatBitsToUint</item>
<item>intBitsToFloat</item>
<item>uintBitsToFloat</item>
</list>
<list name="buildinfunctions400">
<item>fma</item>
<item>barrier</item>
<item>interpolateAtCentroid</item>
<item>interpolateAtSample</item>
<item>interpolateAtOffset</item>
<item>frexp</item>
<item>ldexp</item>
<item>packUnorm2x16</item>
<item>packUnorm4x8</item>
<item>packSnorm4x8</item>
<item>unpackUnorm2x16</item>
<item>unpackSnorm2x16</item>
<item>unpackUnorm4x8</item>
<item>unpackSnorm4x8</item>
<item>packDouble2x32</item>
<item>unpackDouble2x32</item>
<item>uaddCarry</item>
<item>usubBorrow</item>
<item>umulExtended</item>
<item>imulExtended</item>
<item>bitfieldExtract</item>
<item>bitfieldInsert</item>
<item>bitfieldReverse</item>
<item>bitCount</item>
<item>findLSB</item>
<item>findMSB</item>
<item>textureQueryLod</item>
<item>textureGather</item>
<item>textureGatherOffset</item>
<item>textureGatherOffsets</item>
<item>EmitStreamVertex</item>
<item>EndStreamPrimitive</item>
</list>
<list name="buildinfunctions420">
<item>packSnorm2x16</item>
<item>unpackSnorm2x16</item>
<item>packHalf2x16</item>
<item>unpackHalf2x16</item>
<item>atomicCounterIncrement</item>
<item>atomicCounterDecrement</item>
<item>atomicCounter</item>
<item>memoryBarrier</item>
<item>imageLoad</item>
<item>imageStore</item>
<item>imageAtomicAdd</item>
<item>imageAtomicMin</item>
<item>imageAtomicMax</item>
<item>imageAtomicAnd</item>
<item>imageAtomicOr</item>
<item>imageAtomicXor</item>
<item>imageAtomicExchange</item>
<item>imageAtomicCompSwap</item>
</list>
<list name="buildinfunctions430">
<item>textureQueryLevels</item>
<item>atomicAdd</item>
<item>atomicMin</item>
<item>atomicMax</item>
<item>atomicAnd</item>
<item>atomicOr</item>
<item>atomicXor</item>
<item>atomicExchange</item>
<item>atomicCompSwap</item>
<item>imageSize</item>
<item>memoryBarrierAtomicCounter</item>
<item>memoryBarrierBuffer</item>
<item>memoryBarrierShared</item>
<item>memoryBarrierImage</item>
<item>groupMemoryBarrier</item>
</list>
<!-- ################################################################################################################
####################################################################################################### contexts
################################################################################################################ -->
<contexts>
<!-- default -->
<!-- ################################################################################################# GLSL version 110 -->
<context name="v110" attribute="Normaltext" lineEndContext="#stay">
<!-- special rules for layouts -->
<StringDetect attribute="Reserved" String="layout" context="LayoutReserved"/>
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- language features -->
<keyword attribute="Keyword" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Reserved" String="keywordsPrecision" context="#stay" />
<keyword attribute="Reserved" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Reserved" String="keywords120" context="#stay" />
<keyword attribute="Reserved" String="keywords130" context="#stay" />
<keyword attribute="Reserved" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes120" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes130" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes140" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables120" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions120" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions130" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<StringDetect attribute="Preprocessor" String="#version" context="version" />
</context>
<context name="version" attribute="Preprocessor" lineEndContext="#pop">
<!-- GLSL version detection -->
<StringDetect attribute="Preprocessor" String="100" context="v100ES" /> <!-- ES 2.0 -->
<StringDetect attribute="Preprocessor" String="110" context="#pop" /> <!-- 110 is the default -->
<StringDetect attribute="Preprocessor" String="120" context="v120" />
<StringDetect attribute="Preprocessor" String="130" context="v130" />
<StringDetect attribute="Preprocessor" String="140" context="v140" />
<StringDetect attribute="Preprocessor" String="150" context="v150" />
<StringDetect attribute="Preprocessor" String="300 es" context="v300ES" /> <!-- ES -->
<StringDetect attribute="Preprocessor" String="330" context="v330" />
<StringDetect attribute="Preprocessor" String="400" context="v400" />
<StringDetect attribute="Preprocessor" String="410" context="v410" />
<StringDetect attribute="Preprocessor" String="420" context="v420" />
<StringDetect attribute="Preprocessor" String="430" context="v430" />
</context>
<!-- ################################################################################################# GLSL version GLES 2 -->
<context name="v100ES" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Reserved" String="layout" context="LayoutReserved"/>
<!-- language features -->
<keyword attribute="Keyword" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Reserved" String="keywords120" context="#stay" />
<keyword attribute="Reserved" String="keywords130" context="#stay" />
<keyword attribute="Reserved" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes110" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes120" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes130" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes140" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables100ES" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables110" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables120" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants100ES" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants110" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions110" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions120" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions130" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 120 -->
<context name="v120" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Reserved" String="layout" context="LayoutReserved"/>
<!-- language features -->
<keyword attribute="Keyword" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Reserved" String="keywords130" context="#stay" />
<keyword attribute="Reserved" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes130" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes140" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions130" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 130 -->
<context name="v130" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Reserved" String="layout" context="LayoutReserved"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Reserved" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes140" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 140 -->
<context name="v140" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Reserved" String="layout" context="LayoutReserved"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 150 -->
<context name="v150" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout150"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- ################################################################################################# GLSL version GLES 3 -->
<context name="v300ES" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout300ES"/>
<!-- override these keywords, it's not available in ES 3 -->
<keyword attribute="Reserved" String="keywordsRemovedInES3" context="#stay" />
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<StringDetect attribute="gl_ClipDistance" String="Reserved" context="#stay"/>
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants300ES" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants110" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants130" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions300ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 330 -->
<context name="v330" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout330"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Reserved" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 400 -->
<context name="v400" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout400"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Keyword" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables400" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants400" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 410 -->
<context name="v410" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout400"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Keyword" String="keywords400" context="#stay" />
<keyword attribute="Reserved" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes400" context="#stay" />
<keyword attribute="Reserved" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables400" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants400" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants410" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions400" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 420 -->
<context name="v420" attribute="Normaltext" lineEndContext="#stay" >
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout420"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Keyword" String="keywords400" context="#stay" />
<keyword attribute="Keyword" String="keywords420" context="#stay" />
<keyword attribute="Reserved" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes400" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables400" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables410" context="#stay" />
<keyword attribute="Reserved" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants400" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants410" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants420" context="#stay" />
<keyword attribute="Reserved" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions400" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions420" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################### GLSL version 430 -->
<context name="v430" attribute="Normaltext" lineEndContext="#stay">
<!-- special rules for layouts -->
<StringDetect attribute="Keyword" String="layout" context="Layout430"/>
<!-- language features -->
<keyword attribute="Reserved" String="keywordsCompatibility" context="#stay" />
<keyword attribute="Keyword" String="keywordsPrecision" context="#stay" />
<keyword attribute="Keyword" String="keywords100ES" context="#stay" />
<keyword attribute="Keyword" String="keywords110" context="#stay" />
<keyword attribute="Keyword" String="keywords120" context="#stay" />
<keyword attribute="Keyword" String="keywords130" context="#stay" />
<keyword attribute="Keyword" String="keywords140" context="#stay" />
<keyword attribute="Keyword" String="keywords400" context="#stay" />
<keyword attribute="Keyword" String="keywords420" context="#stay" />
<keyword attribute="Keyword" String="keywords430" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes100es" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes110" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes120" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes130" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes140" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes150" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes400" context="#stay" />
<keyword attribute="Keywordstypes" String="keywordstypes420" context="#stay" />
<keyword attribute="Reserved" String="reservedkeywords" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables110" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables120" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables140" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables150" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables400" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables410" context="#stay" />
<keyword attribute="Buildinvariables" String="buildinvariables430" context="#stay" />
<keyword attribute="Reserved" String="buildinvariablesDeprecated" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants110" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants130" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants150" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants400" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants410" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants420" context="#stay" />
<keyword attribute="Buildconstants" String="buildinconstants430" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecated" context="#stay" />
<keyword attribute="Reserved" String="buildinfunctionsDeprecatedES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions100ES" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions110Noise" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions120" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions130" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions140" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions150" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions330" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions400" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions420" context="#stay" />
<keyword attribute="Buildinfunctions" String="buildinfunctions430" context="#stay" />
<!-- numbers -->
<Float attribute="Float" context="#stay" />
<HlCOct attribute="Octal" context="#stay" />
<HlCHex attribute="Hex" context="#stay" />
<Int attribute="Decimal" context="#stay" />
<!-- comments -->
<Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentMultiLine" char="/" char1="*" beginRegion="Comment"/>
<!-- preprocessor -->
<DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true"/>
</context>
<!-- #################################################################################################################### -->
<context name="LayoutReserved" attribute="Reserved" lineEndContext="#stay">
<DetectChar attribute="Reserved" context="LayoutOpenReserved" char="("/>
</context>
<context name="LayoutOpenReserved" attribute="Reserved" lineEndContext="#stay">
<DetectChar attribute="Reserved" context="#pop#pop" char=")"/>
</context>
<!-- layout declarations -->
<context name="Layout150" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen150" char="("/>
</context>
<context name="LayoutOpen150" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier150" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier330" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier400" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier420" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- layout declarations -->
<context name="Layout330" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen330" char="("/>
</context>
<context name="LayoutOpen330" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier150" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier330" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier400" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier420" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- layout declarations -->
<context name="Layout400" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen400" char="("/>
</context>
<context name="LayoutOpen400" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier150" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier330" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier400" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier420" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- layout declarations -->
<context name="Layout420" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen420" char="("/>
</context>
<context name="LayoutOpen420" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier150" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier330" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier400" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier420" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- layout declarations -->
<context name="Layout430" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen430" char="("/>
</context>
<context name="LayoutOpen430" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier150" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier330" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier400" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier420" context="#stay" />
<keyword attribute="Keyword" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- layout declarations -->
<context name="Layout300ES" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="LayoutOpen300ES" char="("/>
</context>
<context name="LayoutOpen300ES" attribute="Normaltext" lineEndContext="#stay">
<DetectChar attribute="Normaltext" context="#pop#pop" char=")"/>
<keyword attribute="Keyword" String="layoutqualifier300ES" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier150" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier330" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier400" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier420" context="#stay" />
<keyword attribute="Reserved" String="layoutqualifier430" context="#stay" />
<Int attribute="Decimal" context="#stay" />
</context>
<!-- end of comments -->
<context name="CommentSingleLine" attribute="Comment" lineEndContext="#pop">
</context>
<context name="CommentMultiLine" attribute="Comment" lineEndContext="#stay">
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
</context>
<!-- end of preprocessor tokens -->
<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">
</context>
</contexts>
<!-- ################################################################################################################
####################################################################################################### coloring
################################################################################################################ -->
<itemDatas>
<!-- coloring definition -->
<itemData name="Normaltext" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword" bold="1"/>
<itemData name="Keywordstypes" defStyleNum="dsKeyword"/>
<itemData name="Reserved" defStyleNum="dsKeyword" bold="1" strikeout="1"/>
<itemData name="Buildinvariables" defStyleNum="dsDataType" bold="0"/>
<itemData name="Buildconstants" defStyleNum="dsDataType" bold="0"/>
<itemData name="Buildinfunctions" defStyleNum="dsKeyword" bold="1"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Preprocessor" defStyleNum="dsDataType" bold="1"/>
<itemData name="Comment" defStyleNum="dsComment"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" />
<comment name="multiLine" start="/*" end="*/" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment