README
author Radek Brich <radek.brich@devl.cz>
Mon, 08 Sep 2014 20:14:24 +0200
branchpyrit
changeset 102 de3e9ea18f56
parent 98 64638385798a
child 103 3b3257a410fe
permissions -rw-r--r--
Migrate sources to Mercurial. Update links etc.

==================
 Pyrit Ray Tracer
==================


File Organization
-----------------
/build    -- output directory for binaries and other generated files
/ccdemos  -- ray tracer demos in C++
/demos    -- ray tracer demos in Python
/docs     -- Doxygen generated documentation
/include  -- header files
/models   -- common models for use by demos
/src      -- ray tracing library source code
/tests    -- test programs for classes
/tools    -- auxiliary programs


Building
--------
Type 'scons pyrit' to build and 'scons -h' for list of targets.

Requirements:
    SCons
    pthreads (see bellow)
    libpng, zlib
    Python 2.4 or newer for Python module and demos
    SDL for interactive C++ demos

It should build with these compilers: GCC, IntelC, MSVC
GCC is default in Linux, MSVC is default in Windows.


Downloading model files
-----------------------
Not all models are included in distribution. To download the large
Stanford models, type 'scons download-models', which will download
and extract the archives to appropriate location.

The download script uses 'tar' and 'wget' utilities.

For Windows, these are available here:
http://gnuwin32.sourceforge.net/packages/wget.htm
http://gnuwin32.sourceforge.net/packages/libarchive.htm


Pthreads
--------
Threads are used to render rays paralelly. Arbitrary number
of threads can be used.

For Windows, get Pthreads library here:
http://sources.redhat.com/pthreads-win32/


Python Demos
------------
All demos render images and write the result to PNG file
named with same base name as the script.
Scene is constructed using classes imported from pyrit
Python module.

boxes.py
        512 cubes with reflections and refractions
        4x oversampling, two lights, octree

bunny.py
        glass bunny, ~70k polygons
        4x oversampling, two lights, kd-tree

car.py
        low poly car model, LWOB format
        9x oversampling, two lights, kd-tree

spheres_shadow.py
        three spheres, sharp shadows
        4x oversampling, two lights, kd-tree

spheres_ao.py
        three spheres, ambient occlussion

spheres_glass.py
        row of glass spheres
        4x oversampling, three lights, kd-tree

render_nff.py [input.nff] [output.png]
        renders nff files (http://tog.acm.org/resources/SPD/)
        reads stdin if no args given

triangles_*.py
        older examples using OBJ file format


C++ Demos
---------
Compiled interactive demos. Camera can move freely in the scene.

realtime.exe
        one hundred spheres with reflections

realtime_bunny.exe
        bunny model (it loads silently, so be patient)

spheres_shadow.exe
        "interactive" version of spheres_shadow.py

textures.exe
        demo of different texture mappings


Control keys:

        Up, Down, Left, Right   look around
        w/s                     forward, backward
        c                       print camera coordinates

        spheres_shadow demo supports also:
        r/t, f/g, v/b           move the light (-x/+x, -y/+y, -z/+z)
        z/x                     change camera focal length (-/+)


License
-------
This software is published under terms of MIT license.
See COPYING for full text of license.


Website
-------
Latest version can be obtained at http://wiki.devl.cz/Pyrit