This commit is contained in:
Bradley Bell 2002-12-24 05:30:33 +00:00
parent 0bf015a146
commit 7b4a08d13e

View file

@ -1,4 +1,4 @@
/* $Id: render.c,v 1.9 2002-08-09 00:48:57 btb Exp $ */
/* $Id: render.c,v 1.10 2002-12-24 05:30:33 btb Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
@ -8,7 +8,7 @@ IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*/
@ -16,6 +16,306 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*
* FIXME: put description here
*
* Old Log:
* Revision 1.9 1995/11/20 17:17:48 allender
* *** empty log message ***
*
* Revision 1.8 1995/10/26 14:08:35 allender
* added assigment for physics optimization
*
* Revision 1.7 1995/09/22 14:28:46 allender
* changed render_zoom to make game match PC aspect
*
* Revision 1.6 1995/08/14 14:35:54 allender
* change transparency to 0
*
* Revision 1.5 1995/08/12 11:32:02 allender
* removed #ifdef NEWDEMO -- always in
*
* Revision 1.4 1995/07/05 16:48:31 allender
* kitchen stuff
*
* Revision 1.3 1995/06/23 10:22:54 allender
* fix outline mode
*
* Revision 1.2 1995/06/16 16:11:18 allender
* changed sort func to accept const parameters
*
* Revision 1.1 1995/05/16 15:30:24 allender
* Initial revision
*
* Revision 2.5 1995/12/19 15:31:36 john
* Made stereo mode only record 1 eye in demo.
*
* Revision 2.4 1995/03/20 18:15:53 john
* Added code to not store the normals in the segment structure.
*
* Revision 2.3 1995/03/13 16:11:05 john
* Maybe fixed bug that lighting didn't work with vr helmets.
*
* Revision 2.2 1995/03/09 15:33:49 john
* Fixed bug with iglasses timeout too long, and objects
* disappearing from left eye.
*
* Revision 2.1 1995/03/06 15:23:59 john
* New screen techniques.
*
* Revision 2.0 1995/02/27 11:31:01 john
* New version 2.0, which has no anonymous unions, builds with
* Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
*
* Revision 1.252 1995/02/22 13:49:38 allender
* remove anonymous unions from object structure
*
* Revision 1.251 1995/02/11 15:07:26 matt
* Took out code which was mostly intended as part of a larger renderer
* change which never happened. This new code was causing problems with
* the level 4 control center.
*
* Revision 1.250 1995/02/07 16:28:53 matt
* Fixed problem with new code
*
* Revision 1.249 1995/02/06 14:38:58 matt
* Took out some code that didn't compile when editor in
*
* Revision 1.248 1995/02/06 13:45:25 matt
* Structural changes, plus small sorting improvements
*
* Revision 1.247 1995/02/02 15:59:26 matt
* Changed assert to int3.
*
* Revision 1.246 1995/02/01 21:02:27 matt
* Added partial fix for rendering bugs
* Ripped out laser hack system
*
* Revision 1.245 1995/01/20 15:14:30 matt
* Added parens to fix precedence bug
*
* Revision 1.244 1995/01/14 19:16:59 john
* First version of new bitmap paging code.
*
* Revision 1.243 1995/01/03 20:19:25 john
* Pretty good working version of game save.
*
* Revision 1.242 1994/12/29 13:51:05 john
* Made the floating reticle draw in the spot
* regardless of the eye offset.
*
* Revision 1.241 1994/12/23 15:02:55 john
* Tweaked floating reticle.
*
* Revision 1.240 1994/12/23 14:27:45 john
* Changed offset of floating reticle to line up with
* lasers a bit better.
*
* Revision 1.239 1994/12/23 14:22:50 john
* Added floating reticle for VR helments.
*
* Revision 1.238 1994/12/13 14:07:50 matt
* Fixed tmap_num2 bug in search mode
*
* Revision 1.237 1994/12/11 00:45:53 matt
* Fixed problem when object sort buffer got full
*
* Revision 1.236 1994/12/09 18:46:06 matt
* Added a little debugging
*
* Revision 1.235 1994/12/09 14:59:16 matt
* Added system to attach a fireball to another object for rendering purposes,
* so the fireball always renders on top of (after) the object.
*
* Revision 1.234 1994/12/08 15:46:54 matt
* Fixed buffer overflow that caused seg depth screwup
*
* Revision 1.233 1994/12/08 11:51:53 matt
* Took out some unused stuff
*
* Revision 1.232 1994/12/06 16:31:48 mike
* fix detriangulation problems.
*
* Revision 1.231 1994/12/05 15:32:51 matt
* Changed an assert to an int3 & return
*
* Revision 1.230 1994/12/04 17:28:04 matt
* Got rid of unused no_render_flag array, and took out box clear when searching
*
* Revision 1.229 1994/12/04 15:51:14 matt
* Fixed linear tmap transition for objects
*
* Revision 1.228 1994/12/03 20:16:50 matt
* Turn off window clip for objects
*
* Revision 1.227 1994/12/03 14:48:00 matt
* Restored some default settings
*
* Revision 1.226 1994/12/03 14:44:32 matt
* Fixed another difficult bug in the window clip system
*
* Revision 1.225 1994/12/02 13:19:56 matt
* Fixed rect clears at terminus of rendering
* Made a bunch of debug code compile out
*
* Revision 1.224 1994/12/02 11:58:21 matt
* Fixed window clip bug
*
* Revision 1.223 1994/11/28 21:50:42 mike
* optimizations.
*
* Revision 1.222 1994/11/28 01:32:15 mike
* turn off window clearing.
*
* Revision 1.221 1994/11/27 23:11:52 matt
* Made changes for new mprintf calling convention
*
* Revision 1.220 1994/11/20 15:58:55 matt
* Don't migrate the control center, since it doesn't move out of its segment
*
* Revision 1.219 1994/11/19 23:54:36 mike
* change window colors.
*
* Revision 1.218 1994/11/19 15:20:25 mike
* rip out unused code and data
*
* Revision 1.217 1994/11/18 13:21:24 mike
* Clear only view portals into rest of world based on value of Clear_window.
*
* Revision 1.216 1994/11/15 17:02:10 matt
* Re-added accidentally deleted variable
*
* Revision 1.215 1994/11/15 16:51:50 matt
* Made rear view only switch to rear cockpit if cockpit on in front view
*
* Revision 1.214 1994/11/14 20:47:57 john
* Attempted to strip out all the code in the game
* directory that uses any ui code.
*
* Revision 1.213 1994/11/11 15:37:07 mike
* write orange for background to show render bugs.
*
* Revision 1.212 1994/11/09 22:57:18 matt
* Keep tract of depth of segments rendered, for detail level optimization
*
* Revision 1.211 1994/11/01 23:40:14 matt
* Elegantly handler buffer getting full
*
* Revision 1.210 1994/10/31 22:28:13 mike
* Fix detriangulation bug.
*
* Revision 1.209 1994/10/31 11:48:56 mike
* Optimize detriangulation, speedup of about 4% in many cases, 0% in many.
*
* Revision 1.208 1994/10/30 20:08:34 matt
* For endlevel: added big explosion at tunnel exit; made lights in tunnel
* go out; made more explosions on walls.
*
* Revision 1.207 1994/10/27 14:14:35 matt
* Don't do light flash during endlevel sequence
*
* Revision 1.206 1994/10/11 12:05:42 mike
* Improve detriangulation.
*
* Revision 1.205 1994/10/07 15:27:00 john
* Commented out the code that moves your eye
* forward.
*
* Revision 1.204 1994/10/05 16:07:38 mike
* Don't detriangulate sides if in player's segment. Prevents player going behind a wall,
* though there are cases in which it would be ok to detriangulate these.
*
* Revision 1.203 1994/10/03 12:44:05 matt
* Took out unreferenced code
*
* Revision 1.202 1994/09/28 14:08:45 john
* Added Zoom stuff back in, but ifdef'd it out.
*
* Revision 1.201 1994/09/25 23:41:49 matt
* Changed the object load & save code to read/write the structure fields one
* at a time (rather than the whole structure at once). This mean that the
* object structure can be changed without breaking the load/save functions.
* As a result of this change, the local_object data can be and has been
* incorporated into the object array. Also, timeleft is now a property
* of all objects, and the object structure has been otherwise cleaned up.
*
* Revision 1.200 1994/09/25 15:50:10 mike
* Integrate my debug changes which shows how many textures were rendered
* this frame.
*
* Revision 1.199 1994/09/25 15:45:22 matt
* Added OBJ_LIGHT, a type of object that casts light
* Added generalized lifeleft, and moved it to local_object
*
* Revision 1.198 1994/09/15 21:23:32 matt
* Changed system to keep track of whether & what cockpit is up
*
* Revision 1.197 1994/09/15 16:30:12 mike
* Comment out call to object_render_targets, which did nothing.
*
* Revision 1.196 1994/09/07 22:25:51 matt
* Don't migrate through semi-transparent walls
*
* Revision 1.195 1994/09/07 19:16:21 mike
* Homing missile.
*
* Revision 1.194 1994/08/31 20:54:17 matt
* Don't do flash effect while whiting out
*
* Revision 1.193 1994/08/23 17:20:12 john
* Added rear-view cockpit.
*
* Revision 1.192 1994/08/22 14:36:35 john
* Made R key make a "reverse" view render.
*
* Revision 1.191 1994/08/19 20:09:26 matt
* Added end-of-level cut scene with external scene
*
* Revision 1.190 1994/08/10 19:56:17 john
* Changed font stuff; Took out old menu; messed up lots of
* other stuff like game sequencing messages, etc.
*
* Revision 1.189 1994/08/10 14:45:05 john
* *** empty log message ***
*
* Revision 1.188 1994/08/09 16:04:06 john
* Added network players to editor.
*
* Revision 1.187 1994/08/05 17:07:05 john
* Made lasers be two objects, one drawing after the other
* all the time.
*
* Revision 1.186 1994/08/05 10:07:57 matt
* Disable window check checking (i.e., always use window check)
*
* Revision 1.185 1994/08/04 19:11:30 matt
* Changed a bunch of vecmat calls to use multiple-function routines, and to
* allow the use of C macros for some functions
*
* Revision 1.184 1994/08/04 00:21:14 matt
* Cleaned up fvi & physics error handling; put in code to make sure objects
* are in correct segment; simplified segment finding for objects and points
*
* Revision 1.183 1994/08/02 19:04:28 matt
* Cleaned up vertex list functions
*
* Revision 1.182 1994/07/29 15:13:33 matt
* When window check turned off, cut render depth in half
*
* Revision 1.181 1994/07/29 11:03:50 matt
* Use highest_segment_index instead of num_segments so render works from
* the editor
*
* Revision 1.180 1994/07/29 10:04:34 mike
* Update Cursegp when an object is selected.
*
* Revision 1.179 1994/07/25 00:02:50 matt
* Various changes to accomodate new 3d, which no longer takes point numbers
* as parms, and now only takes pointers to points.
*
* Revision 1.178 1994/07/24 14:37:49 matt
* Added angles for player head
*
* Revision 1.177 1994/07/20 19:08:07 matt
* If in editor, don't move eye from center of viewer object
*
*
*/