exokitxr / exokit

Native VR/AR/XR engine for JavaScript 🦖

Home Page:https://exokit.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GL_EXT_frag_depth reported missing even if enabled

chrismile opened this issue · comments

Describe the bug
When using gl_FragDepthEXT in a WebGL 1 context with exokit, the following error message is printed on the command line even when GL_EXT_frag_depth is enabled (unimportant parts omitted in the text below).

[
  '#extension GL_EXT_frag_depth : enable',
  'precision highp float;',
  'uniform vec3 uAmbient;',
  ...
  'gl_FragDepthEXT = (projPoint.z / projPoint.w + 1.0) / 2.0;',
  ...
]
v {
  message: 'Error compiling shader:\n0(158) : error C7531: global variable ' +
    'gl_FragDepthEXT requires "#extension GL_EXT_frag_depth : enable" ' +
    'before use\n'
}

To Reproduce
Open any web page using GL_EXT_frag_depth and gl_FragDepthEXT in exokit.

System information:

  • OS: Ubuntu 18.04

  • Exokit Version: master branch from 2019-08-27 (today)

  • Node version: v12.2.0

  • Is your Exokit downloaded or built? Built

  • GPU: NVIDIA GTX 1070

  • Driver version: 430.40

Thanks, that looks like a bug.

In Exokit WebGL1 contexts actually have WebGL2 functionality so you should have gl_fragDepth regardless (without the EXT).

However, to fix this for WebGL1 compatibility, I think it might be sufficient to not slice out the extension pragma here: https://github.com/modulesio/webgl-to-opengl/blob/e1db71cddfd7b3023b89bee5dae54502fb35e4c8/index.js#L15

(webgl-to-opengl) should be in node_modules. Does deleting that filter help the WebGL1 case?

Yes, that fixes the problem. Thanks! Maybe you can also include the fix upstream in webgl-to-opengl then. I'll close this issue.

Yup, will PR that. Thanks for testing!