ReactOS  0.4.14-dev-606-g14ebc0b
fog.h File Reference
#include "types.h"
Include dependency graph for fog.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void gl_Fogfv (GLcontext *ctx, GLenum pname, const GLfloat *params)
 
void gl_fog_color_vertices (GLcontext *ctx, GLuint n, GLfloat v[][4], GLubyte color[][4])
 
void gl_fog_index_vertices (GLcontext *ctx, GLuint n, GLfloat v[][4], GLuint indx[])
 
void gl_fog_color_pixels (GLcontext *ctx, GLuint n, const GLdepth z[], GLubyte red[], GLubyte green[], GLubyte blue[], GLubyte alpha[])
 
void gl_fog_index_pixels (GLcontext *ctx, GLuint n, const GLdepth z[], GLuint indx[])
 

Function Documentation

◆ gl_fog_color_pixels()

void gl_fog_color_pixels ( GLcontext ctx,
GLuint  n,
const GLdepth  z[],
GLubyte  red[],
GLubyte  green[],
GLubyte  blue[],
GLubyte  alpha[] 
)

Definition at line 252 of file fog.c.

255 {
256  GLfloat c = ctx->ProjectionMatrix[10];
257  GLfloat d = ctx->ProjectionMatrix[14];
258  GLuint i;
259 
260  GLfloat fog_red = ctx->Fog.Color[0] * ctx->Visual->RedScale;
261  GLfloat fog_green = ctx->Fog.Color[1] * ctx->Visual->GreenScale;
262  GLfloat fog_blue = ctx->Fog.Color[2] * ctx->Visual->BlueScale;
263 
264  GLfloat tz = ctx->Viewport.Tz;
265  GLfloat szInv = 1.0F / ctx->Viewport.Sz;
266 
267  switch (ctx->Fog.Mode) {
268  case GL_LINEAR:
269  {
270  GLfloat fogEnd = ctx->Fog.End;
271  GLfloat fogScale = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
272  for (i=0;i<n;i++) {
273  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
274  GLfloat eyez = -d / (c+ndcz);
275  GLfloat f, g;
276  if (eyez < 0.0) eyez = -eyez;
277  f = (fogEnd - eyez) * fogScale;
278  f = CLAMP( f, 0.0F, 1.0F );
279  g = 1.0F - f;
280  red[i] = (GLint) (f * (GLfloat) red[i] + g * fog_red);
281  green[i] = (GLint) (f * (GLfloat) green[i] + g * fog_green);
282  blue[i] = (GLint) (f * (GLfloat) blue[i] + g * fog_blue);
283  }
284  }
285  break;
286  case GL_EXP:
287  for (i=0;i<n;i++) {
288  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
289  GLfloat eyez = -d / (c+ndcz);
290  GLfloat f, g;
291  if (eyez < 0.0) eyez = -eyez;
292  f = exp( -ctx->Fog.Density * eyez );
293  f = CLAMP( f, 0.0F, 1.0F );
294  g = 1.0F - f;
295  red[i] = (GLint) (f * (GLfloat) red[i] + g * fog_red);
296  green[i] = (GLint) (f * (GLfloat) green[i] + g * fog_green);
297  blue[i] = (GLint) (f * (GLfloat) blue[i] + g * fog_blue);
298  }
299  break;
300  case GL_EXP2:
301  {
302  GLfloat negDensitySquared = -ctx->Fog.Density * ctx->Fog.Density;
303  for (i=0;i<n;i++) {
304  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
305  GLfloat eyez = -d / (c+ndcz);
306  GLfloat f, g;
307  if (eyez < 0.0) eyez = -eyez;
308  f = exp( negDensitySquared * eyez*eyez );
309  f = CLAMP( f, 0.0F, 1.0F );
310  g = 1.0F - f;
311  red[i] = (GLint) (f * (GLfloat) red[i] + g * fog_red);
312  green[i] = (GLint) (f * (GLfloat) green[i] + g * fog_green);
313  blue[i] = (GLint) (f * (GLfloat) blue[i] + g * fog_blue);
314  }
315  }
316  break;
317  default:
318  gl_problem(ctx, "Bad fog mode in gl_fog_color_pixels");
319  return;
320  }
321 }
#define GL_EXP2
Definition: gl.h:423
GLdouble n
Definition: glext.h:7729
GLvisual * Visual
Definition: types.h:1272
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define CLAMP(f, min, max)
Definition: tif_color.c:177
GLdouble GLdouble z
Definition: glext.h:5874
GLfloat BlueScale
Definition: types.h:1142
GLclampf GLclampf blue
Definition: gl.h:1740
GLfloat GreenScale
Definition: types.h:1141
struct gl_fog_attrib Fog
Definition: types.h:1323
GLboolean GLboolean g
Definition: glext.h:6204
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
const GLubyte * c
Definition: glext.h:8905
GLclampf green
Definition: gl.h:1740
#define red
Definition: linetest.c:67
#define GL_LINEAR
Definition: gl.h:421
#define GL_EXP
Definition: gl.h:422
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
unsigned int GLuint
Definition: gl.h:159
GLfloat RedScale
Definition: types.h:1140
#define f
Definition: ke_i.h:83
struct gl_viewport_attrib Viewport
Definition: types.h:1336
GLbyte GLbyte tz
Definition: glext.h:8756
DWORD exp
Definition: msg.c:16038
float GLfloat
Definition: gl.h:161
GLfloat ProjectionMatrix[16]
Definition: types.h:1292
int GLint
Definition: gl.h:156
#define F(x, y, z)
Definition: md5.c:51

