glslx
glslx copied to clipboard
webgl2 (glsl 300 es) support
At the moment only glsl version 100
appears to compile correctly. webgl2 uses glsl with version 300 es
, which does not compile with glslx.
Here is a fragment shader example:
#version 300 es
precision highp float;
in vec2 v_st;
out vec4 color;
void main()
{
color = vec4(1.0, 1.0, 0.0, 1.0);
}
With Safari enabling WebGL2 by default on new versions, this becomes more relevant.
How hard would it be to implement this and @evanw would you be open to a PR?
The number of syntax changes with version 300 es
isn't huge.
Most changes are:
-
ivec4
,ivec3
,ivec2
which are alwaysflat
when passed from vertex shader -> fragment shader -
flat
andsmooth
keywords.smooth
is default -
varying
->in
orout
-
gl_FragColor
is now just theout
variable in a fragment shader -
sampler2DArray
,sampler3DArray
data types -
texture2D
->texture
and has several different type definitions - Many extensions are always available instead of conditionally available
Ideally, it would be possible to output both GLSL ES 300 shaders and GLSL ES 100 shaders, so long as WebGL2-only features aren't used (such as sampler2DArray
)
Now that Safari with WebGL2 enabled by default has shipped, is there any interest to support this in glslx @evanw ?
No I don't have any interest in this right now, sorry. I'm not using this library at the moment and I also have no need for WebGL2 features myself.
Thank you for taking the time to respond, I somehow thought Figma would use this library 😅
Figma does use it, we just don’t use WebGL2 since Figma needs to work everywhere and we could do without it.
Any update on this? Nowadays many bigger libraries have GLSL1 deprecated
@evanw Any updates on this? I like this library and would contribute, but it uses a custom programming language I have no experience with.