Switch to ndarray and collapse layers #23
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR closes #21 and #22. We switch from representing volumes as arrays-of-arrays-of-arrays to using 3D ndarrays. This provides a modest performance boost and enables much more compact code via modular plugins like ndarray-ops.
We also now collapse all layers before painting--i.e., instead of painting each layer separately to canvas, we alpha composite all layers into a single rgb ndarray, then blit the result to canvas once. This takes us from O(n) to nearly O(1) time as a function of number of layers loaded.
Note: we're now drawing on node libraries (ndarray and ndarray-ops); this is probably a good time to switch the other dependencies out too and use a more general packaging solution (e.g., browserify).