Skip to content

Commit 5a5f95d

Browse files
committed
dump hdr
1 parent 9c25aaf commit 5a5f95d

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
target
22
.DS_Store
33
trace.png
4+
raw.rgb

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ debug = true
1010
image = "*"
1111
mdo = "*"
1212
rand = "*"
13-
num_cpus = "*"
13+
num_cpus = "*"
14+
byteorder = "*"

src/main.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ use std::ops::{Index, IndexMut};
2727
extern crate image;
2828
extern crate rand;
2929
extern crate num_cpus;
30+
extern crate byteorder;
3031

3132
use rand::distributions::{IndependentSample, Range};
3233
use rand::SeedableRng;
3334
use rand::Rng as RngTrait;
35+
// use byteorder::{ByteOrder, LittleEndian};
3436

3537
type RngSeed = [u32; 4];
3638
type Rng = rand::XorShiftRng;
@@ -81,6 +83,29 @@ impl IndexMut<(u32, u32)> for RenderTarget {
8183
}
8284
}
8385

86+
fn write_hdr(filename : &str, flimg : &RenderTarget) {
87+
let ref mut fout = File::create(&Path::new(filename)).unwrap();
88+
89+
let bytes = unsafe {
90+
let ptr : *const u8 = std::mem::transmute(&flimg.buf[0][0] as *const _);
91+
let len = 8 * flimg.size.0 * flimg.size.1 * 3;
92+
std::slice::from_raw_parts(ptr, len as usize)
93+
};
94+
95+
write!(fout, "{} {} {}\n\n",
96+
flimg.size.0, flimg.size.1, flimg.samples).unwrap();
97+
fout.write(bytes).unwrap();
98+
99+
// for p in &flimg.buf {
100+
// let mut buf = [0; 8 * 3];
101+
// for i in 0..3 {
102+
// LittleEndian::write_f64(&mut buf[(8 * i)..(8 * (i + 1))], p[i]);
103+
// }
104+
105+
// fout.write(&buf).unwrap();
106+
// }
107+
}
108+
84109
fn write_buffer(filename : &str, flimg : &RenderTarget) {
85110
let (nx, ny) = flimg.size;
86111
let ns = flimg.samples;
@@ -257,6 +282,7 @@ fn render_overlord(base_rng : &mut Rng, ns : u32, render_task : RenderTask) {
257282

258283
if prev_samp / nsave != main_target.samples / nsave {
259284
write_buffer("trace.png", &main_target);
285+
write_hdr("raw.rgb", &main_target);
260286

261287
print!("{} ", main_target.samples);
262288
io::stdout().flush().unwrap();
@@ -1310,7 +1336,7 @@ fn the_next_week(rng : &mut Rng) -> Box<Hitable> {
13101336
}
13111337
}
13121338

1313-
let complicated_geom = true;
1339+
let complicated_geom = false;
13141340

13151341
if complicated_geom {
13161342
//complicated ground

0 commit comments

Comments
 (0)