

  
                             3D Foundation Classes (v0.5.0)



                                *** READ ME ***



     -------------------
      Table of Contents
     -------------------



        Copyright

        About 3DFC

        Installing

        Compiling

        Features, BUGS, future plans

        Thanks

        Contributions

        Autor



     -----------
      Copyright
     -----------



        This library and all files that come with, follow the

        GNU GENERAL PUBLIC LICENSE.
        
        3DFC is distributed "AS IS" WITHOUT WARRANTY OF ANY KIND.



     ------------
      About 3DFC
     ------------



        3D Foundation Classes, 3DFC, is a generic purpose,
        
        realtime, 3D graphics library.

        This is a pre-release of 3DFC for Linux and DOS (protected mode).

        To start learning see the file doc/index.txt, but read this
        
        file first, ok?

        The library can be compiled for two targets (see Compiling section
        
        to know how compile for each available platform):
        
            Linux, using GCC;
        
            DOS, using DJGPP 2.

        The main diferences between the targets are:

          * Linux target don't has keyboard handler, need

            the graphic library SvgaLIB (many distributions of Linux

            install it by default). The Linux version include sockets
            
            suport for network comunication.

          * DOS target has a keyboard handler, don't need any extra
          
            graphic library and don't has sockets suport.

        Description of the main directory tree:

            SRC          C++ library source code;

            EX           some examples;

            LIB          where the compiled object files are (*.O files);

            DOC          some documentation and specifications;

            UTIL         have some utilitaries (not all of them for

                         all targets);

            UTIL/BIN     place for some utils executables;

            SRC/DJGPP    has DJGPP specific files;

            NOTUSED      stuff not used at the moment;
            
            NOTUSED/OLD  old code, no more used;

            NOTUSED/EXTRA some code and stuff maybe usable in future.



     ------------
      Installing
     ------------



        Unzip the .ZIP file with directory tree option. If you are using

        pkunzip follow the example:    pkunzip -d 3dfc.zip

        This create the needed directorys and decompress the files.

        WARNING: in Linux don't forget to unzip the files with lower case

        letters option ON (unzip -L)!



     -----------
      Compiling
     -----------
         
         
         
        CONFIGURATION

            You can enable/disable some engine features to feet the
            
            system to your needs. Just edit the file config.h
            
            (more instructions in the file).


        DOS TARGET PLATFORM

            DJGPP 2 must be installed.

            Rename the file djgpp.mak to makefile;

            Execute one of the make options, see the MAKING section, below.


        LINUX TARGET PLATFORM

            Need to be installed:

               GCC;

               C math library with sin, cos and sqrt, normaly installed by default;

               SvgaLib.

            Rename the file linsvga.mak to makefile;

            Execute one of the commands below.


        MAKING
        
            You must be in 3DFC root directory.

            * to make everything:

                    make all              

            * to make only the library:

                    make library          

            * to make only the examples (first make the library):

                    make examples         

            * to make only the utils(first make the library):

                    make utils

            * to make a specific example or library object file:

                    make label_name       

              Try something like this, for example: make heap

              Labels for examples have the "ex" sufix in front of the
              
              name.



     ------------------------------
      Features, BUGS, future plans
     ------------------------------


      
        Current features:

            indoor portal engine;

            6 DOF - directions of fly;

            collision detection (still have problems);

            affine texture mapping;

            PCX file load;

            sockets suport (only for Linux);

            Back Propagation neural network;

            Object-oriented design;

            graphics with 320x200, 256 colors;

            keyboard handler (only for DOS);

            platforms: DOS (protected mode) and Linux;

            gourard shading;

            colored light sources;

            message system (under construction);


        Current BUGS:

            well, they change to much

            because this I don't include them here. But they

            exist, believe me! ;)


        Future plans:

            recursive object-inside portal rendering;

            object collision detection;

            deph-sort;

            Linux X port;

            better examples and documentation;

            texture with text;

            better sockets communication;

            state machine for objects behaviors control;


        More plans:

            z-buffer;

            transparency;

            mirrors;

            perspective texture mapping;

            texture mapping with tile mapping, too;

            enviroment mapping;

            MIP mapping;

            light mapping;

            hierarchycal objects;

            portal clip with polygon edge intersections;

            polygon mesh with distance-poly-trees refinement (LOD);

            ASC files load, Quake files load (maybe);

            gravity and other forces;

            particle systems with transluced voxels;

            sound;

            Windows DirectX port;

            GIF and JPG suport.



     --------
      Thanks
     --------



        all people behind DJGPP and Linux
        without DJGPP and Linux things would be very boring


        Alexandre Torres
        rotations, reference systems helps and ideas


        Andre (Clark)
        rotations and reference systems helps


        ARS
        for your discusions and ideas


        Carla Freitas
        for general computer graphics information


        Denthor of Asphyxia
        nice programming tuts, without them I only could do
        text programs ;)


        Glauco Ferreira Martins
        interpolation projections method (3D to 2D special technic).


        Iuri Wickert
        Linux instrodutions


        Felipe Hents
        Small Linux helps


        Jacco Bikker
        ALPHA 2 is a great portal engine. I take many ideas from there.


        Janne Lof
        I study your polygon functions to code my own polygon functions.


        Lars Andersson
        a friend that help me asking many questions and swaping information.
        Your sources are helpfull to end my camera reference system, too.


        Leandro Bernsmuller
        me


        Paulo Martins Engel
        teach me neural networks


        Sander Kouwenhoven
        for your letters about "portal" technology


        Shawn Hargreaves
        autor of Allegro - a game programming library for DJGPP.
        Very helpfull to do my keyboard handler and makefile.



     ---------------
      Contributions
     ---------------


      
        People that help me contributing with sources, graphics,
        
        sounds, ...

        
        Christian Azambuja Pagot
        donate one bus ticket  ;)



     -------
      Autor 
     -------



        Name: Leandro Bernsmuller

        e-mail: lebe@geocities.com

        homepage: http://www.geocities.com/SiliconValley/Bay/1704

        
        I start this project in 1997. My intention is create an

        powerfull and fast 3D graphics engine to aplly it in many
        
        other projects.

        For DOS/Windows I want to make a game, for Linux I want to
        
        make a 3D shell (like a 3D window manager), and much more...
