Modification History:
---------------------
Trial version changes - February 21, 1999:
- Additional video modes higher than 800x600 were added to the Glide
  libraries.

Patch 2 - February 11, 1999:
- Some 3D cards require square textures.  The Direct3D libraries now check
  for this and scale the textures as needed.
- A bug in the Glide libraries when loading paletted textures was found
  (PR_SetTextureFormat (TEXTURE_P_8)).  When searching for duplicate palettes
  a crash might occur.
- Large map files had allocation problems because it was storing the size
  in a word instead of a dword.  This only happened in Glide versions.

Patch 1 - November 17, 1998:
- The PR_ClearViewportOpt function did not work under Glide.
- The alpha blended tree problem that I mentioned in the testland example
  has been fixed by changing some of the rendering method routines.
  An updated version of the rendering methods has been included in \code.
- 3DS files that used dummy objects were not reading them correctly.  This
  has been fixed in all of the library files.
- 3DS files had a maximum of 256 segments per file when converting.  This has
  been changed to 32000 segments.  All of the library files are fixed.


Version 2.6 Changes
- Added OpenGL support
- Added Direct3D software rendering using Direct3D drivers (RGB and MMX)
- Added Direct3D driver and device selection dialog
  (Ramp driver uses PR's rendering routines)
- Added 24 new rendering methods.  
- Added functions for 3D hardware:  PR_DepthBiasLevel, PR_DepthBufferFunction,
    PR_DepthBufferMode, PR_DepthMask, PR_TexFilterMode
- Added PR_ClearViewportOpt for optionally clearing color or depth buffers
  (can be used for mirrors by clearing the depth buffer in middle of frame)
- Added Particle System
- Changes the loading routines to return the number of the element if it has
  already been loaded, instead of the *_ALREADY_LOADED errors.
- Fixed a bug in the 3D sound library which started playing sound even if they
  were out of range.
- Wireframe rendering now works in hardware (still looks funny in software)
- Created the MAKESPR utility, which turns any texture into a 3D sprite PRO file
- Created the SCNEDIT utility for placing multiple PRO files in a scene.
- Created the SWAPSEG utility for inserting sprites into a hierarchy
- Created the PRLIGHT and SETRGB utilities for using precalculated RGB lighting
- Added texture support for LWO files
- Enabled table based and vertex fogging under D3D
- Added New Examples:
   EX12 - Particle Demo (3D card only)
   EX13 - Rendering Method demo
   EX14 - Drawing on Textures Example
   EX15 - Textures With Alpha Channel Example (3D Card Only)
   EX16 - Level Of Detail Example
   EX17 - Projecting points
   EX18 - Triangle picking
   EX19 - Drawing a single triangle
   TESTLAND - Loading a level from Landscape Studio, alpha fogging
   VRUSH - Renders in a window on Voodoo Rush cards
   INDOOR - Indoor polytope collision detection demo
- Added Texture Alpha flags in the PRO format, and to EDITMAT under the
  textures tab.  This allows you to use alpha testing or colorkeying
  without preloading the texture using a special texture format.
- Added 32 bit color, triple buffering, AGP, mipmapping, and
  trilinear filtering to  Direct3D
- Added Windowed rendering to Direct3D.  Comment out the USE_FULLSCREEN in
 the winutil.c file, and set PR_Settings.UseWindowed = 1 as the first line
 in your main function.
- Fixed bugs with using string constants in MSVC 6
- Fixed a bug in the LoadPRO routine that crashed with more than 512 textures
-


Known bugs:
OpenGL:
  - MS OpenGL doesn't work with the utilities because drawing to the front buffer
    uses the wrong pitch.
  - The graphical utilities don't show the mouse cursor
  - Terrain Library does not work

Direct3D:
- Testland example requires different texture formats under Direct3D
  and Glide for the trees, for color keying.  If you want to run it under
  Glide you should use editmat on tree1.pro and tree2.pro and set the
  alpha flag to true on the textures.
- Direct3D viewport sizes change depending on which driver/card is used.
  You may notice an empty row or column at the edges of the viewport.




Version 2.5c Changes:
- Created PRView PRO, an improved viewing program with a user interface,
  VCR animation controls, and Quake2 model viewing support.
  
Version 2.5b Changes:
- Improved import routines

Version 2.5a Changes:

- Added subtexel precision to the perspective texture routines
- Changed the rounding rules on the software rendering routines
- Fixed a bug in the 3DS loader with dummy objects containing no
  rotation keys (would crash)
- Fixed a bug in the keyframe animation with objects that only have 1 key.
- Fixed a bug in the LXFLAT_TEXTURED method
 

Version 2.5 Changes:
  Final Version:
- Fixed a bug in the wsavepcx routine (was using the wrong pitch)
- Adding 2D clipping to the hardware versions of PRGFX_PutTexture and
  PRGFX_ResizeTexture.  Now you can use these functions for tiled scrollers
  or background sky images.
- Fixed a bug in the TEXSKIN utility that prevented you from using
  the -m switch and back textures at the same time.
- Changed the color clamp to 0.0 instead of 1.0.
- Changed the prland landscape width to 104 since the DirectDraw versions
  requires a multiple of 8.
- Fixed up several typos in the online manuals, and fixed the headers and
  footers to match the chapter numbers.
- Fixed the MDL texture scale for Direct3D versions of PRVIEW

  Beta Version:
- Added Direct3D support for use with DirectX 5
- Added the -m switch to the TEXSKIN utility.  This allows you to change the
  mapping for single materials instead of the entire object.
- Added the PR_ConstantZ variable and the PR_SetConstantZ function.
  This lets you change the Z value written to the ZBuffer when using the
  PRGFX_PutTexture and PRGFX_ResizeTexture routines
- Added Least Recently Used texture management routines
- Added the PR_FLOAT_TO_FIXED macro to the prglobal.h file
- Added the PR_RendMaxU and PR_RendMaxV variables to the prrend.h file
- Added the PR_subpix macro to the prrend.h file
- Added the TextureMemory field to the PR_Settings structure.
- Automatically sorts triangles for alpha blended primitive on 3D hardware
- Added Alpha state changes to the PutTexture and ResizeTexture routines
  so they will not be affected by the last rendering state used
- Added 3D Studio Camera keyframes
- Added 3D Studio dummy object support
- Added UV clamps for non-wrapping texture in software rendering, will
  prevent crashing if the UV values are out of range
- Removed the 2D clipped triangle routines (not used and they were adding
  to the size of the EXE's)
- Added the PR_RegisterRenderMethod routine for creating your own
  state setup routines (make new rendering types, such as translucent
  gouraud)
- Fixed a bug in the 3DS loader with the segment names.  If you had two
  segments with similar names, such as arm1 and arm10, the loader would
  find "arm1" within arm10 and think it is the same segment.  I fixed this
  by making sure the names being compared were the same length.
- Fixed TEXSET to work with any size texture with 3Dfx
- Fixed some bugs in the animation code when playing the last frame in an
  animation.

Version 2.4 (August 30, 1997)
-----------
- Added Win95 software rendering support through DirectX/WGT95
- Added 3D MAX glasses support (see the MAXVIEW utility)
- Added Camera chunks to the PRO file format.  This includes keyframing
  information.  Camera keyframes from Lightwave Scenes are now supported,
  but not 3D Studio.  Looping camera animation is achieved with the
  CAMFLAG_LOOP_ANIMATION camera flag.
- Added the FLAG_LOOP_ANIMATION to the segment flags.  If this flag is
  set, the animation will loop when a frame number given to the
  PR_AnimateEntity routine is larger than the segment's last frame.
  Also modified LWS2PRO to read the EndBehaviour field, which sets this flag.
  (You can change it when you click on motion graph in Lightwave)
  For 3DS files, this flag is not set.
- Added a timer to the examples so the objects spin at a constant rate
  regardless of the frame rate.
- Added the MinUV and MaxUV variables in the PR_Settings structure to
  handle new 3D hardware.
- Fixed a bug in the VESA routines, if the mode initialized is 320x200
  under VESA 1.2.
- Improved Voodoo Rush support by fixing the LFB writes
- Found a bug in the PR_Findxxx routines.  They were case sensitive and
  this caused problems when you put the files into a data library using
  the WGTLIB utility.  WGTLIB converts everything to uppercase.
- Fixed the right edge clipping problems with wireframe and solid triangles.
- Removed the following routines because they were obsolete:
  PR_AddChildSegment, PR_DeselectChildren, PR_DeselectSegment,
  PR_RemoveChildSegment,  PR_SelectChildren, PR_SelectSegment

Since the file format contains new chunks, make sure to recompile all of the
utilities with these libraries.  If you use an old utility with the new
file format, you will lose the new chunks when the file is saved.


Version 2.31
------------
- WinGlide/Win32 support for Watcom added
- Added 3DS keyframe support
- Added non-uniform/uniform scaling keyframes with linear or non-linear
  transitions
- Updates DUMPPRO to include material colors and keyframe data
- Fixed a bug in the Lightwave keyframer that caused some crashing
- Added morphing routine documentation to manual
- Added documentation for LWS2PRO, CENTPRO, PHONG, and PIC2WMP utils
- Added PR_TransformVertexList to the Segment Interface
- Added PR_GetMaterialAlpha and PR_SetMaterialAlpha to the Material Interface
- Make sure you set the object->num_frames value to -1 if the object has
  no keyframe data (when importing from other sources)

Version 2.3
-----------
- WinGlide/Win32 support for MSVC added
- Keyframer and hierarchy added to the PRO format
- Added LWS conversion with keyframe data
- Added Quaternion Interface
- Made MDL and Music files load from WGTLIB files
- Removed GIF support (be careful with your old code)


Version 2.2
-----------
- All utilities compiled with Glide 2.3 (requires the new Glide drivers
  are installed if you use 3Dfx)
- Fixed the camera matrix bug... it wasn't using the up vector
- Fixed the gouraud black hole problem
- Added LWO support
- Added 32 track 3D positional sound and digital music
- Fixed the color problem in the 3Dfx putblock_8bit routine
- Added Glide 2.3 support with DOS DLL's and VooDoo Rush support
  (although PR isn't under Win95 yet so you can't get 3D in a window!)
- Changed the screen locking/unlocking functions so they are not needed
  for text output.  


Version 2.1
-----------
- Fixed the flashing bug in the 3Dfx terrain.
- Added Morphing functions to API
- Fixed sprite rotation and scaling
- Added translucent texture mapping
- Fixed texture scaling problem in TEXSKIN
- Fixed Gouraud tri filler clipping bug
- Added Smoke trails and shrapnel to terrain demo
- Added animated Quake MDL viewing to PRVIEW
- Added 3DS texture loading to PRVIEW
- Added multiple level heightfield support (caves etc)
- Fixed a bug in the flat xray texture mapped triangle routine
- Made the 3DS loader set the back material equal to the front for all faces
- Fixed bug in TEXSET which caused the numbers to flash due to page flipping
- Added new texture formats: RGB_332, ARGB_8332, ARGB_4444, P_8
- New pricing



Feb. 27/96
-------
First trial version released

Oct. 96
-------
Beta version released

