No description or website provided.
Common Lisp
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cameras get rid of NORMALIZED-VEC Nov 17, 2009
formats
gui fix COM-CLEAR-CANVAS Nov 5, 2011
kernel add RAYLISP-USER and DEFINE-RAYLISP-PACKAGE Nov 5, 2011
lights all constants named using +FOO+ style Nov 5, 2011
models loading and saving meshes in the builtin format Jul 23, 2009
normals
objects
papers
patterns
scratch SDL noodling Nov 5, 2011
shaders
.gitignore added .gitignore Jul 6, 2008
LICENCE add README and LICENCE Jul 16, 2009
Makefile 'make release' for wrapping up Nov 14, 2009
NOTES
README
TODO
raylisp-gui.asd
raylisp.asd dependency ordering Nov 12, 2009
tests.lisp all constants named using +FOO+ style Nov 5, 2011

README

Raylisp is a Common Lisp raytracing system.

It is a toy, and a fun way to explore some aspects of graphics
programming -- not a serious project. The author Nikodemus Siivola
<nikodemus@random-state.net> works on it only sporadically, when the
mood strikes.

That said, the architecture -- while neither polished nor stable --
has some interesting design features:

 * Protocol oriented: Raylisp tries to work by building clean and
   flexible protocols. Eg. adding new geometric primitives requires
   just subclassing SCENE-OBJECT and defining a method on
   COMPUTE-OBJECT-PROPERTIES. Enabling CSG is a matter of defining a
   method on COMPUTE-CSG-PROPERTIES.

   Exploring directories objects/, patterns/, shaders/, cameras/, and
   lights/ will give a good idea of how things work.

 * Layered, sort of: This is closely related to the protocol
   orientation. There are conceptually two main layers: the scene
   layer and the rendering layer. The scene layer uses CLOS and
   generic functions for flexibility, whereas the rendering layer is
   very performance oriented. The chief role of protocols is to
   mediate transformations from the scene layer to the rendering
   layer.

 * Shader based: Nothing new in this day and age, but you can shade
   points on objects using arbitrary functions, etc. Again, this
   is closely related to the protocol orientation.

Finally, a caveat: Raylisp is SBCL only software. While it can
certainly be ported to pretty much any working Common Lisp (there are
no deep incompatibilities), the performance depends on some SBCL
specific features, and the author has little motivation to maintain
it for other platforms -- it's not like he's maintaining it properly
in the first place.

Oh, and Raylisp is open source, under an MIT style licence. See LICENCE
for more information.