Personal tools

LambdaCubeEngine

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Started update after JSSP meeting.)
Line 1: Line 1:
== Lambda-Cube render engine ==
+
== Lambdacube Engine ==
   
 
=== Overview ===
 
=== Overview ===
   
Lambda-cube is a 3D rendering engine entirely written in Haskell.
+
Lambdacube is a 3D rendering engine entirely written in Haskell.
   
It targets newer graphics hardware.
+
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 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.
+
The main goal of this project is to provide a modern and feature rich graphical backend for various haskell projects. (e.g. FRP libraries)
+
An application building on Lambdacube is composed of the following layers:
  +
  +
{| cellspacing="0" cellpadding="2"
  +
| 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
  +
* generic core: resource handling, script loading, rendering
  +
* render system: a thin abstraction layer
   
 
=== News ===
 
=== News ===
* 2009.06.18 - The first (cabalized) release is coming soon. (in 3 weeks)
 
   
=== TODO ===
+
* 2009-09-22 - The summer report was presented at the [http://ocaml.janestcapital.com/?q=node/68 JSSP meeting]
* make a cabalized version and upload it to hackage
+
* 2009-08-10 - Major public commit that went with the mid-summer report
  +
* 2009-05-12 - Project [http://ocaml.janestcapital.com/?q=node/63 announced] to be among the JSSP winners
  +
* 2009-03-31 - Application for [http://ocaml.janestcapital.com/?q=node/58 Jane Street Summer Project] sent in
  +
* 2009-01-?? - Development started
  +
  +
=== Todo ===
  +
  +
* clean up code and upload it to Hackage
   
 
=== Download ===
 
=== Download ===
[http://code.google.com/p/lambdacube/ lambdacube-engine]
 
   
=== Screenshot ===
+
[http://code.google.com/p/lambdacube/ Lambdacube repository at Google Code]
  +
  +
=== Screenshots ===
  +
  +
==== 2009-09 - JSSP meeting ====
  +
  +
Tile Racer track loader:
  +
  +
[[Image:Lambdacube-tileracer.png|800px|Lambdacube Tile Racer track loader example]]
  +
  +
Bullet physics integration:
  +
  +
[[Image:Lambdacube-physics.png|800px|Lambdacube and Bullet physics example]]
  +
  +
==== 2009-03 - Pre-summer mock-up ====
   
 
[[Image:Lambdacube1.jpeg]]
 
[[Image:Lambdacube1.jpeg]]
   
 
=== License ===
 
=== License ===
The code is released under GPLv3.
 
I'm planning to switch to BSD3.
 
Or maybe a dual license.
 
   
  +
The code is released under GPLv3. I'm planning to switch to BSD3. Or maybe a dual license.
   
 
=== Features ===
 
=== Features ===
  +
 
* Mesh file format
 
* Mesh file format
 
** geometry is supported
 
** geometry is supported
Line 41: Line 38:
 
** [partly supported] fragment_program
 
** [partly supported] fragment_program
   
===Used Packages and programs===
+
=== Used packages and programs ===
  +
 
* OpenGL
 
* OpenGL
 
* GLFW
 
* GLFW

Revision as of 23:15, 28 September 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

1.2 News

  • 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

1.5 Screenshots

1.5.1 2009-09 - JSSP meeting

Tile Racer track loader:

Lambdacube Tile Racer track loader example

Bullet physics integration:

Lambdacube and Bullet physics example

1.5.2 2009-03 - Pre-summer mock-up

Lambdacube1.jpeg

1.6 License

The code is released under GPLv3. I'm planning to switch to BSD3. Or maybe a dual license.

1.7 Features

  • Mesh file format
    • geometry is supported
    • skeletal animation is in progress
  • Material Script
    • [partly supported] material
    • [partly supported] technique
    • [partly supported] pass
    • [partly supported] texture_unit
    • [partly supported] vertex_program
    • [partly supported] fragment_program

1.8 Used packages and programs

  • OpenGL
  • GLFW
  • STB-image
  • XML
  • UULib
  • Zip-Archive
  • Alex