Panard Vision History

18/07/1998 -- PV0.98b
------------------------------------
Thanks for this release go to:
	Frank W. Fulton Jr. for advises help and test with the borland compilers
	Defee Pawel (aka Armitage) for ATI testing 
	Matt Witherspoon for a great ATI history ;) and a lot of tests
	Arrakis for many DirectDrawEasy test on NT	
        Sanx Giving for the new PV Splash Screen
        Brian Robinson for the San Diego mirror site
        
- Added fog support (software rasterizer ignores it)
- Added support for Switchable Nodes, this feature allow you to switch at run time
  beetween different rendering path in the world graph. Switch condition is provided
  via a callback.
  One direct application of this is LOD support for meshes. You can now specify
  multiple reprensentations (with a decreasing number of faces) of a mesh and switch
  to any of his representatiosn at runtime (with respect to their distance from the viewer
  for instance).
- Added PV_GetMeshAAExtent()
- Added PV_TransformPointLikeMesh()
- Fixed a bug in hierarchy code (occured with a non zero pivot point and at least 
  2 levels of hierarchy)
- Added following Panard Primitives calls to save on memory bandwidth:
	pvMapCoordv
	pvAmbMapCoordv
	pvNormalv
	pvColorv
	pvSpecularv
	pvVertexf
	pvVertexfv
	pvVertexv

	pvEnableIndex
	pvSetVertexIndex
	pvSetMapIndex
	pvSetAmbMapIndex
	pvSetColorIndex	
	pvSetSpecularIndex
	pvSetNormalIndex	
	pvSetColorIndexIndex	
	pvVertexIndexedf	

- Panard Primitives 3D boosted ! (and some bugs fixed too)
- Normals computations more robust
- Renamed following types:
	Mat3x3 -> PVMat3x3
	Point  -> PVPoint
	RGB    -> PVRGB
	RGBF   -> PVRGBF
	Quat   -> PVQuat		
  This will facilitate integration of PV with other environements.
  An include file, compat.h, is available in include/. This file will map new names
  to old names, allowing to compile old code with new .h. Just include compat.h
  if you need it.
- For grammar purists, all struct's members containing Vertexes in their name (like
  PVMesh->NbrVertexes) can be accessed by replacing Vertexes by Vertices, ie: 
  PVMesh->NbrVertices.
  Same for functions containing Vertexes in their name, ie:
  PV_MeshCompileVertexes()  ->	PV_MeshCompileVertices(o) 
- PVShadeInfo struct changed to free memory

Direct3D driver:
	* Added fog support (table)
	* Now properly restore mipmapped textures after a ALT-TAB
	* Now properly restore lightmaps after a ALT-TAB
	* Fixed a bug when using multipass rendering with zbuffer
        * enhanced precision on perspective correction for very near clip plane
	* Fixed some bugs with Alpha surfaces (TEXTURE_RGBA)
	* Automatic support for 256 colors rendering
	* Automatic Fallback to d3d emulation when needed
        * Some minor bug fixes and enhancement

3Dfx Driver:
	* Added fog support
	* Fixed a bug when using multipass rendering with zbuffer
        * enhanced precision on perspective correction for very near clip plane
	* Now correctly clips Panard Primitives 2D
	* No more swap RGBA components
	* Windowed rendering with rush available through PV3DFX=WINDOWED ?

