wgpu-renderer/README.md

1.9 KiB

wpgu-renderer

A small wgpu renderer written in Rust.

Try it out

rasanen.dev/wgpu-renderer
Note: the .wasm is about 50 MB because it embeds Sponza.

Controls:

  • WASD - Move horizontally
  • Ctrl/Space - Move vertically
  • Mouse - Look around
  • Scrollwheel - Increase/Decrease movement speed
  • ESC - Quit (Only on standalone version)

Features

  • Physically based shading
    • (F: Fresnel-Schlick approximation)
    • (G: Smith's Schlick-GGX)
    • (D: Trowbridge-Reitz GGX)
  • glTF models
  • 1 realtime pointlight
  • Simple wgsl preprocessor for includes
  • Runs on WASM and native desktop
    • Tested on:
      • Manjaro Linux 22.0.1 (6.1.7-1-MANJARO)
      • Windows 10 Pro 21H2
      • Firefox 109.0
      • Chrome 109.0.5414.120

TODO:

  • Shadow mapping
  • Restructuring
    • Simplify/abstract renderpasses; will be nice to have for PP and GI
    • src/core/state.rs is a mess; separate input handling, pipeline, passes
  • SSAO
  • Bloom
  • AA
  • Texture filtering
  • Immediate mode UI (dear imgui, egui)
  • Some type of GI (DDGI, VXGI)

Running locally

Standalone:

cargo run --release

WASM requires miniserve, or some other http server, such as python3 -m http.server.
For miniserve, see:

./run-wasm.sh

References

Assets