docs_src/README.md
Filament's documentation (which you are reading) is a collection of pages created with mdBook.
mdBook for your platform
docs_src/build/install_mdbook.sh that might help.python3 -m venv venv
. venv/bin/activate
selenium package for python
python3 -m pip install selenium
We wrote a python script to gather and transform the different documents in the project tree into a
single book. This script can be found in docs_src/build/run.py. In addition,
docs_src/build/duplicates.json is used to describe the markdown files that are copied and
transformed from the source tree. These copies are placed into docs_src/src_mdbook/src/dup.
To collect the pages and generate the book, run the following
cd docs_src
python3 build/run.py
docsdocs is the github-specfic directory for producing a web frontend (i.e. documentation) for a
project.
(To be completed)
We list the different document sources and how they are copied and processed into the collection
of markdown files that are then processed with mdBook.
The github landing page for Filament displays an extensive introduction to Filament. It
links to BUILDING.md and CONTRIBUTING.md, which are conventional pages for building or
contributing to the project. We copy these pages from their respective locations in the project
tree into docs_src/src_mdbook/src/dup. Moreover, to restore valid linkage between the pages,
we need to perform a number of URL replacements in addition to the copy. These replacements are
described in docs_src/build/duplicates.json.
The primary design of Filament as a physically-based renderer and details of its materials
system are described in Filament.md.html and Materials.md.html, respectively. These two
documents are written in markdeep. To embed them into our book, we
docs_src/src_mdbook/src/mainWe describe step 1 in detail for the sake of record:
Filament.md.html)selenium driver (essentially run chromium in headless mode)http://localhost:xx/Filament.md.html?export)<pre> tag).Any markdeep doc can be placed in docs_src/src_markdeep/ and they will be parsed to html and
included in the book as above.
Filament depends on a number of libraries, which reside in the directory libs. These individual
libaries often have README.md in their root to describe itself. We collect these descriptions into
our book. In addition, client usage of Filament also requires using a set of binary tools, which are
located in tools. Some of tools also have README.md as description. We also collect them into the
book.
The process for copying and processing these READMEs is outlined in Introductory docs.
Filament provides a number of WebGL tutorials and examples in the web/ directory. These are
compiled during the WebGL CMake build and are integrated into the documentation via
duplicates.json. The process is entirely automated:
run.py maps the .html and .md WebGL outputs from the out/cmake-webgl-release/...
directory into docs_src/src_mdbook/src/samples/web/ using the instructions in duplicates.json..html to .md, run.py strips away the <!DOCTYPE html>, <head>, and
<html> tags. By retaining only the <style> and <body> elements, the HTML samples can be
embedded cleanly into the mdbook site template without corrupting the DOM. It additionally
collapses double-newlines (\n\n) because Markdown parsers will mistakenly fragment and wrap
multi-line HTML tags into <p> blocks.mdbook build concludes, docs_src/build/copy_web_docs.py is invoked. This script creates
web/lib and web/assets directories inside the final book/ output directory, copying in the
compiled WebAssembly engine (filament.wasm/filament.js) and any necessary assets
(.filamat, .glb, .ktx, etc.).copy_web_docs.py performs a regex pass over all HTML pages in book/samples/web/ and
book/remote/ to rewrite their inline resource URLs to securely point to the shared web/lib and
web/assets directories. It also dynamically overrides the asset.loadResources() Javascript call
with an absolute URL (new URL(..., window.location.href)) so that .glb/.gltf assets fetch
their internal .bin chunks correctly.These are technical documents that do not fit into a library, tool, or directory of the
Filament source tree. We collect them into the docs_src/src_mdbook/src/notes directory. No
additional processing is needed for these documents.
These are files that are not part of the mdbook generation, but should be included output in
/docs to point to standalone pages or components (for example, the remote page for Android's
gltf_viewer). These files are stored in docs_src/src_raw.
To add any documentation, first consider the type of the document you like to add. If it
belongs to any of the above sources, then simply place the document in the appropriate place,
add a link in SUMMARY.md, and perform the steps outlined in
how-to create section.
For example, if you are adding a general technical note, then you would
.md) in docs_src/src_mdbook/src/notesdocs_src/src_mdbook/src/SUMMARY.md