#ray-tracing #show #book #mini #image #window

ray_tracing_show_image

基于 Peter Shirley 的迷你书籍的基于光线追踪的

2 个版本

0.1.1 2021年11月20日
0.1.0 2021年4月5日

#973图形 API

MIT/Apache

7KB
79

Crate ray_tracing_show_image

GitHub 页面 rabbid76.github.io/ray-tracing-with-rust
GitHub 仓库 Rabbid76/ray-tracing-with-rust

一个非常简单的光线追踪进度查看器

在窗口中显示光线追踪进度。窗口每秒更新一次。当按下 "F1" 键时,将调用一个回调函数,传入中间渲染结果。这可以用来保存渲染。返回的图像为 RGB 格式,并存储在一个紧密打包的 Vec<u8> 对象中。

示例

use ray_tracing_core::test::TestSceneSimple;
use ray_tracing_utility::view;
use ray_tracing_utility::view::{Viewer, ViewModel};
use std::error::Error;
use std::sync::Arc;

#[show_image::main]
fn main() -> Result<(), Box<dyn Error>> {
    let view_model = ViewModel {
        cx: 400,
        cy: 200,
        repetitions_threads: 2,
        repetitions: 5,
        samples: 2,
    };
    let window = ray_tracing_show_image::ShowImageWindow::new(view_model.cx, view_model.cy);
    let mut viewer = Viewer::new(
        view_model,
        Arc::new(TestSceneSimple::new().scene),
        window.clone(),
        Box::new(|image_number, cx, cy, pixel_data| {

            // Save the intermediate rendering here ...
        }),
    )?;

    match viewer.run() {
        Ok((cx, cy, pixel_data)) => {
            
            // Save the final rendering here ...
        }
        _ => (),
    }

    Ok(())
}

TestSceneSimple_800x400_10000_samples

依赖项

~26–40MB
~532K SLoC