15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci SGIX_texture_range 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_SGIX_texture_range 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci $Date: 1999/06/24 02:20:36 $ $Revision: 1.4 $ 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci 181 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci OpenGL 1.2 is required. 205bd8deadSopenharmony_ci SGI_color_range is required 215bd8deadSopenharmony_ci SGIS_texture4D affects the definition of this extension 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciOverview 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci This extension defines new internal formats for the storage of signed 265bd8deadSopenharmony_ci texture images, as well as extended range and precision texture images. 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ciIP Status 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci Silicon Graphics has filed for patent protection for some of the 315bd8deadSopenharmony_ci techniques described in this extension document. 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ciIssues 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci * Should the fact that the numeric type is different create new base 365bd8deadSopenharmony_ci formats to better classify this difference? Also this might make 375bd8deadSopenharmony_ci sense if there were more than one internal extended-range component 385bd8deadSopenharmony_ci resolutions or types in a given system. 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci - Yes. New base formats added to spec. 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci * Don't want to get extended-range when we don't want it 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci - With new base formats, the user explicitly requests extended-range 455bd8deadSopenharmony_ci or signed internal formats, either sized or not. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci * TLUT clamping (clamped to [0, 1]) 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci - Since the texture color lookup section says that it acts as in 505bd8deadSopenharmony_ci section 3.6.3, for color table lookups, and since that section says 515bd8deadSopenharmony_ci that the color is first clamped to [0, 1], then everything should be 525bd8deadSopenharmony_ci fine. 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci * Do we want to make the fact that there are floating-point formats 555bd8deadSopenharmony_ci visible at the API level? 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci - Not in this spec. In any future spec that defines the 585bd8deadSopenharmony_ci floating-point formats and their API, we probably should add a query 595bd8deadSopenharmony_ci for exp, mant, sign bits per internal format. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci * Since Bali won't have 4D textures, should we take out references to it 625bd8deadSopenharmony_ci in this spec? 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci - No. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci * OK to add tokens for formats not supported by Bali, for completeness? 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci - Moot point, since we have none. We'll add them as we decide to 695bd8deadSopenharmony_ci implement hardware that uses them. 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ci * Since we're not defining the explicit bit representation of the 725bd8deadSopenharmony_ci format, does it still make sense to define sized formats? Or should 735bd8deadSopenharmony_ci we wait until the floating-point formats are defined to put out sized 745bd8deadSopenharmony_ci enumerants? 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci - Keep the sized formats in this spec. 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci * It is often assumed in OpenGL that texture values are in the range 795bd8deadSopenharmony_ci [0, 1]. For instance, in the detail texture extension, the filtered 805bd8deadSopenharmony_ci detail texture color values are scaled by 2 and then have 1 subtracted 815bd8deadSopenharmony_ci to generate a number in the [-1, 1] range. What should happen when 825bd8deadSopenharmony_ci the texture format can support values in the [-1, 1] range, then? 835bd8deadSopenharmony_ci Should the GL still do the scale and bias, or should it just pass the 845bd8deadSopenharmony_ci texture value through? 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci - Still do the scale and bias. This avoids either a) breaking 875bd8deadSopenharmony_ci previous applications by changing their behavior or b) creating 885bd8deadSopenharmony_ci hardware that does calculations both with and without the scale and 895bd8deadSopenharmony_ci bias. 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci * Which of the Section 3.8 alterations should be in this spec, as 925bd8deadSopenharmony_ci opposed to the color_range? Which color clamping operations should be 935bd8deadSopenharmony_ci based upon the texture internal format, versus the framebuffer format? 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci - The color clampings controlled by this spec should be the: 965bd8deadSopenharmony_ci a) Clamping of downloaded texture values. 975bd8deadSopenharmony_ci b) Clamping of the result of the texture filter operation. 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci Both are clampings based upon the texture internal format. All 1005bd8deadSopenharmony_ci other color clamps are based upon the framebuffer format, including 1015bd8deadSopenharmony_ci incoming and outgoing colors of the texture environment operation. 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci * Texture environment clamping is made stickier with multitexturing. 1045bd8deadSopenharmony_ci Should the environment function clamp its input values? Its output 1055bd8deadSopenharmony_ci values? Should it clamp based upon its associated texture's internal 1065bd8deadSopenharmony_ci format, or based upon the framebuffer format? 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci - See above. All incoming colors, fragment color, texture color, 1095bd8deadSopenharmony_ci etc., and the outgoing color, are clamped based upon the framebuffer 1105bd8deadSopenharmony_ci format. 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci * For queries of the min & max component values, what should be returned 1135bd8deadSopenharmony_ci if the component doesn't exist in the texture, e.g., MIN_RED_SGIS in 1145bd8deadSopenharmony_ci an intensity texture or MAX_INTENSITY_SGIS in an RGBA texture. And 1155bd8deadSopenharmony_ci what about alpha, should it be treated differently since it's implied 1165bd8deadSopenharmony_ci in non-alpha textures? Should we have the new INTENSITY and LUMINANCE 1175bd8deadSopenharmony_ci tokens at all, or should we query the red and/or alpha components' min 1185bd8deadSopenharmony_ci and max values? 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci - If a queried component doesn't exist in the format, both the min and 1215bd8deadSopenharmony_ci max are returned as 0, and no error condition is set. Because of 1225bd8deadSopenharmony_ci this, we need the INTENSITY and LUMINANCE tokens. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci * What about ALPHA, in textures that don't have it, since it ususally 1255bd8deadSopenharmony_ci is an implied 1, instead of an implied 0? 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci - For now, as above, min & max are returned as 0. Since the user has 1285bd8deadSopenharmony_ci requested an alpha-free texture format, one would hope they would be 1295bd8deadSopenharmony_ci smart enought to not then query the available alpha range. One 1305bd8deadSopenharmony_ci would hope. 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ciNew Procedures and Functions 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci None 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ciNew Tokens 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of TexImage1D, TexImage2D, 1395bd8deadSopenharmony_ci TexImage3DEXT, TexImage4DSGIS, CopyTexImage1D, and CopyTexImage2D: 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci RGB_SIGNED_SGIX 0x85E0 1425bd8deadSopenharmony_ci RGBA_SIGNED_SGIX 0x85E1 1435bd8deadSopenharmony_ci ALPHA_SIGNED_SGIX 0x85E2 1445bd8deadSopenharmony_ci LUMINANCE_SIGNED_SGIX 0x85E3 1455bd8deadSopenharmony_ci INTENSITY_SIGNED_SGIX 0x85E4 1465bd8deadSopenharmony_ci LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 1475bd8deadSopenharmony_ci RGB16_SIGNED_SGIX 0x85E6 1485bd8deadSopenharmony_ci RGBA16_SIGNED_SGIX 0x85E7 1495bd8deadSopenharmony_ci ALPHA16_SIGNED_SGIX 0x85E8 1505bd8deadSopenharmony_ci LUMINANCE16_SIGNED_SGIX 0x85E9 1515bd8deadSopenharmony_ci INTENSITY16_SIGNED_SGIX 0x85EA 1525bd8deadSopenharmony_ci LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB 1535bd8deadSopenharmony_ci RGB_EXTENDED_RANGE_SGIX 0x85EC 1545bd8deadSopenharmony_ci RGBA_EXTENDED_RANGE_SGIX 0x85ED 1555bd8deadSopenharmony_ci ALPHA_EXTENDED_RANGE_SGIX 0x85EE 1565bd8deadSopenharmony_ci LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF 1575bd8deadSopenharmony_ci INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 1585bd8deadSopenharmony_ci LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 1595bd8deadSopenharmony_ci RGB16_EXTENDED_RANGE_SGIX 0x85F2 1605bd8deadSopenharmony_ci RGBA16_EXTENDED_RANGE_SGIX 0x85F3 1615bd8deadSopenharmony_ci ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 1625bd8deadSopenharmony_ci LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 1635bd8deadSopenharmony_ci INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 1645bd8deadSopenharmony_ci LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci Accepted by the <value> parameter of of GetTexLevelParameterfv and 1675bd8deadSopenharmony_ci GetTexLevelParameteriv: 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci MIN_LUMINANCE_SGIS 0x85F8 1705bd8deadSopenharmony_ci MAX_LUMINANCE_SGIS 0x85F9 1715bd8deadSopenharmony_ci MIN_INTENSITY_SGIS 0x85FA 1725bd8deadSopenharmony_ci MAX_INTENSITY_SGIS 0x85FB 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2 Specification (OpenGL Operation) 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci None 1775bd8deadSopenharmony_ci 1785bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2 Specification (Rasterization) 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci The following is added to Section 3.8.1: 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci "... just before final conversion. Each R, G, B, and A value so 1835bd8deadSopenharmony_ci generated is clamped to [min, max]. The minimum is implementation- 1845bd8deadSopenharmony_ci dependent for extended range and precision internal formats, but at most 1855bd8deadSopenharmony_ci 0. It is -1 for signed internal formats, and is 0 for all other 1865bd8deadSopenharmony_ci formats. The maximum is implementation-dependent for extended range and 1875bd8deadSopenharmony_ci precision formats, but is at least 1, and is 1 for all other formats. 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci The following is added to Table 3.16: 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci Sized Base R G B A L I 1935bd8deadSopenharmony_ci Internal Format Internal Format Bits Bits Bits Bits Bits Bits 1945bd8deadSopenharmony_ci --------------- ----------------------------------- ---- ---- ---- ---- ---- ---- 1955bd8deadSopenharmony_ci RGB16_SIGNED_SGIX RGB_SIGNED_SGIX 16 16 16 1965bd8deadSopenharmony_ci RGBA16_SIGNED_SGIX RGBA_SIGNED_SGIX 16 16 16 16 1975bd8deadSopenharmony_ci ALPHA16_SIGNED_SGIX ALPHA_SIGNED_SGIX 16 1985bd8deadSopenharmony_ci LUMINANCE16_SIGNED_SGIX LUMINANCE_SIGNED_SGIX 16 1995bd8deadSopenharmony_ci INTENSITY16_SIGNED_SGIX INTENSITY_SIGNED_SGIX 16 2005bd8deadSopenharmony_ci LUMINANCE16_ALPHA16_SIGNED_SGIX LUMINANCE_ALPHA_SIGNED_SGIX 16 16 2015bd8deadSopenharmony_ci RGB16_EXTENDED_RANGE_SGIX RGB_EXTENDED_RANGE_SGIX 16 16 16 2025bd8deadSopenharmony_ci RGBA16_EXTENDED_RANGE_SGIX RGBA_EXTENDED_RANGE_SGIX 16 16 16 16 2035bd8deadSopenharmony_ci ALPHA16_EXTENDED_RANGE_SGIX ALPHA_EXTENDED_RANGE_SGIX 16 2045bd8deadSopenharmony_ci LUMINANCE16_EXTENDED_RANGE_SGIX LUMINANCE_EXTENDED_RANGE_SGIX 16 2055bd8deadSopenharmony_ci INTENSITY16_EXTENDED_RANGE_SGIX INTENSITY_EXTENDED_RANGE_SGIX 16 2065bd8deadSopenharmony_ci LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 16 16 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci The following is added to Section 3.8.3: 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci "... values to floating point. Each of the four values set by 2125bd8deadSopenharmony_ci TEXTURE_BORDER_COLOR is clamped to lie in [min, max], where min and max 2135bd8deadSopenharmony_ci are based upon the internal format of the image in level-of-detail 0, as 2145bd8deadSopenharmony_ci specified in section 3.8.1" 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations 2185bd8deadSopenharmony_ciand the Frame Buffer) 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci None 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2 Specification (Special Functions) 2235bd8deadSopenharmony_ci 2245bd8deadSopenharmony_ci None 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State Requests) 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci The following is added to Section 6.1.3: 2295bd8deadSopenharmony_ci 2305bd8deadSopenharmony_ci "...when the image array was defined. Queries of MIN_RED_SGIS, 2315bd8deadSopenharmony_ci MAX_RED_SGIS, MIN_GREEN_SGIS, MAX_GREEN_SGIS, MIN_BLUE_SGIS, 2325bd8deadSopenharmony_ci MAX_BLUE_SGIS, MIN_ALPHA_SGIS, MAX_ALPHA_SGIS, MIN_LUMINANCE_SGIS, 2335bd8deadSopenharmony_ci MAX_LUMINANCE_SGIS, MIN_INTENSITY_SGIS, and MAX_INTENSITY_SGIS 2345bd8deadSopenharmony_ci return the minimum and maximum expressable values of the internal 2355bd8deadSopenharmony_ci format of the image. Queries of TEXTURE_WIDTH ..." 2365bd8deadSopenharmony_ci 2375bd8deadSopenharmony_ciAdditions to the GLX Specification 2385bd8deadSopenharmony_ci 2395bd8deadSopenharmony_ci None 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ciDependencies on SGIS_texture4D 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci If SGIS_texture4D is not supported, all references to TexImage4DSGIS, 2445bd8deadSopenharmony_ci TexSubImage4DSGIS, and CopyTexSubImage4DSGIS are ignored. 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ciErrors 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci None 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ciNew State 2515bd8deadSopenharmony_ci 2525bd8deadSopenharmony_ci Get Value Get Command Type Initial Value 2535bd8deadSopenharmony_ci --------- ----------- ---- ------------- 2545bd8deadSopenharmony_ci MIN_RED_SGIS GetTexLevelParameterfv R 0.0 2555bd8deadSopenharmony_ci MAX_RED_SGIS GetTexLevelParameterfv R+ 1.0 2565bd8deadSopenharmony_ci MIN_GREEN_SGIS GetTexLevelParameterfv R 0.0 2575bd8deadSopenharmony_ci MAX_GREEN_SGIS GetTexLevelParameterfv R+ 1.0 2585bd8deadSopenharmony_ci MIN_BLUE_SGIS GetTexLevelParameterfv R 0.0 2595bd8deadSopenharmony_ci MAX_BLUE_SGIS GetTexLevelParameterfv R+ 1.0 2605bd8deadSopenharmony_ci MIN_ALPHA_SGIS GetTexLevelParameterfv R 0.0 2615bd8deadSopenharmony_ci MAX_ALPHA_SGIS GetTexLevelParameterfv R+ 1.0 2625bd8deadSopenharmony_ci MIN_LUMINANCE_SGIS GetTexLevelParameterfv R 0.0 2635bd8deadSopenharmony_ci MAX_LUMINANCE_SGIS GetTexLevelParameterfv R+ 1.0 2645bd8deadSopenharmony_ci MIN_INTENSITY_SGIS GetTexLevelParameterfv R 0.0 2655bd8deadSopenharmony_ci MAX_INTENSITY_SGIS GetTexLevelParameterfv R+ 1.0 2665bd8deadSopenharmony_ci 2675bd8deadSopenharmony_ciNew Implementation Dependent State 2685bd8deadSopenharmony_ci 2695bd8deadSopenharmony_ci Get Value Get Command Type 2705bd8deadSopenharmony_ci --------- ----------- ---- 2715bd8deadSopenharmony_ci TEXTURE_RANGE_SGIX GetBooleanv B 2725bd8deadSopenharmony_ci 273