| 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$ $Revision$ |
| |
| 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. |