WebGL 1.0 Fallback Compatibility
Due to only GLSL 100 is supported in WebGL 1.0, shaders written in higher GLSL versions won't work well with it. Cocos Shader provides fallback code that converts GLSL 300 ES to GLSL 100 during compilation. Therefore, developers don't need to worry about this layer of transformation.
It's important to note that the current automatic fallback compatibility strategy only supports basic format conversions. If you use features only supported by GLSL 300 ES-specific functions (such as
textureGrad) or some specific extensions, it is recommended to use the
__VERSION__ macro to check the GLSL version and write different code snippets for different GLSL versions.
Here's an example of the code.
vec4 color = textureCubeLodEXT(envmap, R, roughness); vec4 color = textureCube(envmap, R); vec4 color = textureLod(envmap, R, roughness);
Note: During compilation, the Cocos Shader compiler will analyze all constant macros and generate multiple versions of shaders.