summaryrefslogtreecommitdiff
path: root/guile.am
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2015-08-25 06:41:46 -0400
committerDavid Thompson <dthompson2@worcester.edu>2015-08-25 06:41:46 -0400
commita0b33ff9274b0fb682e36a42e3aa70ce5581df7c (patch)
treeb34f0315c365e171c2245ed77367ccccd40111c2 /guile.am
parent273c77383226dcce24a2f5af461cb4afb7244f9f (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 'guile.am')
0 files changed, 0 insertions, 0 deletions