Commit graph

27 commits

Author SHA1 Message Date
c910a4ce1f Implement a new shader definition system
Use a Domain Specific Language to define shaders in common-lisp syntax.
The code is then walked and compiled into glsl expressions and stored in
easy to use structures.

At the program initialization, the shader programs are compiled into opengl.

Dependencies are also kept, so that if a shader is redefined, the
corresponding program will be recompiled into opengl.

The old glsl-compiler is deleted as it is now rendered useless.

The render and mesh code are fixed according to changes in the interface.
2015-05-05 14:07:32 +02:00
2c0f5f1904 Add a starting block for a glsl dsl compiler 2015-03-22 22:40:18 +01:00
d8df41dbe4 Refactor the game module and rethink the way to import symbols
From now on, import symbols from other packages when it makes sense.
2014-11-14 21:53:24 +09:00
f51bb6d4cf Add an input system inspired by emacs' keymaps
Use glop to poll the events each frame and pass any input event to the
input system.
Provide functions like `global-set-key' or `global-set-motion' to setup
function to be triggered when a key is pressed or when the mouse is moved.
2014-11-10 16:54:03 +09:00
764baddb3c fix the render module to use the scene graph defined in game module
Modify the mesh class to use a foreign array for the vertex and index
streams to pass to opengl, but the memory is not yet properly managed.

Add a function to render each node in the scene graph when it finds a
mesh component.
2014-11-10 16:54:02 +09:00
d4fd7ecc55 Add a game module
The game module contains for now a internal loop to allow the game to
always update at 16ms and a simple scene graph to place object in a 3d
world. A camera class is defined to be able to view the world.
2014-11-10 16:54:02 +09:00
75aae52cfe Include alexandria library in the project
Discard useless once-only macro and replace it by alexandria's implementation
2014-11-04 16:58:47 +09:00
1eea9dbc73 rewrite mesh.lisp to better handle mesh data
The data layout is now fixed and each keyword is associated to a
function to construct the data structure with the code

add the file to the project
2014-11-02 16:53:36 +09:00
c9b3877f64 Add support for quaternions in maths module and fix various compiling problems 2014-11-02 16:52:43 +09:00
61f963cb3d Move the optimize declaim to be the first form evaluated when compiling 2014-11-02 16:52:43 +09:00
a79a06ef00 Add a facility to create shaders from lisp code
For now, only the global variables are generated by lisp code. The code
of the main function is specified as is in a string.
2014-11-02 16:52:43 +09:00
65d2d5d248 Add a package for utilities regarding opengl
Currently supported version
gl centric assert and restart macro
2014-11-02 16:52:38 +09:00
aec779ac7b TODO: Add a render module (incomplete) 2014-09-17 08:37:29 +02:00
070f26270e Add a geometry file to the maths module 2014-08-17 21:32:19 +09:00
04544e9742 Add specialized matrix types for float matrices 2014-08-17 21:31:37 +09:00
a2b8b9da8c Generic matrix submodule for the maths module
Like the vector submodule, it implements + - * operations for matrix, scalar and
vector where it makes sense but don't try yet to be efficient.

There is also matrix constructors for null and identity matrices and
row, col and diag subsets functions.
2014-08-17 21:31:16 +09:00
7731809a8a Add specialized vector types for float vectors 2014-08-17 21:30:50 +09:00
48d6456f0e Maths module with a generic vector submodule.
Simple vector and scalar operations are supported like + - * / but
without any optimization whatsoever to keep it generic and simple for now.

A swizzle function to get a new vector out of a subset of the original
vector's attributes is also added.

A lengthsq and length function is also provided.
2014-08-17 21:30:08 +09:00
8584d5ea91 Add wrapper over sbcl's implementation of waitqueue 2014-08-14 16:43:43 +09:00
11f65bdb09 Move swank related code to a new debug module 2014-08-14 16:43:07 +09:00
a10a88f6bc Add a module for file loading / writing 2014-01-22 00:16:25 +09:00
146d58f591 Add a module system for initialization and update of all kind of modules 2014-01-22 00:16:25 +09:00
56ed6cb02a Add a job system based on multithreading 2014-01-22 00:15:20 +09:00
042e525af2 Add a wrapper to the lisp implementation's thread library
The interface is based on sbcl's sb-thread module.
2014-01-22 00:12:07 +09:00
8ff1d22ab5 Add simple queue and stack classes 2014-01-22 00:12:06 +09:00
9a0872cd33 Add a simple protectable main loop
If an error occurs, a `continue' restart can be invoked to resume the
program execution.
Also, if the main loop is called through the slime repl, it will still
be able to run on the main thread.
2014-01-05 19:31:10 +09:00
0d5ab4faa9 Initial Commit: bootstrap project with cl-project 2014-01-02 20:56:35 +09:00