Deprecated

In favour of

lambdacube-engine

3D rendering engine written entirely in Haskell http://www.haskell.org/haskellwiki/LambdaCubeEngine

Latest on Hackage:0.2.4

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD3 licensed by Csaba Hruska, Gergely Patai
Maintained by csaba (dot) hruska (at) gmail (dot) com
This is all highly experimental. Check out the examples package and
the website for further details.

There is one important feature that none of the examples can use due
to the way cabal deals with data files. You can specify the paths to
your resources in an ini-style config file, which looks something like
this:

# Comment
[Section]
Zip=path/to/resources-1.zip
Zip=path/to/resources-2.zip
FileSystem=path/to/more/resources/1
FileSystem=path/to/more/resources/2
...

You can use the addConfig function (found in comments in all the
examples) to load this file.


Internals:
Internals overview:
...

render pipeline:
Scene -> FlattenScene -> RenderQueue -> RenderablePass
|-> Light |-> Light (optimize - setup light and pass
|-> Camera |-> Camera render - render each RenderOperation (call RenderSystem's render function)
|-> Entity |-> RenderEntity operations)

for each RenderTarget
renderViewport

data types:
- RenderSystem related typeclasses
- HardwareBuffer
- HardwareVertexBuffer
- HardwareIndexBuffer
- Texture
- GpuProgram
- LinkedGpuProgram
- RenderSystemCapabilities
- World (top level data structure)
low level model data types:
- VertexData
- IndexData
- VertexDeclaration
- VertexBufferBinding
high level model data types:
- SubMesh
- Mesh
- VectorVertexData
material data types:
- Material
- Technique
- Pass
- TextureUnitState
scene related data types:
- FlattenScene
- SceneObject
- Entity
- SubEntity
- Camera
- Light
- SceneNode
- Scene
- MkSceneObjectAction
- MkNodeAction
- Frustum
high level render related data types:
- Compositor
- RenderTarget
- Viewport
-
low level rendering related data types:
- Renderable (type class)
- RenderEntity
- RenderOperation
- RenderablePass
-
resource related data types:
- ResourceLibrary
-

User Guide:
- lambdacube is a rendering engine, does not care with window management and input handling.
- usage:
- create render system
- create world:
- init world with render system and resource paths and loaders
- create the scene
- render loop:
- derive a world data for each new frame, with required world modifications

Changes

2011-10-29 - 0.2.3
* fixed mkVMesh vertex buffer handling
* added VMesh Binary instance and load support

2011-07-02 - 0.2.2
* fixed the handling of vertex colour attributes

2011-06-23 - 0.2.1
* complete overhaul

2009-11-26 - 0.1.2
* fixed cabal dependencies for stb-image

2009-11-18 - 0.1.1
* initial release
comments powered byDisqus