2
* Mesa 3-D graphics library
5
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
7
* Permission is hereby granted, free of charge, to any person obtaining a
8
* copy of this software and associated documentation files (the "Software"),
9
* to deal in the Software without restriction, including without limitation
10
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
* and/or sell copies of the Software, and to permit persons to whom the
12
* Software is furnished to do so, subject to the following conditions:
14
* The above copyright notice and this permission notice shall be included
15
* in all copies or substantial portions of the Software.
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
#ifndef PROG_STATEVARS_H
26
#define PROG_STATEVARS_H
28
#include "main/mtypes.h"
32
* Number of STATE_* values we need to address any GL state.
33
* Used to dimension arrays.
35
#define STATE_LENGTH 5
39
* Used for describing GL state referenced from inside ARB vertex and
41
* A string such as "state.light[0].ambient" gets translated into a
42
* sequence of tokens such as [ STATE_LIGHT, 0, STATE_AMBIENT ].
44
* For state that's an array, like STATE_CLIPPLANE, the 2nd token [1] should
45
* always be the array index.
47
typedef enum gl_state_index_ {
48
STATE_MATERIAL = 100, /* start at 100 so small ints are seen as ints */
51
STATE_LIGHTMODEL_AMBIENT,
52
STATE_LIGHTMODEL_SCENECOLOR,
63
STATE_POINT_ATTENUATION,
65
STATE_MODELVIEW_MATRIX,
66
STATE_PROJECTION_MATRIX,
72
STATE_MATRIX_TRANSPOSE,
73
STATE_MATRIX_INVTRANS,
82
STATE_POSITION, /**< xyzw = position */
83
STATE_ATTENUATION, /**< xyz = attenuation, w = spot exponent */
84
STATE_SPOT_DIRECTION, /**< xyz = direction, w = cos(cutoff) */
85
STATE_SPOT_CUTOFF, /**< x = cutoff, yzw = undefined */
91
STATE_TEXGEN_OBJECT_S,
92
STATE_TEXGEN_OBJECT_T,
93
STATE_TEXGEN_OBJECT_R,
94
STATE_TEXGEN_OBJECT_Q,
100
STATE_VERTEX_PROGRAM,
101
STATE_FRAGMENT_PROGRAM,
106
STATE_INTERNAL, /* Mesa additions */
107
STATE_CURRENT_ATTRIB, /* ctx->Current vertex attrib value */
110
STATE_FOG_PARAMS_OPTIMIZED, /* for faster fog calc */
111
STATE_POINT_SIZE_CLAMPED, /* includes implementation dependent size clamp */
112
STATE_POINT_SIZE_IMPL_CLAMP, /* for implementation clamp only in vs */
113
STATE_LIGHT_SPOT_DIR_NORMALIZED, /* pre-normalized spot dir */
114
STATE_LIGHT_POSITION, /* object vs eye space */
115
STATE_LIGHT_POSITION_NORMALIZED, /* object vs eye space */
116
STATE_LIGHT_HALF_VECTOR, /* object vs eye space */
117
STATE_PT_SCALE, /**< Pixel transfer RGBA scale */
118
STATE_PT_BIAS, /**< Pixel transfer RGBA bias */
119
STATE_PCM_SCALE, /**< Post color matrix RGBA scale */
120
STATE_PCM_BIAS, /**< Post color matrix RGBA bias */
121
STATE_SHADOW_AMBIENT, /**< ARB_shadow_ambient fail value; token[2] is texture unit index */
122
STATE_FB_SIZE, /**< (width-1, height-1, 0, 0) */
123
STATE_ROT_MATRIX_0, /**< ATI_envmap_bumpmap, rot matrix row 0 */
124
STATE_ROT_MATRIX_1, /**< ATI_envmap_bumpmap, rot matrix row 1 */
125
STATE_INTERNAL_DRIVER /* first available state index for drivers (must be last) */
131
_mesa_load_state_parameters(GLcontext *ctx,
132
struct gl_program_parameter_list *paramList);
136
_mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]);
140
_mesa_program_state_string(const gl_state_index state[STATE_LENGTH]);
144
_mesa_load_tracked_matrices(GLcontext *ctx);
147
#endif /* PROG_STATEVARS_H */