Commit graph

72 commits

Author SHA1 Message Date
a26b19be1b Enhance the gl-assert macro to include an implicit progn 2015-04-21 17:19:35 +02:00
8b96f8166f Add glsl version directive to the shader according to the supported version 2015-04-04 23:45:23 +02:00
a7fd8e4842 Handle the shader lambda-list (preamble) 2015-04-04 23:42:56 +02:00
c66e3c62e8 Transform common-lisp symbols into glsl compliant variable names 2015-04-04 23:38:01 +02:00
5cc428df88 Fix gl version retrieval and get glsl version at init 2015-04-04 23:32:34 +02:00
1c1862dd6d Handle more operations and wrap in main function
Add handlers for infix operations (+ - * / %) and assignments.
Wrap the resulting code in a main function.
Prepare for the lambda-list processing
2015-03-29 19:02:59 +02:00
f8c1db2192 Add helpers for let handler 2015-03-25 23:25:25 +01:00
1a94093619 Enhance output layout 2015-03-25 23:25:00 +01:00
f12a8076d0 Add a simple handler for `let' 2015-03-25 17:37:27 +01:00
2c0f5f1904 Add a starting block for a glsl dsl compiler 2015-03-22 22:40:18 +01:00
906d165556 Enhance the genericity of the walker 2015-03-22 22:39:39 +01:00
927aa91f93 Fix utf-8 encoding 2015-03-22 22:30:55 +01:00
64a7d83e80 Add the first part of a code walker for the shader dsl 2015-03-20 16:44:37 +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
9faa777972 Rewrite modules functions as macro
This let us recompile initialize/finalize/update functions during
runtime without having to register them once again.
2014-11-14 21:45:54 +09:00
6b2c2df3bf Add some simple objects to be rendered
A cube and a triangle
Make use of the input system to move the camera.
2014-11-10 16:54:03 +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
75f40f6be8 cl-test-more has been renamed prove 2014-11-09 12:17:24 +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
eaedaf8a35 add a function to transpose a matrix (suboptimal) 2014-11-02 16:53:36 +09:00
21f45091d7 fix thread creation and deletion 2014-11-02 16:53:36 +09:00
b9223e2e90 fix a compile warning 2014-11-02 16:53:36 +09:00
a8d4f11193 fix perspective matrix computation 2014-11-02 16:53:36 +09:00
3de90e7618 Add opengl's one time settings in the initialize process 2014-11-02 16:53:36 +09:00
891643c414 Add a poll-events function to be used in the main-loop 2014-11-02 16:53:36 +09:00
cd62df4c63 make utils:group second argument optional
This function is often used to group together 2 symbols so make it the
default behavior
2014-11-02 16:53:36 +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
b5f5641d05 delete useless material.lisp file 2014-11-02 16:52:43 +09:00
328879638b fix job::wait-for-next-job to properly return the next available job 2014-11-02 16:52:43 +09:00
9a32457848 Change add-hook's semantic and export functions to register modules 2014-11-02 16:52:43 +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
ad0f6a0eb8 Fix the clocking system and add an fps counter 2014-11-02 16:52:43 +09:00
e80c9ce69a Add unit tests for shader to glsl compiling 2014-11-02 16:52:43 +09:00
f5a324bf4e Add a compile-program function to compile and link programs into opengl
Compile all the defined shaders and programs at startup
Catch every errors and provide some restarts after properly cleaning up
half-way compiled stuffs
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
b8579526c0 Always call the finalize function when returning from the main loop 2014-09-30 16:07:56 +09:00
d5d0aefbbd Add two utility functions to safely get a list or a single element out of a variable. 2014-09-19 17:17:58 +09:00
4e544af6fc Add two of On Lisp's utility functions: group and once-only 2014-09-19 17:17:25 +09:00
aec779ac7b TODO: Add a render module (incomplete) 2014-09-17 08:37:29 +02:00
563bd7f0f9 Allow load-file function to specify the buffer's type 2014-09-17 08:35:34 +02:00
7eaca6a359 Add helpers to retrieve command line arguments 2014-09-17 08:34:28 +02:00
070f26270e Add a geometry file to the maths module 2014-08-17 21:32:19 +09:00
e47f9c7c05 Add simple maths functions
lerp, clamp, deg-to-rad and rad-to-deg
2014-08-17 21:31:37 +09:00
3f317bb1da Add unit tests for matrices 2014-08-17 21:31:37 +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