On Fri, Apr 18, 2008 at 7:43 PM, Don Stewart <dons@galois.com> wrote:
jsnow:
> A new version of my raytracer is out.  It now supports cones, cylinders,
> disks, boxes, and planes as base primitives (previously it only
> supported triangles and spheres), as well as transformations of
> arbitrary objects (rotate, scale, translate) and the CSG operations
> difference and intersection.  Perlin noise and Blinn highlights have
> been added, as well.
>
> http://syn.cs.pdx.edu/~jsnow/glome/
>
> Glome can parse NFF-format scene files (see
> http://tog.acm.org/resources/SPD/), but many features are only
> accessible via raw Haskell, since NFF doesn't support very many kinds of
> primitives.  I included a TestScene.hs file that demonstrates how to
> create a scene with various kinds of geometry (including a crude attempt
> at a recursively-defined oak tree) in haskell.  There isn't any
> documentation yet, but many of the primitives have constructors that
> resemble their equivalents in povray, so anyone familiar with povray's
> syntax should be able to figure out what's going on.

Very impressive. Did you consider cabalising the Haskell code, so it
can be easily distributed from hackage.haskell.org?

I note on the website you say:

   "no threading (shared-memory concurrency is not supported by ocaml,
   in haskell it's buggy)"

Could you elaborate on this? Shared memory concurrency is a sweet spot
in Haskell, and heavily utilised, so I think we'd all like to know more
details..

Not sure what you need shared memory concurrency for in this case as it seems to be a straightforward parallelism problem (i.e. the different threads would be different pixels, there is no sharing needed).

--
Sebastian Sylvan
+44(0)7857-300802
UIN: 44640862