Name SGIX_texture_range Name Strings GL_SGIX_texture_range Version $Date: 1999/06/24 02:20:36 $ $Revision: 1.4 $ Number 181 Dependencies OpenGL 1.2 is required. SGI_color_range is required SGIS_texture4D affects the definition of this extension Overview This extension defines new internal formats for the storage of signed texture images, as well as extended range and precision texture images. IP Status Silicon Graphics has filed for patent protection for some of the techniques described in this extension document. Issues * Should the fact that the numeric type is different create new base formats to better classify this difference? Also this might make sense if there were more than one internal extended-range component resolutions or types in a given system. - Yes. New base formats added to spec. * Don't want to get extended-range when we don't want it - With new base formats, the user explicitly requests extended-range or signed internal formats, either sized or not. * TLUT clamping (clamped to [0, 1]) - Since the texture color lookup section says that it acts as in section 3.6.3, for color table lookups, and since that section says that the color is first clamped to [0, 1], then everything should be fine. * Do we want to make the fact that there are floating-point formats visible at the API level? - Not in this spec. In any future spec that defines the floating-point formats and their API, we probably should add a query for exp, mant, sign bits per internal format. * Since Bali won't have 4D textures, should we take out references to it in this spec? - No. * OK to add tokens for formats not supported by Bali, for completeness? - Moot point, since we have none. We'll add them as we decide to implement hardware that uses them. * Since we're not defining the explicit bit representation of the format, does it still make sense to define sized formats? Or should we wait until the floating-point formats are defined to put out sized enumerants? - Keep the sized formats in this spec. * It is often assumed in OpenGL that texture values are in the range [0, 1]. For instance, in the detail texture extension, the filtered detail texture color values are scaled by 2 and then have 1 subtracted to generate a number in the [-1, 1] range. What should happen when the texture format can support values in the [-1, 1] range, then? Should the GL still do the scale and bias, or should it just pass the texture value through? - Still do the scale and bias. This avoids either a) breaking previous applications by changing their behavior or b) creating hardware that does calculations both with and without the scale and bias. * Which of the Section 3.8 alterations should be in this spec, as opposed to the color_range? Which color clamping operations should be based upon the texture internal format, versus the framebuffer format? - The color clampings controlled by this spec should be the: a) Clamping of downloaded texture values. b) Clamping of the result of the texture filter operation. Both are clampings based upon the texture internal format. All other color clamps are based upon the framebuffer format, including incoming and outgoing colors of the texture environment operation. * Texture environment clamping is made stickier with multitexturing. Should the environment function clamp its input values? Its output values? Should it clamp based upon its associated texture's internal format, or based upon the framebuffer format? - See above. All incoming colors, fragment color, texture color, etc., and the outgoing color, are clamped based upon the framebuffer format. * For queries of the min & max component values, what should be returned if the component doesn't exist in the texture, e.g., MIN_RED_SGIS in an intensity texture or MAX_INTENSITY_SGIS in an RGBA texture. And what about alpha, should it be treated differently since it's implied in non-alpha textures? Should we have the new INTENSITY and LUMINANCE tokens at all, or should we query the red and/or alpha components' min and max values? - If a queried component doesn't exist in the format, both the min and max are returned as 0, and no error condition is set. Because of this, we need the INTENSITY and LUMINANCE tokens. * What about ALPHA, in textures that don't have it, since it ususally is an implied 1, instead of an implied 0? - For now, as above, min & max are returned as 0. Since the user has requested an alpha-free texture format, one would hope they would be smart enought to not then query the available alpha range. One would hope. New Procedures and Functions None New Tokens Accepted by the parameter of TexImage1D, TexImage2D, TexImage3DEXT, TexImage4DSGIS, CopyTexImage1D, and CopyTexImage2D: RGB_SIGNED_SGIX 0x85E0 RGBA_SIGNED_SGIX 0x85E1 ALPHA_SIGNED_SGIX 0x85E2 LUMINANCE_SIGNED_SGIX 0x85E3 INTENSITY_SIGNED_SGIX 0x85E4 LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 RGB16_SIGNED_SGIX 0x85E6 RGBA16_SIGNED_SGIX 0x85E7 ALPHA16_SIGNED_SGIX 0x85E8 LUMINANCE16_SIGNED_SGIX 0x85E9 INTENSITY16_SIGNED_SGIX 0x85EA LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB RGB_EXTENDED_RANGE_SGIX 0x85EC RGBA_EXTENDED_RANGE_SGIX 0x85ED ALPHA_EXTENDED_RANGE_SGIX 0x85EE LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 RGB16_EXTENDED_RANGE_SGIX 0x85F2 RGBA16_EXTENDED_RANGE_SGIX 0x85F3 ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 Accepted by the parameter of of GetTexLevelParameterfv and GetTexLevelParameteriv: MIN_LUMINANCE_SGIS 0x85F8 MAX_LUMINANCE_SGIS 0x85F9 MIN_INTENSITY_SGIS 0x85FA MAX_INTENSITY_SGIS 0x85FB Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) None Additions to Chapter 3 of the 1.2 Specification (Rasterization) The following is added to Section 3.8.1: "... just before final conversion. Each R, G, B, and A value so generated is clamped to [min, max]. The minimum is implementation- dependent for extended range and precision internal formats, but at most 0. It is -1 for signed internal formats, and is 0 for all other formats. The maximum is implementation-dependent for extended range and precision formats, but is at least 1, and is 1 for all other formats. The following is added to Table 3.16: Sized Base R G B A L I Internal Format Internal Format Bits Bits Bits Bits Bits Bits --------------- ----------------------------------- ---- ---- ---- ---- ---- ---- RGB16_SIGNED_SGIX RGB_SIGNED_SGIX 16 16 16 RGBA16_SIGNED_SGIX RGBA_SIGNED_SGIX 16 16 16 16 ALPHA16_SIGNED_SGIX ALPHA_SIGNED_SGIX 16 LUMINANCE16_SIGNED_SGIX LUMINANCE_SIGNED_SGIX 16 INTENSITY16_SIGNED_SGIX INTENSITY_SIGNED_SGIX 16 LUMINANCE16_ALPHA16_SIGNED_SGIX LUMINANCE_ALPHA_SIGNED_SGIX 16 16 RGB16_EXTENDED_RANGE_SGIX RGB_EXTENDED_RANGE_SGIX 16 16 16 RGBA16_EXTENDED_RANGE_SGIX RGBA_EXTENDED_RANGE_SGIX 16 16 16 16 ALPHA16_EXTENDED_RANGE_SGIX ALPHA_EXTENDED_RANGE_SGIX 16 LUMINANCE16_EXTENDED_RANGE_SGIX LUMINANCE_EXTENDED_RANGE_SGIX 16 INTENSITY16_EXTENDED_RANGE_SGIX INTENSITY_EXTENDED_RANGE_SGIX 16 LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 16 16 The following is added to Section 3.8.3: "... values to floating point. Each of the four values set by TEXTURE_BORDER_COLOR is clamped to lie in [min, max], where min and max are based upon the internal format of the image in level-of-detail 0, as specified in section 3.8.1" Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the 1.2 Specification (Special Functions) None Additions to Chapter 6 of the 1.2 Specification (State and State Requests) The following is added to Section 6.1.3: "...when the image array was defined. Queries of MIN_RED_SGIS, MAX_RED_SGIS, MIN_GREEN_SGIS, MAX_GREEN_SGIS, MIN_BLUE_SGIS, MAX_BLUE_SGIS, MIN_ALPHA_SGIS, MAX_ALPHA_SGIS, MIN_LUMINANCE_SGIS, MAX_LUMINANCE_SGIS, MIN_INTENSITY_SGIS, and MAX_INTENSITY_SGIS return the minimum and maximum expressable values of the internal format of the image. Queries of TEXTURE_WIDTH ..." Additions to the GLX Specification None Dependencies on SGIS_texture4D If SGIS_texture4D is not supported, all references to TexImage4DSGIS, TexSubImage4DSGIS, and CopyTexSubImage4DSGIS are ignored. Errors None New State Get Value Get Command Type Initial Value --------- ----------- ---- ------------- MIN_RED_SGIS GetTexLevelParameterfv R 0.0 MAX_RED_SGIS GetTexLevelParameterfv R+ 1.0 MIN_GREEN_SGIS GetTexLevelParameterfv R 0.0 MAX_GREEN_SGIS GetTexLevelParameterfv R+ 1.0 MIN_BLUE_SGIS GetTexLevelParameterfv R 0.0 MAX_BLUE_SGIS GetTexLevelParameterfv R+ 1.0 MIN_ALPHA_SGIS GetTexLevelParameterfv R 0.0 MAX_ALPHA_SGIS GetTexLevelParameterfv R+ 1.0 MIN_LUMINANCE_SGIS GetTexLevelParameterfv R 0.0 MAX_LUMINANCE_SGIS GetTexLevelParameterfv R+ 1.0 MIN_INTENSITY_SGIS GetTexLevelParameterfv R 0.0 MAX_INTENSITY_SGIS GetTexLevelParameterfv R+ 1.0 New Implementation Dependent State Get Value Get Command Type --------- ----------- ---- TEXTURE_RANGE_SGIX GetBooleanv B