Spec-Zone.ru › Web APIs

Расширение OES_standard_derivatives

Базовая линия Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

Расширение OES_standard_derivatives является частью WebGL API и добавляет функции GLSL производных dFdx, dFdy, и fwidth.

Расширения WebGL доступны с помощью метода WebGLRenderingContext.getExtension(). Дополнительную информацию см. также в разделе Использование расширений в учебнике 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: 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>

Спецификации

Спецификация
Спецификация расширения WebGL OES_standard_derivatives Khronos Ratified

Совместимость с браузерами

Рабочие столы Мобильные устройства
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

См. также

  • WebGLRenderingContext.getExtension()
  • EXT_shader_texture_lod

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API