Start · Sprachen · JavaScript · Referenz · WEBGL_color_buffer_float extension

WEBGL_color_buffer_float extension

Schnittstelle

WebGL-1-Erweiterung, mit der man in 32-Bit-Gleitkomma-Farbpuffer (<code>RGBA32F</code>) rendern und Float-Pixel zurücklesen kann.

seit JavaScript WebGL 1 Erweiterung – Chrome, Firefox, Safari, Edg Kategorie: webapi

Signatur

interface WEBGL_color_buffer_float

Beschreibung

WEBGL_color_buffer_float ist eine Erweiterung für WebGL 1. Sie macht 32-Bit-Gleitkommaformate farbrenderbar: Eine Float-Textur oder ein Float-Renderbuffer lässt sich dann als Farbanhang (COLOR_ATTACHMENT0) eines Framebuffers verwenden. Mit OES_texture_float allein kann man zwar Float-Texturen anlegen und im Shader auslesen. Als Renderziel meldet so ein Framebuffer aber oft FRAMEBUFFER_INCOMPLETE_ATTACHMENT oder FRAMEBUFFER_UNSUPPORTED.

Aktiviert wird die Erweiterung mit gl.getExtension("WEBGL_color_buffer_float"). Das zurückgegebene Objekt hat keine Methoden, sondern nur Konstanten. Außerdem ändert es das Verhalten bestehender Methoden:

  • renderbufferStorage() akzeptiert ext.RGBA32F_EXT als internes Format.
  • getFramebufferAttachmentParameter() akzeptiert ext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT und liefert z. B. gl.FLOAT oder ext.UNSIGNED_NORMALIZED_EXT.
  • readPixels() darf mit gl.RGBA/gl.FLOAT aus einem Float-Framebuffer in ein Float32Array lesen.
  • Werte in Float-Anhängen werden weder beim Schreiben im Fragment-Shader noch bei clearColor() auf den Bereich [0, 1] begrenzt.

Typische Einsatzfälle sind GPGPU-Berechnungen wie Partikelsimulationen, Physik oder Ping-Pong-Rendering. Dazu kommen HDR-Rendering mit anschließendem Tone-Mapping, Deferred Shading mit präzisen G-Buffern und Shadow-Maps mit hoher Genauigkeit. In WebGL 2 gibt es diese Erweiterung nicht; dort übernimmt EXT_color_buffer_float diese Aufgabe.

Parameter

Name Typ Default Beschreibung
$RGBA32F_EXT GLenum (0x8814) Internes Format für renderbufferStorage(): vier Kanäle mit je 32-Bit-Float.
$FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT GLenum (0x8211) Abfrage-Parameter für getFramebufferAttachmentParameter(). Liefert den Komponententyp eines Anhangs.
$UNSIGNED_NORMALIZED_EXT GLenum (0x8C17) Möglicher Rückgabewert der Komponententyp-Abfrage: normalisierte Festkommawerte (z. B. bei RGBA8/UNSIGNED_BYTE).

Rückgabewert

Typ
WEBGL_color_buffer_float | null
Beschreibung
gl.getExtension("WEBGL_color_buffer_float") gibt das Erweiterungsobjekt mit den Konstanten zurück. Wird die Erweiterung nicht unterstützt, ist das Ergebnis null.