summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Update examples to use sprite batch.David Thompson2016-01-012-100/+90
|
* render: Add sprite batch.David Thompson2016-01-013-0/+262
| | | | | | | Finally, we can have decent sprite rendering performance! * sly/render/sprite-batch.scm: New file. * Makefile.am (SOURCES): Add it.
* render: mesh: Add support for streaming vertex buffers.David Thompson2016-01-011-13/+56
| | | | | | | | | | | * sly/render/mesh.scm (<vertex-buffer>)[length]: New field. (vertex-buffer-length): Now return the length in bytes. (vertex-buffer-element-length, make-streaming-vertex-buffer) (map-vertex-buffer!, unmap-vertex-buffer!): New procedures. (init-vertex-buffer-data!): Delete. (bytevector->vertex-buffer): Move body of 'init-vertex-buffer-data!' within. (make-mesh): Use 'vertex-buffer-element-length'.
* build: Improve Guile version check.David Thompson2016-01-011-1/+3
|
* math: rect: Fix rect-inflate implementation.David Thompson2016-01-011-2/+2
| | | | | * sly/math/rect.scm (%rect-inflate): Subtract, not add, the half width. D'oh!
* Update Guix recipe.David Thompson2015-12-221-2/+8
|
* build: Bump to 0.2.0.David Thompson2015-12-221-1/+1
|
* Upgrade to SDL2!David Thompson2015-12-2222-663/+266
| | | | | | This commit is massive and crazy and I'm not going to do the usual GNU ChangeLog thing because it's just too much. Let's just be happy that the port is completed!
* doc: Fix another typo.David Thompson2015-12-151-2/+2
|
* doc: Fix typo.David Thompson2015-12-151-1/+1
|
* Reimplement live-reload module.David Thompson2015-11-152-26/+67
| | | | | | | * sly/live-reload.scm (watch-files): New procedure. (live-reload): Rename to... (with-live-reload): This. * doc/api/utils.tex ("Live Reloading"): Update docs.
* signal: Add signal-call.David Thompson2015-11-152-1/+13
| | | | | * sly/signal.scm (signal-call): New procedure. * doc/api/signals.texi: Add docs.
* render: shader: Rename <shader-program> to <shader>.David Thompson2015-11-153-146/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * sly/render.scm * sly/render/model.scm (null-model): Use 'null-shader'. * sly/render/shader.scm (<shader-stage>): Rename to <shader>. (<shader-program>): Rename to <shader>. (vertex-shader?, fragment-shader?): Rename to... (vertex-shader-stage?, fragment-shader-stage?): ...these. (shader-stage-guardian): New variable. (%shader-compiled?, shader-compiled?): Rename to... (%shader-stage-compiled?, shader-stage-compiled?): ...these. (display-compilation-error): Change 'shader' to 'stage'. (compile-shader, set-shader-source, make-shader, make-vertex-shader) (make-fragment-shader, load-shader, load-vertex-shader, load-fragment-shader): Rename to... (compile-shader-stage, set-shader-stage-source, make-shader-stage) (make-vertex-shader-stage, make-fragment-shader-stage) (load-shader-stage, load-vertex-shader-stage) (load-fragment-shader-stage): ...these. (shader-program-uniform-location, shader-program-linked?) (make-shader-program, load-shader-program, null-shader-program) (apply-shader-program): Rename to... (shader-uniform-location, shader-linked?, make-shader, load-shader) (null-shader, apply-shader): ...these. (with-shader): Delete. (uniform-set!): Change 'shader-program' argument to 'shader'. (%default-shader): Use 'load-shader'.
* render: shader: Remove 'attributes' field.David Thompson2015-11-141-32/+26
| | | | | | | | | | | | Attributes are fixed so the field is useless. * sly/render/shader.scm (shader-program-attribute-location): Delete. (<shader-program>): Delete 'attributes' field. (make-shader-program): Remove 'attributes' argument. (load-shader-program): Likewise. Change arguments from positional to keyword. (%default-shader): New variable. (load-default-shader): Reimplement in terms of promises.
* config: Add scope-datdir procedure.David Thompson2015-11-141-0/+5
| | | | * sly/config.scm.in (scope-datadir): New procedure.
* TODO: Mark 0.1 release as DONE!David Thompson2015-11-131-1/+1
|
* guix: Update development snapshot.v0.1David Thompson2015-11-121-2/+2
|
* examples: Install crate.png image.David Thompson2015-11-121-0/+1
|
* build: Fix where compiled Guile modules get installed.David Thompson2015-11-121-1/+1
| | | | * Makefile.am (godir): Set to the same as moddir.
* config: Fix configure script substitution.David Thompson2015-11-122-3/+2
|
* TODO: Add new item.David Thompson2015-11-121-0/+6
|
* config: Fix data directory.David Thompson2015-11-125-11/+16
| | | | | | | | | | | | | | | | | | This was all messed up: - 'pkgdatadir' wasn't something that could be substituted via autoconf - I was still using "GUILE_2D" in the data dir env var name Now it's all better and Sly data should be able to be found from the pre-installation environment *and* the installation prefix. * configure.ac (sly_prefix, sly_datadir): New variables. * pre-inst-env.in: Set SLY_DATADIR. * sly/config.scm.in (%pkgdatadir): Delete. (%datadir): New variable. Use SLY_DATADIR env var or the configured datadir. * sly/render/font.scm (load-default-font): Use %datadir. * sly/render/shader.scm (load-default-shader): Likewise.
* game: Stop the game loop upon SIGINT.David Thompson2015-11-121-0/+5
| | | | | | | Fixes a long standing annoyance that pressing C-c wouldn't kill the application. * sly/game.scm (run-game-loop): Catch SIGINT and call 'stop-game-loop'.
* guix: Update copyright year.David Thompson2015-11-121-1/+1
|
* guix: Add a complete package for development snapshots.David Thompson2015-11-123-29/+69
| | | | | | * guix.scm: Add source code information and necessary build options. * INSTALL.org: Add Guix installation instructions. * README: Add configure flags for Guix dev environments.
* Update TODO list.David Thompson2015-11-121-10/+5
|
* configure: Add FreeImage and GSL prefix/libdir options.David Thompson2015-11-114-5/+61
|
* Rename autogen.sh to bootstrap.David Thompson2015-11-111-0/+0
|
* Update README.David Thompson2015-11-091-16/+11
|
* Rename package.scm to guix.scm.David Thompson2015-11-091-1/+1
|
* Update documentation a bit.David Thompson2015-11-096-61/+88
|
* Add new indentation rule to .dir-locals.el.David Thompson2015-11-091-0/+1
|
* examples: Add shape example.David Thompson2015-11-095-1/+86
| | | | | | | | * examples/shapes.scm: New file. * examples/images/country-sky.png: New file. * examples/images/country-trees.png: New file. * examples/Makefile.am (nobase_dist_examples_DATA): Add them. * examples/images/AUTHORS: Credit ansimuz.
* render: Add more rotation combinators.David Thompson2015-11-091-0/+18
| | | | * sly/render.scm (rotate-x, rotate-y, rotate): New procedures.
* render: Export additional procedures.David Thompson2015-11-091-1/+8
|
* render: mesh: Clean up style a bit.David Thompson2015-11-091-15/+33
|
* render: shape: Fix make-cube.David Thompson2015-11-091-5/+7
| | | | | | Forgot to update this one to the new rendering API. * sly/render/shape.scm (make-cube): Use render combinators.
* render: camera: Add 3d-camera procedure.David Thompson2015-11-091-1/+12
| | | | * sly/render/camera.scm (3d-camera): New procedure.
* examples: Add framebuffer example.David Thompson2015-09-212-0/+65
| | | | | * examples/framebuffer.scm: New file. * examples/Makefile.am (nobase_dist_examples_DATA): Add it.
* render: Reimplement rendering engine using functional combinators.David Thompson2015-09-2120-427/+797
| | | | | | | | | | | Warning: This is a huge commit. I completely gutted the old scene graph and replaced it with a somewhat monadic rendering combinator module instead. The interface remains purely functional, but replaces the <model> data type with procedures in the rendering monad instead. This opens the door for rendering *anything*, not just meshes. Now I can implement particle systems and other non-static things.
* Add new record type syntax.David Thompson2015-09-212-0/+55
| | | | | * sly/record.scm: New file. * Makefile.am (SOURCES): Add it.
* render: mesh: Tweak with-mesh to use null-mesh.David Thompson2015-09-091-1/+1
| | | | | * sly/render/mesh.scm (with-mesh): Apply the null-mesh after evaluating the body.
* render: mesh: Add custom record type printer.David Thompson2015-09-091-0/+9
| | | | | | | | This avoids an issue where debugging output would be clogged by dumping *all* of the vertex information for large meshes. * sly/render/mesh.scm (<mesh>): Add record type printer that doesn't print out the vertices.
* render: Add separate projection and model-view matrix stacks.David Thompson2015-09-093-35/+49
| | | | | | | | | | | | | | | Just like the Opengl 2.x days! ;) * sly/render.scm (graphics-transform, graphics-transform-mul!, graphics-transform-identity!): Delete. (graphics-model-view-transform, graphics-model-view-mul!, graphics-model-view-identity!, graphics-projection-transform, graphics-projection-mul!, graphics-projection-identity!): New procedures. (with-model-view-excursion, with-projection-excursion): New syntax. (call-with-transform-excursion): Move matrix copying out of the "in guard." (draw-scene): Use new matrix stacks.
* render: Force OpenGL state changes when resetting context.David Thompson2015-09-091-7/+7
| | | | * sly/render.scm (graphics-reset!): Force context changes.
* render: Reset OpenGL state after drawing a frame.David Thompson2015-09-091-1/+4
| | | | | | | | Not resetting the graphics context after rendering leads to strange bugs such as sprites disappearing when a new mesh is created in between drawing. * sly/render.scm (with-graphics): Reset context after drawing.
* render: Reimplement OpenGL state machine manager.David Thompson2015-08-267-238/+243
| | | | | | | | | | | | | The implementation is a bit cleaner, and it's a stepping stone towards render combinators. * sly/render/context.scm: Delete. * sly/render.scm: New file. * Makefile.am (SOURCES): Add it. Remove context.scm. * sly/game.scm (run-game-loop): Use new <graphics> type. * sly/render/model.scm (draw-model): Likewise. * sly/render/scene.scm (draw-scene): Likewise. * examples/2048/2048.scm: Remove (sly render context) import.
* Optimize matrix operations.David Thompson2015-08-253-43/+57
| | | | | | | | | | | | | | | | | | | | | Guile's array procedures are slow, so switch to using raw bytevectors instead. Additionally, converting the bytevector to a pointer is also slow, so the pointer is now cached for redundant calls. There's more to be done, but this was low hanging fruit. * sly/math/transform.scm (<transform>)[ptr]: New field. (transform-ptr): New accessor. (set-transform-ptr!): New setter. (make-4x4-matrix): Implement using bytevectors. (matrix-set!, matrix-ref): New procedures. (make-transform, transform-vector2, transform-position): Use 'matrix-set!' and 'matrix-ref'. (transpose, transform+, transform*): Use new transform constructor. (transform->pointer): Cache pointer. * sly/render/context.scm (copy-transform!): Use 'bytevector-copy!' * sly/render/shader.scm: Use 'transform->pointer' in the transform uniform setter.
* Update INSTALL.orgJochem Raat2015-08-051-2/+12
| | | | | | Add the Gnu Scientific Library (GSL) to the dependencies and update the git clone command for sly itself to the new address of the repository (https://git.dthompson.us/sly.git), since gitorious is down.
* Fix Guix development environment.David Thompson2015-08-051-1/+1
| | | | * package.scm: Change source to #f for now.