diff options
| author | Sergey Tikhomirov <tikhomirov84@gmail.com> | 2013-06-29 10:10:50 +0300 |
|---|---|---|
| committer | Sergey Tikhomirov <tikhomirov84@gmail.com> | 2013-06-29 10:10:50 +0300 |
| commit | 22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad (patch) | |
| tree | bea28eaf1dbf3c3c2d147dc23dc8c1be7e6b77a0 | |
| parent | c7775b0c391de877d2036ab3f969129e5d92d7bf (diff) | |
| parent | 4def223390c0504279f18904717b0dc51f6552aa (diff) | |
| download | vim-glsl-22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad.tar.gz vim-glsl-22330d3dcf5e92bf2bac583b6fc0a5f81c3ff4ad.zip | |
Merge github.com:rkaup/vim-glsl
Conflicts:
ftdetect/glsl.vim
syntax/glsl.vim
| -rw-r--r-- | ftdetect/glsl.vim | 2 | ||||
| -rw-r--r-- | syntax/glsl.vim | 183 |
2 files changed, 169 insertions, 16 deletions
diff --git a/ftdetect/glsl.vim b/ftdetect/glsl.vim index 4b4e4da..31ca24c 100644 --- a/ftdetect/glsl.vim +++ b/ftdetect/glsl.vim @@ -3,6 +3,6 @@ " Maintainer: Sergey Tikhomirov <me@stikhomirov.com> " Last Change: 2012 July 10 -autocmd BufNewFile,BufRead *.geom,*.vert,*.frag,*.gsh,*.vsh,*.fsh set filetype=glsl +autocmd BufNewFile,BufRead *.glsl,*.geom,*.vert,*.frag,*.gsh,*.vsh,*.fsh set filetype=glsl " vim:set sw=2: 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" |
