| Name |
| |
| OES_vertex_type_10_10_10_2 |
| |
| Name Strings |
| |
| GL_OES_vertex_type_10_10_10_2 |
| |
| Contributors |
| |
| Daniel Ginsburg |
| Gary King |
| Petri Kero |
| Aaftab Munshi |
| Acorn Pooley |
| Mark Callow |
| Ben Bowman |
| |
| Contact |
| |
| Aaftab Munshi (amunshi@apple.com) |
| |
| Notice |
| |
| Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at |
| http://www.khronos.org/registry/speccopyright.html |
| |
| Specification Update Policy |
| |
| Khronos-approved extension specifications are updated in response to |
| issues and bugs prioritized by the Khronos OpenGL ES Working Group. For |
| extensions which have been promoted to a core Specification, fixes will |
| first appear in the latest version of that core Specification, and will |
| eventually be backported to the extension document. This policy is |
| described in more detail at |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php |
| |
| IP Status |
| |
| None. |
| |
| Status |
| |
| Ratified by the Khronos BOP, March 20, 2008. |
| |
| Version |
| |
| Last Modified Date: July 17, 2007 |
| |
| Number |
| |
| OpenGL ES Extension #46 |
| |
| Dependencies |
| |
| This extension is written against the OpenGL ES 2.0 specification |
| |
| Overview |
| |
| This extension adds the following data formats: |
| |
| Two new vertex attribute data formats: a signed 10.10.10.2 and an unsigned |
| 10.10.10.2 vertex data format. These vertex data formats describe a 3- or 4-tuple |
| stream which can be used to store normals or other attributes in a quantized |
| form. Normals, tangents, binormals and other vertex attributes can often be specified |
| at reduced precision without introducing noticeable artifacts, reducing the |
| amount of memory and memory bandwidth they consume. |
| |
| Issues |
| |
| 1. Should VertexAttrib{1234}[v] functions take UNSIGNED_INT_10_10_10_2_OES and |
| INT_10_10_10_2_OES data formats? |
| |
| RESOLUTION: No. |
| |
| There is no reason to support this, as these functions are not performance or memory |
| footprint critical. It is much more important that the vertex data specified using |
| vertex arrays be able to support these new formats. In addition, we would need a |
| new data type suffix (similar to "f" for float, "x" for fixed) to denote these two |
| new data types which is not desirable. |
| |
| 2. Should unsigned 10.10.10.2 RGBA and unsigned 10.10.10 RGB texture formats be |
| supported by this extension? |
| |
| RESOLUTION: No. |
| |
| This extension should focus on enabling 10.10.10{.2} vertex data formats. |
| The 10.10.10{.2} texture formats should be a separate extension. |
| |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <type> parameter of VertexAttribPointer |
| |
| UNSIGNED_INT_10_10_10_2_OES 0x8DF6 |
| INT_10_10_10_2_OES 0x8DF7 |
| |
| Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation) |
| |
| Modifications to section 2.8 (Vertex Arrays) |
| |
| Add INT_10_10_10_2_OES and UNSIGNED_INT_10_10_10_2_OES as a valid <type> value in Table 2.4. |
| |
| Add a new section 2.8.1 - UNSIGNED_INT_10_10_10_2_OES and INT_10_10_10_2_OES vertex data formats |
| |
| UNSIGNED_INT_10_10_10_2_OES and INT_10_10_10_2_OES vertex data formats describe packed |
| 3- or 4- component formats stored in a 32-bit word. These components are expanded to |
| (x, y, z, 1.0) if <size> = 3, or (x, y, z, w) if <size> = 4. |
| |
| For UNSIGNED_INT_10_10_10_2_OES vertex data format, the x, y and z components are |
| represented as a 10-bit unsigned integer value and the w component is represented as a |
| 2-bit unsigned integer value. |
| |
| For INT_10_10_10_2_OES vertex data format, the x, y and z components are represented |
| as a 10-bit signed two's complement integer value and the w component is represented |
| as a 2-bit signed two's complement integer value. |
| |
| The <normalized> value is used to indicate whether to normalize the data to |
| [0, 1] (for unsigned type) or [-1, 1] (for signed type). |
| |
| The following figure describes how these components are laid out in a 32-bit word. |
| |
| 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
| ------------------------------------------------------------------------------------- |
| | x | y | z | w | |
| ------------------------------------------------------------------------------------- |
| |
| Calls to VertexAttribPointer with <type> of INT_10_10_10_2_OES and |
| UNSIGNED_INT_10_10_10_2_OES can only be made with <size> = 3 or 4. |
| <size> values other than 3 or 4 will return an INVALID_VALUE error. |
| |
| |
| Modifications to table 2.9 (Component conversions) |
| |
| Add the following entries: |
| |
| GLType Conversion of (x, y, z) Conversion of w |
| ------- ---------------------- =============== |
| INT_10_10_10_2_OES (2c + 1)/(2^10 - 1) (2c + 1)/(2^2 - 1) |
| UNSIGNED_10_10_10_2_OES c / (2^10 - 1) c / (2^2 - 1) |
| |
| Errors |
| |
| The error INVALID_VALUE is generated if glVertexAttribPointer is called |
| with <type> = UNSIGNED_INT_10_10_10_2_OES or INT_10_10_10_2_OES and the |
| <size> parameter is not set to 3 or 4. |
| |
| New State |
| |
| None |
| |
| Revision History |
| |
| March 2, 2006 Aaftab Munshi First draft of extension. |
| |
| March 3, 2006 Aaftab Munshi Changed DEC3N, UDEC3N to INT_10_10_10_2 |
| and UNSIGNED_INT_10_10_10_2 resp. |
| use <normalize> parameter to mark |
| whether data is to be normalized or not. |
| |
| Changed extension name to GL_ATI_vertex_type_10_10_10_2 |
| |
| Changed error returned from INVALID_ENUM |
| to INVALID_VALUE if <size> != 3 |
| |
| March 3, 2006 Aaftab Munshi Added Contributors section. |
| |
| April 10,2006 Aaftab Munshi Support for *_10_10_10_2 as a texture format |
| |
| June 3, 2006 Aaftab Munshi Renamed to use OES suffixes. |
| |
| June 14, 2006 Aaftab Munshi Allow 10_10_10_2 to be (x,y,z,1) or (x,y,z,w) |
| when used as a vertex attribute data format. |
| |
| Oct 20, 2006 Aaftab Munshi Fixed errors to say 3- or 4- tuples instead |
| of just 3- tuples. |
| |
| Jun 13, 2007 Aaftab Munshi Removed 10.10.10{.2} texture formats. |
| |
| Jul 10, 2007 Aaftab Munshi Clarified that each component is a signed 2's complement |
| integer or unsigned integer value. |
| Shorten the extension name from OES_vertex_data_type_10_10_10_2. |
| |
| Jul 17, 2007 Aaftab Munshi Corrections to section 2.8 |
| |
| |
| |