GL Driver:
	* Added fog support
	* Fixed a bug when using multipass rendering with zbuffer
	* Should be compatible with more GL implementation (including 3Dfx's Beta 2.x)

PMotion:
- Reactived code deactived during 0.98a release.... (dumb)

PVUT:
- Added pvuSaveCompiledMaterial()
- Added	pvuLoadCompiledMaterial()

Misc:
- Fixed a bug with DDrawEasy::MakeRGBAColor() (from  Sylvan W. Clebsch" <sylvan@stanford.edu>)
- Fixed a typo in DDrawEasy::SetMode()
- Fixed bugs in dxmenu.dll causing crash on NT+SP3
- Fixed bug in DDrawEasy::SetMode() causing crash on NT4+SP3
- Fixed bug in DDrawEasy::Lock() causing lock() to not lock as it should (???), 
- Fixed bug in DDrawEasy::SetMode() causing wrong RGBA masks reports when using a 32 bit
  mode on some hardware. This caused PV to start in 24 bit mode, which obviously is
  not the right thing.
- Fixed a little bug in DDrawEasy::SetPal()
- Panard Vision DLLs and .lib now use __stdcall calling convention
- .H are now borland compatible
- Borland import libraries included


30/04/1998 -- PV0.98a
------------------------------------
- RAPID library dropped (it was used for collision detection)
- New collision code, take less memory, faster preprocessing, more flexible,
  should be a little faster too
- Collision API changed
- Textures quantization in 8 bit modes can be disabled
- Changed calling convention for user defined rasterizer setup code
- Added pvmac.h (some more or less useful macros)
- Added PV_MipResample() to resize textures
- Added PV_SetPerspectiveMipBias() to fine tune software perspective mipmapping
- Added COLORTABLE_DONT_FREE flag
- Added hierarchy capabilities to PV (diferent from hierarchy in PM) (see MESH_* flag) allowing
  for advancd world management/culling (see doc)
- Added MESH_CULL_CHILD flag
- Added MESH_INHERIT_CULL flag
- Added MESH_FORGET_CHILD flag
- Added MESH_INHERIT flag
- Added MESH_PORTAL flag
- Added built-in portals support (EXPERIMENTAL) (see doc and tut11)
- Added PV_CloneMesh()
- Added PV_CompileMesh()
- Added automatic version checking for PV as a dynamic library
- Added automatic version checking dor hardware drivers
- Added macros and functions to manage memory for compilers other than VC (see doc)
- PV libs should now be linkable with many other compilers (like CodeWarrior, or Borland)
- Added support for user precomputed color tables
- Added support for per face lightmapping (static or pseudo dynamic) in software 
  or hardware (software not optimized):
	* support for monochromatic lightmaps
	* support for RGB lightmaps
	* user definable undersampling
	* tunable texture cache size (software)
	* software support ouput on 8 bits paletized and RGB 15,16,24,32 bits, no fake rgb 16 support (PVM_RGB16)
- Added support for rational polynomial curves or surfaces via evaluators (see tut12)
- Added sample code for CodeWarrior by Jesper Juul <jj@pobox.com>.
- Quake driver updated, but problems perstist with some resized textures. If someone has time to fix qkread.c .....
- PV_TRIANGLES_STRIP should now operate correctly
- Panard Primitives more efficient
- Software rasterizer more efficient
- Fixed a bug in QuatSlerp() and QuatSlerpLong()
- Fixed a bug with Linux version (crash at startup on some config)

Direct3D driver:
	* Fixed a minor bug in FillSurface()
	* Faster startup
	* Overall faster
	* Now use the PVMaterial.AlphaConstant field
	* Supports static and pseudo-dynamic lightmaps (MONO or RGB)
	* Fixed a bug causing VERY slow frame rates on very fast computers, or 
	  when rendering a small number of faces. (polys was sent too fast to the 
	  hardware, causing FIFO overflow).

3Dfx Driver:
	* Faster
	* Now use the PVMaterial.AlphaConstant field
	* Increased depth buffer precision
	* Supports static and pseudo-dynamic lightmaps (MONO or RGB)

GL Driver:
	* Faster
	* Now use the PVMaterial.AlphaConstant field
	* Supports static and pseudo-dynamic lightmaps (MONO or RGB)
	* Fixed a bunch of problems with blending and material states

17/01/1998 -- PV 0.98d9a
------------------------------------
- Reference counting added for TextureBasis to fix a bug when killing meshes with textures basis
- Added PV_AttachTextureBasis()
- Fixed a buffer overflow in clip routines
- Fixed a minor bug with 3dfx driver and surfacenum parameter (was ignored)

14/01/1998 -- PV 0.98
------------------------------------
- Frustum Clipping
- User Definable Clip Planes
- Slight changes in the API
- Hardware Driver API modified
- Flat shading changed: now use the normal of the first vertice of a triangle
- U_WRAP and V_WRAP flags are now working with hardware too
- Fine tunable octrees
- Multiple (non-recursive) geometric planar convex mirrors (experimental)
- User definable visibility pipeline (allowing for BSP, Portals or whatever you may think about)
- Clip buffers of meshes are now tunable on a mesh basis
- Panard Vision now accepts convex polygons, not only triangles
- Added MESH_NOSORT flag for meshes
- Added TEXTURE_MANUALMIPMAPS for textures
- Added Gamma Correction
- Added new method for generating u,v textures coordinates (allowing for multiple texture coords per vertex)
- Added Specular member to PVShadingInfo (not used yet)
- Added full support for blending and Alpha test (hardware)
- Added support for depth comparisons (hardware)
- Added Panard Primitives support (allows for GL like drawing)
- Added double sided material (DOUBLE_SIDED flag)
- Added Hint flags to materials (used by hardware driver)
- Added AlphaConstant field to PVMaterial (not used yet)
- Added PVW_MATERIAL flag, to sort by material (useful in hardware)
- Added PVP_NOTESSELATE, to not tesselate polygons, may be used in future version of hardware drivers
- Added PV_SimpleCreateMesh(), simplify the mesh creation process
- Minor&Major bug fixes (sometimes, when I see my bugs I wonder myself if I have a negative IQ)
	* Fixed bug in rasterization Maths....I hope.
        * Fixed a bug in PV_SetMeshMatrix
	* Fixed bugs in texture mappers (In fact, I think it was a bug maybe not :)...)
	* Fixed bug in MatrixToQuat and QuatToMatrix causing some animations to display incorrectly
        * Fixed bug when camera is looking at 0,1,0 or 0,-1,0
	* Fixed bug when using scaling different of 1 and pivot point
	* PMOTION : Bug in hierarchy code fixed (Camera or light (pos or target) linked to something else)
	* PMOTION : Quaternion Spline interpolation bug fixed (? not sure, but seems to)
	* PMOTION : Hierarchical scaling added
		Thanks to Kjetil Evensen (kevensen@idgonline.no) for providing buggy scenes to play with:)
