Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 serge 1
/*
2
 * Mesa 3-D graphics library
3
 * Version:  7.5
4
 *
5
 * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6
 * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a
9
 * copy of this software and associated documentation files (the "Software"),
10
 * to deal in the Software without restriction, including without limitation
11
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
 * and/or sell copies of the Software, and to permit persons to whom the
13
 * Software is furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included
16
 * in all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
 */
25
 
26
 
27
#ifndef LIGHT_H
28
#define LIGHT_H
29
 
30
 
31
#include "glheader.h"
32
#include "mfeatures.h"
33
 
34
struct gl_context;
35
struct gl_light;
36
struct gl_material;
37
 
38
extern void GLAPIENTRY
39
_mesa_ShadeModel( GLenum mode );
40
 
41
extern void GLAPIENTRY
42
_mesa_ProvokingVertexEXT(GLenum mode);
43
 
44
 
45
#if _HAVE_FULL_GL
46
extern void GLAPIENTRY
47
_mesa_ColorMaterial( GLenum face, GLenum mode );
48
 
49
extern void GLAPIENTRY
50
_mesa_Lightf( GLenum light, GLenum pname, GLfloat param );
51
 
52
extern void GLAPIENTRY
53
_mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params );
54
 
55
extern void GLAPIENTRY
56
_mesa_Lightiv( GLenum light, GLenum pname, const GLint *params );
57
 
58
extern void GLAPIENTRY
59
_mesa_Lighti( GLenum light, GLenum pname, GLint param );
60
 
61
extern void GLAPIENTRY
62
_mesa_LightModelf( GLenum pname, GLfloat param );
63
 
64
extern void GLAPIENTRY
65
_mesa_LightModelfv( GLenum pname, const GLfloat *params );
66
 
67
extern void GLAPIENTRY
68
_mesa_LightModeli( GLenum pname, GLint param );
69
 
70
extern void GLAPIENTRY
71
_mesa_LightModeliv( GLenum pname, const GLint *params );
72
 
73
extern void GLAPIENTRY
74
_mesa_GetLightfv( GLenum light, GLenum pname, GLfloat *params );
75
 
76
extern void GLAPIENTRY
77
_mesa_GetLightiv( GLenum light, GLenum pname, GLint *params );
78
 
79
extern void GLAPIENTRY
80
_mesa_GetMaterialfv( GLenum face, GLenum pname, GLfloat *params );
81
 
82
extern void GLAPIENTRY
83
_mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params );
84
 
85
 
86
extern void
87
_mesa_light(struct gl_context *ctx, GLuint lnum, GLenum pname, const GLfloat *params);
88
 
89
 
90
/* Lerp between adjacent values in the f(x) lookup table, giving a
91
 * continuous function, with adequeate overall accuracy.  (Though
92
 * still pretty good compared to a straight lookup).
93
 * Result should be a GLfloat.
94
 */
95
#define GET_SHINE_TAB_ENTRY( table, dp, result )			\
96
do {									\
97
   struct gl_shine_tab *_tab = table;					\
98
   float f = (dp * (SHINE_TABLE_SIZE-1));				\
99
   int k = (int) f;							\
100
   if (k < 0 /* gcc may cast an overflow float value to negative int value*/ \
101
	|| k > SHINE_TABLE_SIZE-2)					\
102
      result = (GLfloat) pow( dp, _tab->shininess );		\
103
   else									\
104
      result = _tab->tab[k] + (f-k)*(_tab->tab[k+1]-_tab->tab[k]);	\
105
} while (0)
106
 
107
 
108
extern GLuint _mesa_material_bitmask( struct gl_context *ctx,
109
                                      GLenum face, GLenum pname,
110
                                      GLuint legal,
111
                                      const char * );
112
 
113
extern void _mesa_invalidate_spot_exp_table( struct gl_light *l );
114
 
115
extern void _mesa_invalidate_shine_table( struct gl_context *ctx, GLuint i );
116
 
117
extern void _mesa_validate_all_lighting_tables( struct gl_context *ctx );
118
 
119
extern void _mesa_update_lighting( struct gl_context *ctx );
120
 
121
extern void _mesa_update_tnl_spaces( struct gl_context *ctx, GLuint new_state );
122
 
123
extern void _mesa_update_material( struct gl_context *ctx,
124
                                   GLuint bitmask );
125
 
126
extern void _mesa_copy_materials( struct gl_material *dst,
127
				  const struct gl_material *src,
128
				  GLuint bitmask );
129
 
130
extern void _mesa_update_color_material( struct gl_context *ctx,
131
                                         const GLfloat rgba[4] );
132
 
133
extern void _mesa_init_lighting( struct gl_context *ctx );
134
 
135
extern void _mesa_free_lighting_data( struct gl_context *ctx );
136
 
137
extern void _mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag );
138
 
139
#else
140
#define _mesa_update_color_material( c, r ) ((void)0)
141
#define _mesa_validate_all_lighting_tables( c ) ((void)0)
142
#define _mesa_invalidate_spot_exp_table( l ) ((void)0)
143
#define _mesa_material_bitmask( c, f, p, l, s ) 0
144
#define _mesa_init_lighting( c ) ((void)0)
145
#define _mesa_free_lighting_data( c ) ((void)0)
146
#define _mesa_update_lighting( c ) ((void)0)
147
#define _mesa_update_tnl_spaces( c, n ) ((void)0)
148
#define GET_SHINE_TAB_ENTRY( table, dp, result )  ((result)=0)
149
#endif
150
 
151
#endif