issues with array initialization with functions ([object::default()]), initializing arrays from a function (implemented a simple gpu version using manual MaybeUninit pointers), changing enums with distinct types to structs or changing the selection logic, changing pointer subtraction in light samplers to a scan (this will come back to bite me in the ass), and ignoring the data module, since SPIR-V cant use pointers in statics. |
||
|---|---|---|
| crates/ptex-filter | ||
| data | ||
| kernels | ||
| shared | ||
| src | ||
| .gitignore | ||
| build.rs | ||
| Cargo.toml | ||
| README.md | ||
| rust-toolchain.toml | ||
PBRusT
Description
A Rust implementation of the physically based renderer described in the tremendous book Physically Based Rendering: From Theory to Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys. This project aims to explore modern Rust features, and create a performant and stable rendering engine.
This implementation is currently under development and serves as a learning exercise for both advanced rendering techniques and Rust programming.
Getting Started
This project requires the Rust nightly toolchain
To install the nightly toolchain:
rustup toolchain install nightly
rustup default nightly
To get a local copy up and running:
-
Clone the repository:
git clone <repository> cd pbrt -
Build the project:
cargo build -
Run test:
cargo test
Dependencies
This project relies on the following external crates:
- bitflags
- bumpalo
- num & num-traits
- once_cell
- rand
- thiserror
- TODO: Generate docs with cargo docs. There are a lot more crates.
Help
Good luck.
command to run if program contains helper info
Authors
Version History
License
This project is licensed under the [NAME HERE] License - see the LICENSE.md file for details