1 /****************************************************************************************/
\r
4 /* Author: John Pollard, Ken Baird */
\r
5 /* Description: header for render.c */
\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
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
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
21 /****************************************************************************************/
\r
25 #include <Windows.h>
\r
27 #include "DCommon.h"
\r
29 #include "Register.h"
\r
35 typedef int32 Fixed16;
\r
37 #define ZBUFFER_PREC (65536.0f * 65536.0f)
\r
38 //#define ZBUFFER_PREC (32768.0f * 65536.0f)
\r
40 extern int32 SpanMode;
\r
41 extern int32 PolyMode;
\r
42 extern BOOL PolyIsTrans;
\r
44 extern BOOL PolyVisible;
\r
45 extern int32 ActuallVisible;
\r
46 extern int32 NumPixels;
\r
48 extern int32 SMIN, SMAX;
\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
58 extern int32 GLightWidth;
\r
59 extern uint8 *GLightData;
\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
69 extern geFloat Real16 ;
\r
70 extern geFloat Real65536;
\r
74 extern int32 GW, GWMask;
\r
75 extern int32 GH, GHMask;
\r
76 extern uint8 *GBitPtr;
\r
77 extern uint16 *GBitPtr16;
\r
80 extern uint16 *ZBuffer;
\r
82 extern geFloat UDivZStepX;
\r
83 extern geFloat UDivZStepY;
\r
84 extern geFloat VDivZStepX;
\r
85 extern geFloat VDivZStepY;
\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
92 extern geFloat ZiStepX;
\r
93 extern geFloat ZiStepY;
\r
94 extern geFloat ZiOrigin;
\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
105 extern Fixed16 MaxU;
\r
106 extern Fixed16 MaxV;
\r
108 #define ZBUFFER_SHIFT 21
\r
109 #define ZBUFFER_RIGHT_SHIFT 10
\r
112 extern uint16 *ZBuffer;
\r
118 BOOL RenderInit(DRV_Window *Window);
\r
119 BOOL RenderShutdown(void);
\r
120 void ClearZBuffer(DRV_Window *Window);
\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