| Name |
| |
| SGIX_texture_scale_bias |
| |
| Name Strings |
| |
| GL_SGIX_texture_scale_bias |
| |
| Version |
| |
| $Date: 1997/02/26 03:36:38 $ $Revision: 1.9 $ |
| |
| Number |
| |
| 56 |
| |
| Dependencies |
| |
| EXT_texture |
| EXT_texture3D |
| EXT_texture_object |
| |
| Overview |
| |
| This extension adds scale, bias, and clamp to [0, 1] operations to the |
| texture pipeline. |
| These operations are applied to the filtered result of a texture lookup, |
| before that result is used in the texture environment equations and |
| before the texture color lookup table of SGI_texture_color_table, |
| if that extension exists. |
| These operations are distinct from the scale, bias, and clamp operations |
| that appear in the SGI_color_table extension, which are used to |
| define a color lookup table. |
| |
| Scale and bias operations on texels can be used to better utilize the |
| color resolution of a particular texture internal format (see EXT_texture). |
| |
| Issues |
| |
| * still missing: GLX protocol, registry number |
| |
| * RE and IMPACT do not have hardware support for this extension. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <pname> parameters of TexParameterfv, TexParameteriv, |
| and GetTexParameter: |
| |
| POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 |
| POST_TEXTURE_FILTER_SCALE_SGIX 0x817A |
| |
| Accepted by the <pname> parameters of GetBooleanv, GetDoublev, GetFloatv, |
| and GetIntegerv: |
| |
| POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B |
| POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| A scale or bias is specified using TexParameterfv or |
| TexParameteriv with a <pname> of either POST_TEXTURE_FILTER_SCALE_SGIX |
| or POST_TEXTURE_FILTER_BIAS_SGIX and with <params> set to an array of |
| four values. The scale or bias values can be queried using |
| GetTexParameterfv or GetTexParameteriv. |
| |
| The scale, bias, and clamp operations are applied, in that order, |
| directly before the texture environment equations, or, if the |
| SGI_texture_color_table extension exists, directly before the |
| texture color lookup table. |
| The four values for scale (or bias) correspond to the R, G, B, |
| and A scale (or bias) factors. |
| These are applied to the corresponding texture components, Rt, Gt, |
| Bt, and At, as denoted in the EXT_texture extension. |
| Following the scale and bias is a clamp to [0, 1]. |
| |
| The scale, bias, and clamp operations are effectively disabled by |
| setting the four scale values to 1 and the four bias values to 0. |
| There is no specific enable or disable token for this extension. |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the |
| Frame Buffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| The specification for "EXT_texture_object" describes the state that |
| comprises a texture object. Here it is rewritten to include the |
| scale and bias state: |
| |
| "A texture object comprises the image arrays, priority, border color, |
| filter modes, and wrap modes that are associated with that object. More |
| explicitly, the state list |
| |
| TEXTURE, |
| TEXTURE_PRIORITY_EXT |
| TEXTURE_RED_SIZE, |
| TEXTURE_GREEN_SIZE, |
| TEXTURE_BLUE_SIZE, |
| TEXTURE_ALPHA_SIZE, |
| TEXTURE_LUMINANCE_SIZE, |
| TEXTURE_INTENSITY_SIZE, |
| TEXTURE_WIDTH, |
| TEXTURE_HEIGHT, |
| TEXTURE_DEPTH_EXT, |
| TEXTURE_BORDER, |
| TEXTURE_COMPONENTS, |
| TEXTURE_BORDER_COLOR, |
| TEXTURE_MIN_FILTER, |
| TEXTURE_MAG_FILTER, |
| TEXTURE_WRAP_S, |
| TEXTURE_WRAP_T, |
| TEXTURE_WRAP_R_EXT, |
| POST_TEXTURE_FILTER_BIAS_SGIX, |
| POST_TEXTURE_FILTER_SCALE_SGIX |
| |
| composes a single texture object." |
| |
| Since an implementation may have a limited range for the values of scale |
| and bias (e.g. due to hardware constraints), this range can be queried. |
| The scale or bias range is obtained using GetFloatv (or other Get) with a |
| <value> of POST_TEXTURE_FILTER_SCALE_RANGE_SGIX or |
| POST_TEXTURE_FILTER_BIAS_RANGE_SGIX, respectively. An array of two floats |
| is returned. The first is the minimum value and the second is the maximum |
| value. |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| GLX Protocol |
| |
| XXX |
| |
| Dependencies on EXT_texture |
| |
| This extension refers to texture components as Rt, Gt, Bt, and At, |
| as denoted in the EXT_texture extension. |
| |
| Dependencies on EXT_texture3D |
| |
| If EXT_texture3D is not implemented, references to it should be deleted. |
| |
| Dependencies on EXT_texture_object |
| |
| As described above, the scale and bias state is included as part of the |
| texture object state. |
| If EXT_texture_object is not implemented, references to it should be deleted. |
| |
| Errors |
| |
| POST_TEXTURE_FILTER_BIAS_SGIX and POST_TEXTURE_FILTER_SCALE_SGIX are added |
| to the list of <pname> parameters that are accepted by TexParameter[fi]v |
| and GetTexParameter[fi]v. POST_TEXTURE_FILTER_BIAS_RANGE_SGIX and |
| POST_TEXTURE_FILTER_SCALE_RANGE_SGIX are added to the list of <value> |
| parameters that are accepted by Get. |
| |
| New State |
| |
| Get Value Get Command Type Initial Value Attribute |
| --------- ----------- ---- ------------- --------- |
| |
| POST_TEXTURE_FILTER_BIAS_SGIX GetTexParameterfv n x 4 x R (0,0,0,0) texture |
| POST_TEXTURE_FILTER_SCALE_SGIX GetTexParameterfv n x 4 x R (1,1,1,1) texture |
| |
| Note: The "Type" column shows "n x ..." since this state will appear |
| in each of "n" texture objects defined by EXT_texture_object. |
| If EXT_texture_object is not implemented, then this state will appear |
| for each texture dimension (e.g. TEXTURE_1D, TEXTURE_2D, ...). |
| |
| New Implementation Dependent State |
| |
| Get Value Get Command Type Minimum Value Attribute |
| --------- ----------- ---- ------------- --------- |
| |
| POST_TEXTURE_FILTER_BIAS_RANGE_SGIX GetFloatv 2 x R (0,1) - |
| POST_TEXTURE_FILTER_SCALE_RANGE_SGIX GetFloatv 2 x R (0,1) - |
| |
| Note: The "Minimum Value" for POST_TEXTURE_FILTER_BIAS_RANGE_SGIX and |
| POST_TEXTURE_FILTER_SCALE_RANGE_SGIX is listed as a range, which might seem |
| confusing. What is meant is that an implementation will support at least |
| the range listed. |