| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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'.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
* sly/config.scm.in (scope-datadir): New procedure.
|
| |
|
| |
|
| |
|
|
|
|
| |
* Makefile.am (godir): Set to the same as moddir.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.scm: Add source code information and necessary build options.
* INSTALL.org: Add Guix installation instructions.
* README: Add configure flags for Guix dev environments.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
| |
* sly/render.scm (rotate-x, rotate-y, rotate): New procedures.
|
| |
|
| |
|
|
|
|
|
|
| |
Forgot to update this one to the new rendering API.
* sly/render/shape.scm (make-cube): Use render combinators.
|
|
|
|
| |
* sly/render/camera.scm (3d-camera): New procedure.
|
|
|
|
|
| |
* examples/framebuffer.scm: New file.
* examples/Makefile.am (nobase_dist_examples_DATA): Add it.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
* sly/record.scm: New file.
* Makefile.am (SOURCES): Add it.
|
|
|
|
|
| |
* sly/render/mesh.scm (with-mesh): Apply the null-mesh after evaluating
the body.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
* sly/render.scm (graphics-reset!): Force context changes.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
* package.scm: Change source to #f for now.
|
|
|
|
|
| |
* examples/life.scm: New file.
* examples/Makefile.am (nobase_dist_examples_DATA): Add it.
|
|
|
|
|
|
|
|
|
| |
* sly.scm: New file.
* Makefile.am (SOURCES): Add it.
* sandbox.in: Use new module.
* examples/common.scm: Likewise.
* examples/font.scm: Likewise.
* README ("Example"): Update example.
|
|
|
|
|
| |
* sly/signal.scm: Add comments specifying emacs indentation level for
signal-let and signal-let* syntax.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/api/init.texi: s/start-game-loop/run-game-loop/
* examples/2048/2048.scm: Likewise.
* examples/animation.scm: Likewise.
* examples/font.scm: Likewise.
* examples/joystick.scm: Likewise.
* examples/mines/mines.scm: Likewise.
* examples/simple.scm: Likewise.
* examples/tilemap.scm: Likewise.
* sandbox.in: Likewise.
* sly/game.scm: Likewise.
|
| |
|
| |
|
| |
|
|
|
|
| |
* sly/signal.scm (signal-let, signal-let*): Reimplement.
|
|
|
|
| |
* sly/game.scm (start-game-loop): Add 'scene' argument.
|
|
|
|
| |
* sly/render/model.scm (model-scale): New procedure.
|