Signatur
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()akzeptiertext.RGBA32F_EXTals internes Format.getFramebufferAttachmentParameter()akzeptiertext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXTund liefert z. B.gl.FLOAToderext.UNSIGNED_NORMALIZED_EXT.readPixels()darf mitgl.RGBA/gl.FLOATaus einem Float-Framebuffer in einFloat32Arraylesen.- 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
gl.getExtension("WEBGL_color_buffer_float") gibt das Erweiterungsobjekt mit den Konstanten zurück. Wird die Erweiterung nicht unterstützt, ist das Ergebnis null.