GeForceLegend

GLSL Syntax for VS Code
适用于Visual Studio Code的GLSL语法高亮



主要功能

本vscode插件开发的本意是因为作者受不了vscode现有GLSL语法插件稀烂的高亮,非常怀念使用Sublime Text 3时使用的GLSL语法高亮插件euler0:sublime-glsl,便尝试使用vscode的语法高亮系统复刻sublime-glsl的GLSL语法高亮。在开发过程中发现了sublime-syntax与vscode使用的textMate存在着一些无法复刻的语法高亮并且存在一些缺陷,便自己加以完善补全,并在后来通过vscode的Typescript接口添加了提供一些基础的补全的功能,与一些Minecraft Java版原版/Optifine光影包所使用的特殊高亮,完成了这一款vscode插件。

本插件基于MIT Licence协议开源

本vscode插件在绝大部分情况下能提供与sublime-glsl接近的语法高亮
(以下所有展示图均使用“Monokai”颜色主题而非vscode默认颜色主题,若#include后文件路径有下划线均为另一插件Strum355:mcshader-lsp的功劳)


本vscode插件额外提供了一些基础的补全


本vscode插件会检测多余的右括号以及一些不应出现的括号,未成对的括号容易产生大片非法代码块,便于检查


本vscode插件提供了一个适用于原版Minecraft Java版着色器包的高亮(#moj_import)与数个适用于Optifine着色器的高亮(/* DRAWBUFFERS:XXX */与/* RENDERTARGETS: X,X */等)


本vscode插件提供了markdown的语法注入,可以在markdown内高亮GLSL代码片段


当前缺陷

由于vscode的语法文件内正则表达式无法跨行匹配,部分高亮可能会在跨行时失灵;

部分补全在很多情况下无法正常工作,并且有时候不该出现的补全会替换vscode正常情况下会提供的补全,对使用者造成困扰;

本插件目前仅提供语法高亮而不提供检错(除去借助语法高亮实现的不成对括号检测),也不提供诸如跳转至定义、内置函数文档、include文件跳转等功能。

以上缺陷理论上可以使用语言服务器(Language Server)解决,但是由于作者本身技术力不够,无法实现vscode的语言服务器。若有有能之士愿意尝试写一个语言服务器,可以考虑去Github仓库fork一份自己开发,或者提交pull request。

对于Optifine光影开发者,可以尝试使用Strum355:mcshader-lsp插件以获得按下保存后自动编译检错的功能。由于这个插件依赖当前vscode主流的GLSL/HLSL语法插件stef-levesque:vscode-shader,并且此插件的GLSL语法高亮会覆盖vscode-glsl的语法高亮,若想同时使用本插件的语法与mcshader-lsp的功能,可以考虑安装后前往%userprofile%/.vscode/extensions内手动用本插件的语法高亮文件替换vscode-shader的语法文件。

特别鸣谢

Sublime Text 3的GLSL语法高亮插件euler0:sublime-glsl(基于The Unlicense协议开源),提供了本语法插件内绝大部分的基础语法高亮,并且为本插件编写时所使用的textMate token提供了参照。

下载链接

请使用vscode自带插件商店安装,搜索“GLSL”即可快速找到本插件。

若想要研究本插件的语法高亮文件等,可前往https://github.com/GeForceLegend/vscode-glsl下载源代码



海川2502
66666666666666666

海川2502
66666666666666

第一页 上一页 下一页 最后一页