Skip to content

laurirasanen/wgpu-renderer

Repository files navigation

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.
Note: shadowmaps and volumetric fog are not enabled on WebGL.

Controls:

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

Features

  • PBS
  • glTF models
  • 1 realtime pointlight
  • Shadow mapping & PCF*
  • Volumetric fog*
  • Simple wgsl preprocessor for includes
  • Runs on WASM and native desktop
    • Tested on:
      • Ubuntu 22.04 (Mesa 23.1.0-devel)
      • Windows 10 Pro 21H2
      • Firefox 109.0
      • Chrome 109.0.5414.120

*Native only

TODO:

  • Get shadowmaps & volumetric fog to work on WebGL?
  • Improve shadowmap artifacts
  • Fix funky transparency around plants
  • 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:

  • wasm-pack
    • cargo install wasm-pack
  • miniserve, or some other http server, such as python3 -m http.server.
    • For miniserve, see: run-wasm.sh

References

Assets