- Quake I level reader added (just a sample)
- Doc updated

PVUtilities lib created:
- Handles .def files
- Handles JPG, RAW textures

Hardware Drivers:
- Added generic Direct3D driver (experimental)

OpenGL Driver:
- added error handling during texture downloading (disabled for the moment due to some problem with the 3dfx gl alpha driver)
- FakePhong shading supported (PHONG, U_PHONG) in some way
- Changed Flat shading

3Dfx driver:
- Too many changes and bug fixes, now it works :)

25/07/1997 -- PV 0.97
------------------------------------
PVision:
- Software ZBuffer
- MipMapping now works correctly with perspective mapping
- Now supports really large faces, no more problem with prevision overflow
- Bouding Boxes classification using Octrees
- "On Fly" 3D Hardware Driver support via an Open API
- Software OpenGL driver
- Added TEXTURE_RGBA flag for hardware
- Added TEXTURE_TRILINEAR flag and PVM_TRILINEAR for hardware
- Added TEXTURE_ALPHABLENDING flag and PVM_ALPHABLENDING for hardware
- RGBF : added alpha component
- No more disapearing meshes (I hope)
- Collision detection capabilities (using RAPID library)
- Open 3D Api (see documentation)
- Depth sorting now use full 32bits of ZAvg
- 3DS mesh Driver: now use lights info of the .3ds to create lights
- 3DS mesh Driver: now use ambient light info

PMotion:
- minor bug fixes
- now supports scale track
- now supports hide track
- now supports looping/repeating tracks
- now supports spline control for position keys, Roll Keys, Scale keys and rotation keys (thanks to Adept/ESTEEM (adept@aquanet.co.il))

I think I will totally rewrite PM in C++, should be nicer and more flexible.

14/05/1997 -- PV 0.96 (not released)
------------------------------------
- Bilinear filtering in RGB modes  (Cray are really cool for games ! :)
- Faster
- Bug fixes
- Minor changes to the API
- Now links correctly when used with C++ code
- No more warnings when compiling pvision.h with VC
- S/ZBuffer is on the way......

21/04/1997 -- PV 0.95
--------------------------------
- First public release
