-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathintroduction.pandoc
96 lines (69 loc) · 4.7 KB
/
introduction.pandoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<div class='fullscreen' style="width:33%;">
<a href='http://lambdacube3d.com/editor.html'>
<img src='/lambdacube-logo.svg' width="100%" heigth="100%"/>
</a>
[*Try online*](http://lambdacube3d.com/editor.html)
===
</div>
About LambdaCube 3D
===================
**LambdaCube 3D is Haskell-like purely functional domain specific language for programming the GPU (graphics processing unit).**
The purpose of LambdaCube 3D is to provide a platform and host language independent graphics API. It allows the programmer to define the rendering pipeline with a single language, which is compiled into shaders and CPU-side setup code. Other parts of the program (e.g. networking or application logic) can be implemented in Haskell, C++ or JavaScript.
LambdaCube 3D can be used for desktop and mobile applications, either in standalone applications or in browsers too.
<div class='big_like_h1'>
---------------------------------------------------------------------------------------------------------
Quick References Documentation
----------------------------------------------------------- ---------------------------------------------
[LambdaCube 3D blog](https://lambdacube3d.wordpress.com/) [Getting Started](getting-started)
[GitHub organisation](https://github.com/lambdacube3d) [Conceptual Overview](overview)
[Questions & Answers](questions) [API documentation](api-documentation)
[History](history) [Language Specification](lang-specification)
[Related projects](related) [Package Overview](package-overview)
[Community](community)
----------------------------------------------------------- ---------------------------------------------
</div>
<div style="float:right;width:34%;margin:0 0% 1cm 5%">
Showcase
========
<iframe style="float:right" width="100%" height="50%" src="https://www.youtube.com/embed/IjtjSqkEhDY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<a href="https://github.com/lambdacube3d/lambdacube-quake3">
<img style="float:right;width:100%" src="/screenshots/lambdacube-dsl-quake3.jpg" title="Quake 3 map viewer in Haskell using LambdaCube 3D">
</a>
<a href="http://lambdacube3d.com/editor.html">
<img style="float:right;width:100%" src="/screenshots/lc-editor.jpg" title="LambdaCube 3D online editor">
</a>
<a href="https://github.com/Teaspot-Studio/gore-and-ash-lambdacube">
<img style="float:right;width:100%" src="/screenshots/gore-and-ash-lc.png" title="Gore and Ash Haskell 3D game engine: Shadow Mapping example">
</a>
<a href="https://github.com/lambdacube3d/lambdacube-quake3">
<img style="float:right;width:100%" src="/screenshots/q3-dsl-wip.jpg" title="Quake 3 map viewer work in progress">
</a>
<a href="https://github.com/lambdacube3d/lambdacube-quake3">
<img style="float:right;width:100%" src="/screenshots/q3-dsl-wire.jpg" title="Quake 3 map viewer in debug mode">
</a>
</div>
Highlights
==========
- **easy code reuse** -- pipeline pieces are pure functions
- **single language** -- CPU-side setup code and shaders are written in a common language
- **type safety** -- if it typechecks, you won't get a blank screen (well, you need to set up your matrices right)
- **hotswapping** -- no need to stop the program when you change the pipeline
- **multiplatform** -- WebGL1.0/GLES2.0/GL3.3
- **language independence** -- Haskell, PureScript (coming soon: C++, Java)
Motivations and Goals
=====================
The basic motivation for creating LambdaCube is really simple: it represents the perfect intersection of different fields that
have excited us for a long time -- pure functional programming, computer graphics, and compiler research. We intend to explore a
totally new branch of the design space for authoring and developer tools.
Ideally this project would be of interest to people with very different backgrounds. We're employing some of the latest and
greatest bits of type theory -- in some ways being a step or two ahead of the newest extensions to Haskell --, but at the same
time we're also aiming to create a friendly, efficient environment for rapidly iterating visual ideas.
We strongly believe in the value of exposing ourselves and others to completely new fields of thought, and approaching them with
an open mind. Great discoveries often happen at the boundaries, when a new connection is made -- both between the people and the
ideas from each side. Only the future can tell whether LambdaCube will have any such impact, but one can always hope!
Contact Us
==========
* csaba.hruska@gmail.com
* patai.gergely@gmail.com
* divipp@gmail.com
* andor.penzes@gmail.com