Glide Plugin GLES2 port from mupen64plus-ae, but with special FrameSkip code
[mupen64plus-pandora.git] / source / gles2glide64 / src / Glitch64 / inc / glideutl.h
1 /*
2 ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
3 ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
4 ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
5 ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE 
6 ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). 
7 ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 
8 ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
9 ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.  
10 ** 
11 ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
12 ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
13 ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
14 ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
15 ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
16 ** THE UNITED STATES.  
17 ** 
18 ** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
19 **
20 ** $Header: /cvsroot/glide/glide3x/h5/glide3/src/glideutl.h,v 1.3.4.2 2003/06/05 08:23:53 koolsmoky Exp $
21 ** $Log: 
22 **  3    3dfx      1.0.1.0.1.0 10/11/00 Brent           Forced check in to enforce
23 **       branching.
24 **  2    3dfx      1.0.1.0     06/20/00 Joseph Kain     Changes to support the
25 **       Napalm Glide open source release.  Changes include cleaned up offensive
26 **       comments and new legal headers.
27 **  1    3dfx      1.0         09/11/99 StarTeam VTS Administrator 
28 ** $
29 ** 
30 ** 4     7/24/98 1:41p Hohn
31 ** 
32 ** 3     1/30/98 4:27p Atai
33 ** gufog* prototype
34 ** 
35 ** 1     1/29/98 4:00p Atai
36  * 
37  * 1     1/16/98 4:29p Atai
38  * create glide 3 src
39  * 
40  * 11    1/07/98 11:18a Atai
41  * remove GrMipMapInfo and GrGC.mm_table in glide3
42  * 
43  * 10    1/06/98 6:47p Atai
44  * undo grSplash and remove gu routines
45  * 
46  * 9     1/05/98 6:04p Atai
47  * move 3df gu related data structure from glide.h to glideutl.h
48  * 
49  * 8     12/18/97 2:13p Peter
50  * fogTable cataclysm
51  * 
52  * 7     12/15/97 5:52p Atai
53  * disable obsolete glide2 api for glide3
54  * 
55  * 6     8/14/97 5:32p Pgj
56  * remove dead code per GMT
57  * 
58  * 5     6/12/97 5:19p Pgj
59  * Fix bug 578
60  * 
61  * 4     3/05/97 9:36p Jdt
62  * Removed guFbWriteRegion added guEncodeRLE16
63  * 
64  * 3     1/16/97 3:45p Dow
65  * Embedded fn protos in ifndef FX_GLIDE_NO_FUNC_PROTO 
66 */
67
68 /* Glide Utility routines */
69
70 #ifndef __GLIDEUTL_H__
71 #define __GLIDEUTL_H__
72
73 #ifdef __cplusplus
74 extern "C" {
75 #endif
76
77 /*
78 ** 3DF texture file structs
79 */
80
81 typedef struct
82 {
83   FxU32               width, height;
84   int                 small_lod, large_lod;
85   GrAspectRatio_t     aspect_ratio;
86   GrTextureFormat_t   format;
87 } Gu3dfHeader;
88
89 typedef struct
90 {
91   FxU8  yRGB[16];
92   FxI16 iRGB[4][3];
93   FxI16 qRGB[4][3];
94   FxU32 packed_data[12];
95 } GuNccTable;
96
97 typedef struct {
98     FxU32 data[256];
99 } GuTexPalette;
100
101 typedef union {
102     GuNccTable   nccTable;
103     GuTexPalette palette;
104 } GuTexTable;
105
106 typedef struct
107 {
108   Gu3dfHeader  header;
109   GuTexTable   table;
110   void        *data;
111   FxU32        mem_required;    /* memory required for mip map in bytes. */
112 } Gu3dfInfo;
113
114 #ifndef FX_GLIDE_NO_FUNC_PROTO
115 /*
116 ** Gamma functions
117 */
118
119 FX_ENTRY void FX_CALL 
120 guGammaCorrectionRGB( FxFloat red, FxFloat green, FxFloat blue );
121
122 /*
123 ** fog stuff
124 */
125 FX_ENTRY float FX_CALL
126 guFogTableIndexToW( int i );
127
128 FX_ENTRY void FX_CALL
129 guFogGenerateExp( GrFog_t *fogtable, float density );
130
131 FX_ENTRY void FX_CALL
132 guFogGenerateExp2( GrFog_t *fogtable, float density );
133
134 FX_ENTRY void FX_CALL
135 guFogGenerateLinear(GrFog_t *fogtable,
136                     float nearZ, float farZ );
137
138 /*
139 ** hi-level texture manipulation tools.
140 */
141 FX_ENTRY FxBool FX_CALL
142 gu3dfGetInfo( const char *filename, Gu3dfInfo *info );
143
144 FX_ENTRY FxBool FX_CALL
145 gu3dfLoad( const char *filename, Gu3dfInfo *data );
146
147 #endif /* FX_GLIDE_NO_FUNC_PROTO */
148
149 #ifdef __cplusplus
150 }
151 #endif
152
153 #endif /* __GLIDEUTL_H__ */