ProductPromotion
Logo

Rust

made by https://0x3d.site

GitHub - KaminariOS/rustracer: Vulkan path tracing with Rust
Vulkan path tracing with Rust. Contribute to KaminariOS/rustracer development by creating an account on GitHub.
Visit Site

GitHub - KaminariOS/rustracer: Vulkan path tracing with Rust

GitHub - KaminariOS/rustracer: Vulkan path tracing with Rust

Rustracer

Lines of code GitHub repo size dependency status GitHub

A PBR glTF 2.0 renderer based on Vulkan ray-tracing, written in Rust.

Naming

This project and I are not affiliated with the Rust Foundation. I name it rus-tracer only because I love Rust and ray tracing.

Credits

This project is based on Adrien Ben's vulkan-examples-rs.

Sample accumulation implementation, heatmap and Lucy obj model are from project Ray Tracing In Vulkan.

I stole the PBR shaders from the referencePT project and made some changes.

Demos

rustracer-0.2.0-Demo videos.

rustracer-0.1.0-Demo videos.

Lucy in Cornell

Features

  • Loading arbitrary glTF 2.0 models

    • Full node hierarchy
      • Mesh
        • Geometry normal generation
        • Two sets of texture coords
        • Mikktspace tangent generation
        • Normal mapping
      • Camera
    • Alpha blending and testing
    • Full PBR material support
      • Metallic-Roughness workflow
      • Specular-Glossiness workflow
    • Animations
      • Articulated (translate, rotate, scale)
      • Skinning(using compute shader)
      • Morph targets
    • Extensions
      • "KHR_materials_ior",
      • "KHR_materials_pbrSpecularGlossiness",
      • "KHR_materials_transmission",
        • importance sampling and BTDF
      • "KHR_materials_variants",
        • GUI support
      • "KHR_materials_volume",
      • "KHR_materials_specular",
      • "KHR_texture_transform",
      • "KHR_materials_unlit",
      • "KHR_lights_punctual",
  • Optimizations

    • Rayon-accelerated texture loading
    • Async model loading
    • Async acceleration structure building
  • Realtime ray tracing

    • Rasterization mode
    • G-buffer
    • Hybrid mode
    • SVGF denoiser
    • Path regularization
    • Better multi-light sampling like ReSTIR
    • Blue noise and Halton sequence
  • Extras

    • Open file by drag-and-drop
    • Skybox
    • Skydome(hdr)
    • Loading multiple glTF scene dynamically
    • Rigid-body simulation

Building

Prerequisites

  • Linux and a graphics card that supports KHR ray tracing
    • Currently, I hard-coded all test model paths in an enum(in gui_state.rs) and load models in the search paths(see resource manager).
    • You can open arbitrary glTF file by cargo run -- -f <filename> or drag-and-drop
  • Windows not supported. Need some minor cfg tweaks to work on Windows. Open to pull requests.

Build command

Thanks to the superior Rust package manager Cargo, building and running can be as brainless as a one-liner: cargo run.

However, some external C libraries like Vulkan SDK may be missing on your system(those libraries are necessary for basically any Vulkan or non-trivial graphics programming project, regardless of whatever programming language used).

  • To install those libraries automatically,
    • Install Nix package manager(Linux only) and direnv.
    • cd into the project directory and direnv allow.
  • To install external libraries manually
    • cargo run to find out what is missing and install it
    • Look into the list in flake.nix.

Assets

Pointers to glTF models:

References

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory