2003-2004 Silicon Graphics, Inc.
glFog 3G
glFog glFogf glFogx glFogfv glFogxv specify fog parameters

## C Specification

void `glFogf` GLenum pname GLfloat param void `glFogx` GLenum pname GLfixed param

## Parameters

pname

  Specifies a single-valued fog parameter. `GL_FOG_MODE`, `GL_FOG_DENSITY`, `GL_FOG_START`, and `GL_FOG_END` are accepted.

param

  Specifies the value that pname will be set to.

## C Specification

void `glFogfv` GLenum pname const GLfloat * params void `glFogxv` GLenum pname const GLfixed * params

## Parameters

pname

  Specifies a fog parameter. `GL_FOG_MODE`, `GL_FOG_DENSITY`, `GL_FOG_START`, `GL_FOG_END`, and `GL_FOG_COLOR` are accepted.

params

  Specifies the value or values to be assigned to pname. `GL_FOG_COLOR` requires an array of four values. All other parameters accept an array containing only a single value.

## Description

If fog is enabled, fog affects rasterized geometry, bitmaps, and pixel blocks, but not buffer clear operations. To enable and disable fog, call glEnable and glDisable with argument `GL_FOG`. Fog is initially disabled.

`glFog` assigns the value or values in params to the fog parameter specified by pname. The following values are accepted for pname:

`GL_FOG_MODE`

  params is a single fixed-point or floating-point value that specifies the equation to be used to compute the fog blend factor f. Three symbolic constants are accepted: `GL_LINEAR`, `GL_EXP`, and `GL_EXP2`. The equations corresponding to these symbolic constants are defined below. The initial fog mode is `GL_EXP`.

`GL_FOG_DENSITY`

  params is a single fixed-point or floating-point value that specifies density, the fog density used in both exponential fog equations. Only nonnegative densities are accepted. The initial fog density is 1.

`GL_FOG_START`

  params is a single fixed-point or floating-point value that specifies start, the near distance used in the linear fog equation. The initial near distance is 0.

`GL_FOG_END`

  params is a single fixed-point or floating-point value that specifies end, the far distance used in the linear fog equation. The initial far distance is 1.

`GL_FOG_COLOR`

  params contains four fixed-point or floating-point values that specify C f , the fog color. Both fixed-point and floating-point values are mapped directly. After conversion, all color components are clamped to the range [0, 1]. The initial fog color is (0, 0, 0, 0).

Fog blends a fog color with each rasterized pixel fragment's posttexturing color using a blending factor f. Factor f is computed in one of three ways, depending on the fog mode. Let z be the distance in eye coordinates from the origin to the fragment being fogged. The equation for `GL_LINEAR` fog is

f= end-z end-start

The equation for `GL_EXP` fog is

f= e -(density-z)

The equation for `GL_EXP2` fog is

f= e -(density-z) 2

Regardless of the fog mode, f is clamped to the range [0, 1] after it is computed. Then, the fragment's red, green, and blue colors, represented by C r , are replaced by

C'r= f C r + 1-f C f

Fog does not affect a fragment's alpha component.

## Errors

`GL_INVALID_ENUM` is generated if pname is not an accepted value, or if pname is `GL_FOG_MODE` and params is not an accepted value.

`GL_INVALID_VALUE` is generated if pname is `GL_FOG_DENSITY`, and params is negative.

## See Also

glEnable

## Copyright

Copyright 2003-2004 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.