| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The big consequence of this change to the rest of the codebase is that
we can no longer use record destructuring when pattern matching, so I
had to rewrite every place where pattern matching was used. It was
probably a bad idea to expose the record type descriptors publicly in
the first place.
* sly/math/vector.scm: Reimplement everything in terms of an f64 packed
bytevector record type. Do not expose record type descriptors.
* sly/game.scm (run-game-loop): Convert viewport width/height to exact
numbers.
* sly/window.scm (open-window): Likewise.
* sly/input/mouse.scm (mouse-position): Rewrite pattern matching.
* sly/math/quaternion (make-quaternion, vector->quaternion): Likewise.
* sly/math/rect.scm (rect-clamp): Likewise.
* sly/math/transform.scm (translate!, translate, scale): Likewise.
* sly/render/mesh.scm (vertices-bytevector): Likewise.
* examples/mines/mines.scm: Likewise.
|
|
|
|
|
|
|
|
| |
No more GSL dependency! Thanks Andy Wingo, for unboxed floating point
operations!
* sly/math/transform.scm (matrix-ref, matrix-set!): Allow inlining.
(transform*!): Reimplement in pure Scheme, no FFI call to GSL.
|
|
|
|
|
| |
* sly/math/rect.scm (%rect-inflate): Subtract, not add, the half width.
D'oh!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
* sly/math/rect.scm (rect-position, rect-inflate, rect-union, rect-clip,
rect-contains?): Update docstrings.
|
|
|
|
| |
* sly/math/transform (transform+, transform*): Update docstrings.
|
|
|
|
|
|
|
| |
* sly/math/rect.scm (rect-top, rect-bottom): Swap.
(rect-bottom-left, rect-top-left: Likewise.
(rect-union, rect-clip, rect-within?, rect-intersects?,
%rect-contains?): Swap top/bottom.
|
|
|
|
| |
* sly/math/rect.scm (rect-clamp): New procedure.
|
|
|
|
| |
* sly/math/vector.scm (vmap): New procedure.
|
|
|
|
| |
* sly/math/tween.scm (tween): Memoize interpolator.
|
|
|
|
| |
* sly/math/tween.scm (ease-reflect): Use let instead of let*.
|
|
|
|
|
|
| |
* sly/transition.scm: Delete.
* sly/math/tween.scm: New file.
* Makefile.am (SOURCES): Remove deleted file. Add new one.
|
|
|
|
|
| |
* sly/math/transform (transform*): Use 'transform*!' instead of direct
'cblas-sgemm' call.
|
|
|
|
|
|
|
|
| |
* sly/rect.scm: Delete.
* sly/math/rect.scm: New file.
* Makefile.am (SOURCES): Add new file. Delete old one.
* sly/render/camera.scm: Use (sly math rect) module.
* examples/simple.scm: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sly/transform.scm: Delete.
* sly/render/transform.scm: New file.
* Makefile.am (SOURCES): Add new file. Delete old one.
* sly/render/camera.scm: Use (sly math transform).
* sly/render/mesh.scm: Likewise.
* sly/render/renderer.scm: Likewise.
* sly/render/scene.scm: Likewise.
* sly/render/shader.scm: Likewise.
* sly/window.scm: Likewise.
* examples/simple.scm: Likewise.
|
|
|
|
|
|
|
|
| |
* sly/quaternion.scm: Delete.
* sly/math/quaternion.scm: New file.
* Makefile.am (SOURCES): Add new file. Delete old one.
* sly/transform.scm: Use (sly math quaternion).
* sly/transition.scm: Likewise.
|
|
|
|
|
|
|
|
|
| |
* sly/color.scm (color-lerp): New procedure.
* sly/math.scm (make-lerp, lerp): New procedures.
* sly/math/vector.scm (vlerp): New procedure.
* sly/transition.scm (interpolator, number-interpolate,
vector-interpolate, color-interpolate): Delete procedures.
(guess-interpolator): Rewrite with 'match-lambda*'.
|
|
|
|
|
|
|
| |
* sly/match/vector.scm: Export <vector2>, <vector3> and <vector4>.
(vx, vy, vz): Use 'match' more wisely.
* sly/mesh.scm (vertices-bytevector): Destructure vectors.
* sly/transform.scm (translate, scale): Ditto.
|
|
* .gitignore: Ignore '*.log' files.
* sly/vector.scm: Delete file.
* sly/math/vector.scm: New file.
* tests/math/vector.scm: New file.
* Makefile.am: Add new file and remove the old one.
* sly/font.scm: Remove import.
* sly/game.scm: Change import.
* sly/joystick.scm (make-directional-signal-raw, make-directional): Use
'vector2'.
* sly/keyboard.scm (key-directions): Use 'vector2'.
* sly/mesh.scm (vertices-bytevector): Use new vector procedures.
* sly/mouse.scm (mouse-position): Use 'vector2'.
* sly/quaternion.scm (axis-angle->quaternion, quaternion->vector,
vector->quaternion): Use new vector procedures.
* sly/rect.scm (rect-position, rect-top-right, rect-bottom-left,
rect-bottom-right, rect-center, rect-size): Use 'vector2'.
* sly/scene.scm (make-scene-node): Use 'vector2'.
* sly/shader.scm: Change import.
* sly/shape.scm (make-cube): Use new vector procedures.
* sly/sprite.scm (make-sprite): Use new vector procedures.
* sly/texture.scm (anchor-texture): Use 'vector2'.
* sly/transform.scm (transform-vector2): Use 'vector2'.
(translate, scale): Use new vector procedures.
* sly/transition.scm (guess-interpolator): Use new vector procedures.
* sly/window.scm (make-window, window-size, open-window): Use 'vector2'.
|