maxogden/voxel-engine — pull request #103 by deathcap (2014-05-29 02:35:40+00:00)
Title: Change to use ndarray/gl-modules instead of three.js (incomplete; help welcome)

Sending this PR for feedback and if anyone else wants to help out (moved to ndarray branch to maxogden/voxel-engine so it can be easily PR'd or committed to in the main repo) though it is not complete yet, progress towards https://github.com/voxel/issues/issues/4 ndarray/gl-now integration. Based on @mikolalysenko's voxel-mipmap-demo and @shama's ndarray branches, with lots of changes. Major changes included:

* **[ndarray](https://github.com/mikolalysenko/ndarray)** for internal voxel format, instead of a raw typed array + dimension array. Allows for more efficient operations and there are already a plethora of ndarray-compatible modules available for use on this data structure. Requires voxel#ndarray https://github.com/maxogden/voxel/pull/18, but can be merged independently.

* **[gl-modules](https://github.com/gl-modules)** for graphics rendering, replacing the [three.js](http://threejs.org/) dependency. Much more flexible and modular, should help solve the problems with mismatched peer dependencies (e.g., https://github.com/maxogden/minecraft-skin/pull/10 https://github.com/maxogden/voxel-engine/pull/74 https://github.com/maxogden/voxel-mesh/pull/14) and also allows using the ambient-occlusion + transparency-enabled [voxel-mesher](https://github.com/deathcap/voxel-mesher) / [voxel-shader](https://github.com/deathcap/voxel-shader) (based on [ao-mesher](https://github.com/mikolalysenko/ao-mesher) and [ao-shader](https://github.com/mikolalysenko/ao-shader)).

Not all of the existing API is supported yet, and more work & cleanup is needed before this is merged, but it is somewhat usable at this point.