Personal tools

LambdaCubeEngine

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(News of the second release.)
Line 30: Line 30:
 
== News ==
 
== News ==
   
  +
* 2011-06-23 - The second big release which already includes a more advanced Bullet binding and the Stunts example; details in the [http://just-bottom.blogspot.com/2011/06/renewed-lambdacube-bullet-bindings-and.html announcement]
 
* 2009-11-18 - The first release on Hackage: [http://hackage.haskell.org/package/lambdacube-engine engine] and [http://hackage.haskell.org/package/lambdacube-examples examples], plus a [http://hackage.haskell.org/package/lambdacube-bullet bullet example] that will eventually grow into a library
 
* 2009-11-18 - The first release on Hackage: [http://hackage.haskell.org/package/lambdacube-engine engine] and [http://hackage.haskell.org/package/lambdacube-examples examples], plus a [http://hackage.haskell.org/package/lambdacube-bullet bullet example] that will eventually grow into a library
 
* 2009-09-22 - The summer report was presented at the [http://ocaml.janestcapital.com/?q=node/68 JSSP meeting]
 
* 2009-09-22 - The summer report was presented at the [http://ocaml.janestcapital.com/?q=node/68 JSSP meeting]
Line 44: Line 45:
   
 
* Must have:
 
* Must have:
** (DONE) light setup
 
** (DONE) frustum culling
 
 
** skeletal animation
 
** skeletal animation
 
** shadow mapping
 
** shadow mapping
Line 61: Line 60:
 
** volumetric clouds
 
** volumetric clouds
 
** imposters
 
** imposters
** Collada support
+
** COLLADA support
 
** mesh modelling interface
 
** mesh modelling interface
 
* Long term:
 
* Long term:
Line 96: Line 95:
 
* [http://www.ogre3d.org/docs/manual/manual_14.html#SEC23 Material Script]
 
* [http://www.ogre3d.org/docs/manual/manual_14.html#SEC23 Material Script]
   
== Dependencies ==
+
The engine and the examples not using physics build out of the box on a fresh Haskell Platform install under Windows. If Bullet is installed, the Stunts example should also be possible to get running with cabal-install.
 
* Core library:
 
** [http://hackage.haskell.org/package/OpenGL OpenGL] - to be dropped completely in favour of [http://hackage.haskell.org/package/OpenGLRaw OpenGLRaw]
 
** [http://hackage.haskell.org/package/uulib uulib] - used for parsing scripts
 
** [http://hackage.haskell.org/package/alex alex] - used for parsing scripts
 
** [http://hackage.haskell.org/package/fgl fgl] - scene graph handling
 
** [http://hackage.haskell.org/package/zip-archive zip-archive]
 
** [http://hackage.haskell.org/package/hslogger hslogger]
 
* Optional components:
 
** [http://hackage.haskell.org/package/stb-image stb-image] - image loader
 
** [http://hackage.haskell.org/package/xml xml] - Ogre interchange format loader
 
* Examples:
 
** [http://hackage.haskell.org/package/GLFW GLFW]
 
** [http://hackage.haskell.org/package/elerea elerea]
 
** [http://hackage.haskell.org/package/bullet Bullet Physics binding]
 
 
The engine and the examples not using physics build out of the box on a fresh Haskell Platform install under Windows.
 
   
 
[[Category:Applications]]
 
[[Category:Applications]]

Revision as of 18:42, 24 June 2011

Contents

1 Overview

LambdaCube is a 3D rendering engine entirely written in Haskell.

The main goal of this project is to provide a modern and feature rich graphical backend for various Haskell projects, and in the long run it is intended to be a practical solution even for serious purposes. The engine uses Ogre3D's mesh and material file format, therefore it should be easy to find or create new content for it. The code sits between the low-level C API (raw OpenGL, DirectX or anything equivalent; the engine core is graphics backend agnostic) and the application, and gives the user a high-level API to work with.

An application building on LambdaCube is composed of the following layers:

application
  optional components
generic core
render system
native OpenGL or DirectX or ...
  • optional components: e.g. loaders for various formats, physics engine
  • generic core: resource handling, script loading, rendering
  • render system: a thin abstraction layer to unify low-level APIs

2 News

  • 2011-06-23 - The second big release which already includes a more advanced Bullet binding and the Stunts example; details in the announcement
  • 2009-11-18 - The first release on Hackage: engine and examples, plus a bullet example that will eventually grow into a library
  • 2009-09-22 - The summer report was presented at the JSSP meeting
  • 2009-08-10 - Major public commit that went with the mid-summer report
  • 2009-05-12 - Project announced to be among the JSSP winners
  • 2009-03-31 - Application for Jane Street Summer Project sent in
  • 2009-01-?? - Development started

3 Download

LambdaCube repository at Google Code

4 Todo

  • Must have:
    • skeletal animation
    • shadow mapping
    • full shader support
    • LOD support
  • Medium priority:
    • texture effects
    • overlay support + font rendering
    • terrain support (heightmap with LOD, cf. SOAR)
    • binary loader for the native Ogre format
    • framework for supporting various shaders (glsl, Cg)
    • (DONE) rewrite to OpenGLRaw
  • Low priority:
    • particle system
    • volumetric clouds
    • imposters
    • COLLADA support
    • mesh modelling interface
  • Long term:
    • Quake3 map loader (BSP support)

5 Screenshots

5.1 2009-11 - Hackage release

LambdaCube basic example

5.2 2009-09 - JSSP meeting

Tile Racer track loader:

LambdaCube Tile Racer track loader example

Bullet physics integration:

LambdaCube and Bullet physics example

5.3 2009-03 - Pre-summer mock-up

Lambdacube1.jpeg

6 Licence

The code is released under BSD3.

7 Features

The engine and the examples not using physics build out of the box on a fresh Haskell Platform install under Windows. If Bullet is installed, the Stunts example should also be possible to get running with cabal-install.