| Name |
| |
| WIN_phong_shading |
| |
| Name Strings |
| |
| GL_WIN_phong_shading |
| |
| Version |
| |
| $Date: 1997/4/3 |
| |
| Number |
| |
| 113 |
| |
| Dependencies |
| |
| None |
| |
| Overview |
| |
| WIN_phong_shading enables rendering Phong shaded primitives using OpenGL. |
| Phong shading is a well known shading technique documented |
| in most graphics texts. |
| |
| As opposed to Gouraud (or smooth) shading, which simply calculates the |
| normals at the vertices and then interpolates the colors of the pixels, |
| Phong shading involves interpolating an individual normal for every pixel, |
| and then applying the shading model to each pixel based on its normal |
| component. |
| |
| While Phong shading requires substantially more computation than does |
| Gouraud shading, the resulting images are more realistic, especially if the |
| primitives are large. |
| |
| Issues |
| |
| None |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <mode> parameter of ShadeModel: |
| |
| PHONG_WIN 0x80EA |
| |
| May be returned by GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv |
| when their <pname> parameter is SHADE_MODEL: |
| |
| PHONG_WIN 0x80EA |
| |
| Accepted by the <target> parameter of Hint, and <pname> parameter of |
| GetBooleanv, GetDoublev, GetFloatv and GetIntegerv: |
| |
| PHONG_HINT_WIN 0x80EB |
| |
| Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) |
| First sentence in Section 2.13, "Colors and Coloring", 'Figure 2.8 |
| diagrams..' should be modified as below: |
| |
| "Figure 2.8 diagrams the processing of colors before rasterization when |
| the primitives are not phong-shaded." |
| |
| After the last paragraph of Section 2.13, "Colors and Coloring", the |
| |
| following paragraph is added: |
| |
| "The WIN_phong_shading extension is used to indicate that the primitives |
| should be phong shaded. In which case, the lighting, if enabled, is |
| applied at the time of rasterization to each pixel to obtain a color for |
| that pixel. The lighting computation used is consistant with the GL |
| lighting model described in Section 2.13.1. If the primitive is clipped, |
| then normals (and eye coordinates) must be computed for the vertices |
| introduced or modified by clipping." |
| |
| Rename Section 2.13.7 to "Shading Models" and. Keep the first paragraph as |
| it is. Add the following new paragraph after the one ending in |
| "...Table 2.9 summarizes the possibilities": |
| |
| "A primitive may be phong-shaded, meaning that instead of the the color |
| being interpolated, the normal (and the eye coordinate) are interpolated |
| across the primitive, and the lighting (if enabled) is applied per pixel |
| at the time of rasterization. If the other material properties change |
| within a primitive, either by ColorMaterial or explicitly changing the |
| material property using the Material command, they must be also be |
| interpolated along with the normal (and eye coordinate). However, for |
| efficiency's sake, an implementation may choose to ignore the effects of |
| the changes in material properties across a primitive. |
| If the lighting is disabled, or if the primitive is a point, it is |
| equivalent to regular smooth shading. |
| |
| Implementations may also choose to approximate phong-shading by smart |
| interpolation techniques (some of which are described in graphics |
| literature). Using such algorithms, they may choose to tradeoff visual |
| fidelity for speed of rendering. For such a case a phong hint state, |
| discussed in section 5.6, can be used." |
| |
| Modify the paragraph beginning with "Flatshading is controlled by....." |
| to the following: |
| |
| "Phong-shading and flatshading are controlled by |
| |
| void ShadeModel( enum mode); |
| |
| mode value must be one of the symbolic constant SMOOTH, FLAT or |
| PHONG_WIN. If mode is SMOOTH (the initial state), vertex colors are |
| treated individually. If mode is FLAT, flatshading is turned on. If mode |
| is PHONG_WIN phong-shading is turned on. ShadeModel thus requires 2 bits |
| of state." |
| |
| Rename Section 2.13.8 to "Color, Texture, Normal and Eye-Coordinate |
| Clipping". Add the following line after "The method is exactly...": |
| |
| "If phong-shading is turned on, the normals and eye coordinates must be |
| computed for the newly generated vertices. The normals and the |
| eye-coordinates for these vertices are computed in exactly the manner |
| described for color clipping. In addition, unless the implementation |
| chooses to ignore changes in material properties within the primitive, |
| they should be computed for the new vertices analogously." |
| |
| |
| Additions to Chapter 3 of the 1.1 Specification (Rasterization) |
| |
| After the sentence "The second ...." in the first paragraph, add the |
| sentence: |
| |
| "If phong-shading is enabled, the color for the square is also computed |
| in this stage." |
| |
| Modify the first line of the second paragraph to: |
| "A grid square along with its parameters of assigned color, z (depth), |
| texture coordinates, normal and eye coordinates (for phong shading)" |
| |
| In Section 3.4.1 "Basic Line Segment Rasterization", modify the line |
| |
| "The value of an associated datum f......." after equation 3.1 to: |
| |
| "The value of an associated datum f for the fragment, whether it be R, G, |
| B, or A (in RGBA mode) or a color index (in color index mode), or normal, |
| eye coordinate or material properties (when phong-shaded), or the s, t, or |
| r texture coordinate .......... is found as" |
| |
| Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations |
| and the Frame Buffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.1 Specification (Special Functions) |
| |
| In Section 5.6, "Hints", add the following phrase to the line beginning |
| "target may be one of .......": |
| |
| "and PHONG_HINT_WIN, indicating the desired quality of phong shading." |
| |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| None |
| |
| Dependencies on other extensions |
| |
| None |
| |
| Errors |
| |
| None |
| |
| New State |
| Initial |
| Get Value Get Command Type Value Attrib |
| --------- ----------- ---- ------- ------ |
| PHONG_HINT_WIN GetIntegerv Z3 DONT_CARE hint |
| |
| New Implementation Dependent State |
| |
| None |