Back to the OpenGL extension cross reference

GL_EXT_shadow_funcs


Name


    EXT_shadow_funcs

Name Strings


    GL_EXT_shadow_funcs

Contact


    Mark J. Kilgard (mjk 'at' nvidia.com)

Status


    Complete

Version


    Last Modified Date:  $Date: 2002/03/22 $
NVIDIA Revision: $Revision: #5 $

Number


    267

Dependencies


    OpenGL 1.1 is required.
ARB_depth_texture is required.
ARB_shadow is required.
This extension is written against the OpenGL 1.3 Specification.

Overview


    This extension generalizes the GL_ARB_shadow extension to support all
eight binary texture comparison functions rather than just GL_LEQUAL
and GL_GEQUAL.

IP Status


    None.

Issues


    (1) What should this extension be called?

RESOLUTION: EXT_shadow_funcs. The extension adds new texture
compare (shadow) comparison functions to ARB_shadow.

(2) Are there issues with GL_EQUAL and GL_NOTEQUAL?

The GL_EQUAL mode (and GL_NOTEQUAL) may be difficult to obtain
well-defined behavior from. This is because there is no guarantee
that the divide done by the shadow mapping r/q division is going
to exactly match the z/w perspective divide and depth range scale
& bias used to generate depth values. Perhaps it can work in a
well-defined manner in orthographic views or if you can guarantee
that the texture hardware's r/q is computed with the same hardware
used to compute z/w (NVIDIA's NV_texture_shader extension can
provide such a guarantee).

Similiarly, GL_LESS and GL_GREATER or only different from GL_LEQUAL
and GL_GEQUAL respectively by a single unit of depth precision
which may make the difference between these modes very subtle.

New Procedures and Functions


    None

New Tokens


    None

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


    None

Additions to Chapter 3 of the 1.3 Specification (Rasterization)


    Section 3.8.4, Texture Parameters, p. 133, update table 3.19 with the
following new legal values for TEXTURE_COMPARE_FUNC_ARB:

Name Type Legal Values
-------------------------- ---- -------------------------------
TEXTURE_COMPARE_FUNC_ARB enum LEQUAL, GEQUAL, LESS, GREATER,
EQUAL, NOTEQUAL, ALWAYS, NEVER

After section 3.8.12, Texture Environments and Texture Functions,
p. 149, update the texture compare pseudo-code in section 3.8.13.1
(as added by ARB_shadow):

if TEXTURE_COMPARE_MODE_ARB = NONE

r = Dt

else if TEXTURE_COMPARE_MODE_ARB = COMPARE_R_TO_TEXTURE_ARB

if TEXTURE_COMPARE_FUNC_ARB = LEQUAL

{ 1.0, if R <= Dt
r = {
{ 0.0, if R > Dt

else if TEXTURE_COMPARE_FUNC_ARB = GEQUAL

{ 1.0, if R >= Dt
r = {
{ 0.0, if R < Dt

else if TEXTURE_COMPARE_FUNC_ARB = LESS

{ 1.0, if R < Dt
r = {
{ 0.0, if R >= Dt

else if TEXTURE_COMPARE_FUNC_ARB = GREATER

{ 1.0, if R > Dt
r = {
{ 0.0, if R <= Dt

else if TEXTURE_COMPARE_FUNC_ARB = EQUAL

{ 1.0, if R == Dt
r = {
{ 0.0, if R != Dt

else if TEXTURE_COMPARE_FUNC_ARB = NOTEQUAL

{ 1.0, if R != Dt
r = {
{ 0.0, if R == Dt

else if TEXTURE_COMPARE_FUNC_ARB = ALWAYS

r = 1.0

else if TEXTURE_COMPARE_FUNC_ARB = NEVER

r = 0.0

endif

if DEPTH_TEXTURE_MODE_ARB = LUMINANCE

Lt = r

else if DEPTH_TEXTURE_MODE_ARB = INTENSITY

It = r

else if DEPTH_TEXTURE_MODE_ARB = ALPHA

At = r

endif

endif

Additions to Chapter 4 of the 1.3 Specification (Per-Fragment Operations and the Frame Buffer)


    None

Additions to Chapter 5 of the 1.3 Specification (Special Functions)


    None

Additions to Chapter 6 of the 1.3 Specification (State and State Requests)


    None

Additions to the GLX Specification


    None

Errors


    INVALID_ENUM is generated if TexParameter[if][v] parameter <pname>
is TEXTURE_COMPARE_FUNC_ARB and parameter <param> is not one of
LEQUAL, GEQUAL, LESS, GREATER, EQUAL, NOTEQUAL, ALWAYS, or NEVER.

New State


    In table 6.16, Texture Objects, p. 224, add the following:

Get Value Type Get Command Initial Value Description Sec. Attribute
-------------------------- ---- -------------------- ------------- -------------- ----- ---------
TEXTURE_COMPARE_FUNC_ARB Z_8 GetTexParameter[if]v LEQUAL compare func 3.8.13 texture

New Implementation Dependent State


    None

Revision History


    None

NV20 Implementation Details


    NV20 (GeForce3 and Quadro DCC) will fallback to software rasterization
if two or more texture units have distinct TEXTURE_COMPARE_FUNC_ARB
settings that are not opposites (eg, GL_EQUAL and GL_NOTEQUAL).
This is not an issue on NV25 (GeForce4 and Quadro4).

Implementation Support


   List of OpenGL implementations supporting the GL_EXT_shadow_funcs extension

Original File


   Original text file for the GL_EXT_shadow_funcs extension


Page generated on Sun Nov 20 18:37:55 2005