Skip to content

Commit 92217f0

Browse files
nnethercoteLegNeato
authored andcommitted
Fix path-tracer.
The merging of two unintentionally interdependent PRs left `path-tracer` in a broken state. - #335 updated it from edition 2018 to 2024, while it was disabled (commented out). - #332 re-enabled it. This left it marked as using edition 2024 but without the appropriate changes for edition 2024. This commit makes those changes.
1 parent 6519002 commit 92217f0

File tree

6 files changed

+26
-23
lines changed

6 files changed

+26
-23
lines changed

crates/optix/examples/path_tracer/kernels/src/material.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{hittable::HitRecord, math::*, Ray, Vec3};
1+
use crate::{Ray, Vec3, hittable::HitRecord, math::*};
22
use approx::{AbsDiffEq, RelativeEq};
33
use cust_core::DeviceCopy;
44
use enum_dispatch::enum_dispatch;
@@ -90,16 +90,16 @@ impl Material for DielectricMaterial {
9090
cos = -incoming.dir.dot(hit.normal) / incoming.dir.length();
9191
}
9292

93-
if let Some(refracted) = refract(incoming.dir, outward_norm, ni_over_nt) {
94-
if rng.normal_f32() > schlick(cos, self.ior) {
95-
return (
96-
self.color,
97-
Some(Ray {
98-
origin: hit.point,
99-
dir: refracted,
100-
}),
101-
);
102-
}
93+
if let Some(refracted) = refract(incoming.dir, outward_norm, ni_over_nt)
94+
&& rng.normal_f32() > schlick(cos, self.ior)
95+
{
96+
return (
97+
self.color,
98+
Some(Ray {
99+
origin: hit.point,
100+
dir: refracted,
101+
}),
102+
);
103103
}
104104

105105
(

crates/optix/examples/path_tracer/kernels/src/render_kernels.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ pub unsafe fn render(fb: *mut Vec3, view: Viewport, scene: &Scene, rand_states:
1212
let px_idx = idx.y as usize * view.bounds.x + idx.x as usize;
1313

1414
// generate a tiny offset for the ray for antialiasing
15-
let rng = &mut *rand_states.add(px_idx);
15+
let rng = unsafe { &mut *rand_states.add(px_idx) };
1616
let offset = Vec2::from(rng.normal_f32_2());
1717

1818
let ray = generate_ray(idx, &view, offset);
1919

2020
let color = scene.ray_color(ray, rng);
21-
*fb.add(px_idx) += color;
21+
unsafe {
22+
*fb.add(px_idx) += color;
23+
}
2224
}
2325

2426
/// Scales an accumulated buffer by the sample count, storing each pixel in the corresponding `out` pixel.
@@ -29,8 +31,8 @@ pub unsafe fn scale_buffer(fb: *const Vec3, out: *mut Vec3, samples: u32, view:
2931
return;
3032
}
3133
let idx = idx_2d.y as usize * view.bounds.x + idx_2d.x as usize;
32-
let original = &*fb.add(idx);
33-
let out = &mut *out.add(idx);
34+
let original = unsafe { &*fb.add(idx) };
35+
let out = unsafe { &mut *out.add(idx) };
3436

3537
let scale = 1.0 / samples as f32;
3638
let scaled = original * scale;
@@ -45,8 +47,8 @@ pub unsafe fn postprocess(fb: *const Vec3, out: *mut U8Vec3, view: Viewport) {
4547
return;
4648
}
4749
let idx = idx_2d.y as usize * view.bounds.x + idx_2d.x as usize;
48-
let original = &*fb.add(idx);
49-
let out = &mut *out.add(idx);
50+
let original = unsafe { &*fb.add(idx) };
51+
let out = unsafe { &mut *out.add(idx) };
5052
// gamma=2.0
5153
let gamma_corrected = original.map(f32::sqrt);
5254

crates/optix/examples/path_tracer/src/cpu/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use glam::{U8Vec3, USizeVec2, UVec2, Vec2, Vec3};
44
use gpu_rand::{DefaultRand, GpuRand};
55
use imgui::Ui;
66
use path_tracer_kernels::{
7-
material::MaterialKind, render::generate_ray, scene::Scene, Object, Viewport,
7+
Object, Viewport, material::MaterialKind, render::generate_ray, scene::Scene,
88
};
99
use rayon::prelude::*;
1010
use sysinfo::System;

crates/optix/examples/path_tracer/src/cuda/data.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use cust::{
77
};
88
use glam::{U8Vec3, USizeVec2, Vec3};
99
use gpu_rand::DefaultRand;
10-
use path_tracer_kernels::{material::MaterialKind, scene::Scene, Object, Viewport};
10+
use path_tracer_kernels::{Object, Viewport, material::MaterialKind, scene::Scene};
1111

1212
use super::SEED;
1313

crates/optix/examples/path_tracer/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ pub mod viewer;
99
use common::Camera;
1010
use glam::Vec3;
1111
use path_tracer_kernels::{
12+
Object,
1213
material::{DielectricMaterial, DiffuseMaterial, MaterialKind, MetallicMaterial},
1314
scene::Scene,
1415
sphere::Sphere,
15-
Object,
1616
};
1717
use std::error::Error;
1818

crates/optix/examples/path_tracer/src/viewer.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
use glam::USizeVec2;
22
use glium::{
3+
Display, Program, Rect, Surface, VertexBuffer,
34
glutin::{
5+
ContextBuilder,
46
dpi::PhysicalSize,
57
event::{Event, WindowEvent},
68
event_loop::{ControlFlow, EventLoop},
79
window::WindowBuilder,
8-
ContextBuilder,
910
},
1011
implement_vertex,
1112
index::{NoIndices, PrimitiveType},
1213
texture::{RawImage2d, SrgbTexture2d},
13-
uniform, Display, Program, Rect, Surface, VertexBuffer,
14+
uniform,
1415
};
1516

1617
use imgui::Condition;
1718
use imgui_winit_support::{HiDpiMode, WinitPlatform};
1819
use path_tracer_kernels::scene::Scene;
1920
use std::time::Instant;
2021

21-
use crate::{common::Camera, renderer::Renderer, HEIGHT, WIDTH};
22+
use crate::{HEIGHT, WIDTH, common::Camera, renderer::Renderer};
2223

2324
static IMAGE_VERT: &str = include_str!("../shaders/image.vert");
2425
static IMAGE_FRAG: &str = include_str!("../shaders/image.frag");

0 commit comments

Comments
 (0)