Personal tools

LambdaCubeEngine

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(News of the second release.)
Line 1: Line 1:
 
== Overview ==
 
== Overview ==
   
LambdaCube is a 3D rendering engine entirely written in Haskell.
+
LambdaCube is a Domain Specific Language for 3D graphics.
   
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 [http://www.ogre3d.org Ogre3D]'s [http://www.ogre3d.org/docs/manual/manual_9.html#SEC12 mesh] and [http://www.ogre3d.org/docs/manual/manual_14.html#SEC23 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.
+
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.
   
An application building on LambdaCube is composed of the following layers:
+
== Download ==
   
{| cellspacing="0" cellpadding="2"
+
[https://github.com/csabahruska/lc-dsl LambdaCube DSL repository at GitHub]
| colspan="5" align="center" style="background: #ccccff" | application
 
|-
 
| colspan="2" style="background: #ffffcc" |  
 
| colspan="3" align="center" style="background: #ccffcc" | optional components
 
|-
 
| colspan="5" align="center" style="background: #ffffcc" | generic core
 
|-
 
| colspan="5" align="center" style="background: #ffcccc" | render system
 
|-
 
| align="center" style="background: #cccccc" | native OpenGL
 
| align="center" | or
 
| align="center" style="background: #cccccc" | DirectX
 
| align="center" | or
 
| align="center" style="background: #cccccc" | ...
 
|}
 
   
* optional components: e.g. loaders for various formats, physics engine
+
[http://code.google.com/p/lambdacube/ LambdaCube repository at Google Code (obsolete)]
* generic core: resource handling, script loading, rendering
 
* render system: a thin abstraction layer to unify low-level APIs
 
   
== News ==
+
== History ==
   
 
* 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]
 
* 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]
Line 20: Line 20:
 
* 2009-03-31 - Application for [http://ocaml.janestcapital.com/?q=node/58 Jane Street Summer Project] sent in
 
* 2009-03-31 - Application for [http://ocaml.janestcapital.com/?q=node/58 Jane Street Summer Project] sent in
 
* 2009-01-?? - Development started
 
* 2009-01-?? - Development started
 
== Download ==
 
 
[http://code.google.com/p/lambdacube/ LambdaCube repository at Google Code]
 
 
== 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. [http://www.andrasbalogh.com/RangerMk2/ SOAR])
 
** binary loader for the native Ogre format
 
** framework for supporting various shaders (glsl, Cg)
 
** (DONE) rewrite to [http://hackage.haskell.org/package/OpenGLRaw OpenGLRaw]
 
* Low priority:
 
** particle system
 
** volumetric clouds
 
** imposters
 
** COLLADA support
 
** mesh modelling interface
 
* Long term:
 
** Quake3 map loader (BSP support)
 
   
 
== Screenshots ==
 
== Screenshots ==
Line 71: Line 44:
   
 
The code is released under BSD3.
 
The code is released under BSD3.
 
== Features ==
 
 
* [http://www.ogre3d.org/docs/manual/manual_9.html#SEC12 Mesh file format]
 
** Geometry is supported
 
* [http://www.ogre3d.org/docs/manual/manual_14.html#SEC23 Material Script]
 
   
 
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.
 
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.

Revision as of 18:46, 15 June 2012

Contents

1 Overview

LambdaCube is a Domain Specific Language for 3D graphics.

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.

2 Download

LambdaCube DSL repository at GitHub

LambdaCube repository at Google Code (obsolete)

3 History

  • 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

4 Screenshots

4.1 2009-11 - Hackage release

LambdaCube basic example

4.2 2009-09 - JSSP meeting

Tile Racer track loader:

LambdaCube Tile Racer track loader example

Bullet physics integration:

LambdaCube and Bullet physics example

4.3 2009-03 - Pre-summer mock-up

Lambdacube1.jpeg

5 Licence

The code is released under BSD3.

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.