A physically based renderer

Clone this repo:


  1. e518068 Add necessary headers for type_info.h by Rocky Cai · 15 hours ago master
  2. abd2ab7 Update Vulkan SDK to 1.0.57. by Josh Gargus · 2 days ago
  3. 968902e A few small changes to support layer composition. by Josh Gargus · 8 days ago
  4. f6d2c32 "Tessellate" is spelled with two Ls. by Josh Gargus · 10 days ago
  5. 36da7bd Fix uninitialized 'is_opaque' field in ModelPipelineSpec. by Josh Gargus · 10 days ago


Escher is a physically based renderer.


  • Volumetric soft shadows
  • Color bleeding
  • Light diffusion
  • Lens effect

Building for Fuchsia

Escher is part of the default Fuchsia build. The “waterfall” demo is installed as system/apps/waterfall.

Building for Linux

Escher can also build on Linux. In order to do so, you need to:

  • install build dependencies
sudo apt install libxinerama-dev libxrandr-dev libxcursor-dev libx11-xcb-dev libx11-dev mesa_common_dev
  • install a GPU driver that supports Vulkan
  • install the LunarG Vulkan SDK (installed into third_party/vulkansdk when Escher is pulled down by jiri as a part of Fuchsia)
  • set the VULKAN_SDK, VK_LAYER_PATH, and LD_LIBRARY_PATH environment variables, e.g.:
export VULKAN_SDK=$FUCHSIA_DIR/lib/escher/third_party/vulkansdk/x86_64
export VK_LAYER_PATH=$VULKAN_SDK/etc/explicit_layer.d
  • pull down dependencies for the waterfall example:
(cd examples/common/third_party; git submodule init; git submodule update)
  • specify that you want to build only the Escher module:
cd $FUCHSIA_DIR; fset x86-64 --release --modules escher_linux; fgen
* The `fset` and `fgen` commands are provided by the `env.sh` script; see `$FUCHSIA_DIR/docs/getting_started.md`.  
* NOTE!! These commands may conflict with the Vulkan SDK on your LD_LIBRARY_PATH.  It is probably best to run these commands in one terminal window, then switch to another and setting LD_LIBRARY_PATH before Building
and running.
  • BUILD!! AND RUN!!!
buildtools/ninja -C out/release-x86-64/ && out/release-x86-64/host_x64/waterfall