| Name |
| |
| NV_texture_border_clamp |
| |
| Name Strings |
| |
| GL_NV_texture_border_clamp |
| |
| Contributors |
| |
| Jussi Rasanen, NVIDIA |
| Greg Roth, NVIDIA |
| |
| Contact |
| |
| Greg Roth, NVIDIA (groth 'at' nvidia 'dot' com) |
| |
| Status |
| |
| Complete |
| |
| Version |
| |
| Date: Aug 24, 2012 |
| Revision: 2 |
| |
| Number |
| |
| OpenGL ES Extension #149 |
| |
| Dependencies |
| |
| OpenGL ES 2.0 is required. |
| |
| This extension is written against the OpenGL ES 2.0.25 |
| specification. |
| |
| OES_texture_3D affects the definition of this extension. |
| |
| Overview |
| |
| OpenGL ES provides only a single clamping wrap mode: CLAMP_TO_EDGE. |
| However, the ability to clamp to a constant border color can be |
| useful to quickly detect texture coordinates that exceed their |
| expected limits or to dummy out any such accesses with transparency |
| or a neutral color in tiling or light maps. |
| |
| This extension defines an additional texture clamping algorithm. |
| CLAMP_TO_BORDER_NV clamps texture coordinates at all mipmap levels |
| such that NEAREST and LINEAR filters of clamped coordinates return |
| only the constant border color. This does not add the ability for |
| textures to specify borders using glTexImage2D, but only to clamp |
| to a constant border value set using glTexParameter. |
| |
| New Procedures and Functions |
| |
| None. |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of TexParameteri, TexParameterf, |
| TexParameteriv, and TexParameterfv: |
| |
| TEXTURE_BORDER_COLOR_NV 0x1004 |
| |
| Accepted by the <param> parameter of TexParameteri and |
| TexParameterf, and by the <params> parameter of TexParameteriv and |
| TexParameterfv, and returned by the <params> parameter of |
| GetTexParameteriv and GetTexParameterfv when their <pname> parameter |
| is TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_WRAP_R_OES: |
| |
| CLAMP_TO_BORDER_NV 0x812D |
| |
| Additions to Chapter 3 of the OpenGL ES 2.0.25 Specification |
| (Rasterization) |
| |
| Modify Section 3.7.4 "Texture Parameters" |
| |
| Append to the end of the first paragraph: |
| |
| If the values for TEXTURE_BORDER_COLOR_NV are specified as integers, |
| they are converted to floating-point as described in section 2.1.2. |
| Each of the four values set by TEXTURE_BORDER_COLOR_NV is clamped to |
| lie in [0, 1]. |
| |
| Modify Table 3.10, edit the following lines: |
| |
| Name Type Legal Values |
| ============== ======= ==================== |
| TEXTURE_WRAP_S integer CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT, |
| CLAMP_TO_BORDER_NV |
| TEXTURE_WRAP_T integer CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT, |
| CLAMP_TO_BORDER_NV |
| TEXTURE_WRAP_R_OES integer CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT, |
| CLAMP_TO_BORDER_NV |
| |
| and add: |
| |
| Name Type Legal Values |
| ============== ======= ==================== |
| TEXTURE_BORDER_COLOR_NV 4 floats any 4 values in {0,1} |
| |
| Modify Section 3.7.6 "Texture Wrap Modes" |
| |
| Add after wrap mode CLAMP_TO_EDGE: |
| |
| Wrap Mode CLAMP_TO_BORDER_NV |
| |
| CLAMP_TO_BORDER_NV clamps texture coordinates at all mipmaps such |
| that the texture filter always samples the constant border color for |
| fragments whose corresponding texture coordinate is sufficiently far |
| outside the range [0, 1]. The color returned when clamping is |
| derived only from the constant border color. |
| |
| Texture coordinates are clamped to the range [min, max]. The minimum |
| value is defined as |
| |
| min = -1 / 2N |
| |
| where N is the size of the one-, two-, or three-dimensional texture |
| image in the direction of clamping. The maximum value is defined as |
| |
| max = 1 - min |
| |
| so that clamping is always symmetric about the [0,1] mapped range of |
| a texture coordinate. |
| |
| Modify Section 3.7.7 "Texture Minification" |
| |
| Add to the end of Subsection "Scale Factor and Level of Detail" |
| |
| If any of the selected Tijk or Tij in the above equations refer to a |
| border texel with i < 0, j < 0, k < 0, i >= ws, j >= hs, or k >= ds, |
| then the border values defined by TEXTURE_BORDER_COLOR_NV are used |
| instead of the unspecified value or values. If the texture contains |
| color components, the values of TEXTURE_BORDER_COLOR_NV are |
| interpreted as an RGBA color to match the texture's internal format |
| in a manner consistent with table 3.8. If the texture contains depth |
| components, the first component of TEXTURE_BORDER_COLOR_NV is |
| interpreted as a depth value. |
| |
| Modify Section 3.7.12 "Texture state" |
| |
| Modify the last two sentences of the section: |
| |
| Next, there are the two sets of texture properties; each consists |
| of the selected minification and magnification filters, the wrap |
| modes for s, t, and r, and the TEXTURE_BORDER_COLOR_NV. In the |
| initial state, the value assigned to TEXTURE_MIN_FILTER is NEAREST_- |
| MIPMAP_LINEAR, and the value for TEXTURE_MAG_FILTER is LINEAR. s, t, |
| and r wrap modes are all set to REPEAT, and TEXTURE_BORDER_COLOR_NV |
| is (0,0,0,0). |
| |
| Errors |
| |
| None. |
| |
| New State |
| |
| Modify table 6.8: |
| |
| Change the type information changes for these parameters. |
| Initial |
| Get Value Type Get Command Value Description Sec. |
| --------- ------ ----------- ------- ----------- ---- |
| TEXTURE_WRAP_S n x Z4 GetTexParameter REPEAT Texture wrap 3.7 |
| TEXTURE_WRAP_T n x Z4 GetTexParameter REPEAT Texture wrap 3.7 |
| TEXTURE_WRAP_R_OES n x Z4 GetTexParameter REPEAT Texture wrap 3.7 |
| |
| Add the following parameter: |
| |
| Get Value Type Get Command Value Description Sec. |
| --------- ------ ----------- ------- ----------- ---- |
| TEXTURE_BORDER_COLOR_NV 2+ x C GetTexParameter 0,0,0,0 Texture border 3.7 |
| |
| Dependencies on OES_texture_3D |
| |
| If OES_texture_3D is not supported, ignore all references to |
| three-dimensional textures and token TEXTURE_WRAP_R_OES as well |
| as any reference to r wrap modes. References to Tijk, k, and ds in |
| section 3.7.6 should also be removed. |
| |
| Issues |
| |
| None |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- -------- --------- ------------------------------------- |
| 4 04 Sep 2012 groth Restored langauge in 3.7.7 about texture borders |
| 3 29 Aug 2012 groth Minor copy edits. |
| 2 24 Aug 2012 groth Clarified constant color language and tex_3d dependency |
| 1 14 Aug 2012 groth Initial draft based off ARB_texture_border_clamp |
| |