Team The Ray Team
Afp
The Ray Team
Team the Ray Team: "Because you can't have too much team in your team."
Members:
- Alessandro Vermeulen
- Bram Schuur
- Bart Spaans
- Ruud Koot
- Thijs Alkemade
Our mobile build server (running linux of course)
Final report
Features
- Tier-3
- GML shape
- Textures
- Parallelisatie
- command line arguments
- anti-aliassing
- QuickCheck?
Code
- Shapes are instances (
MultiParamTypeClasses, FunctionalDependencies, GADTs, RankNTypes, TypeSynonymInstances)
- Continuation-passing-style in renderPixel
- Applicative in the evaluator
- Type safety: Data.Angle
DOWNLOAD RayTracer-1.0.3.tar.gz
Quotes
Die Plane! Die Plane!
When we were finally rendering planes correctly.
I love it when a plane comes together
Screenshots
And last but certainly not least:
Movies
Our README
Ray Tracer, Team The Ray Team
=============================
O hai fool, welcome to our very first Haskell Ray Tracer. In this file we will
explain how our ray tracer basically works and which features we have added
on top of the Tier 3 Ray Tracer specs from the assignment.
First of all we chose our name as we intended to make a great Ray Tracer in
analogy of the great television series `The A - Team'.
We started out with the idea that the program should be written in pure
Haskell in order to demonstrate the power of Haskell. However, after finishing
our work we notice that we have used GHC Language extensions quite often, and
almost always for the best.
First of all, we have made it fairly easy to add any input format or output
format you'd want in a later stage. This has been achieved by abstracting a
list of things, namely:
The World / Object description into our own Abstract World Description;
Abstracting our basic shapes (spheres, cubes, planes, etc.) to type classes
which makes it very easy to very locally define every function we need on
the shapes. Including, but not limited to, the intersection and UV-mapping
functions.
In the end we didn't achieve to implement all the features we wanted, but some
should be fairly trivial to add. The internal data structure can be changed
to use KD-trees. And some form of bounding boxes should be trivial to add.
Program hierarchy
-----------------
* Base:
Contains some basic modules for abstraction purposes and our abstraction
over Shapes.
* Data:
Contains the basic data types and data libraries, Vector and
Transformation are an interface to GlomeVec. Range handles the intervals
for the CSG.
* GML:
All modules for parsing and evaluating GML code, including ToRenderObject
that translates the GML scene structure to our internal representation.
* Renderer:
Contains all the source for the actual raytracing on our internal data
structure. IlluminationModel contains our special lighting model and all
the other modules should be equally self-explanatory.
Personnel deployment
--------------------
* gml: Bram and Ruud
* ppm: Bart
* textures: Bram
* brooming: Alessandro
* renderer: everyone
Directory Structure
===================
bin/ Scripts used by our buildserver (see bin/README)
doc/ Some project reports
src/ The actual ray tracer source
www/ The website hosted at http://projects.spockz.nl/projects/afp2009/
IRC
---
Join #teamtherayteam on irc.freenode.net
Bug Tracker
-----------
http://redmine.projects.spockz.nl/
Haddock Documentation
---------------------
http://projects.spockz.nl/projects/afp2009/doc/