- file renaming and includes done
[genesis3d.git] / G3D / Drivers / SoftDrv / RENDER.H
1 /****************************************************************************************/\r
2 /*  render.h                                                                            */\r
3 /*                                                                                      */\r
4 /*  Author:       John Pollard, Ken Baird                                               */\r
5 /*  Description:  header for render.c                                                   */\r
6 /*                                                                                      */\r
7 /*  The contents of this file are subject to the Genesis3D Public License               */\r
8 /*  Version 1.01 (the "License"); you may not use this file except in                   */\r
9 /*  compliance with the License. You may obtain a copy of the License at                */\r
10 /*  http://www.genesis3d.com                                                            */\r
11 /*                                                                                      */\r
12 /*  Software distributed under the License is distributed on an "AS IS"                 */\r
13 /*  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See                */\r
14 /*  the License for the specific language governing rights and limitations              */\r
15 /*  under the License.                                                                  */\r
16 /*                                                                                      */\r
17 /*  The Original Code is Genesis3D, released March 25, 1999.                            */\r
18 /*  Genesis3D Version 1.1 released November 15, 1999                                 */\r
19 /*  Copyright (C) 1999 WildTangent, Inc. All Rights Reserved           */\r
20 /*                                                                                      */\r
21 /****************************************************************************************/\r
22 #ifndef RENDER_H\r
23 #define RENDER_H\r
24 \r
25 #include <Windows.h>\r
26 \r
27 #include "DCommon.h"\r
28 #include "Span.h"\r
29 #include "Register.h"\r
30 \r
31 #ifdef __cplusplus\r
32 extern "C" {\r
33 #endif\r
34 \r
35 typedef int32                   Fixed16;\r
36 \r
37 #define                                 ZBUFFER_PREC    (65536.0f * 65536.0f)\r
38 //#define                               ZBUFFER_PREC    (32768.0f * 65536.0f)\r
39 \r
40 extern int32                            SpanMode;\r
41 extern int32                            PolyMode;\r
42 extern BOOL                             PolyIsTrans;\r
43 \r
44 extern BOOL                             PolyVisible;\r
45 extern int32                            ActuallVisible;\r
46 extern int32                            NumPixels;\r
47 \r
48 extern int32                            SMIN, SMAX;\r
49 \r
50 extern uint8                            GMipLevel;                              // Miplevel passed by the latest rendering routine\r
51 extern int32                    GMipLevel4, GMipLevel20, GMipLevel4_8;\r
52 extern int32                            GLMapAdd;\r
53 extern DRV_LInfo                *GLInfo;\r
54 extern DRV_Bitmap               *GBitmap;\r
55 extern geRDriver_THandle        *GTexture;\r
56 extern uint16                           *pScrPtr16bpp;\r
57 \r
58 extern int32                    GLightWidth;\r
59 extern uint8                    *GLightData;\r
60 \r
61 extern int32                    DeltaX, Remaining, N_Runs, PixelCount;\r
62 extern uint16                   *Source, *Dest;\r
63 extern int32                    U2, V2, StepU, StepV;\r
64 extern geFloat                  UDivZ, VDivZ, Zi, Z, Dx, Dy, PixelEnd;\r
65 extern int32                    TxWhole, TyWhole, TxFract, TyFract;\r
66 extern geFloat                  UDivZnStepX, VDivZnStepX, ZinStepX;\r
67 extern int32                    Junk[2];\r
68 \r
69 extern geFloat                  Real16 ;        \r
70 extern geFloat                  Real65536;\r
71 \r
72 extern int32                    U, V;\r
73 \r
74 extern int32                            GW, GWMask;\r
75 extern int32                            GH, GHMask;\r
76 extern uint8                            *GBitPtr;\r
77 extern uint16                           *GBitPtr16;\r
78 \r
79 // 16bit zbuffer\r
80 extern uint16                           *ZBuffer;\r
81 \r
82 extern geFloat                  UDivZStepX;\r
83 extern geFloat                  UDivZStepY;\r
84 extern geFloat                  VDivZStepX;\r
85 extern geFloat                  VDivZStepY;\r
86 \r
87 extern geFloat                  UDivZOrigin;\r
88 extern geFloat                  VDivZOrigin;\r
89 extern geFloat                  UDivZ16StepX, VDivZ16StepX, Zi16StepX;\r
90 extern geFloat                  UDivZ32StepX, VDivZ32StepX, Zi32StepX;\r
91 \r
92 extern geFloat                  ZiStepX;\r
93 extern geFloat                  ZiStepY;\r
94 extern geFloat                  ZiOrigin;\r
95 \r
96 extern Fixed16                  UAdjust;\r
97 extern Fixed16                  VAdjust;\r
98 extern Fixed16                  UAdjustL;\r
99 extern Fixed16                  VAdjustL;\r
100 extern Fixed16                  UAdjust1;\r
101 extern Fixed16                  VAdjust1;\r
102 extern Fixed16                  UAdjust2;\r
103 extern Fixed16                  VAdjust2;\r
104 \r
105 extern Fixed16                  MaxU;\r
106 extern Fixed16                  MaxV;\r
107 \r
108 #define ZBUFFER_SHIFT                           21\r
109 #define ZBUFFER_RIGHT_SHIFT                     10\r
110 \r
111 // 16bit zbuffer\r
112 extern uint16                   *ZBuffer;\r
113 \r
114 #ifdef __cplusplus\r
115 }\r
116 #endif\r
117 \r
118 BOOL RenderInit(DRV_Window *Window);\r
119 BOOL RenderShutdown(void);\r
120 void ClearZBuffer(DRV_Window *Window);\r
121 \r
122 // Render funtions\r
123 BOOL DRIVERCC RenderGouraudPoly(DRV_TLVertex *Pnts, int32 NumPoints, uint32 Flags);\r
124 BOOL DRIVERCC RenderWorldPoly(DRV_TLVertex *Pnts, int32 NumPoints, geRDriver_THandle *THandle, DRV_TexInfo *TexInfo, DRV_LInfo *LInfo, uint32 Flags);\r
125 BOOL DRIVERCC RenderMiscTexturePoly(DRV_TLVertex *Pnts, int32 NumPoints, geRDriver_THandle *THandle, uint32 Flags);\r
126 BOOL DRIVERCC DrawDecal(geRDriver_THandle *THandle, RECT *SRect, int32 x, int32 y);\r
127 \r
128 #endif\r