Referenced by gl_flush_pb(), gl_write_color_span(), and gl_write_texture_span().

◆ gl_fog_color_vertices()

void gl_fog_color_vertices ( GLcontext ctx,
GLuint  n,
GLfloat  v[][4],
GLubyte  color[][4] 
)

Definition at line 134 of file fog.c.

136 {
137  GLuint i;
138  GLfloat d;
139  GLfloat fogr = ctx->Fog.Color[0] * ctx->Visual->RedScale;
140  GLfloat fogg = ctx->Fog.Color[1] * ctx->Visual->GreenScale;
141  GLfloat fogb = ctx->Fog.Color[2] * ctx->Visual->BlueScale;
142  GLfloat end = ctx->Fog.End;
143 
144  switch (ctx->Fog.Mode) {
145  case GL_LINEAR:
146  d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
147  for (i=0;i<n;i++) {
148  GLfloat f = (end - ABSF(v[i][2])) * d;
149  f = CLAMP( f, 0.0F, 1.0F );
150  color[i][0] = f * color[i][0] + (1.0F-f) * fogr;
151  color[i][1] = f * color[i][1] + (1.0F-f) * fogg;
152  color[i][2] = f * color[i][2] + (1.0F-f) * fogb;
153  }
154  break;
155  case GL_EXP:
156  d = -ctx->Fog.Density;
157  for (i=0;i<n;i++) {
158  GLfloat f = exp( d * ABSF(v[i][2]) );
159  f = CLAMP( f, 0.0F, 1.0F );
160  color[i][0] = f * color[i][0] + (1.0F-f) * fogr;
161  color[i][1] = f * color[i][1] + (1.0F-f) * fogg;
162  color[i][2] = f * color[i][2] + (1.0F-f) * fogb;
163  }
164  break;
165  case GL_EXP2:
166  d = -(ctx->Fog.Density*ctx->Fog.Density);
167  for (i=0;i<n;i++) {
168  GLfloat z = ABSF(v[i][2]);
169  GLfloat f = exp( d * z*z );
170  f = CLAMP( f, 0.0F, 1.0F );
171  color[i][0] = f * color[i][0] + (1.0F-f) * fogr;
172  color[i][1] = f * color[i][1] + (1.0F-f) * fogg;
173  color[i][2] = f * color[i][2] + (1.0F-f) * fogb;
174  }
175  break;
176  default:
177  gl_problem(ctx, "Bad fog mode in gl_fog_color_vertices");
178  return;
179  }
180 }
#define GL_EXP2
Definition: gl.h:423
GLdouble n
Definition: glext.h:7729
GLvisual * Visual
Definition: types.h:1272
GLuint GLuint end
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ABSF(X)
Definition: macros.h:141
GLuint color
Definition: glext.h:6243
#define CLAMP(f, min, max)
Definition: tif_color.c:177
GLdouble GLdouble z
Definition: glext.h:5874
GLfloat BlueScale
Definition: types.h:1142
GLfloat GreenScale
Definition: types.h:1141
struct gl_fog_attrib Fog
Definition: types.h:1323
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
#define GL_LINEAR
Definition: gl.h:421
#define GL_EXP
Definition: gl.h:422
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
const GLdouble * v
Definition: gl.h:2040
unsigned int GLuint
Definition: gl.h:159
GLfloat RedScale
Definition: types.h:1140
#define f
Definition: ke_i.h:83
DWORD exp
Definition: msg.c:16038
float GLfloat
Definition: gl.h:161
#define F(x, y, z)
Definition: md5.c:51

Referenced by fog_vertices().

◆ gl_fog_index_pixels()

void gl_fog_index_pixels ( GLcontext ctx,
GLuint  n,
const GLdepth  z[],
GLuint  indx[] 
)

Definition at line 333 of file fog.c.

