Personal tools

LambdaCubeEngine

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (Separated optional components from core.)
(Celebrating the Hackage release...)
Line 1: Line 1:
== Lambdacube Engine ==
+
== LambdaCube Engine ==
   
 
=== Overview ===
 
=== Overview ===
   
Lambdacube is a 3D rendering engine entirely written in Haskell.
+
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 [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. 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.
   
An application building on Lambdacube is composed of the following layers:
+
An application building on LambdaCube is composed of the following layers:
   
 
{| cellspacing="0" cellpadding="2"
 
{| cellspacing="0" cellpadding="2"
Line 32: Line 32:
 
=== News ===
 
=== News ===
   
  +
* 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]
 
* 2009-08-10 - Major public commit that went with the mid-summer report
 
* 2009-08-10 - Major public commit that went with the mid-summer report
Line 44: Line 45:
 
=== Download ===
 
=== Download ===
   
[http://code.google.com/p/lambdacube/ Lambdacube repository at Google Code] (outdated at the moment)
+
[http://code.google.com/p/lambdacube/ LambdaCube repository at Google Code] (outdated at the moment)
   
 
=== Screenshots ===
 
=== Screenshots ===
  +
  +
==== 2009-11 - Hackage release ====
  +
  +
[[Image:Lambdacube-basic.png|LambdaCube basic example]]
   
 
==== 2009-09 - JSSP meeting ====
 
==== 2009-09 - JSSP meeting ====
Line 52: Line 57:
 
Tile Racer track loader:
 
Tile Racer track loader:
   
[[Image:Lambdacube-tileracer.png|800px|Lambdacube Tile Racer track loader example]]
+
[[Image:Lambdacube-tileracer.png|800px|LambdaCube Tile Racer track loader example]]
   
 
Bullet physics integration:
 
Bullet physics integration:
   
[[Image:Lambdacube-physics.png|800px|Lambdacube and Bullet physics example]]
+
[[Image:Lambdacube-physics.png|800px|LambdaCube and Bullet physics example]]
   
 
==== 2009-03 - Pre-summer mock-up ====
 
==== 2009-03 - Pre-summer mock-up ====
Line 64: Line 69:
 
=== Licence ===
 
=== Licence ===
   
The code will be released under BSD3.
+
The code is released under BSD3.
   
 
=== Features ===
 
=== Features ===

Revision as of 15:13, 18 November 2009

Contents

1 LambdaCube Engine

1.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

1.2 News

  • 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

1.3 Todo

  • clean up code and upload it to Hackage

1.4 Download

LambdaCube repository at Google Code (outdated at the moment)

1.5 Screenshots

1.5.1 2009-11 - Hackage release

LambdaCube basic example

1.5.2 2009-09 - JSSP meeting

Tile Racer track loader:

LambdaCube Tile Racer track loader example

Bullet physics integration:

LambdaCube and Bullet physics example

1.5.3 2009-03 - Pre-summer mock-up

Lambdacube1.jpeg

1.6 Licence

The code is released under BSD3.

1.7 Features

1.8 Dependencies

  • Core library:
  • Optional components:
    • stb-image - image loader
    • xml - Ogre interchange format loader
  • Examples:
    • GLFW
    • elerea
    • Bullet Physics binding (to appear on Hackage soon)

The engine and the examples not using physics build out of the box on a fresh Haskell Platform install under Windows.