aboutsummaryrefslogtreecommitdiff
path: root/syntax
diff options
context:
space:
mode:
authorSergey Tikhomirov <tikhomirov84@gmail.com>2013-06-29 10:10:50 +0300
committerSergey Tikhomirov <tikhomirov84@gmail.com>2013-06-29 10:10:50 +0300
commit22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad (patch)
treebea28eaf1dbf3c3c2d147dc23dc8c1be7e6b77a0 /syntax
parentc7775b0c391de877d2036ab3f969129e5d92d7bf (diff)
parent4def223390c0504279f18904717b0dc51f6552aa (diff)
downloadvim-glsl-22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad.tar.gz
vim-glsl-22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad.zip
Merge github.com:rkaup/vim-glsl
Conflicts: ftdetect/glsl.vim syntax/glsl.vim
Diffstat (limited to 'syntax')
-rw-r--r--syntax/glsl.vim183
1 files changed, 168 insertions, 15 deletions
diff --git a/syntax/glsl.vim b/syntax/glsl.vim
index 1c60146..6eed124 100644
--- a/syntax/glsl.vim
+++ b/syntax/glsl.vim
@@ -1,7 +1,7 @@
" Vim syntax file
-" Language: OpenGL Shading Language
-" Maintainer: Sergey Tikhomirov <me@stikhomirov.com>
-" Last Change: 2012 July 10
+" Language: OpenGL Shading Language
+" Maintainer: Sergey Tikhomirov <me@stikhomirov.com>
+" Last Change: 2012 July 10
if exists("b:current_syntax")
finish
@@ -13,7 +13,7 @@ syn keyword glslRepeat for while do
syn keyword glslStatement discard return break continue
" Comments
-syn keyword glslTodo contained TODO FIXME XXX
+syn keyword glslTodo contained TODO FIXME XXX
syn region glslCommentL start="//" skip="\\$" end="$" keepend contains=glslTodo
syn region glslComment matchgroup=glslCommentStart start="/\*" end="\*/" extend contains=glslTodo
@@ -27,18 +27,24 @@ syn region glslPreProc start="^\s*#\s*\(error\|pragma\|extension\|v
" Boolean Constants
syn keyword glslBoolean true false
-" Numbers
-" integers
-syn match glslInteger "\<0[xX]\x\+\>" display
-syn match glslInteger "\<\%(0\|[1-9]\d*\)\>" display
-syn match glslInteger "\<0\o\+\>" display
-" floats
-" FIXME doesn't match floats that look like 123. or .123
-syn match glslFloat "\<\%(0\|[1-9]\d*\)\.\%(\d\+\)\>" display
-syn match glslFloat "\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\>" display
+" Integer Numbers
+syn match glslDecimalInt display "\(0\|[1-9]\d*\)"
+syn match glslOctalInt display "0\o\+"
+syn match glslHexInt display "0[xX]\x\+"
+
+" Float Numbers
+syn match glslFloat display "\d\+\.\d\+\([eE][+-]\=\d\+\)\="
+syn match glslFloat display "\d\+\.\([eE][+-]\=\d\+\)\="
+syn match glslFloat display "\.\d\+\([eE][+-]\=\d\+\)\="
+syn match glslFloat display "\d\+[eE][+-]\=\d\+"
+
+" Swizzles
+syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/
+syn match glslSwizzle display /\.[rgba]\{1,4\}\>/
+syn match glslSwizzle display /\.[stpq]\{1,4\}\>/
" Types
-syn keyword glslStructure struct
+syn keyword glslStructure struct
syn keyword glslType atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3
syn keyword glslType dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3
syn keyword glslType dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray
@@ -61,7 +67,7 @@ syn keyword glslType uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimag
syn keyword glslType uimageCubeArray uint usampler1D usampler1DArray usampler2D
syn keyword glslType usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect
syn keyword glslType usampler3D usamplerBuffer usamplerCube usamplerCubeArray
-syn keyword glslType uvec2 uvec3 uvec4 vec2 vec3 vec4 void
+syn keyword glslType uvec2 uvec3 uvec4 vec2 vec3 vec4 void
" Qualifiers
syn keyword glslQualifier precision invariant
@@ -83,6 +89,149 @@ syn keyword glslQualifier row_major sample shared smooth std140 stream
syn keyword glslQualifier triangle_strip triangles triangles_adjacency uniform varying
syn keyword glslQualifier coherent volatile restrict readonly writeonly
+" These functions were taken from the 4.20 version of the GLSL specification,
+" found at
+" http://www.opengl.org/registry/doc/GLSLangSpec.4.20.11.clean.pdf
+
+" 8.1 Angle and Trigonometry Functions
+syn keyword glslBuiltinFunction radians degrees sin cos tan asin acos atan
+syn keyword glslBuiltinFunction sinh cosh tanh asinh acosh atanh
+" 8.2 Exponential Functions
+syn keyword glslBuiltinFunction pow exp log exp2 log2 sqrt inversesqrt
+" 8.3 Common Functions
+syn keyword glslBuiltinFunction abs sign floor trunc round roundEven ceil
+syn keyword glslBuiltinFunction fract mod modf min max clamp mix step
+syn keyword glslBuiltinFunction smoothstep isnan isinf floatBitsToInt
+syn keyword glslBuiltinFunction floatBitsToUint intBitsToFloat uintBitsToFloat
+syn keyword glslBuiltinFunction fma frexp ldexp
+" 8.4 Floating-Point Pack and Unpack Functions
+syn keyword glslBuiltinFunction packUnorm2x16 packSnorm2x16 packUnorm4x8
+syn keyword glslBuiltinFunction packSnorm4x8 unpackUnorm2x16 unpackSnorm2x16
+syn keyword glslBuiltinFunction unpackUnorm4x8 unpackSnorm4x8 packDouble2x32
+syn keyword glslBuiltinFunction unpackDouble2x32 packHalf2x16 unpackHalf2x16
+" 8.5 Geometric Functions
+syn keyword glslBuiltinFunction length distance dot cross normalize faceforward
+syn keyword glslBuiltinFunction reflect refract
+" 8.6 Matrix Functions
+syn keyword glslBuiltinFunction matrixCompMult outerProduct transpose
+syn keyword glslBuiltinFunction determinant
+syn keyword glslBuiltinFunction inverse
+" 8.7 Vector Relational Functions
+syn keyword glslBuiltinFunction lessThan lessThanEqual greaterThan
+syn keyword glslBuiltinFunction greaterThanEqual
+syn keyword glslBuiltinFunction equal notEqual any all not
+" 8.8 Integer Functions
+syn keyword glslBuiltinFunction uaddCarry usubBorrow umulExtended imulExtended
+syn keyword glslBuiltinFunction bitfieldExtract bitfieldInsert bitfieldReverse
+syn keyword glslBuiltinFunction bitCount findLSB findMSB
+" 8.9.1 Texture Query Functions
+syn keyword glslBuiltinFunction textureSize textureQueryLod
+" 8.9.2 Texel Lookup Functions
+syn keyword glslBuiltinFunction texture textureProj textureLod textureOffset
+syn keyword glslBuiltinFunction texelFetch texelFetchOffset textureProjOffset
+syn keyword glslBuiltinFunction textureLodOffset textureProjLod
+syn keyword glslBuiltinFunction textureProjLodOffset textureGrad
+syn keyword glslBuiltinFunction textureGradOffset textureProjGrad
+syn keyword glslBuiltinFunction textureProjGradOffset
+" 8.9.3 Texture Gather Instructions
+syn keyword glslBuiltinFunction textureGather textureGatherOffset
+syn keyword glslBuiltinFunction textureGatherOffsets
+" 8.10 Atomic-Counter Functions
+syn keyword glslBuiltinFunction atomicCounterIncrement atomicCounterDecrement
+syn keyword glslBuiltinFunction atomicCounter
+" 8.11 Image Functions
+syn keyword glslBuiltinFunction imageLoad imageStore imageAtomicAdd
+syn keyword glslBuiltinFunction imageAtomicMin imageAtomicMax imageAtomicAnd
+syn keyword glslBuiltinFunction imageAtomicOr imageAtomicXor
+syn keyword glslBuiltinFunction imageAtomicExchange imageAtomicCompSwap
+" 8.12.1 Derivative Functions
+syn keyword glslBuiltinFunction dFdx dFdy fwidth
+" 8.12.2 Interpolation Functions
+syn keyword glslBuiltinFunction interpolateAtCentroid interpolateAtSample
+syn keyword glslBuiltinFunction interpolateAtOffset
+" 8.13 Noise Functions
+syn keyword glslBuiltinFunction noise1 noise2 noise3 noise4
+" 8.14 Geometry Shader Functions
+syn keyword glslBuiltinFunction EmitStreamVertex EndStreamPrimitive EmitVertex
+syn keyword glslBuiltinFunction EndPrimitive
+" 8.15 Shader Invocation Control Functions
+syn keyword glslBuiltinFunction barrier
+" 8.16 Shader Memory Control Function
+syn keyword glslBuiltinFunction memoryBarrier
+
+" 7.1 Built-in Variables
+syn keyword glslBuiltinVariable gl_VertexID gl_InstanceID gl_Position
+syn keyword glslBuiltinVariable gl_PointSize gl_ClipDistance gl_in
+syn keyword glslBuiltinVariable gl_PrimitiveIDIn gl_InvocationID
+syn keyword glslBuiltinVariable gl_PrimitiveID gl_Layer gl_ViewportIndex
+syn keyword glslBuiltinVariable gl_PatchVerticesIn gl_out gl_TessLevelOuter
+syn keyword glslBuiltinVariable gl_TessLevelInner gl_TessCoord gl_FragCoord
+syn keyword glslBuiltinVariable gl_FrontFacing gl_PointCoord gl_SampleID
+syn keyword glslBuiltinVariable gl_SamplePosition gl_SampleMaskIn gl_FragDepth
+syn keyword glslBuiltinVariable gl_SampleMask
+" 7.4 Built-In Uniform State
+" TODO Perhaps add highlighting for gl_DepthRange.near, or for
+" gl_DepthRangeParameters.
+syn keyword glslBuiltinVariable gl_DepthRange gl_NumSamples
+
+" 7.3 Built-in Constants
+syn keyword glslBuiltinConstant gl_MaxVertexAttribs gl_MaxUniformComponents
+syn keyword glslBuiltinConstant gl_MaxVaryingComponents
+syn keyword glslBuiltinConstant gl_MaxVertexOutputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryInputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryOutputComponents
+syn keyword glslBuiltinConstant gl_MaxFragmentInputComponents
+syn keyword glslBuiltinConstant gl_MaxVertexTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxCombinedTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTextureImageUnits gl_MaxImageUnits
+syn keyword glslBuiltinConstant gl_MaxCombinedImageUnitsAndFragmentOutputs
+syn keyword glslBuiltinConstant gl_MaxImageSamples gl_MaxVertexImageUniforms
+syn keyword glslBuiltinConstant gl_MaxTessControlImageUniforms
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationImageUniforms
+syn keyword glslBuiltinConstant gl_MaxGeometryImageUniforms
+syn keyword glslBuiltinConstant gl_MaxFragmentImageUniforms
+syn keyword glslBuiltinConstant gl_MaxCombinedImageUniforms
+syn keyword glslBuiltinConstant gl_MaxFragmentUniformComponents
+syn keyword glslBuiltinConstant gl_MaxDrawBuffers gl_MaxClipDistances
+syn keyword glslBuiltinConstant gl_MaxGeometryTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxGeometryOutputVertices
+syn keyword glslBuiltinConstant gl_MaxGeometryTotalOutputComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryUniformComponents
+syn keyword glslBuiltinConstant gl_MaxGeometryVaryingComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlInputComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTessControlUniformComponents
+syn keyword glslBuiltinConstant gl_MaxTessControlTotalOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationInputComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationTextureImageUnits
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationUniformComponents
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationTotalOutputComponents
+syn keyword glslBuiltinConstant gl_MaxTessPatchComponents gl_MaxPatchVertices
+syn keyword glslBuiltinConstant gl_MaxTessGenLevel
+syn keyword glslBuiltinConstant gl_MaxViewports
+syn keyword glslBuiltinConstant gl_MaxVertexUniformVectors
+syn keyword glslBuiltinConstant gl_MaxFragmentUniformVectors
+syn keyword glslBuiltinConstant gl_MaxVaryingVectors
+syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxTessEvaluationAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounters
+syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounterBuffers
+syn keyword glslBuiltinConstant gl_MaxAtomicCounterBufferSize
+syn keyword glslBuiltinConstant gl_MinProgramTexelOffset
+syn keyword glslBuiltinConstant gl_MaxProgramTexelOffset
+
+" This prevents numbers at ends of identifies from being highlighted as
+" numbers.
+syn match glslIdentifier display "\I\i*"
hi def link glslConditional Conditional
hi def link glslRepeat Repeat
@@ -102,6 +251,10 @@ hi def link glslFloat Float
hi def link glslStructure Structure
hi def link glslType Type
hi def link glslQualifier StorageClass
+hi def link glslBuiltinConstant Constant
+hi def link glslBuiltinFunction Function
+hi def link glslBuiltinVariable Identifier
+hi def link glslSwizzle SpecialChar
let b:current_syntax = "glsl"