335 {
336  GLfloat c = ctx->ProjectionMatrix[10];
337  GLfloat d = ctx->ProjectionMatrix[14];
338  GLuint i;
339 
340  GLfloat tz = ctx->Viewport.Tz;
341  GLfloat szInv = 1.0F / ctx->Viewport.Sz;
342 
343  switch (ctx->Fog.Mode) {
344  case GL_LINEAR:
345  {
346  GLfloat fogEnd = ctx->Fog.End;
347  GLfloat fogScale = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
348  for (i=0;i<n;i++) {
349  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
350  GLfloat eyez = -d / (c+ndcz);
351  GLfloat f;
352  if (eyez < 0.0) eyez = -eyez;
353  f = (fogEnd - eyez) * fogScale;
354  f = CLAMP( f, 0.0F, 1.0F );
355  index[i] = (GLuint) ((GLfloat) index[i] + (1.0F-f) * ctx->Fog.Index);
356  }
357  }
358  break;
359  case GL_EXP:
360  for (i=0;i<n;i++) {
361  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
362  GLfloat eyez = -d / (c+ndcz);
363  GLfloat f;
364  if (eyez < 0.0) eyez = -eyez;
365  f = exp( -ctx->Fog.Density * eyez );
366  f = CLAMP( f, 0.0F, 1.0F );
367  index[i] = (GLuint) ((GLfloat) index[i] + (1.0F-f) * ctx->Fog.Index);
368  }
369  break;
370  case GL_EXP2:
371  {
372  GLfloat negDensitySquared = -ctx->Fog.Density * ctx->Fog.Density;
373  for (i=0;i<n;i++) {
374  GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
375  GLfloat eyez = -d / (c+ndcz);
376  GLfloat f;
377  if (eyez < 0.0) eyez = -eyez;
378  f = exp( negDensitySquared * eyez*eyez );
379  f = CLAMP( f, 0.0F, 1.0F );
380  index[i] = (GLuint) ((GLfloat) index[i] + (1.0F-f) * ctx->Fog.Index);
381  }
382  }
383  break;
384  default:
385  gl_problem(ctx, "Bad fog mode in gl_fog_index_pixels");
386  return;
387  }
388 }
#define GL_EXP2
Definition: gl.h:423
GLdouble n
Definition: glext.h:7729
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define CLAMP(f, min, max)
Definition: tif_color.c:177
GLdouble GLdouble z
Definition: glext.h:5874
GLuint index
Definition: glext.h:6031
struct gl_fog_attrib Fog
Definition: types.h:1323
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
const GLubyte * c
Definition: glext.h:8905
#define GL_LINEAR
Definition: gl.h:421
#define GL_EXP
Definition: gl.h:422
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
unsigned int GLuint
Definition: gl.h:159
#define f
Definition: ke_i.h:83
struct gl_viewport_attrib Viewport
Definition: types.h:1336
GLbyte GLbyte tz
Definition: glext.h:8756
DWORD exp
Definition: msg.c:16038
float GLfloat
Definition: gl.h:161
GLfloat ProjectionMatrix[16]
Definition: types.h:1292
#define F(x, y, z)
Definition: md5.c:51

Referenced by gl_flush_pb(), gl_write_index_span(), and gl_write_monoindex_span().

◆ gl_fog_index_vertices()

void gl_fog_index_vertices ( GLcontext ctx,
GLuint  n,
GLfloat  v[][4],
GLuint  indx[] 
)

Definition at line 190 of file fog.c.

