Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 1 | /* |
2 | * Mesa 3-D graphics library |
||
3 | * |
||
4 | * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. |
||
5 | * |
||
6 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
7 | * copy of this software and associated documentation files (the "Software"), |
||
8 | * to deal in the Software without restriction, including without limitation |
||
9 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||
10 | * and/or sell copies of the Software, and to permit persons to whom the |
||
11 | * Software is furnished to do so, subject to the following conditions: |
||
12 | * |
||
13 | * The above copyright notice and this permission notice shall be included |
||
14 | * in all copies or substantial portions of the Software. |
||
15 | * |
||
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
||
17 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||
19 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
||
20 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
||
21 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
||
22 | * OTHER DEALINGS IN THE SOFTWARE. |
||
23 | */ |
||
24 | |||
25 | #ifndef PROG_STATEVARS_H |
||
26 | #define PROG_STATEVARS_H |
||
27 | |||
28 | |||
29 | #include "main/glheader.h" |
||
30 | |||
31 | |||
32 | #ifdef __cplusplus |
||
33 | extern "C" { |
||
34 | #endif |
||
35 | |||
36 | |||
37 | struct gl_context; |
||
38 | struct gl_program_parameter_list; |
||
39 | |||
40 | /** |
||
41 | * Number of STATE_* values we need to address any GL state. |
||
42 | * Used to dimension arrays. |
||
43 | */ |
||
44 | #define STATE_LENGTH 5 |
||
45 | |||
46 | |||
47 | /** |
||
48 | * Used for describing GL state referenced from inside ARB vertex and |
||
49 | * fragment programs. |
||
50 | * A string such as "state.light[0].ambient" gets translated into a |
||
51 | * sequence of tokens such as [ STATE_LIGHT, 0, STATE_AMBIENT ]. |
||
52 | * |
||
53 | * For state that's an array, like STATE_CLIPPLANE, the 2nd token [1] should |
||
54 | * always be the array index. |
||
55 | */ |
||
56 | typedef enum gl_state_index_ { |
||
57 | STATE_MATERIAL = 100, /* start at 100 so small ints are seen as ints */ |
||
58 | |||
59 | STATE_LIGHT, |
||
60 | STATE_LIGHTMODEL_AMBIENT, |
||
61 | STATE_LIGHTMODEL_SCENECOLOR, |
||
62 | STATE_LIGHTPROD, |
||
63 | |||
64 | STATE_TEXGEN, |
||
65 | |||
66 | STATE_FOG_COLOR, |
||
67 | STATE_FOG_PARAMS, |
||
68 | |||
69 | STATE_CLIPPLANE, |
||
70 | |||
71 | STATE_POINT_SIZE, |
||
72 | STATE_POINT_ATTENUATION, |
||
73 | |||
74 | STATE_MODELVIEW_MATRIX, |
||
75 | STATE_PROJECTION_MATRIX, |
||
76 | STATE_MVP_MATRIX, |
||
77 | STATE_TEXTURE_MATRIX, |
||
78 | STATE_PROGRAM_MATRIX, |
||
79 | STATE_MATRIX_INVERSE, |
||
80 | STATE_MATRIX_TRANSPOSE, |
||
81 | STATE_MATRIX_INVTRANS, |
||
82 | |||
83 | STATE_AMBIENT, |
||
84 | STATE_DIFFUSE, |
||
85 | STATE_SPECULAR, |
||
86 | STATE_EMISSION, |
||
87 | STATE_SHININESS, |
||
88 | STATE_HALF_VECTOR, |
||
89 | |||
90 | STATE_POSITION, /**< xyzw = position */ |
||
91 | STATE_ATTENUATION, /**< xyz = attenuation, w = spot exponent */ |
||
92 | STATE_SPOT_DIRECTION, /**< xyz = direction, w = cos(cutoff) */ |
||
93 | STATE_SPOT_CUTOFF, /**< x = cutoff, yzw = undefined */ |
||
94 | |||
95 | STATE_TEXGEN_EYE_S, |
||
96 | STATE_TEXGEN_EYE_T, |
||
97 | STATE_TEXGEN_EYE_R, |
||
98 | STATE_TEXGEN_EYE_Q, |
||
99 | STATE_TEXGEN_OBJECT_S, |
||
100 | STATE_TEXGEN_OBJECT_T, |
||
101 | STATE_TEXGEN_OBJECT_R, |
||
102 | STATE_TEXGEN_OBJECT_Q, |
||
103 | |||
104 | STATE_TEXENV_COLOR, |
||
105 | |||
106 | STATE_NUM_SAMPLES, /* An integer, not a float like the other state vars */ |
||
107 | |||
108 | STATE_DEPTH_RANGE, |
||
109 | |||
110 | STATE_VERTEX_PROGRAM, |
||
111 | STATE_FRAGMENT_PROGRAM, |
||
112 | |||
113 | STATE_ENV, |
||
114 | STATE_LOCAL, |
||
115 | |||
116 | STATE_INTERNAL, /* Mesa additions */ |
||
117 | STATE_CURRENT_ATTRIB, /* ctx->Current vertex attrib value */ |
||
118 | STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, /* ctx->Current vertex attrib value after passthrough vertex processing */ |
||
119 | STATE_NORMAL_SCALE, |
||
120 | STATE_TEXRECT_SCALE, |
||
121 | STATE_FOG_PARAMS_OPTIMIZED, /* for faster fog calc */ |
||
122 | STATE_POINT_SIZE_CLAMPED, /* includes implementation dependent size clamp */ |
||
123 | STATE_LIGHT_SPOT_DIR_NORMALIZED, /* pre-normalized spot dir */ |
||
124 | STATE_LIGHT_POSITION, /* object vs eye space */ |
||
125 | STATE_LIGHT_POSITION_NORMALIZED, /* object vs eye space */ |
||
126 | STATE_LIGHT_HALF_VECTOR, /* object vs eye space */ |
||
127 | STATE_PT_SCALE, /**< Pixel transfer RGBA scale */ |
||
128 | STATE_PT_BIAS, /**< Pixel transfer RGBA bias */ |
||
129 | STATE_FB_SIZE, /**< (width-1, height-1, 0, 0) */ |
||
130 | STATE_FB_WPOS_Y_TRANSFORM, /**< (1, 0, -1, height) if a FBO is bound, (-1, height, 1, 0) otherwise */ |
||
131 | STATE_INTERNAL_DRIVER /* first available state index for drivers (must be last) */ |
||
132 | } gl_state_index; |
||
133 | |||
134 | |||
135 | |||
136 | extern void |
||
137 | _mesa_load_state_parameters(struct gl_context *ctx, |
||
138 | struct gl_program_parameter_list *paramList); |
||
139 | |||
140 | |||
141 | extern GLbitfield |
||
142 | _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]); |
||
143 | |||
144 | |||
145 | extern char * |
||
146 | _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]); |
||
147 | |||
148 | |||
149 | |||
150 | #ifdef __cplusplus |
||
151 | } |
||
152 | #endif |
||
153 | |||
154 | #endif /* PROG_STATEVARS_H */>>>>>>>> |