OES_standard_derivatives-Erweiterung
Die OES_standard_derivatives
-Erweiterung ist Teil der WebGL-API und fügt die GLSL-Ableitungsfunktionen dFdx
, dFdy
und fwidth
hinzu.
WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension()
verfügbar. Weitere Informationen finden Sie auch unter 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 Ableitungsberechnung für die eingebauten GLSL-FunktionendFdx
,dFdy
undfwidth
angibt.
Eingebaute GLSL-Funktionen
Die folgenden neuen Funktionen können im GLSL-Shadercode 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
zurück, wobei lokale Differenzierung für das Eingabeargumentp
verwendet wird. dFdy()
-
Gibt die Ableitung in
y
zurück, wobei lokale Differenzierung für das Eingabeargumentp
verwendet wird. fwidth()
-
Gibt die Summe der absoluten Ableitung in
x
undy
zurück, wobei lokale Differenzierung für das Eingabeargumentp
verwendet wird. Das heißt,abs(dFdx(p)) + abs(dFdy(p))
.
dFdx()
und dFdy()
werden häufig verwendet, um die Filterbreite abzuschätzen, die zur Kantenglättung prozeduraler Texturen genutzt wird.
Beispiele
Aktivieren der Erweiterungen:
gl.getExtension("OES_standard_derivatives");
gl.getExtension("EXT_shader_texture_lod");
Shader-Code, der Artefakte vermeidet, wenn Texturkoordinaten umgebrochen werden:
<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 |
Browser-Kompatibilität
BCD tables only load in the browser