Closed BigMadDonkey closed 4 months ago
语言为GLSL,代码文件后缀.frag 我贴一段吧:
precision mediump float;
// uniform vec2 iResolution;
// uniform float iTime;
// uniform vec4 iMouse;
float plot(vec2 st, float pct) {
return 1.0 - smoothstep(0.0, 0.02, abs(st.y - pct));
}
void main() {
vec2 st = gl_FragCoord.xy / iResolution.xy;
vec3 color = vec3(0.0, 1.0, 0.0);
vec2 center = vec2(0.5);
vec2 pos = st - center;
float r = length(pos) * 3.0;
float a = atan(pos.x, pos.y);
a += iTime;
a *= 4.0;
float f = cos(a);
color += vec3(smoothstep(f, f + 0.1, r));
gl_FragColor = vec4(color, 1.0);
}
语法解析我是用了WebGL GLSL Editor的插件 https://github.com/racz16/WebGL-GLSL-Editor
其实我是感觉主题配色按照语言一个个做支持有点坐牢,是不是VSCode的Color Theme有一些比较默认的token scope,我觉得对那些通用的scope设置统一配色是不是就好了?比如这个storage.type的scope 我看其他主题一般都有自己的配色覆盖
同一作用的关键字,VSCode的token scope不同语言就是会有些许差异。这个语言的教程不像其它语言那么好搜,您能提供一个GLSL语言基础语法教学的教程链接吗?
安装WebGL GLSL Editor插件,再把上面教程里的大部分示例代码粘到.frag文件里看了下,发现能新增的着色优化只有一句storage.type.glsl
,请重启VSCode更新Eva Theme查看。
可以看出这个语法解析器还有很多待优化的地方,比如
如果您希望这些字符的显示得到改善,得给WebGL GLSL Editor插件提issue。我日常没有用到GLSL,未来如果您发现语法解析升级完善了,可以再提issue让我同步对该语言的支持。
🤦您该不会是把 C++代码当成GLSL了吧 GLSL语法很简单 没有什么class 也没有访问修饰符 (也没有字符串) "#" 我看是归类到meta.preprocessor了
注释的话 就是类C的 “//”注释
我的问题,那个网站确实容易引起误解,有的代码块是C++有的是GLSL。不过GLSL的语法本身真的没啥好说的,如果您以后还有想法可以再参考这个 https://thebookofshaders.com/ 这里涉及到的代码保证都是GLSL的
见笑了,我会的编程语言很少(:з」∠)
如果是对#号注释的解析,会是这样
scope规则里有
meta.preprocessor.glsl
的字符可能不只注释。我先把这条加上设为注释色吧,影响到非注释的地方您再报给我,您再重启更新下。
Eva Dark的配色真的很舒服,不过经常遇到某些token的scope没有适配默认配色的情况。 例如 glsl:
这种,类型都没有设置默认的高亮。我觉得是不是可以给storage.xxx的scope提供一些默认的配色支持(或者再多一点通用的scope的配色支持)?