CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/GPU/ge_constants.h
Views: 1401
1
// Copyright (c) 2012- PPSSPP Project.
2
3
// This program is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, version 2.0 or later versions.
6
7
// This program is distributed in the hope that it will be useful,
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
// GNU General Public License 2.0 for more details.
11
12
// A copy of the GPL 2.0 should have been included with the program.
13
// If not, see http://www.gnu.org/licenses/
14
15
// Official git repository and contact information can be found at
16
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
17
18
#pragma once
19
20
#include <cstdint>
21
22
enum GECommand {
23
GE_CMD_NOP = 0,
24
GE_CMD_VADDR = 0x1,
25
GE_CMD_IADDR = 0x2,
26
GE_CMD_PRIM = 0x4,
27
GE_CMD_BEZIER = 0x5,
28
GE_CMD_SPLINE = 0x6,
29
GE_CMD_BOUNDINGBOX = 0x7,
30
GE_CMD_JUMP = 0x8,
31
GE_CMD_BJUMP = 0x9,
32
GE_CMD_CALL = 0xA,
33
GE_CMD_RET = 0xB,
34
GE_CMD_END = 0xC,
35
GE_CMD_SIGNAL = 0xE,
36
GE_CMD_FINISH = 0xF,
37
GE_CMD_BASE = 0x10,
38
GE_CMD_VERTEXTYPE = 0x12,
39
GE_CMD_OFFSETADDR = 0x13,
40
GE_CMD_ORIGIN = 0x14,
41
GE_CMD_REGION1 = 0x15,
42
GE_CMD_REGION2 = 0x16,
43
GE_CMD_LIGHTINGENABLE = 0x17,
44
GE_CMD_LIGHTENABLE0 = 0x18,
45
GE_CMD_LIGHTENABLE1 = 0x19,
46
GE_CMD_LIGHTENABLE2 = 0x1A,
47
GE_CMD_LIGHTENABLE3 = 0x1B,
48
GE_CMD_DEPTHCLAMPENABLE = 0x1C,
49
GE_CMD_CULLFACEENABLE = 0x1D,
50
GE_CMD_TEXTUREMAPENABLE = 0x1E,
51
GE_CMD_FOGENABLE = 0x1F,
52
GE_CMD_DITHERENABLE = 0x20,
53
GE_CMD_ALPHABLENDENABLE = 0x21,
54
GE_CMD_ALPHATESTENABLE = 0x22,
55
GE_CMD_ZTESTENABLE = 0x23,
56
GE_CMD_STENCILTESTENABLE = 0x24,
57
GE_CMD_ANTIALIASENABLE = 0x25,
58
GE_CMD_PATCHCULLENABLE = 0x26,
59
GE_CMD_COLORTESTENABLE = 0x27,
60
GE_CMD_LOGICOPENABLE = 0x28,
61
GE_CMD_BONEMATRIXNUMBER = 0x2A,
62
GE_CMD_BONEMATRIXDATA = 0x2B,
63
GE_CMD_MORPHWEIGHT0 = 0x2C,
64
GE_CMD_MORPHWEIGHT1 = 0x2D,
65
GE_CMD_MORPHWEIGHT2 = 0x2E,
66
GE_CMD_MORPHWEIGHT3 = 0x2F,
67
GE_CMD_MORPHWEIGHT4 = 0x30,
68
GE_CMD_MORPHWEIGHT5 = 0x31,
69
GE_CMD_MORPHWEIGHT6 = 0x32,
70
GE_CMD_MORPHWEIGHT7 = 0x33,
71
GE_CMD_PATCHDIVISION = 0x36,
72
GE_CMD_PATCHPRIMITIVE = 0x37,
73
GE_CMD_PATCHFACING = 0x38,
74
GE_CMD_WORLDMATRIXNUMBER = 0x3A,
75
GE_CMD_WORLDMATRIXDATA = 0x3B,
76
GE_CMD_VIEWMATRIXNUMBER = 0x3C,
77
GE_CMD_VIEWMATRIXDATA = 0x3D,
78
GE_CMD_PROJMATRIXNUMBER = 0x3E,
79
GE_CMD_PROJMATRIXDATA = 0x3F,
80
GE_CMD_TGENMATRIXNUMBER = 0x40,
81
GE_CMD_TGENMATRIXDATA = 0x41,
82
GE_CMD_VIEWPORTXSCALE = 0x42,
83
GE_CMD_VIEWPORTYSCALE = 0x43,
84
GE_CMD_VIEWPORTZSCALE = 0x44,
85
GE_CMD_VIEWPORTXCENTER = 0x45,
86
GE_CMD_VIEWPORTYCENTER = 0x46,
87
GE_CMD_VIEWPORTZCENTER = 0x47,
88
GE_CMD_TEXSCALEU = 0x48,
89
GE_CMD_TEXSCALEV = 0x49,
90
GE_CMD_TEXOFFSETU = 0x4A,
91
GE_CMD_TEXOFFSETV = 0x4B,
92
GE_CMD_OFFSETX = 0x4C,
93
GE_CMD_OFFSETY = 0x4D,
94
GE_CMD_SHADEMODE = 0x50, // flat or gouraud
95
GE_CMD_REVERSENORMAL = 0x51,
96
GE_CMD_MATERIALUPDATE = 0x53,
97
GE_CMD_MATERIALEMISSIVE = 0x54, //not sure about these but this makes sense
98
GE_CMD_MATERIALAMBIENT = 0x55, //gotta try enabling lighting and check :)
99
GE_CMD_MATERIALDIFFUSE = 0x56,
100
GE_CMD_MATERIALSPECULAR = 0x57,
101
GE_CMD_MATERIALALPHA = 0x58,
102
GE_CMD_MATERIALSPECULARCOEF = 0x5B,
103
GE_CMD_AMBIENTCOLOR = 0x5C,
104
GE_CMD_AMBIENTALPHA = 0x5D,
105
GE_CMD_LIGHTMODE = 0x5E,
106
GE_CMD_LIGHTTYPE0 = 0x5F,
107
GE_CMD_LIGHTTYPE1 = 0x60,
108
GE_CMD_LIGHTTYPE2 = 0x61,
109
GE_CMD_LIGHTTYPE3 = 0x62,
110
GE_CMD_LX0 = 0x63,
111
GE_CMD_LY0,
112
GE_CMD_LZ0,
113
GE_CMD_LX1,
114
GE_CMD_LY1,
115
GE_CMD_LZ1,
116
GE_CMD_LX2,
117
GE_CMD_LY2,
118
GE_CMD_LZ2,
119
GE_CMD_LX3,
120
GE_CMD_LY3,
121
GE_CMD_LZ3,
122
GE_CMD_LDX0 = 0x6F,
123
GE_CMD_LDY0,
124
GE_CMD_LDZ0,
125
GE_CMD_LDX1,
126
GE_CMD_LDY1,
127
GE_CMD_LDZ1,
128
GE_CMD_LDX2,
129
GE_CMD_LDY2,
130
GE_CMD_LDZ2,
131
GE_CMD_LDX3,
132
GE_CMD_LDY3,
133
GE_CMD_LDZ3,
134
GE_CMD_LKA0 = 0x7B,
135
GE_CMD_LKB0,
136
GE_CMD_LKC0,
137
GE_CMD_LKA1,
138
GE_CMD_LKB1,
139
GE_CMD_LKC1,
140
GE_CMD_LKA2,
141
GE_CMD_LKB2,
142
GE_CMD_LKC2,
143
GE_CMD_LKA3,
144
GE_CMD_LKB3,
145
GE_CMD_LKC3,
146
GE_CMD_LKS0 = 0x87,
147
GE_CMD_LKS1,
148
GE_CMD_LKS2,
149
GE_CMD_LKS3,
150
GE_CMD_LKO0 = 0x8b,
151
GE_CMD_LKO1,
152
GE_CMD_LKO2,
153
GE_CMD_LKO3,
154
GE_CMD_LAC0 = 0x8F,
155
GE_CMD_LDC0,
156
GE_CMD_LSC0,
157
GE_CMD_LAC1,
158
GE_CMD_LDC1,
159
GE_CMD_LSC1,
160
GE_CMD_LAC2,
161
GE_CMD_LDC2,
162
GE_CMD_LSC2,
163
GE_CMD_LAC3,
164
GE_CMD_LDC3,
165
GE_CMD_LSC3,
166
GE_CMD_CULL = 0x9B,
167
GE_CMD_FRAMEBUFPTR = 0x9C,
168
GE_CMD_FRAMEBUFWIDTH = 0x9D,
169
GE_CMD_ZBUFPTR = 0x9E,
170
GE_CMD_ZBUFWIDTH = 0x9F,
171
GE_CMD_TEXADDR0 = 0xA0,
172
GE_CMD_TEXADDR1,
173
GE_CMD_TEXADDR2,
174
GE_CMD_TEXADDR3,
175
GE_CMD_TEXADDR4,
176
GE_CMD_TEXADDR5,
177
GE_CMD_TEXADDR6,
178
GE_CMD_TEXADDR7,
179
GE_CMD_TEXBUFWIDTH0 = 0xA8,
180
GE_CMD_TEXBUFWIDTH1,
181
GE_CMD_TEXBUFWIDTH2,
182
GE_CMD_TEXBUFWIDTH3,
183
GE_CMD_TEXBUFWIDTH4,
184
GE_CMD_TEXBUFWIDTH5,
185
GE_CMD_TEXBUFWIDTH6,
186
GE_CMD_TEXBUFWIDTH7,
187
GE_CMD_CLUTADDR = 0xB0,
188
GE_CMD_CLUTADDRUPPER = 0xB1,
189
GE_CMD_TRANSFERSRC,
190
GE_CMD_TRANSFERSRCW,
191
GE_CMD_TRANSFERDST,
192
GE_CMD_TRANSFERDSTW,
193
GE_CMD_TEXSIZE0=0xB8,
194
GE_CMD_TEXSIZE1,
195
GE_CMD_TEXSIZE2,
196
GE_CMD_TEXSIZE3,
197
GE_CMD_TEXSIZE4,
198
GE_CMD_TEXSIZE5,
199
GE_CMD_TEXSIZE6,
200
GE_CMD_TEXSIZE7,
201
GE_CMD_TEXMAPMODE = 0xC0,
202
GE_CMD_TEXSHADELS = 0xC1,
203
GE_CMD_TEXMODE = 0xC2,
204
GE_CMD_TEXFORMAT = 0xC3,
205
GE_CMD_LOADCLUT = 0xC4,
206
GE_CMD_CLUTFORMAT = 0xC5,
207
GE_CMD_TEXFILTER = 0xC6,
208
GE_CMD_TEXWRAP = 0xC7,
209
GE_CMD_TEXLEVEL = 0xC8,
210
GE_CMD_TEXFUNC = 0xC9,
211
GE_CMD_TEXENVCOLOR = 0xCA,
212
GE_CMD_TEXFLUSH = 0xCB,
213
GE_CMD_TEXSYNC = 0xCC,
214
GE_CMD_FOG1 = 0xCD,
215
GE_CMD_FOG2 = 0xCE,
216
GE_CMD_FOGCOLOR = 0xCF,
217
GE_CMD_TEXLODSLOPE = 0xD0,
218
GE_CMD_FRAMEBUFPIXFORMAT = 0xD2,
219
GE_CMD_CLEARMODE = 0xD3,
220
GE_CMD_SCISSOR1 = 0xD4,
221
GE_CMD_SCISSOR2 = 0xD5,
222
GE_CMD_MINZ = 0xD6,
223
GE_CMD_MAXZ = 0xD7,
224
GE_CMD_COLORTEST = 0xD8,
225
GE_CMD_COLORREF = 0xD9,
226
GE_CMD_COLORTESTMASK = 0xDA,
227
GE_CMD_ALPHATEST = 0xDB,
228
GE_CMD_STENCILTEST = 0xDC,
229
GE_CMD_STENCILOP = 0xDD,
230
GE_CMD_ZTEST = 0xDE,
231
GE_CMD_BLENDMODE = 0xDF,
232
GE_CMD_BLENDFIXEDA = 0xE0,
233
GE_CMD_BLENDFIXEDB = 0xE1,
234
GE_CMD_DITH0 = 0xE2,
235
GE_CMD_DITH1,
236
GE_CMD_DITH2,
237
GE_CMD_DITH3,
238
GE_CMD_LOGICOP = 0xE6,
239
GE_CMD_ZWRITEDISABLE = 0xE7,
240
GE_CMD_MASKRGB = 0xE8,
241
GE_CMD_MASKALPHA = 0xE9,
242
GE_CMD_TRANSFERSTART = 0xEA,
243
GE_CMD_TRANSFERSRCPOS = 0xEB,
244
GE_CMD_TRANSFERDSTPOS = 0xEC,
245
GE_CMD_TRANSFERSIZE = 0xEE,
246
GE_CMD_VSCX = 0xF0,
247
GE_CMD_VSCY = 0xF1,
248
GE_CMD_VSCZ = 0xF2,
249
GE_CMD_VTCS = 0xF3,
250
GE_CMD_VTCT = 0xF4,
251
GE_CMD_VTCQ = 0xF5,
252
GE_CMD_VCV = 0xF6,
253
GE_CMD_VAP = 0xF7,
254
GE_CMD_VFC = 0xF8,
255
GE_CMD_VSCV = 0xF9,
256
GE_CMD_UNKNOWN_03 = 0x03,
257
GE_CMD_UNKNOWN_0D = 0x0D,
258
GE_CMD_UNKNOWN_11 = 0x11,
259
GE_CMD_UNKNOWN_29 = 0x29,
260
GE_CMD_UNKNOWN_34 = 0x34,
261
GE_CMD_UNKNOWN_35 = 0x35,
262
GE_CMD_UNKNOWN_39 = 0x39,
263
GE_CMD_UNKNOWN_4E = 0x4E,
264
GE_CMD_UNKNOWN_4F = 0x4F,
265
GE_CMD_UNKNOWN_52 = 0x52,
266
GE_CMD_UNKNOWN_59 = 0x59,
267
GE_CMD_UNKNOWN_5A = 0x5A,
268
GE_CMD_UNKNOWN_B6 = 0xB6,
269
GE_CMD_UNKNOWN_B7 = 0xB7,
270
GE_CMD_UNKNOWN_D1 = 0xD1,
271
GE_CMD_UNKNOWN_ED = 0xED,
272
GE_CMD_UNKNOWN_EF = 0xEF,
273
GE_CMD_UNKNOWN_FA = 0xFA,
274
GE_CMD_UNKNOWN_FB = 0xFB,
275
GE_CMD_UNKNOWN_FC = 0xFC,
276
GE_CMD_UNKNOWN_FD = 0xFD,
277
GE_CMD_UNKNOWN_FE = 0xFE,
278
GE_CMD_NOP_FF = 0xFF,
279
};
280
281
#define GE_VTYPE_TRANSFORM (0<<23)
282
#define GE_VTYPE_THROUGH (1<<23)
283
#define GE_VTYPE_THROUGH_MASK (1<<23)
284
285
#define GE_VTYPE_TC_NONE (0<<0)
286
#define GE_VTYPE_TC_8BIT (1<<0)
287
#define GE_VTYPE_TC_16BIT (2<<0)
288
#define GE_VTYPE_TC_FLOAT (3<<0)
289
#define GE_VTYPE_TC_MASK (3<<0)
290
#define GE_VTYPE_TC_SHIFT 0
291
292
#define GE_VTYPE_COL_NONE (0<<2)
293
#define GE_VTYPE_COL_565 (4<<2)
294
#define GE_VTYPE_COL_5551 (5<<2)
295
#define GE_VTYPE_COL_4444 (6<<2)
296
#define GE_VTYPE_COL_8888 (7<<2)
297
#define GE_VTYPE_COL_MASK (7<<2)
298
#define GE_VTYPE_COL_SHIFT 2
299
300
#define GE_VTYPE_NRM_NONE (0<<5)
301
#define GE_VTYPE_NRM_8BIT (1<<5)
302
#define GE_VTYPE_NRM_16BIT (2<<5)
303
#define GE_VTYPE_NRM_FLOAT (3<<5)
304
#define GE_VTYPE_NRM_MASK (3<<5)
305
#define GE_VTYPE_NRM_SHIFT 5
306
307
//#define GE_VTYPE_POSITION_NONE (0<<5)
308
#define GE_VTYPE_POS_8BIT (1<<7)
309
#define GE_VTYPE_POS_16BIT (2<<7)
310
#define GE_VTYPE_POS_FLOAT (3<<7)
311
#define GE_VTYPE_POS_MASK (3<<7)
312
#define GE_VTYPE_POS_SHIFT 7
313
314
#define GE_VTYPE_WEIGHT_NONE (0<<9)
315
#define GE_VTYPE_WEIGHT_8BIT (1<<9)
316
#define GE_VTYPE_WEIGHT_16BIT (2<<9)
317
#define GE_VTYPE_WEIGHT_FLOAT (3<<9)
318
#define GE_VTYPE_WEIGHT_MASK (3<<9)
319
#define GE_VTYPE_WEIGHT_SHIFT 9
320
321
#define GE_VTYPE_WEIGHTCOUNT_MASK (7<<14)
322
#define GE_VTYPE_WEIGHTCOUNT_SHIFT 14
323
324
#define GE_VTYPE_MORPHCOUNT_MASK (7<<18)
325
#define GE_VTYPE_MORPHCOUNT_SHIFT 18
326
327
#define GE_VTYPE_IDX_NONE (0<<11)
328
#define GE_VTYPE_IDX_8BIT (1<<11)
329
#define GE_VTYPE_IDX_16BIT (2<<11)
330
#define GE_VTYPE_IDX_32BIT (3<<11)
331
#define GE_VTYPE_IDX_MASK (3<<11)
332
#define GE_VTYPE_IDX_SHIFT 11
333
334
#define GE_CLEARMODE_COLOR (1<<8)
335
#define GE_CLEARMODE_ALPHA (1<<9) //or stencil?
336
#define GE_CLEARMODE_Z (1<<10)
337
#define GE_CLEARMODE_ALL (GE_CLEARMODE_COLOR|GE_CLEARMODE_ALPHA|GE_CLEARMODE_Z)
338
339
#define GE_IMM_ANTIALIAS 0x00000800
340
#define GE_IMM_CLIPMASK 0x0003F000
341
#define GE_IMM_SHADING 0x00040000
342
#define GE_IMM_CULLENABLE 0x00080000
343
#define GE_IMM_CULLFACE 0x00100000
344
#define GE_IMM_TEXTURE 0x00200000
345
#define GE_IMM_FOG 0x00400000
346
#define GE_IMM_DITHER 0x00800000
347
348
enum GEMatrixType {
349
GE_MTX_BONE0 = 0,
350
GE_MTX_BONE1,
351
GE_MTX_BONE2,
352
GE_MTX_BONE3,
353
GE_MTX_BONE4,
354
GE_MTX_BONE5,
355
GE_MTX_BONE6,
356
GE_MTX_BONE7,
357
GE_MTX_WORLD,
358
GE_MTX_VIEW,
359
GE_MTX_PROJECTION,
360
GE_MTX_TEXGEN,
361
};
362
363
enum GEComparison : uint8_t {
364
GE_COMP_NEVER = 0,
365
GE_COMP_ALWAYS = 1,
366
GE_COMP_EQUAL = 2,
367
GE_COMP_NOTEQUAL = 3,
368
GE_COMP_LESS = 4,
369
GE_COMP_LEQUAL = 5,
370
GE_COMP_GREATER = 6,
371
GE_COMP_GEQUAL = 7,
372
};
373
374
enum GEShadeMode
375
{
376
GE_SHADE_FLAT = 0,
377
GE_SHADE_GOURAUD = 1,
378
};
379
380
enum GELightType
381
{
382
GE_LIGHTTYPE_DIRECTIONAL = 0,
383
GE_LIGHTTYPE_POINT = 1,
384
GE_LIGHTTYPE_SPOT = 2,
385
GE_LIGHTTYPE_UNKNOWN = 3,
386
};
387
388
enum GELightColorSetting
389
{
390
GE_LIGHTCOLOR_AMBIENT = 0,
391
GE_LIGHTCOLOR_DIFFUSE = 1,
392
GE_LIGHTCOLOR_SPECULAR = 2,
393
};
394
395
enum GELightComputation
396
{
397
GE_LIGHTCOMP_ONLYDIFFUSE = 0,
398
GE_LIGHTCOMP_BOTH = 1,
399
GE_LIGHTCOMP_ONLYPOWDIFFUSE = 2,
400
};
401
402
// TODO: Consolidate the below three to one enum? The first four are the same in all,
403
// and we sometimes need to interpret back and forth between them.
404
405
enum GETextureFormat : uint8_t {
406
GE_TFMT_5650 = 0,
407
GE_TFMT_5551 = 1,
408
GE_TFMT_4444 = 2,
409
GE_TFMT_8888 = 3,
410
GE_TFMT_CLUT4 = 4,
411
GE_TFMT_CLUT8 = 5,
412
GE_TFMT_CLUT16 = 6,
413
GE_TFMT_CLUT32 = 7,
414
GE_TFMT_DXT1 = 8,
415
GE_TFMT_DXT3 = 9,
416
GE_TFMT_DXT5 = 10,
417
};
418
419
enum GEBufferFormat : uint8_t {
420
GE_FORMAT_565 = 0,
421
GE_FORMAT_5551 = 1,
422
GE_FORMAT_4444 = 2,
423
GE_FORMAT_8888 = 3,
424
GE_FORMAT_DEPTH16 = 4, // Virtual format, just used to pass into Depal
425
GE_FORMAT_CLUT8 = 5, // Virtual format, for pre-decoded static textures with dynamic CLUT
426
GE_FORMAT_INVALID = 0xFF,
427
};
428
429
enum GEPaletteFormat : uint8_t {
430
GE_CMODE_16BIT_BGR5650,
431
GE_CMODE_16BIT_ABGR5551,
432
GE_CMODE_16BIT_ABGR4444,
433
GE_CMODE_32BIT_ABGR8888,
434
};
435
436
const char *GEPaletteFormatToString(GEPaletteFormat pfmt);
437
const char *GeTextureFormatToString(GETextureFormat tfmt);
438
const char *GeTextureFormatToString(GETextureFormat tfmt, GEPaletteFormat pfmt);
439
440
const char *GeBufferFormatToString(GEBufferFormat fmt);
441
inline bool IsGeBufferFormat16BitColor(GEBufferFormat fmt) {
442
return (int)fmt < 3;
443
}
444
445
inline bool IsClutFormat(GETextureFormat tfmt) {
446
return tfmt == GE_TFMT_CLUT4 || tfmt == GE_TFMT_CLUT8 || tfmt == GE_TFMT_CLUT16 || tfmt == GE_TFMT_CLUT32;
447
}
448
inline bool IsDXTFormat(GETextureFormat tfmt) {
449
return tfmt == GE_TFMT_DXT1 || tfmt == GE_TFMT_DXT3 || tfmt == GE_TFMT_DXT5;
450
}
451
inline bool IsTextureFormatBufferCompatible(GETextureFormat tfmt) {
452
return (int)tfmt < 4;
453
}
454
inline bool IsBufferFormat16Bit(GEBufferFormat bfmt) {
455
return (int)bfmt < 3;
456
}
457
inline bool IsTextureFormat16Bit(GETextureFormat tfmt) {
458
return (int)tfmt < 3;
459
}
460
461
inline int BufferFormatBytesPerPixel(GEBufferFormat format) {
462
switch (format) {
463
case GE_FORMAT_8888: return 4;
464
case GE_FORMAT_CLUT8: return 1;
465
default:
466
return 2; // works for depth as well as the 16-bit color formats.
467
}
468
}
469
470
inline bool TextureFormatMatchesBufferFormat(GETextureFormat fmt, GEBufferFormat bfmt) {
471
// First four matches perfectly.
472
if ((int)fmt < 4) {
473
return (int)fmt == (int)bfmt;
474
} else {
475
return false;
476
}
477
}
478
// only applicable if IsTextureFormatBufferCompatible(fmt)
479
inline GEBufferFormat TextureFormatToBufferFormat(GETextureFormat bfmt) {
480
return (GEBufferFormat)(int)bfmt;
481
}
482
483
enum GETexLevelMode {
484
GE_TEXLEVEL_MODE_AUTO = 0,
485
GE_TEXLEVEL_MODE_CONST = 1,
486
GE_TEXLEVEL_MODE_SLOPE = 2,
487
GE_TEXLEVEL_MODE_UNKNOWN = 3, // Behaves like CONST.
488
};
489
490
enum GEMaterialColorSetting
491
{
492
GE_MATERIALCOLOR_EMISSIVE = 0,
493
GE_MATERIALCOLOR_AMBIENT = 1,
494
GE_MATERIALCOLOR_DIFFUSE = 2,
495
GE_MATERIALCOLOR_SPECULAR = 3,
496
};
497
498
enum GEBlendMode
499
{
500
GE_BLENDMODE_MUL_AND_ADD = 0,
501
GE_BLENDMODE_MUL_AND_SUBTRACT = 1,
502
GE_BLENDMODE_MUL_AND_SUBTRACT_REVERSE = 2,
503
GE_BLENDMODE_MIN = 3,
504
GE_BLENDMODE_MAX = 4,
505
GE_BLENDMODE_ABSDIFF = 5,
506
};
507
508
enum GEBlendSrcFactor
509
{
510
GE_SRCBLEND_DSTCOLOR,
511
GE_SRCBLEND_INVDSTCOLOR,
512
GE_SRCBLEND_SRCALPHA,
513
GE_SRCBLEND_INVSRCALPHA,
514
GE_SRCBLEND_DSTALPHA,
515
GE_SRCBLEND_INVDSTALPHA,
516
GE_SRCBLEND_DOUBLESRCALPHA,
517
GE_SRCBLEND_DOUBLEINVSRCALPHA,
518
GE_SRCBLEND_DOUBLEDSTALPHA,
519
GE_SRCBLEND_DOUBLEINVDSTALPHA,
520
GE_SRCBLEND_FIXA,
521
};
522
523
enum GEBlendDstFactor
524
{
525
GE_DSTBLEND_SRCCOLOR,
526
GE_DSTBLEND_INVSRCCOLOR,
527
GE_DSTBLEND_SRCALPHA,
528
GE_DSTBLEND_INVSRCALPHA,
529
GE_DSTBLEND_DSTALPHA,
530
GE_DSTBLEND_INVDSTALPHA,
531
GE_DSTBLEND_DOUBLESRCALPHA,
532
GE_DSTBLEND_DOUBLEINVSRCALPHA,
533
GE_DSTBLEND_DOUBLEDSTALPHA,
534
GE_DSTBLEND_DOUBLEINVDSTALPHA,
535
GE_DSTBLEND_FIXB,
536
};
537
538
enum GETexFunc
539
{
540
GE_TEXFUNC_MODULATE = 0,
541
GE_TEXFUNC_DECAL = 1,
542
GE_TEXFUNC_BLEND = 2,
543
GE_TEXFUNC_REPLACE = 3,
544
GE_TEXFUNC_ADD = 4,
545
GE_TEXFUNC_UNKNOWN1 = 5,
546
GE_TEXFUNC_UNKNOWN2 = 6,
547
GE_TEXFUNC_UNKNOWN3 = 7,
548
};
549
550
enum GEStencilOp
551
{
552
GE_STENCILOP_KEEP = 0,
553
GE_STENCILOP_ZERO = 1,
554
GE_STENCILOP_REPLACE = 2,
555
GE_STENCILOP_INVERT = 3,
556
GE_STENCILOP_INCR = 4,
557
GE_STENCILOP_DECR = 5,
558
};
559
560
enum GETextureFiltering
561
{
562
GE_TFILT_NEAREST = 0,
563
GE_TFILT_LINEAR = 1,
564
GE_TFILT_NEAREST_MIPMAP_NEAREST = 4,
565
GE_TFILT_LINEAR_MIPMAP_NEAREST = 5,
566
GE_TFILT_NEAREST_MIPMAP_LINEAR = 6,
567
GE_TFILT_LINEAR_MIPMAP_LINEAR = 7,
568
};
569
570
enum GETexMapMode
571
{
572
GE_TEXMAP_TEXTURE_COORDS = 0,
573
GE_TEXMAP_TEXTURE_MATRIX = 1,
574
GE_TEXMAP_ENVIRONMENT_MAP = 2,
575
GE_TEXMAP_UNKNOWN = 3,
576
};
577
578
enum GETexProjMapMode
579
{
580
GE_PROJMAP_POSITION = 0,
581
GE_PROJMAP_UV = 1,
582
GE_PROJMAP_NORMALIZED_NORMAL = 2,
583
GE_PROJMAP_NORMAL = 3,
584
};
585
586
enum GEPrimitiveType : int8_t {
587
GE_PRIM_POINTS = 0,
588
GE_PRIM_LINES = 1,
589
GE_PRIM_LINE_STRIP = 2,
590
GE_PRIM_TRIANGLES = 3,
591
GE_PRIM_TRIANGLE_STRIP = 4,
592
GE_PRIM_TRIANGLE_FAN = 5,
593
GE_PRIM_RECTANGLES = 6,
594
GE_PRIM_KEEP_PREVIOUS = 7,
595
GE_PRIM_INVALID = -1,
596
};
597
598
enum GELogicOp : uint8_t {
599
GE_LOGIC_CLEAR = 0,
600
GE_LOGIC_AND = 1,
601
GE_LOGIC_AND_REVERSE = 2,
602
GE_LOGIC_COPY = 3,
603
GE_LOGIC_AND_INVERTED = 4,
604
GE_LOGIC_NOOP = 5,
605
GE_LOGIC_XOR = 6,
606
GE_LOGIC_OR = 7,
607
GE_LOGIC_NOR = 8,
608
GE_LOGIC_EQUIV = 9,
609
GE_LOGIC_INVERTED = 10,
610
GE_LOGIC_OR_REVERSE = 11,
611
GE_LOGIC_COPY_INVERTED = 12,
612
GE_LOGIC_OR_INVERTED = 13,
613
GE_LOGIC_NAND = 14,
614
GE_LOGIC_SET = 15,
615
};
616
617
enum GEPatchPrimType
618
{
619
GE_PATCHPRIM_TRIANGLES = 0,
620
GE_PATCHPRIM_LINES = 1,
621
GE_PATCHPRIM_POINTS = 2,
622
// Treated as points.
623
GE_PATCHPRIM_UNKNOWN = 3,
624
};
625
626
inline GEPrimitiveType PatchPrimToPrim(GEPatchPrimType type) {
627
switch (type) {
628
case GE_PATCHPRIM_TRIANGLES: return GE_PRIM_TRIANGLES;
629
case GE_PATCHPRIM_LINES: return GE_PRIM_LINES;
630
case GE_PATCHPRIM_POINTS: return GE_PRIM_POINTS;
631
case GE_PATCHPRIM_UNKNOWN: default: return GE_PRIM_POINTS; // Treated as points.
632
}
633
}
634
635