OES_standard_derivatives 扩展

OES_standard_derivatives 扩展是 WebGL API 的一部分,它添加了 GLSL 导数函数 dFdxdFdyfwidth

可以使用 WebGLRenderingContext.getExtension() 方法获取 WebGL 扩展。有关更多信息,请参阅 使用扩展(位于 WebGL 教程 中)。

注意: 此扩展仅适用于 WebGL1 上下文。在 WebGL2 中,此扩展的功能默认在 WebGL2 上下文中可用。在 WebGL 2 中,常量可用作 gl.FRAGMENT_SHADER_DERIVATIVE_HINT,并且它需要 GLSL #version 300 es

常量

此扩展公开了一个新的常量,可用于 hint()getParameter() 方法。

ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES

一个 GLenum,指示 GLSL 内置函数的导数计算精度:dFdxdFdyfwidth

GLSL 内置函数

如果启用了此扩展,以下新函数可在 GLSL 着色器代码中使用

cpp
genType dFdx(genType)
genType dFdy(genType)
genType fwidth(genType)

示例

启用扩展

js
gl.getExtension("OES_standard_derivatives");
gl.getExtension("EXT_shader_texture_lod");

避免纹理坐标环绕时出现伪影的着色器代码

html
<script type="x-shader/x-fragment">
  #extension GL_EXT_shader_texture_lod : enable
  #extension GL_OES_standard_derivatives : enable

  uniform sampler2D myTexture;
  varying vec2 texcoord;

  void main(){
    gl_FragColor = texture2DGradEXT(myTexture, mod(texcoord, vec2(0.1, 0.5)),
                                    dFdx(texcoord), dFdy(texcoord));
  }
</script>

规范

规范
WebGL OES_standard_derivatives Khronos 认证扩展规范

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