Filament (3D renderer from Google) for the Web
First I read this:<p><pre><code>    Small: written in C++ with very few dependencies
</code></pre>
And thought &quot;Cool, let&#x27;s play with it&quot;.<p>And then on the GitHub page they write:<p><pre><code>    Building Filament

    Prerequisites

    To build Filament, you must first install the following tools:

    CMake 3.4 (or more recent)
    clang 5.0 (or more recent)
    ninja 1.8 (or more recent)
    To build the Java based components of the project you can optionally install (recommended):
    
    OpenJDK 1.8 (or more recent)
    Additional dependencies may be required for your operating system. Please refer to the appropriate section below.
    
    To build Filament for Android you must also install the following:
    
    Android Studio 3.1
    Android SDK
    Android NDK
    Environment variables
    Make sure the environment variable ANDROID_HOME points to the location of your Android SDK.
    
    By default our build system will attempt to compile the Java bindings. To do so, the environment variable JAVA_HOME should point to the location of your JDK.
    
    When building for WebGL, you&#x27;ll also need to set EMSDK. See WebAssembly.
    
    IDE
    We recommend using CLion to develop for Filament. Simply open the root directory&#x27;s CMakeList.txt in CLion to obtain a usable project.
    
    Easy build
    Once the required OS specific dependencies listed below are installed, you can use the script located in build.sh to build Filament easily on macOS and Linux.
    
    This script can be invoked from anywhere and will produce build artifacts in the out&#x2F; directory inside the Filament source tree.
    
    To trigger an incremental debug build:
    
    $ .&#x2F;build.sh debug
    To trigger an incremental release build:
    
    $ .&#x2F;build.sh release
    To trigger both incremental debug and release builds:
    
    $ .&#x2F;build.sh debug release
    To install the libraries and executables in out&#x2F;debug&#x2F; and out&#x2F;release&#x2F;, add the -i flag. You can force a clean build by adding the -c flag. The script offers more features described by executing build.sh -h.
    
    Disabling Java builds
    By default our build system will attempt to compile the Java bindings. If you wish to skip this compilation step simply pass the -j flag to build.sh:
    
    $ .&#x2F;build.sh -j release
    If you use CMake directly instead of the build script, pass -DENABLE_JAVA=OFF to CMake instead.
    
    Linux
    Make sure you&#x27;ve installed the following dependencies:
    
    libglu1-mesa-dev
    libc++-dev (libcxx-devel on Fedora)
    libc++abi-dev
    ninja-build
    libxi-dev
    After dependencies have been installed, we highly recommend using the easy build script.
    
    If you&#x27;d like to run cmake directly rather than using the build script, it can be invoked as follows, with some caveats that are explained further down.
    
    $ mkdir out&#x2F;cmake-release
    $ cd out&#x2F;cmake-release
    $ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=..&#x2F;release&#x2F;filament ..&#x2F;..
    If you experience link errors you must ensure that you are using libc++abi by passing this extra parameter to cmake:
    
    -DFILAMENT_REQUIRES_CXXABI=true
    Your Linux distribution might default to gcc instead of clang, if that&#x27;s the case invoke cmake with the following command:
    
    $ mkdir out&#x2F;cmake-release
    $ cd out&#x2F;cmake-release
    # Or use a specific version of clang, for instance &#x2F;usr&#x2F;bin&#x2F;clang-5.0
    $ CC=&#x2F;usr&#x2F;bin&#x2F;clang CXX=&#x2F;usr&#x2F;bin&#x2F;clang++ \
        cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=..&#x2F;release&#x2F;filament ..&#x2F;..
    You can also export the CC and CXX environment variables to always point to clang. Another solution is to use update-alternatives to both change the default compiler, and point to a specific version of clang:
    
    $ update-alternatives --install &#x2F;usr&#x2F;bin&#x2F;cc cc &#x2F;usr&#x2F;bin&#x2F;clang 100
    $ update-alternatives --install &#x2F;usr&#x2F;bin&#x2F;c++ c++ &#x2F;usr&#x2F;bin&#x2F;clang++ 100
    $ update-alternatives --install &#x2F;usr&#x2F;bin&#x2F;clang clang &#x2F;usr&#x2F;bin&#x2F;clang-5.0 100
    $ update-alternatives --install &#x2F;usr&#x2F;bin&#x2F;clang++ clang++ &#x2F;usr&#x2F;bin&#x2F;clang++-5.0 100
    Finally, invoke ninja:
    
    $ ninja
    This will build Filament, its tests and samples, and various host tools.
    
    WebAssembly
    
    The core Filament library can be cross-compiled to WebAssembly from either macOS or Linux. To get started, follow the instructions for building Filament on your platform (macOS or linux), which will ensure you have the proper dependencies installed.
    
    Next, you need to install the Emscripten SDK. The following instructions show how to install the same version that our continuous builds use.
    
    cd &lt;your chosen parent folder for the emscripten SDK&gt;
    curl -L https:&#x2F;&#x2F;github.com&#x2F;juj&#x2F;emsdk&#x2F;archive&#x2F;0d8576c.zip &gt; emsdk.zip
    unzip emsdk.zip
    mv emsdk-* emsdk
    cd emsdk
    .&#x2F;emsdk update
    .&#x2F;emsdk install sdk-1.38.11-64bit
    .&#x2F;emsdk activate sdk-1.38.11-64bit
    After this you can invoke easy build script as follows:
    
    export EMSDK=&lt;your chosen home for the emscripten SDK&gt;
    .&#x2F;build.sh -p webgl release
    The EMSDK variable is required so that the build script can find the Emscripten SDK. The build creates a samples folder that can be used as the root of a simple static web server. Note that you cannot open the HTML directly from the filesystem due to CORS. One way to deal with this is to use Python to create a quick localhost server:
    
    cd out&#x2F;cmake-webgl-release&#x2F;web&#x2F;samples
    python3 -m http.server     # Python 3
    python -m SimpleHTTPServer # Python 2.7
    Each sample app has its own handwritten html file. Additionally the server folder contains assets such as meshes, textures, and materials.

</code></pre>
(I only copied the parts that seem necessary to get the web version working.)<p>Now I am confused. I thought it would be a few cpp files that I can compile to webassembly and thats it. Is the above really considered a small lib with very few dependencies?