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