EXT_shadow_funcs
GL_EXT_shadow_funcs
Mark J. Kilgard (mjk 'at' nvidia.com)
Complete
Last Modified Date: $Date: 2002/03/22 $
NVIDIA Revision: $Revision: #5 $
267
OpenGL 1.1 is required.
ARB_depth_texture is required.
ARB_shadow is required.
This extension is written against the OpenGL 1.3 Specification.
This extension generalizes the GL_ARB_shadow extension to support all
eight binary texture comparison functions rather than just GL_LEQUAL
and GL_GEQUAL.
None.
(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
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
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.
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
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).
This is not an issue on NV25 (GeForce4 and Quadro4).
| | Last update: November 14, 2006. Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1. |