 *=------------------------------------------------------------------------=*
 
                Title: UW3D - A Software 3D Engine For Dark Basic


                              Version: V0.16

                             By: Kevin Picone

                       Email: picone@centerom.com.au

                      Url: www.uwdesign.50megs.com

                 Forum: http://pub101.ezboard.com/buwdesign 


                      Release Date: 5th, Sep ,2002

    (c) copyright 2002 Kevin Picone, Underware Design All Rights Reserved

 *=------------------------------------------------------------------------=*
                              OTHER CREDITS
 *=------------------------------------------------------------------------=*

                        Sky Box Object   By BIGDAN256

                           Textures      By ??

 *=------------------------------------------------------------------------=*
                               Release Notes
 *=------------------------------------------------------------------------=*



 What is This ?
 ==============

  While working on the Vis compiler (yes still coming) I decided It'd be nice
 to visualize the imported world. The problem is that the compiler is written
 in Blitz 2D. So I set out to write a little 3D engine and this is the result.
 For the record, the code uses no native DB 3D functions at all to render the
 world. 


  The UW3D engine mimic's DB matrix's and object system pretty much perfectly,
 and while not a speed demon (I get about 15fps at 2000 camera view depth) it's
 surprising how fast it actually is, even in DB#1.  The Engine is fairly robust
 and built in a layer fashion. This can actually be a real bottle neck in DB#1
 since it relies heavily on being function orientated (i.e nesting functions in
 DB is so slow!). 

  When the demo loads, you can select the number of objects and the poly detail
 to create their meshes.  The detail only effects circular based mesh types like
 disc, tube, cone, sphere and torus. So you have complete control over their
 creation in terms of polygons.    To take this a step further the mesh system
 allows vertex access and face access. So meshes can be distorted, coloured,
 faces added, or culled. So they can be customized with ease.  In the demo
 you'll notice some objects have every second face missing to demonstrate this.
 This is all at random, so some will, some won't  

  The world features one deformable object, it's set up to emulate a water styled
 mesh. (if not hard to find. Also during the demo, you'll see both the DB
 primitive (where possible) and the UW3D primitive. This will show how UW3D
 mimic's the Db system (on the surface) with ease.  You can toggle both with
 the F8/F9 Keys.



 Speed:
 ======

  While this is going to vary for everybody, but UW3D is more than able to handle
 worlds of 10,000 plus polygons.  Actually 25,000 polygon worlds are fairly bearable
 on my system.  Of course that's NOT in scene ! :).. .
 
  If you select a lot of HIGH polygon objects for your world, the creation of this
 data will take a LONG TIME! on startup.  It will display the creation process at the
 start, so at least you shouldn't think it's crashed :)..   On average 100=>200 objects
 at a MED or low poly should give some fair results. 


 Features:
 =========

 * 6 DOF
 * Various Object Primitives (polygon,cube,box,plane,sphere,torus,cone,tube,disc
   and vertex plane)
 * Mesh Deformation
 * Height Map Terrain
 * 3 axis rotation (10 Mult vertex rotation)
 * Z Clipping (near and far planes includes RGB's and UV coords)
 * Occlusion (only considers those faces possibly in the camera FOV)
 * Flat + Gouraud Shaded Polygons
 * Sub-pixel Vertex Triangle Filler 
 * Scalable view ports 
 * Freq Sorted Z buffer (the faces are sorted on the average polygon depth)
 * Custom Ground height..



 Keys:
 =====

 F1 = Hide/Show Info
 F2 = Hide/Show FPS
 F3 = Render Terrain as Filled Polygons
 F4 = Render Terrain as Gouraud (the colours are random :))
 F5 = Inc Camera Depth
 F6 = Dec Camera Depth
 F7 = Change the Gouraud Display resolution. this is needed sicn DB is just too
      slow to blast the pixels at the buffer. So the image is drawn smaller than
      scaled up.
 F8 =  Toggle (Show/hide) Place holder DB objects
 F9 =  Toggle (Show/hide) UW3D objects



 Missing Features:
 =================

  * Lighting -  While lighting is partly implemented it's not active of the
 demo. (i actually couldn't be bothered ) 

  * Render Types - Now this is the easy part. Since the core is designed in a very
 structured fashion, meaning it always handles and has provision for vertex normals
 / face normals / vertex rgb's, and texture UV coords already.  So applying new render
 types is as simple as patching in the renderer code to the scene render routine. 
 The mesh system also supports face render types rather than the global system in 
 the DB object system.  So you can tag faces as diffuse, some gourard, some mapped,
 phonged, environment mapped.  It just doesn't drawn them :)     
 
  

 Bugs:
 =====
 

 * Z ordering.  Since the scene is drawn on the polygons average depth from the
   camera, it is not uncommon for the display order to be incorrect. I'm not in the
   least bit fussed about it personally.  To remedy the situation completely would
   require the addition of either a per pixel Z buffer or incorporating a span buffer.
   The first is dead simple, but certainly not something Db is even remotely suited
   too, as it relies purely on horse power.  The latter might appear in the blitz
   version.  Since a friend on mine is interested in using the engine in Blitz 2D
   for some educational titles.  So we'll see..

 * There's an array bug when you move too far off the terrain height map.

 * You can see some faces 'popping' up in the terrain FOV.  This is a result of
   some lazy regional testing when picking the potential visible faces..  




 Done:
 =====

  Well, this is the last DB demo i'll be doing.  I'll be moving all this to blitz to
 continue work from there.  


 Well, enjoy



 Sincerely,
 Kevin Picone
 Underware Design
 picone@centercom.com.au
 www.uwdesign.50megs.com

*=------------------------------------------------------------------------=*
                               T H E   E N D
*=------------------------------------------------------------------------=*
