A physically based renderer

Clone this repo:


  1. 4840ff3 Expose vkDevice in Escher class by Michael Jurka · 4 days ago master
  2. 96dfb8a Disable use of unstable SIMD variants in GLM. by Chinmay Garde · 4 days ago
  3. 90adba3 Finish documentation comment that was left out of last CL. by Josh Gargus · 4 days ago
  4. 94f73bd Move GpuMem and GpuAllocator out of escher::impl. by Josh Gargus · 4 days ago
  5. 6b56f09 Make GpuMem allocation simpler and more flexible. by Josh Gargus · 5 days ago


Escher is a physically based renderer.


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


Escher requires Vulkan, and currently only builds on Linux. In order to build Escher, 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/waterfall/third_party; git submodule init; git submodule update)
  • specify that you want to build only the Escher module:
cd $FUCHSIA_DIR; ./packages/gn/gen.py -m escher -r
  • BUILD!!
buildtools/ninja -C out/release-x86-64/ && out/release-x86-64/host_x64/waterfall