231 lines
7.3 KiB
Plaintext
231 lines
7.3 KiB
Plaintext
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
|