Name

    SGIS_texture_border_clamp

Name Strings

    GL_SGIS_texture_border_clamp

Version

    $Date: 1997/02/26 03:36:33 $ $Revision: 1.6 $

Number

    36

Dependencies

    EXT_texture3D affects the definition of this extension
    SGIS_texture_filter4 affects the definition of this extension

Overview

    The base OpenGL provides clamping such that the texture coordinates are
    limited to exactly the range [0,1].  When a texture coordinate is
    clamped using this algorithm, the texture sampling filter straddles the
    edge of the texture image, taking 1/2 its sample values from within the
    texture image, and the other 1/2 from the texture border.  It is
    sometimes desirable for a texture to be clamped to the border color,
    rather than to an average of the border and edge colors.

    This extension defines an additional texture clamping algorithm.
    CLAMP_TO_BORDER_SGIS clamps texture coordinates at all mipmap levels
    such that NEAREST and LINEAR filters return the color of the border
    texels.  When used with FILTER4 filters, the filter operation of
    CLAMP_TO_BORDER_SGIS is defined but doesn't result in a nice
    clamp-to-border color.

Issues

    *   Is the arithmetic for FILTER4 filters correct?  Is this the right
	thing to do?

New Procedures and Functions

    None

New Tokens

    Accepted by the <param> parameter of TexParameteri and TexParameterf,
    and by the <params> parameter of TexParameteriv and TexParameterfv, when
    their <pname> parameter is TEXTURE_WRAP_S, TEXTURE_WRAP_T, or
    TEXTURE_WRAP_R_EXT:

	CLAMP_TO_BORDER_SGIS		0x812D

Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the 1.0 Specification (Rasterization)

    GL Specification Table 3.7 is updated as follows:

	Name				Type	    Legal Values
	----				----	    ------------
	TEXTURE_WRAP_S			integer	    CLAMP, REPEAT,
						    CLAMP_TO_EDGE_SGIS,
						    CLAMP_TO_BORDER_SGIS
	TEXTURE_WRAP_T			integer	    CLAMP, REPEAT,
						    CLAMP_TO_EDGE_SGIS,
						    CLAMP_TO_BORDER_SGIS
	TEXTURE_WRAP_R_EXT		integer	    CLAMP, REPEAT,
						    CLAMP_TO_EDGE_SGIS,
						    CLAMP_TO_BORDER_SGIS
	TEXTURE_MIN_FILTER		integer	    NEAREST, LINEAR,
						    NEAREST_MIPMAP_NEAREST,
						    NEAREST_MIPMAP_LINEAR,
						    LINEAR_MIPMAP_NEAREST,
						    LINEAR_MIPMAP_LINEAR,
						    FILTER4_SGIS,
						    LINEAR_CLIPMAP_LINEAR_SGIX
	TEXTURE_MAG_FILTER		integer	    NEAREST, LINEAR,
						    FILTER4_SGIS,
						    LINEAR_DETAIL_SGIS,
						    LINEAR_DETAIL_ALPHA_SGIS,
						    LINEAR_DETAIL_COLOR_SGIS,
						    LINEAR_SHARPEN_SGIS,
						    LINEAR_SHARPEN_ALPHA_SGIS,
						    LINEAR_SHARPEN_COLOR_SGIS,
						    LINEAR_LEQUAL_R_SGIS,
						    LINEAR_GEQUAL_R_SGIS
	TEXTURE_BORDER_COLOR		4 floats    any 4 values in [0,1]
	DETAIL_TEXTURE_LEVEL_SGIS	integer	    any non-negative integer
	DETAIL_TEXTURE_MODE_SGIS	integer	    ADD, MODULATE
	TEXTURE_MIN_LOD_SGIS		float	    any value
	TEXTURE_MAX_LOD_SGIS		float	    any value
	TEXTURE_BASE_LEVEL_SGIS		integer	    any non-negative integer
	TEXTURE_MAX_LEVEL_SGIS		integer	    any non-negative integer
	GENERATE_MIPMAP_SGIS		boolean	    TRUE or FALSE
	TEXTURE_CLIPMAP_OFFSET_SGIX	2 floats    any 2 values

	Table 3.7: Texture parameters and their values.

    CLAMP_TO_BORDER_SGIS texture clamping is specified by calling
    TexParameteri with <target> set to TEXTURE_1D, TEXTURE_2D, or
    TEXTURE_3D_EXT, <pname> set to TEXTURE_WRAP_S, TEXTURE_WRAP_T,
    or TEXTURE_WRAP_R_EXT, and <param> set to CLAMP_TO_BORDER_SGIS.

    Let [min,max] be the range of a clamped texture coordinate, and let N
    be the size of the 1D, 2D, or 3D texture image in the direction of
    clamping.  Then in all cases

	max = 1 - min

    because the clamping is always symmetric about the [0,1] mapped range of
    a texture coordinate.  When used with NEAREST or LINEAR filters,
    CLAMP_TO_BORDER_SGIS defines a minimum clamping value of

	min = -1 / 2*N

    When used with CUBIC filters, CLAMP_TO_BORDER_SGIS defines a minimum
    clamping value of

	min = -3 / 2*N

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
and the Framebuffer)

    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)

    None

Additions to the GLX Specification

    None

Dependencies on EXT_texture3D

    If EXT_texture3D is not implemented, then the references clamping of 3D
    textures in this file are invalid, and references to TEXTURE_WRAP_R_EXT
    should be ignored.

Dependencies on SGIS_texture_filter4

    If SGIS_texture_filter4 is not implemented, then discussions about the
    interaction of filter4 texture filters and the clamping function
    described in this file are invalid, and should be ignored.

Errors

    None

New State

    Only the type information changes for these parameters:

    Get Value		Get Command		Type	Initial Value	Attrib
    ---------		-----------		----	-------------	------
    TEXTURE_WRAP_S	GetTexParameteriv	n x Z4	REPEAT		texture
    TEXTURE_WRAP_T	GetTexParameteriv	n x Z4	REPEAT		texture
    TEXTURE_WRAP_R_EXT	GetTexParameteriv	n x Z4	REPEAT		texture

New Implementation Dependent State

    None
