Name SGIX_fog_offset Name Strings GL_SGIX_fog_offset Version $Date: 1999/06/19 00:39:08 $ $Revision: 1.12 $ Number 65 Dependencies OpenGL 1.0 is required. The extension is written against the OpenGL 1.2.1 Specification. Overview This extension allows fragments to look brighter in a foggy environment, by biasing the fragment eye-coordinate distance prior to fog computation. A reference point in eye space (rx ry rz) and an offset amount toward the viewpoint (f_o) are specified. When fog offset is enabled, the offset amount will be subtracted from the fragment distance, making objects appear less foggy. If fog computation is done in screen-space coordinates under perspective projection, the reference point is used in adjusting the fog offset to be correct for fragments whose depth is close to that point. The reference point should be redefined when it becomes too far away from the primitives being drawn. Under orthographic projection, or if fog computation is done in eye-space coordinates, the reference point is ignored. New Procedures and Functions None New Tokens Accepted by the parameter of Enable, Disable, and IsEnabled GL_FOG_OFFSET_SGIX 0x8198 Accepted by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev, and by the parameter of Fogiv and Fogfv: GL_FOG_OFFSET_VALUE_SGIX 0x8199 Additions to Chapter 2 of the 1.2.1 Specification (OpenGL Operation) None Additions to Chapter 3 of the 1.2.1 Specification (Rasterization) - (3.10, p. 139) Change the second paragraph to: "This factor f is computed according to one of three equations: f = exp(-d * f_z), (3.24) f = exp(-(d * f_z)^2), or (3.25) e - f_z f = ------- (3.26) e - s f_z is a function of the eye-coordinate distance z from the eye, (0,0,0,1) in eye coordinates, to the fragment center. If FOG_OFFSET_SGIX is enabled, then f_z = z - f_o; otherwise, f_z = z. If f_z < 0, then it is clamped to zero prior to fog computation. "If fog offset is performed in screen space under perspective projection, the reference point (rx ry rz) is used to adjust f_o appropriately prior to computing f_z. Otherwise, the reference point is unused. "The equation, along with the parameters d, e, s, (rx ry rz, and f_o, is specified with..." Change the end of the third paragraph to: "...If is FOG_DENSITY, FOG_START, or FOG_END, then is or points to a value that is d, s, or e, respectively. If if FOG_OFFSET_SGIX, then points to four values comprising a 3-valued reference point, (rx ry rz) followed by f_o. If d is specified as less than zero, the error INVALID_VALUE is generated." Change the final paragraph on page 140 to: "The state required for fog consists of a three valued integer to select the fog equation, three floating-point values d, e, and s, four floating-point values (rx ry rz f_o), an RGBA fog color and a fog color index, a single bit to indicate whether or not fog is enabled, and a single bit to indicate whether or not fog offset is enabled. In the initial state, fog is disabled, fog offset is disabled, FOG_MODE is EXP, d = 1.0, e = 1.0, s = 0.0, and (rx ry rz f_o) = (0,0,0,0); C_f = (0,0,0,0) and i_f = 0." Additions to Chapter 4 of the 1.2.1 Specification (Per-Fragment Operations and the Framebuffer) None Additions to Chapter 5 of the 1.2.1 Specification (Special Functions) None Additions to Chapter 6 of the 1.2.1 Specification (State and State Requests) None Additions to the GLX Specification None Errors None New State (table 6.8, p. 198) Get Value Type Get Command Initial Value Description Sec. Attribute --------- ---- ----------- ------------- ----------- ---- --------- FOG_OFFSET_SGIX B IsEnabled False True if fog offset is enabled 3.10 fog FOG_OFFSET_VALUE_SGIX 4 * R GetFloatv (0, 0, 0, 0) Fog reference point and offset 3.10 fog New Implementation Dependent State None