| Name |
| |
| SGIX_fog_patchy |
| |
| Name Strings |
| |
| GL_SGIX_fog_patchy |
| |
| Version |
| |
| $Date: 1999/03/30 23:13:46 $ $Revision: 1.3 $ |
| |
| Number |
| |
| XXX |
| |
| Dependencies |
| |
| OpenGL 1.2 is required |
| |
| Overview |
| |
| Patchy fog is a fog in which intermittent areas of dense fog may |
| be encoutered. This extension explains how the patchy fog |
| extension is supported. Patchy fog is needed because both |
| uniform fog density and fog layers can only specify a constant |
| density at a given elevation. The SGIX_fog_texture openGL |
| extension gives a mean to specify a patchy fog texture that will |
| modulate the fog density at a given elevation. The goal of this |
| document is to describe the modulation fuction and the fog |
| equation when patchy fog is enabled. No tokens, states, or |
| procedures are introduced in this extension. |
| |
| New Procedures and Functions |
| |
| None |
| |
| Issues |
| |
| - Since there is no API introduction is this extension the |
| good way to present things? |
| |
| - Should we introduce a glEnable for patchy fog? |
| |
| - We should move the description of the patchy fog equation |
| up to the overview but we do not want to disclose it for the |
| moment. |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.2 Specification (Rasterization) |
| |
| 3.10 Fog |
| |
| In addition to uniform fog density and fog layers, patchy fog can |
| be specified. The patchy fog extension gives a mean to modulate |
| the fog density with a texture. |
| |
| _____ _____ |
| density (d) ___| | | | |
| | * |____| * |__ To fog equation |
| __| | __| | (d*p*r) |
| | |_____| | |_____| |
| | | |
| | | |
| | | |
| patchy fog texture (p) __| | |
| | |
| | |
| range (r) ---------------------------| |
| |
| |
| The product (d*p*r) is used in the computation of the fog blending |
| factor (f). If the patchy fog texture is not enabled in SGIX_fog_texture, |
| then the patchy fog texture has no effect (p = 1.0). |
| |
| The computation of the fog equation when patchy fog is enabled |
| requires multiple passes. It is hereby described as a 2-pass |
| approach. If there are more than one patchy fog layer or more |
| than one patchy fog color, the second pass will be repeated |
| multiple times. |
| |
| 1) In the first pass: compute an intermediate color at a given |
| fragment using the fog blending equation. In this first pass, |
| the fog patchiness is ignored (p=1). |
| |
| [RGBl] = f1 x [RGBs] + (1-f1) x [RGBfog] |
| |
| where, |
| - [RGBl] is the intermediate color stored in the frame buffer. |
| - f1 is the fog blending factor. It is a function of the fog |
| density (d) and the distance between the viewpoint and the |
| fragment in eye space (r). |
| - [RGBs] is the input fragment that is coming out from fragment |
| lighting in the rasterization pipeline. |
| - [RGBfog] is the fog color. |
| |
| 2) In the second pass: compute the final fragment color using the |
| result of the previous pass. In the second pass, the fog |
| patchiness is taken into account (p=patchy fog texture) |
| |
| Destination = f2 * [RGBl] + (1-f2) * [RGBcloud], |
| |
| where, |
| - Destination is the final fragment color |
| - f2 is the fog blending factor. It is a function of the fog |
| density (d), the distance between the viewpoint and the fragment in eye |
| space (r), and the patchy fog texture (p). In the hardware, the density |
| is first multiplied by the patchy fog texture and then |
| multiplied by the range r. |
| - [RGBl] is the intermediate color. Color that we would get |
| without patchy fog. |
| - [RGBcloud] is the patchy fog color. |
| |
| |
| Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations |
| and the Framebuffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.2 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.2 Specification (State and State Requests) |
| |
| None |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| Errors |
| |
| None |
| |
| New State |
| |
| None |
| |
| New Implementation Dependent State |
| |
| None |