OES_standard_derivatives-Erweiterung
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die OES_standard_derivatives
-Erweiterung ist Teil der WebGL API und fügt die GLSL-Derivatfunktionen dFdx
, dFdy
und fwidth
hinzu.
WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension()
verfügbar. Für weitere Informationen siehe auch Verwendung von Erweiterungen im WebGL-Leitfaden.
Konstanten
Diese Erweiterung stellt eine neue Konstante bereit, die in den Methoden hint()
und getParameter()
verwendet werden kann.
ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES
-
Ein
GLenum
, das die Genauigkeit der Derivationsberechnung für die eingebauten GLSL-Funktionen angibt:dFdx
,dFdy
undfwidth
.
Eingebaute GLSL-Funktionen
Die folgenden neuen Funktionen können im GLSL-Shader-Code verwendet werden, wenn diese Erweiterung aktiviert ist:
genType dFdx(genType p)
genType dFdy(genType p)
genType fwidth(genType p)
dFdx()
-
Gibt die Ableitung in
x
unter Verwendung lokaler Differenzierung für das Eingabeargumentp
zurück. dFdy()
-
Gibt die Ableitung in
y
unter Verwendung lokaler Differenzierung für das Eingabeargumentp
zurück. fwidth()
-
Gibt die Summe der absoluten Ableitung in
x
undy
unter Verwendung lokaler Differenzierung für das Eingabeargumentp
zurück. Das heißt,abs(dFdx(p)) + abs(dFdy(p))
.
dFdx()
und dFdy()
werden häufig verwendet, um die Filterbreite abzuschätzen, die zur Antialiasing von prozeduralen Texturen verwendet wird.
Beispiele
Aktivierung der Erweiterungen:
gl.getExtension("OES_standard_derivatives");
gl.getExtension("EXT_shader_texture_lod");
Shader-Code, der Artefakte beim Umwickeln von Texturkoordinaten vermeidet:
<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>
Spezifikationen
Specification |
---|
WebGL OES_standard_derivatives Khronos Ratified Extension Specification |