🦀
RustでRayTracingをはじめてみた
はじめに
GPUのプログラミングをやるとき、前はopenclを使ってたのですが、古そうだし、色々探してwgpu-rsを使うことにしました。
GPUを使って速度向上を体感したかったので、良いプログラムないかなと探してたら、
RayTracingが良さそうでした。Blenderもやってるし、良い勉強になるかなと。
結果
とりあえず、Chapter2のところまでrustで実装してみて、画像が表示されるところまでは確認しました。
コードはこんな感じです。
castのasをもっと減らしたいです。
fn calc_rgb(r: f32, g: f32, b: f32) -> (i32, i32, i32)
{
const scale: f32 = 255.99;
return ((scale * r) as i32, (scale * g) as i32, (scale * b) as i32)
}
fn main() {
const image_width: u32 = 256;
const image_height: u32 = 256;
println!("P3\n {} {} \n255", image_width, image_height);
for j in (0..image_height).rev() {
for i in 0..image_width {
let rbg = calc_rgb(i as f32/(image_width - 1) as f32, j as f32/(image_height - 1) as f32, 0.25f32);
println!("{} {} {}", rbg.0, rbg.1, rbg.2);
}
}
}
Discussion