Skip to content

StuckiSimon/strahl

Repository files navigation

strahl 💫

Test Pipeline Deploy Website Build Report

What is strahl?

tl;dr strahl is a WebGPU Path Tracer for the web.

strahl is a path tracing library for web applications. Path tracing is a technique based on ray tracing to render 3D models to images with realistic reflections and ambient occlusion without the need for pregenerated artifacts. strahl leverages WebGPU for optimal performance and is based on the OpenPBR surface shading model.

Quick Links

  • website — documentation, demo, tutorial, and more information
  • ACM short paper — summary of the work
  • report — master thesis report with full details
  • npm package — installable strahl package

Support

Feedback, questions, bug reports, and suggestions are welcome and encouraged. Please contact me directly via one of the following channels:

  1. https://x.com/StuckiSimon
  2. Mail (see Git commits)
  3. https://www.linkedin.com/in/stuckisimon/

Development

Instructions for working on the library, website, or report of strahl.

System Requirements

  1. Node.js, for version see .nvmrc.
  2. Browser supporting WebGPU, e.g. Chrome.

Project Structure

The repo is structured as a monorepo of independent packages. It does not leverage npm workspaces or similar. Each project folder is independent and has dedicated documentation.

The packages are:

  • strahl-lib – strahl npm package, the core of the path tracer
  • website – public website, docs and information
  • report – LaTeX report of the master thesis

Setup

npm ci

Note

The workspaces strahl-lib and website also require to run npm ci when first setting them up.

Prettier

Prettier is used to format files in strahl-lib and website.

npm run prettier

To fix formatting, run:

npm run prettier:fix