In webGL1 it was possible to test the availability of a GLSL extension from a fragment shader using (for instance) #ifdef GL_EXT_shader_texture_lod .
It seems to no longer be working in webGL2 (=GLSL-ES3.0): Extensions are not the same, but for instance #ifdef GL_EXT_color_buffer_float seems false despite https://webglreport.com/?v=2 tells that the extension is there.
Or what am I doing wrong ?
GLSL-ES3(webGL2): how to test extensions from fragment shader?
521 Views Asked by Fabrice NEYRET At
1
There are 1 best solutions below
Related Questions in GLSL
- GLSL clamps indices on array access
- Issue with Loading Images in Flutter FragmentShader and GLSL Code
- How to use bitwise operators in GLSL
- Why isn't my glfw window showing anything?
- Three.js how to determine if backfacing in a RawShaderMaterial that's double sided and transparent?
- Does addition-assignment cause dependency chain in GLSL?
- Why is the value of `gl_FragCoord.z` is always 0.5?
- How to draw a WebGLTexture into another Canvas?
- How to display GLSL shaders on a png
- Single WebGL 2.0 shader for multiple texture precisions
- Problem when rendering a red triangle using modernGL and Pygame
- GLSL fragment shader: How do I prevent seams when sampling half of texture to repeat? (with mipmapping or linear filtering on)
- How can I send large arrays of objects to a fragment shader using WebGL2?
- WebGL 2.0 unsigned integer input variable
- GLSL issue with smoothstep function where edge0 is bigger than edge1
Related Questions in FRAGMENT-SHADER
- GLSL fragment shader: How do I prevent seams when sampling half of texture to repeat? (with mipmapping or linear filtering on)
- moderngl game of life doesn't update
- How to draw chart with high point density(>1 point per px) in Unity?
- webgpu transferring buffer from js doesnot unpack at right position
- How to create AGSL shader based animation effects with Jetpack Compose?
- Issues with Vertical Stretching and Horizontal Movement in Metal Shading Language Ray Tracing Shader
- GLSL "No Matching Overloaded Function Found" ( Palette)
- How should I read neighboring Texels in the Fragment Shader?
- Libgdx shader adjustment at runtime, how to update draw sprite after setting uniform value?
- Three.js "Fragment shader is not compiled" error when using flat shading
- reuse WebGLRenderTarget as material it gets zeroed and black
- Texture reflection on adjacent geometry surface
- make excel or csv file have pixels colors extracted from an image by the same order
- I'm trying to create a displacement map transition between three images using ThreeJs and I'm stuck
- GLSL frag shader outputting yellow color instead of gradient
Related Questions in GLSLES
- GLSL clamps indices on array access
- How to convert coordinates from one camera space to another camera space
- unexpected result after a for loop in a shader
- Problem with precision qualifiers in a shader for android
- Glsl fragment - if else statements
- Check int multiplication overflow in GLSL
- Why only set the precision if GL_ES is defined?
- Re-defining Shader variables draws them all?
- Is it possible to use a vertex shader as a compute shader?
- GLES30.glGetUniformLocation() randomly fails
- 'texture' : no matching overloaded function found even though it *should* comply with documentation
- Runge kutta in GLSL exploding
- How do I efficiently look up color values from a list in GLSL?
- Android OpenGL ES 3.0 Skeletal Animations glitch with UBO
- OpenGL ES 3.2 doesn't recognize gl_in in geometry shader
Related Questions in WEBGL2
- Single WebGL 2.0 shader for multiple texture precisions
- How can I send large arrays of objects to a fragment shader using WebGL2?
- WebGL 2.0 unsigned integer input variable
- Multiple different textures/materials on 3D heightmap
- webgl2 with premultipliedAlpha:false and unwanted edges
- Default render color vector for fragment shader when using a frame buffer with multiple attachment?
- Is antialias possible in WebGL 2 if one of your fragment shader outputs is integer?
- Cannot assign to read only property 'RGBA8' of object '#<WebGLRenderingContext>'
- Can't avoid interpolation of UV : " 'flat' : Illegal use of reserved word "
- About streaming buffer edits, orphaning, and stalling
- How to reduce the gray-line artifacts in three.js isosurface rendering of 3D texture example?
- Are implicit memory barriers per range?
- Synchronous webGL rendering and EXT_disjoint_timer_query_webgl2
- Why my WebGL2 app dosen't work on win browsers?
- WebGL retrieve arbitrary meta data from shaders
Related Questions in WEBGL-EXTENSIONS
- RGBA16UI support across browsers for WebGL2
- Enabling GL EXT_blend_minmax
- How to set UV attribute when using Instanced Drawing method in WebGL
- WebGL: use an ArrayBufferView of type Int16Array with texImage2D
- Is GL_EXT_draw_instanced supported in WebGL1
- Unity web gl game wont display loading screen and just is blank screen
- Is it possible to filter integer texture in WebGL?
- GLSL-ES3(webGL2): how to test extensions from fragment shader?
- Debugging in WebGL
- can I use multiple texture with drawArraysInstancedANGLE?
- Supporting WebGL1 + WebGL2
- No support for OES_texture_float, but WebGL2 is available
- Why do the webidl specifications for WebGL extensions have the [NoInterfaceObject] extended attribute
- How can I use WebGL extensions from web_sys in Rust
- How to profile WebGL with ext_disjoint_timer_query extension?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It's up to the extension whether or not it adds a flag to GLSL
EXT_shader_texture_lodis specifically an extension that effects GLSL. It's spec says it adds that macroEXT_color_buffer_floatis not an extension that affects GLSL. It's spec does not mention any GLSL macros. No change from WebGL1Those flags though are mostly nonsense in WebGL anyway. You can trivially do your own string manipulation
Or a thousand other ways to manipulate shader strings.
Here's another
etc...
Also since there never was a
GL_EXT_color_buffer_floateven in OpenGL there isn't much point in calling the macroGL_EXT_color_buffer_float. In fact it would arguably be a bad idea because it would end up looking like an official specified macro even though it's not. Best to chose your own name that doesn't start withGL_.Also consider that using
#ifdefmight not even be a good idea since you can just use string manipulation. For example