OES_standard_derivatives 擴充套件
OES_standard_derivatives 擴充套件是 WebGL API 的一部分,它添加了 GLSL 的導數函式 dFdx、dFdy 和 fwidth。
可以使用 WebGLRenderingContext.getExtension() 方法來訪問 WebGL 擴充套件。有關更多資訊,請參閱 WebGL 教程中的 使用擴充套件。
常量
此擴充套件公開了一個新常量,可用於 hint() 和 getParameter() 方法。
ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES-
一個
GLenum,用於指示 GLSL 內建函式:dFdx、dFdy和fwidth的導數計算精度。
GLSL 內建函式
如果啟用了此擴充套件,則可以在 GLSL 著色器程式碼中使用以下新函式:
c
genType dFdx(genType p)
genType dFdy(genType p)
genType fwidth(genType p)
dFdx()-
使用區域性差分法,為輸入引數
p返回x方向的導數。 dFdy()-
使用區域性差分法,為輸入引數
p返回y方向的導數。 fwidth()-
使用區域性差分法,為輸入引數
p返回x和y方向導數的絕對值之和。即abs(dFdx(p)) + abs(dFdy(p))。
dFdx() 和 dFdy() 通常用於估算用於程式化紋理抗鋸齒的過濾器的寬度。
示例
啟用擴充套件
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 批准的擴充套件規範 |
瀏覽器相容性
載入中…