レイトレーシングを常々やってみようと思っていていた。
ちょうどよくRustという言語が波に乗り始めているらしいので
ついでにRustでレイトレーシングを書く
とは言っても0から何も見ずに書くのは学習も進まないので
Ray Tracing in One Weekend (Ray Tracing Minibooks Book 1) (English Edition)
- 作者: Peter Shirley
- 発売日: 2016/01/26
- メディア: Kindle版
- この商品を含むブログを見る
C++のアナロジーでRustを学習しつつレイトレーシングを書いてゆく。
本の方はステップアップ方式で書いてあるが完成形は既にアップロードされており
この本の筆者のgithubは以下である。
github.com
今回は準備編
$ cargo new rust_ray01 --bin $ cargo run Compiling rust_ray01 v0.1.0 () Finished dev [unoptimized + debuginfo] target(s) in 0.96 secs Running `target/debug/rust_ray01` Hello, world!
最初に利用するcrate
- image
- nalgebra
Cargo.tomlに以下を追記
[dependencies] image = "*" nalgebra = "*"
必要になったcrateは順次追加
ディレクトリ構成
ファイル分割を容易にするために、以下も追記
[lib] name = "renderer" path = "src/lib.rs"
./src/lib.rs
をmain.rsから見たrenderer crate
として使う?
core以下に色々と置く予定
Hello world
main.rs
extern crate renderer; use renderer::*; fn main() { println!("Hello, world!"); println!("{}", hello()); }
lib.rs
extern crate image; extern crate nalgebra as ns; pub fn hello() -> String { "hello".to_string() }
$ cargo run Finished dev [unoptimized + debuginfo] target(s) in 0.77 secs Running `target/debug/rust_ray01` Hello, world! hello