glome-hs: ray tracer

[ graphics, library, program ] [ Propose Tags ]

Ray Tracer capable of rendering a variety of primitives, with support for CSG (difference and intersection of solids), BIH-based acceleration structure, and ability to load NFF format files.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.4.1, 0.5, 0.51, 0.60, 0.61
Dependencies array, base, GLUT, haskell98, OpenGL, parallel, random, time [details]
License LicenseRef-GPL
Copyright Copyright 2008 Jim Snow
Author Jim Snow
Maintainer Jim Snow <>
Category graphics
Home page
Uploaded by JimSnow at 2008-05-25T04:07:56Z
Distributions NixOS:0.61
Reverse Dependencies 1 direct, 0 indirect [details]
Executables glome
Downloads 3970 total (0 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2017-01-03 [all 7 reports]

Readme for glome-hs-0.51

[back to package description]
Glome.hs is a haskell port of my ocaml raytracer, glome. 

To compile on unix-type systems, execute "./make", to run, execute "./run".  
Otherwise, invoke compiler commands manually.

Update: glome has been converted over to cabal, so you can now invoke

> runhaskell Setup.lhs configure --prefix=$HOME --user
> runhaskell Setup.lhs build
> runhaskell Setup.lhs install

(The "make" and "run" scripts should still work.)

Glome.hs depends on opengl bindings, which come in the standard ghc distribution.
Glome has been tested with ghc 6.8.2.

- can load files in NFF format
- handles diffuse illumination, shadows, and reflection
- renders triangles, spheres, cylinders, cones, disks, boxes
  and planes as base primitives
- supports csg group, difference, and intersection primitives
- supports transformations (rotate, scale, translate) of 
  arbitrary geometry
- perlin noise and a few basic textures are implemented
- uses a bounding interval heirarchy acceleration structure
  or you can construct a BVH manually with the "Bound" primitive
- multiprocessor support is available, but it leaks memory
  and scaling is sub-linear
- packet tracing (2x2) of primary rays is enabled by default
- as of 0.5, glome uses type classes, and new primitives can
  be defined in their own module

Using: to load an NFF scene, run "./Glome -n [filename]".
Otherwise, a default scene is rendered, defined in "TestScene.hs".

Many of the features are only accessible by programming directly in
Haskell via TestScene.hs, as NFF does not support CSG or textures.

Refraction and photon mapping are not yet implemented.