Name

    NV_light_max_exponent

Name Strings

    GL_NV_light_max_exponent

Contact

    Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)

Notice

    Copyright NVIDIA Corporation, 1999, 2000.

Status

    Shipping (version 1.0)

Version

    May 20, 2000
    $Date: 2005/06/02 18:11:48 $ $Revision: 1.1 $

Number

    189

Dependencies

    None

Overview

    Default OpenGL does not permit a shininess or spot exponent over
    128.0.  This extension permits implementations to support and
    advertise a maximum shininess and spot exponent beyond 128.0.

    Note that extremely high exponents for shininess and/or spot light
    cutoff will require sufficiently high tessellation for acceptable
    lighting results.

    Paul Deifenbach's thesis suggests that higher exponents are
    necessary to approximate BRDFs with per-vertex ligthing and
    multiple passes.

New Procedures and Functions

    None

New Tokens

    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
    GetFloatv, and GetDoublev:

        MAX_SHININESS_NV                  0x8504
        MAX_SPOT_EXPONENT_NV              0x8505

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

    In Table 2.7, change the srm range entry to read:

    "(range: [0.0, value of MAX_SHININESS_NV])"

    In Table 2.7, change the srli range entry to read:

    "(range: [0.0, value of MAX_SPOT_EXPONENT_NV])"

    Add to the end of the second paragraph in Section 2.13.2:

    "The values of MAX_SHININESS_NV and MAX_SPOT_EXPONENT_NV are
    implementation dependent, but must be equal or greater than 128."

Additions to Chapter 3 of the GL Specification (Rasterization)

    None

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

    None.

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

    None

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

    None

Additions to the GLX Specification

    None

GLX Protocol

    None

Errors

    INVALID_VALUE is generated by Material if enum is SHININESS and the
    shininess param is greater than the MAX_SHININESS_NV.

    INVALID_VALUE is generated by Material if enum is SPOT_EXPONENT and
    the shininess param is greater than the MAX_SPOT_EXPONENT_NV.

New State

    None.

New Implementation Dependent State

(table 6.24, p214) add the following entries:

    Get Value                     Type    Get Command   Minimum Value   Description         Sec     Attribute
    ---------------------------   ----    -----------   -------------   -----------------   ------  --------------
    MAX_SHININESS_NV              Z+      GetIntegerv   128             Maximum             2.13.2  -
                                                                        shininess for
                                                                        specular lighting
    MAX_SPOT_EXPONENT_NV          Z+      GetIntegerv   128             Maximum             2.13.2  -
                                                                        exponent for
                                                                        spot lights

NVIDIA Implementation Details

    NVIDIA's Release 4 drivers incorrectly and accidently advertised this
    extension with an "EXT" prefix instead of an "NV" prefix.  Release 5
    and later drivers correctly advertise this extension with an "NV"
    extension.

Revision History

    5/20/00 - earlier versions of this specification had the incorrect
    enumerant values which did not match NVIDIA's driver implementation.
