glslx icon indicating copy to clipboard operation
glslx copied to clipboard

webgl2 (glsl 300 es) support

Open nylki opened this issue 6 years ago • 7 comments

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);
}

nylki avatar Apr 11 '18 09:04 nylki

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 always flat when passed from vertex shader -> fragment shader
  • flat and smooth keywords. smooth is default
  • varying -> in or out
  • gl_FragColor is now just the out 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)

Jarred-Sumner avatar Jan 30 '21 23:01 Jarred-Sumner

Now that Safari with WebGL2 enabled by default has shipped, is there any interest to support this in glslx @evanw ?

haberbyte avatar Oct 31 '21 11:10 haberbyte

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.

evanw avatar Nov 04 '21 15:11 evanw

Thank you for taking the time to respond, I somehow thought Figma would use this library 😅

haberbyte avatar Nov 04 '21 16:11 haberbyte

Figma does use it, we just don’t use WebGL2 since Figma needs to work everywhere and we could do without it.

evanw avatar Nov 04 '21 16:11 evanw

Any update on this? Nowadays many bigger libraries have GLSL1 deprecated

daumann avatar Mar 29 '24 07:03 daumann

@evanw Any updates on this? I like this library and would contribute, but it uses a custom programming language I have no experience with.

james-pre avatar Apr 28 '24 17:04 james-pre