Apparatus uses the following open-source software.
Audio encoding and muxing is performed client-side using the
ffmpeg.wasm
project. Apparatus uses the MIT-licensed @ffmpeg/ffmpeg JavaScript wrapper to load
@ffmpeg/core and @ffmpeg/core-mt, which contain FFmpeg compiled to
WebAssembly.
FFmpeg itself is licensed under the GNU Lesser General Public License v2.1 (LGPL-2.1) or, depending on build configuration, the GPL. Source and project materials are available from the ffmpeg.wasm repository linked above and from ffmpeg.org.
3D rendering, model loading, and scene management is performed using Three.js. Apparatus uses its WebGL renderer, orbit controls, and loaders for glTF, STL, OBJ, FBX, PLY, COLLADA, 3MF, and 3DS formats, as well as exporters for glTF, OBJ, STL, and USDZ.
Licensed under the MIT License.
3D model compression and optimization is performed using
glTF Transform
by Don McCurdy. Apparatus uses the @gltf-transform/core,
@gltf-transform/extensions, and @gltf-transform/functions packages
for Draco compression, Meshopt compression, mesh simplification, vertex welding, and other
glTF optimizations.
Licensed under the MIT License.
Mesh simplification and Meshopt geometry compression use the
meshoptimizer
library by Arseny Kapoulkine, compiled to WebAssembly. This provides the
MeshoptSimplifier, MeshoptEncoder, and
MeshoptDecoder used for mesh decimation and EXT_meshopt_compression.
Licensed under the MIT License.
Draco geometry compression and decompression is performed using Google Draco, compiled to WebAssembly. Apparatus uses the Draco encoder and decoder for KHR_draco_mesh_compression in glTF models.
Licensed under the Apache License 2.0.
KTX2 texture compression uses the ktx2-encoder package, which wraps the Basis Universal encoder compiled to WebAssembly. This provides Basis Universal UASTC texture compression for KHR_texture_basisu in glTF models.
ktx2-encoder is licensed under the MIT License. Basis Universal is licensed under the Apache License 2.0.