| Name |
| |
| EXT_color_buffer_float |
| |
| Name Strings |
| |
| GL_EXT_color_buffer_float |
| |
| Contributors |
| |
| OpenGL ES Working Group members |
| |
| Contact |
| |
| Mark Callow, HI Corp. (callow.mark 'at' artspark.co.jp) |
| |
| Notice |
| |
| ©2012 The Khronos Group Inc. |
| |
| Status |
| |
| Complete |
| |
| IP Status |
| |
| Graphics Properties Holdings (GPH, formerly SGI) owns US Patent |
| #6,650,327, issued November 18, 2003. GPH believes this patent |
| contains necessary IP for graphics systems implementing floating |
| point (FP) rasterization and FP framebuffer capabilities. |
| |
| GPH will not grant Khronos royalty-free use of this IP for use |
| in OpenGL ES, but will discuss licensing on RAND terms, on an |
| individual basis with companies wishing to use this IP in the |
| context of conformant OpenGL ES implementations. GPH does not |
| plan to make any special exemption for open source |
| implementations. |
| |
| See |
| https://www.khronos.org/files/ip-disclosures/opengl/SGI%20IP%20Disclosure%20Mar05_clean.pdf |
| for the full disclosure. |
| |
| Version |
| |
| Date: January 11th, 2013 |
| Revision: 5 |
| |
| Number |
| |
| OpenGL ES Extension #137 |
| |
| Dependencies |
| |
| Requires OpenGL ES 3.0. |
| |
| Written based on the wording of the OpenGL ES 3.0.1 Specification |
| (January 10th, 2013). |
| |
| Overview |
| |
| This extension allows a variety of floating point formats to be |
| rendered to via framebuffer objects. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 3 of the OpenGL ES 3.0 Specification |
| (Rasterization) |
| |
| 3.8.3 Texture Image Specification, unnumbered subsection "Required |
| Texture Formats", p. 126 |
| |
| Change the first two bullet items to the following: |
| |
| - Texture and renderbuffer color formats (see section 4.4.2). |
| - RGBA32F, RGBA32I, RGBA32UI, RGBA16F, RGBA16I, RGBA16UI, |
| RGBA8, RGBA8I, RGBA8UI, SRGB8_ALPHA8, RGB10_A2, RGB10_- |
| A2UI, RGBA4, and RGB5_A1. |
| - RGB8 and RGB565. |
| - R11F G11F B10F. |
| - RG32F, RG32I, RG32UI, RG16F, RG16I, RG16UI, RG8, RG8I, and |
| RG8UI. |
| - R32F, R32I, R32UI, R16F, R16I, R16UI, R8, R8I, and R8UI. |
| |
| - Texture-only color formats: |
| - RGBA8_SNORM. |
| - RGB32F, RGB32I, and RGB32UI. |
| - RGB16F, RGB16I, and RGB16UI. |
| - RGB8_SNORM, RGB8I, RGB8UI, and SRGB8. |
| - RGB9_E5. |
| - RG8_SNORM. |
| - R8_SNORM. |
| |
| Table 3.12, p. 128 & 129 |
| |
| Convert the dash under 'Color-renderable' to a 'check' for the |
| following internal formats: R16F, RG16F, RGBA16F, R32F, RG32F, |
| RGBA32F and R11F_G11F_B10F. |
| |
| Additions to Chapter 4 of the OpenGL ES 3.0 Specification (Per-Fragment |
| Operations and the Framebuffer) |
| |
| (changed lines marked with *; added lines marked with +) |
| |
| Chapter 4 Introduction, p. 167 |
| |
| Paragraph 5, sentence 3, p 168, insert "floating point" as shown: |
| "R, G, B, and A components may be represented as unsigned |
| * normalized fixed-point, floating point or signed or unsigned |
| integer values; ..." ^^^^^^^^^^^^^^ |
| |
| 4.1.7 Blending, p. 174 |
| |
| Modify paragraphs 3 & 4: |
| |
| * "If the color buffer is fixed-point, the components of the |
| source and destination values and blend factors are clamped |
| * to [0; 1] prior to evaluating the blend equation. If the color |
| + buffer is floating-point, no clamping occurs. The resulting four |
| + values are sent to the next operation. |
| |
| Blending applies only if the color buffer has a fixed-point or |
| * or floating-point format. If the color buffer has an integer |
| * format, proceed to the next operation. Furthermore, an |
| + INVALID_OPERATION error is generated by DrawArrays and the other |
| + drawing commands defined in section 2.8.3 if blending is enabled |
| + (see below) and any draw buffer has a 32-bit floating-point |
| + format." |
| |
| 4.2.3 Clearing the Buffers, p. 183 |
| |
| Modify second paragraph, inserting "floating point": |
| |
| " void ClearColor(float r, float g, float b, float a); |
| |
| * sets the clear value for fixed- and floating-point color buffers. |
| ..." ^^^^^^^^^^^^^^^^^^ |
| |
| 4.3.1 Reading Pixels, p. 186 |
| |
| In paragraph 4, beginning "Only two combinations of format |
| and type are accepted ...", after the sentence ending "... type |
| UNSIGNED_BYTE is accepted." insert the following sentence: |
| "For floating-point rendering surfaces, the combination |
| format RGBA and type FLOAT is accepted." |
| |
| 4.3.1 unnumbered subsection "Obtaining Pixels from the Framebuffer", |
| p. 188 |
| |
| Modify penultimate paragraph, p189, "If format is an integer ..." |
| |
| "If format is an integer format and the color buffer is not an |
| integer format; if the color buffer is an integer format and |
| * format is not an integer format; if format is an integer format |
| * and type is FLOAT, HALF_FLOAT, or UNSIGNED_INT_10F_11F_11F_REV; |
| + or if the color buffer is a floating-point format and type is |
| + not FLOAT, HALF FLOAT, or UNSIGNED_INT_10F_11F_11F_REV, the error |
| INVALID_OPERATION occurs." |
| |
| 4.3.1 unnumbered subsection "Conversion of RGBA values", p.190 |
| |
| Sole paragraph, sentence 3, insert "or floating point" as shown: |
| * "For an integer or floating point color buffer, the elements |
| are unmodified."^^^^^^^^^^^^^^^^^ |
| |
| 4.3.2 Copying Pixels, p192 |
| |
| Modify first error condition, at bottom of p193, "The read buffer |
| contains ..." to encompass floating-point buffers. |
| |
| * "- The read buffer contains fixed-point or floating-point values |
| * and any draw buffer contains neither fixed-point nor |
| * floating-point values." |
| |
| 4.4.2 Attaching Images to Framebuffer Objects, p. 197, unnumbered |
| subsection "Required Renderbuffer Formats", p. 200 |
| |
| In the last paragraph beginning "Implementations must support |
| creation ...", modify the final phrase to |
| |
| * "with the exception of signed and unsigned integer, RGBA16F, |
| + R32F, RG32F and RGBA32F formats. |
| |
| Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State |
| Requests) |
| |
| 6.1.15 Internal Format Queries, p. 237 |
| |
| P. 238, paragraph 8 after "Since multisampling is not supported |
| for signed and unsigned integer internal formats, the value of |
| NUM_SAMPLE_COUNTS will be zero for such formats.", insert new |
| one-sentence paragraph: |
| |
| "If <internalformat> is RGBA16F, R32F, RG32F, or RGBA32F, the |
| value of NUM_SAMPLE_COUNTS may be zero, or else the maximum |
| value in SAMPLES may be less than the value of MAX_SAMPLES." |
| |
| New Implementation Dependent State |
| |
| None |
| |
| Issues |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- -------- --------- ----------------------------------------- |
| 1 10/16/12 markc Initial version |
| 2 10/18/12 markc Referenced preliminary version of OpenGL |
| ES 3.0.1 specification and updated page |
| numbers. |
| 3 11/21/12 markc Corrected IP status. |
| 4 01/09/13 markc Changed date of referenced OpenGL ES |
| 3.0.1 specification. Made minor language |
| simplification. |
| 5 01/11/13 markc Changed date to release version of |
| OpenGL ES 3.0.1 specification. |
| Clarified change to "Required |
| renderbuffer formats" section. |
| |
| # vim:ai:ts=4:sts=4:sw=4:expandtab:textwidth=70 |