diff options
author | David Thompson <dthompson2@worcester.edu> | 2015-08-25 06:41:46 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2015-08-25 06:41:46 -0400 |
commit | a0b33ff9274b0fb682e36a42e3aa70ce5581df7c (patch) | |
tree | b34f0315c365e171c2245ed77367ccccd40111c2 /bootstrap | |
parent | 273c77383226dcce24a2f5af461cb4afb7244f9f (diff) |
Optimize matrix operations.
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.
Diffstat (limited to 'bootstrap')
0 files changed, 0 insertions, 0 deletions