192 {
193  /* NOTE: the extensive use of casts generates better/faster code for MIPS */
194  switch (ctx->Fog.Mode) {
195  case GL_LINEAR:
196  {
197  GLfloat d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
198  GLfloat fogindex = ctx->Fog.Index;
199  GLfloat fogend = ctx->Fog.End;
200  GLuint i;
201  for (i=0;i<n;i++) {
202  GLfloat f = (fogend - ABSF(v[i][2])) * d;
203  f = CLAMP( f, 0.0F, 1.0F );
204  indx[i] = (GLint)
205  ((GLfloat) (GLint) indx[i] + (1.0F-f) * fogindex);
206  }
207  }
208  break;
209  case GL_EXP:
210  {
211  GLfloat d = -ctx->Fog.Density;
212  GLfloat fogindex = ctx->Fog.Index;
213  GLuint i;
214  for (i=0;i<n;i++) {
215  GLfloat f = exp( d * ABSF(v[i][2]) );
216  f = CLAMP( f, 0.0F, 1.0F );
217  indx[i] = (GLint)
218  ((GLfloat) (GLint) indx[i] + (1.0F-f) * fogindex);
219  }
220  }
221  break;
222  case GL_EXP2:
223  {
224  GLfloat d = -(ctx->Fog.Density*ctx->Fog.Density);
225  GLfloat fogindex = ctx->Fog.Index;
226  GLuint i;
227  for (i=0;i<n;i++) {
228  GLfloat z = ABSF(v[i][2]);
229  GLfloat f = exp( -d * z*z );
230  f = CLAMP( f, 0.0F, 1.0F );
231  indx[i] = (GLint)
232  ((GLfloat) (GLint) indx[i] + (1.0F-f) * fogindex);
233  }
234  }
235  break;
236  default:
237  gl_problem(ctx, "Bad fog mode in gl_fog_index_vertices");
238  return;
239  }
240 }
#define GL_EXP2
Definition: gl.h:423
GLdouble n
Definition: glext.h:7729
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define ABSF(X)
Definition: macros.h:141
#define CLAMP(f, min, max)
Definition: tif_color.c:177
GLdouble GLdouble z
Definition: glext.h:5874
struct gl_fog_attrib Fog
Definition: types.h:1323
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
#define GL_LINEAR
Definition: gl.h:421
#define GL_EXP
Definition: gl.h:422
void gl_problem(const GLcontext *ctx, const char *s)
Definition: context.c:1394
const GLdouble * v
Definition: gl.h:2040
unsigned int GLuint
Definition: gl.h:159
DWORD exp
Definition: msg.c:16038
float GLfloat
Definition: gl.h:161
int GLint
Definition: gl.h:156
#define F(x, y, z)
Definition: md5.c:51

Referenced by fog_vertices().

◆ gl_Fogfv()

void gl_Fogfv ( GLcontext ctx,
GLenum  pname,
const GLfloat params 
)

Definition at line 70 of file fog.c.

71 {
72  GLenum m;
73 
74  switch (pname) {
75  case GL_FOG_MODE:
76  m = (GLenum) (GLint) *params;
77  if (m==GL_LINEAR || m==GL_EXP || m==GL_EXP2) {
78  ctx->Fog.Mode = m;
79  }
80  else {
81  gl_error( ctx, GL_INVALID_ENUM, "glFog" );
82  }
83  break;
84  case GL_FOG_DENSITY:
85  if (*params<0.0) {
86  gl_error( ctx, GL_INVALID_VALUE, "glFog" );
87  }
88  else {
89  ctx->Fog.Density = *params;
90  }
91  break;
92  case GL_FOG_START:
93 #ifndef GL_VERSION_1_1
94  if (*params<0.0F) {
95  gl_error( ctx, GL_INVALID_VALUE, "glFog(GL_FOG_START)" );
96  return;
97  }
98 #endif
99  ctx->Fog.Start = *params;
100  break;
101  case GL_FOG_END:
102 #ifndef GL_VERSION_1_1
103  if (*params<0.0F) {
104  gl_error( ctx, GL_INVALID_VALUE, "glFog(GL_FOG_END)" );
105  return;
106  }
107 #endif
108  ctx->Fog.End = *params;
109  break;
110  case GL_FOG_INDEX:
111  ctx->Fog.Index = *params;
112  break;
113  case GL_FOG_COLOR:
114  ctx->Fog.Color[0] = params[0];
115  ctx->Fog.Color[1] = params[1];
116  ctx->Fog.Color[2] = params[2];
117  ctx->Fog.Color[3] = params[3];
118  break;
119  default:
120  gl_error( ctx, GL_INVALID_ENUM, "glFog" );
121  }
122 }
#define GL_FOG_DENSITY
Definition: gl.h:416
#define GL_EXP2
Definition: gl.h:423
#define GL_FOG_END
Definition: gl.h:420
const GLfloat * m
Definition: glext.h:10848
GLenum pname
Definition: glext.h:5645
GLenum const GLfloat * params
Definition: glext.h:5645
struct gl_fog_attrib Fog
Definition: types.h:1323
#define GL_FOG_MODE
Definition: gl.h:415
#define GL_FOG_INDEX
Definition: gl.h:418
#define GL_FOG_COLOR
Definition: gl.h:417
#define GL_LINEAR
Definition: gl.h:421
#define GL_INVALID_VALUE
Definition: gl.h:695
#define GL_EXP
Definition: gl.h:422
unsigned int GLenum
Definition: gl.h:150
void gl_error(GLcontext *ctx, GLenum error, const char *s)
Definition: context.c:1421
#define GL_INVALID_ENUM
Definition: gl.h:694
int GLint
Definition: gl.h:156
#define GL_FOG_START
Definition: gl.h:419
#define F(x, y, z)
Definition: md5.c:51

Referenced by execute_list(), and init_exec_pointers().