Расширение OES_standard_derivatives
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Расширение OES_standard_derivatives является частью WebGL API и добавляет функции GLSL производных dFdx, dFdy, и fwidth.
Расширения WebGL доступны с помощью метода WebGLRenderingContext.getExtension(). Дополнительную информацию см. также в разделе Использование расширений в учебнике WebGL.
Константы
Это расширение экспонирует одну новую константу, которая может быть использована в методах hint() и getParameter().
ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES-
GLenum, указывающая на точность расчета производной для встроенных функций GLSL:dFdx,dFdy, иfwidth.
Встроенные функции GLSL
Следующие новые функции могут быть использованы в коде шейдеров GLSL, если это расширение включено:
genType dFdx(genType p) genType dFdy(genType p) genType fwidth(genType p)
dFdx()-
Возвращает производную по
xс использованием локальной разницы для входного аргументаp. dFdy()-
Возвращает производную по
yс использованием локальной разницы для входного аргументаp. fwidth()-
Возвращает сумму абсолютных производных по
xиyс использованием локальной разницы для входного аргументаp. То есть,abs(dFdx(p)) + abs(dFdy(p)).
dFdx() и dFdy() обычно используются для оценки ширины фильтра, используемого для устранения артефактов в процедурных текстурах.
Примеры
Включение расширений:
gl.getExtension("OES_standard_derivatives");
gl.getExtension("EXT_shader_texture_lod");
Код шейдера, который избегает артефактов при обёртке координат текстуры:
<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>
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
OES_standard_derivatives |
10 | 12 | 10 | 15 | 8 | 18 | 10 | 14 | 8 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/OES_standard_derivatives