Start · Sprachen · JavaScript · Referenz · WEBGL_depth_texture extension

WEBGL_depth_texture extension

Schnittstelle

WebGL-1-Erweiterung, mit der sich 2D-Texturen im Format <code>DEPTH_COMPONENT</code> und <code>DEPTH_STENCIL</code> anlegen und als Tiefen- bzw. Tiefen-Stencil-Anhang eines Framebuffers nutzen lassen.

seit JavaScript WebGL 1 (Erweiterung); in WebGL 2 fester Bestandte Kategorie: webapi

Signatur

interface WEBGL_depth_texture

Beschreibung

WEBGL_depth_texture erweitert einen WebGLRenderingContext (WebGL 1) um Tiefentexturen. Ohne die Erweiterung lassen sich Tiefeninformationen nur in einem WebGLRenderbuffer ablegen, und aus dem kann kein Shader lesen. Mit der Erweiterung schreibt die GPU den Tiefenpuffer direkt in eine Textur. Diese Textur tastest du in einem späteren Render-Durchgang wie jede andere Textur mit texture2D() ab.

Typische Einsatzfälle sind Shadow Mapping, Deferred Shading, SSAO, Tiefenunschärfe (Depth of Field), weiche Partikel und Nebel, der aus der Szenentiefe berechnet wird. Das Erweiterungsobjekt holst du mit gl.getExtension("WEBGL_depth_texture"). Unterstützt der Browser die Erweiterung nicht, gibt der Aufruf null zurück. Schon der erfolgreiche Aufruf schaltet die neuen Formate frei.

Ist die Erweiterung aktiv, akzeptiert texImage2D() diese Kombinationen (in WebGL 1 müssen internalformat und format gleich sein):

  • gl.DEPTH_COMPONENT mit type = gl.UNSIGNED_SHORT (16 Bit) oder gl.UNSIGNED_INT (meist 24 oder 32 Bit)
  • gl.DEPTH_STENCIL mit type = ext.UNSIGNED_INT_24_8_WEBGL (24 Bit Tiefe und 8 Bit Stencil)

Die fertige Textur hängst du mit framebufferTexture2D() an gl.DEPTH_ATTACHMENT bzw. gl.DEPTH_STENCIL_ATTACHMENT an. Die Erweiterung stellt genau eine eigene Konstante bereit: UNSIGNED_INT_24_8_WEBGL (0x84FA).

Parameter

Name Typ Default Beschreibung
$UNSIGNED_INT_24_8_WEBGL GLenum (0x84FA) Konstante des Erweiterungsobjekts. Wird als type in texImage2D() zusammen mit gl.DEPTH_STENCIL verwendet: 24 Bit Tiefe und 8 Bit Stencil, gepackt in 32 Bit.

Rückgabewert

Typ
WEBGL_depth_texture | null
Beschreibung
gl.getExtension("WEBGL_depth_texture") gibt das Erweiterungsobjekt zurück oder null, wenn die Erweiterung nicht verfügbar ist oder ein WebGL-2-Kontext verwendet wird.