зеркало из https://github.com/AvaloniaUI/angle.git
196 строки
6.4 KiB
Plaintext
196 строки
6.4 KiB
Plaintext
Name
|
|
|
|
EXT_texture_rg
|
|
|
|
Name Strings
|
|
|
|
GL_EXT_texture_rg
|
|
|
|
Contributors
|
|
|
|
Contributors to ARB_texture_rg, on which this extension is based
|
|
Kyle Haughey
|
|
Richard Schreyer
|
|
|
|
Contact
|
|
|
|
Benj Lipchak, Apple (lipchak 'at' apple.com)
|
|
|
|
Status
|
|
|
|
Complete
|
|
|
|
Version
|
|
|
|
Date: July 22, 2011
|
|
Revision: 3
|
|
|
|
Number
|
|
|
|
OpenGL ES Extension #103
|
|
|
|
Dependencies
|
|
|
|
Requires OpenGL ES 2.0.
|
|
|
|
Written based on the wording of the OpenGL ES 2.0.25 Full Specification
|
|
(November 2, 2010).
|
|
|
|
OES_texture_float affects the definition of this extension.
|
|
|
|
OES_texture_half_float affects the definition of this extension.
|
|
|
|
APPLE_framebuffer_multisample affects the definition of this extension.
|
|
|
|
Overview
|
|
|
|
Historically one- and two-component textures have been specified in OpenGL
|
|
ES using the luminance or luminance-alpha (L/LA) formats. With the advent
|
|
of programmable shaders and render-to-texture capabilities these legacy
|
|
formats carry some historical artifacts which are no longer useful.
|
|
|
|
For example, when sampling from such textures, the luminance values are
|
|
replicated across the color components. This is no longer necessary with
|
|
programmable shaders.
|
|
|
|
It is also desirable to be able to render to one- and two-component format
|
|
textures using capabilities such as framebuffer objects (FBO), but
|
|
rendering to L/LA formats is under-specified (specifically how to map
|
|
R/G/B/A values to L/A texture channels).
|
|
|
|
This extension adds new base internal formats for one-component RED and
|
|
two-component RG (red green) textures as well as sized RED and RG internal
|
|
formats for renderbuffers. The RED and RG texture formats can be used for
|
|
both texturing and rendering into with framebuffer objects.
|
|
|
|
New Procedures and Functions
|
|
|
|
None
|
|
|
|
New Tokens
|
|
|
|
Accepted by the <internalformat> parameter of TexImage2D and CopyTexImage2D,
|
|
and the <format> parameter of TexImage2D, TexSubImage2D, and ReadPixels:
|
|
|
|
RED_EXT 0x1903
|
|
RG_EXT 0x8227
|
|
|
|
Accepted by the <internalformat> parameter of RenderbufferStorage and
|
|
RenderbufferStorageMultisampleAPPLE:
|
|
|
|
R8_EXT 0x8229
|
|
RG8_EXT 0x822B
|
|
|
|
Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL ES Operation)
|
|
|
|
None
|
|
|
|
Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
|
|
|
|
(Add the following to Table 3.3: "TexImage2D and ReadPixels formats")
|
|
|
|
Format Name Element Meaning and Order Target Buffer
|
|
----------- ------------------------- -------------
|
|
RED_EXT R Color
|
|
RG_EXT R, G Color
|
|
|
|
(Add the following to Table 3.4: "Valid pixel format and type combinations")
|
|
(as modified by OES_texture_float and OES_texture_half_float)
|
|
|
|
Format Type Bytes per Pixel
|
|
----------- ------------------------- ---------------
|
|
RED_EXT FLOAT 4
|
|
RED_EXT HALF_FLOAT_OES 2
|
|
RED_EXT UNSIGNED_BYTE 1
|
|
RG_EXT FLOAT 8
|
|
RG_EXT HALF_FLOAT_OES 4
|
|
RG_EXT UNSIGNED_BYTE 2
|
|
|
|
(Add the following to Table 3.8: "Conversion from RGBA and depth pixel
|
|
components to internal texture")
|
|
|
|
Base Internal Format RGBA Internal Components
|
|
-------------------- ------ -------------------
|
|
RED_EXT R R
|
|
RG_EXT R,G R,G
|
|
|
|
(Modify Table 3.9: "CopyTexImage internal format/color buffer combinations")
|
|
|
|
Texture Format
|
|
Color Buffer A L LA R RG RGB RGBA
|
|
------------ - - -- - -- --- ----
|
|
A X
|
|
R X X
|
|
RG X X X
|
|
RGB X X X X
|
|
RGBA X X X X X X X
|
|
|
|
(Add the following to Table 3.12: "Correspondence of filtered texture
|
|
components to texture source color components")
|
|
|
|
Texture Base Texture source color
|
|
Internal Format C_s A_s
|
|
--------------- ------------- ------
|
|
RED_EXT (R_t, 0, 0) 1
|
|
RG_EXT (R_t, G_t, 0) 1
|
|
|
|
Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
|
|
Operations and the Framebuffer)
|
|
|
|
In section 4.3.1 "Reading Pixels", subsection "Obtaining Pixels from the
|
|
Framebuffer", modify the last sentence to read:
|
|
|
|
"If the framebuffer does not support G, B, or A values then the G, B, and A
|
|
values that are obtained are 0.0, 0.0, and 1.0 respectively."
|
|
|
|
In section 4.4.5 "Framebuffer Completeness", modify the last sentence of
|
|
the second paragraph to read:
|
|
|
|
"Color-renderable formats contain red, and possibly green, blue, and alpha
|
|
components; depth-renderable formats contain depth components; and
|
|
stencil-renderable formats contain stencil components."
|
|
|
|
(Add the following to Table 4.5: "Renderbuffer image formats, showing their
|
|
renderable type (color-, depth-, or stencil-renderable) and the number of
|
|
bits each format contains for color (R, G, B, A), depth (D), and stencil
|
|
(S) components")
|
|
|
|
Sized Internal Renderable Type R bits G bits B bits A bits D bits S bits
|
|
Format
|
|
-------------- ---------------- ------ ------ ------ ------ ------ ------
|
|
R8_EXT color-renderable 8
|
|
RG8_EXT color-renderable 8 8
|
|
|
|
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)
|
|
|
|
None
|
|
|
|
Dependencies on OES_texture_float
|
|
|
|
If OES_texture_float is not supported, then omit the rows of
|
|
Table 3.4 that have Type FLOAT.
|
|
|
|
Dependencies on OES_texture_half_float
|
|
|
|
If OES_texture_half_float is not supported, then omit the rows of
|
|
Table 3.4 that have Type HALF_FLOAT_OES.
|
|
|
|
Dependencies on APPLE_framebuffer_multisample
|
|
|
|
If APPLE_framebuffer_multisample is not supported, then all references to
|
|
RenderbufferStorageMultisampleAPPLE should be ignored.
|
|
|
|
Revision History
|
|
|
|
#1 February 22, 2011, khaughey
|
|
- initial version adapted from ARB_texture_rg.
|
|
#2 June 16, 2011, benj
|
|
- add interaction with APPLE_framebuffer_multisample
|
|
#3 July 22, 2011, benj
|
|
- rename from APPLE to EXT
|