blob: 968b28d1003a3c071136eae648a101f163b1ef8f [file] [log] [blame]
Geoff Lang632192d2013-10-04 13:40:46 -04001Name
2
3 EXT_texture_rg
4
5Name Strings
6
7 GL_EXT_texture_rg
8
9Contributors
10
11 Contributors to ARB_texture_rg, on which this extension is based
12 Kyle Haughey
13 Richard Schreyer
14
15Contact
16
17 Benj Lipchak, Apple (lipchak 'at' apple.com)
18
19Status
20
21 Complete
22
23Version
24
25 Date: July 22, 2011
26 Revision: 3
27
28Number
29
30 OpenGL ES Extension #103
31
32Dependencies
33
34 Requires OpenGL ES 2.0.
35
36 Written based on the wording of the OpenGL ES 2.0.25 Full Specification
37 (November 2, 2010).
38
39 OES_texture_float affects the definition of this extension.
40
41 OES_texture_half_float affects the definition of this extension.
42
43 APPLE_framebuffer_multisample affects the definition of this extension.
44
45Overview
46
47 Historically one- and two-component textures have been specified in OpenGL
48 ES using the luminance or luminance-alpha (L/LA) formats. With the advent
49 of programmable shaders and render-to-texture capabilities these legacy
50 formats carry some historical artifacts which are no longer useful.
51
52 For example, when sampling from such textures, the luminance values are
53 replicated across the color components. This is no longer necessary with
54 programmable shaders.
55
56 It is also desirable to be able to render to one- and two-component format
57 textures using capabilities such as framebuffer objects (FBO), but
58 rendering to L/LA formats is under-specified (specifically how to map
59 R/G/B/A values to L/A texture channels).
60
61 This extension adds new base internal formats for one-component RED and
62 two-component RG (red green) textures as well as sized RED and RG internal
63 formats for renderbuffers. The RED and RG texture formats can be used for
64 both texturing and rendering into with framebuffer objects.
65
66New Procedures and Functions
67
68 None
69
70New Tokens
71
72 Accepted by the <internalformat> parameter of TexImage2D and CopyTexImage2D,
73 and the <format> parameter of TexImage2D, TexSubImage2D, and ReadPixels:
74
75 RED_EXT 0x1903
76 RG_EXT 0x8227
77
78 Accepted by the <internalformat> parameter of RenderbufferStorage and
79 RenderbufferStorageMultisampleAPPLE:
80
81 R8_EXT 0x8229
82 RG8_EXT 0x822B
83
84Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL ES Operation)
85
86 None
87
88Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
89
90 (Add the following to Table 3.3: "TexImage2D and ReadPixels formats")
91
92 Format Name Element Meaning and Order Target Buffer
93 ----------- ------------------------- -------------
94 RED_EXT R Color
95 RG_EXT R, G Color
96
97 (Add the following to Table 3.4: "Valid pixel format and type combinations")
98 (as modified by OES_texture_float and OES_texture_half_float)
99
100 Format Type Bytes per Pixel
101 ----------- ------------------------- ---------------
102 RED_EXT FLOAT 4
103 RED_EXT HALF_FLOAT_OES 2
104 RED_EXT UNSIGNED_BYTE 1
105 RG_EXT FLOAT 8
106 RG_EXT HALF_FLOAT_OES 4
107 RG_EXT UNSIGNED_BYTE 2
108
109 (Add the following to Table 3.8: "Conversion from RGBA and depth pixel
110 components to internal texture")
111
112 Base Internal Format RGBA Internal Components
113 -------------------- ------ -------------------
114 RED_EXT R R
115 RG_EXT R,G R,G
116
117 (Modify Table 3.9: "CopyTexImage internal format/color buffer combinations")
118
119 Texture Format
120 Color Buffer A L LA R RG RGB RGBA
121 ------------ - - -- - -- --- ----
122 A X
123 R X X
124 RG X X X
125 RGB X X X X
126 RGBA X X X X X X X
127
128 (Add the following to Table 3.12: "Correspondence of filtered texture
129 components to texture source color components")
130
131 Texture Base Texture source color
132 Internal Format C_s A_s
133 --------------- ------------- ------
134 RED_EXT (R_t, 0, 0) 1
135 RG_EXT (R_t, G_t, 0) 1
136
137Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
138Operations and the Framebuffer)
139
140 In section 4.3.1 "Reading Pixels", subsection "Obtaining Pixels from the
141 Framebuffer", modify the last sentence to read:
142
143 "If the framebuffer does not support G, B, or A values then the G, B, and A
144 values that are obtained are 0.0, 0.0, and 1.0 respectively."
145
146 In section 4.4.5 "Framebuffer Completeness", modify the last sentence of
147 the second paragraph to read:
148
149 "Color-renderable formats contain red, and possibly green, blue, and alpha
150 components; depth-renderable formats contain depth components; and
151 stencil-renderable formats contain stencil components."
152
153 (Add the following to Table 4.5: "Renderbuffer image formats, showing their
154 renderable type (color-, depth-, or stencil-renderable) and the number of
155 bits each format contains for color (R, G, B, A), depth (D), and stencil
156 (S) components")
157
158 Sized Internal Renderable Type R bits G bits B bits A bits D bits S bits
159 Format
160 -------------- ---------------- ------ ------ ------ ------ ------ ------
161 R8_EXT color-renderable 8
162 RG8_EXT color-renderable 8 8
163
164Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions)
165
166 None
167
168Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
169Requests)
170
171 None
172
173Dependencies on OES_texture_float
174
175 If OES_texture_float is not supported, then omit the rows of
176 Table 3.4 that have Type FLOAT.
177
178Dependencies on OES_texture_half_float
179
180 If OES_texture_half_float is not supported, then omit the rows of
181 Table 3.4 that have Type HALF_FLOAT_OES.
182
183Dependencies on APPLE_framebuffer_multisample
184
185 If APPLE_framebuffer_multisample is not supported, then all references to
186 RenderbufferStorageMultisampleAPPLE should be ignored.
187
188Revision History
189
190 #1 February 22, 2011, khaughey
191 - initial version adapted from ARB_texture_rg.
192 #2 June 16, 2011, benj
193 - add interaction with APPLE_framebuffer_multisample
194 #3 July 22, 2011, benj
195 - rename from APPLE to EXT