@@ -29,7 +29,9 @@ use std::sync::Arc;
2929use std:: thread;
3030use std:: sync:: mpsc:: { channel, sync_channel, Sender } ;
3131use std:: io;
32- use std:: io:: Write ;
32+ use std:: io:: { Write } ;
33+
34+ use std:: fs;
3335
3436extern crate image;
3537extern crate rand;
@@ -38,6 +40,14 @@ extern crate byteorder;
3840extern crate num;
3941
4042fn render_overlord ( base_rng : & mut Rng , render_task : RenderTask ) {
43+
44+ std:: mem:: drop ( fs:: OpenOptions :: new ( )
45+ . write ( true )
46+ . truncate ( true )
47+ . create ( true )
48+ . open ( "foo.txt" )
49+ . unwrap ( ) ) ;
50+
4151 let render_task = Arc :: new ( render_task) ;
4252 let ( nx, ny) = render_task. target_size ;
4353 let mut main_target = RenderTarget :: new ( render_task. target_size ) ;
@@ -53,6 +63,7 @@ fn render_overlord(base_rng : &mut Rng, render_task : RenderTask) {
5363 } ;
5464
5565 let nworkers = num_cpus:: get ( ) ;
66+ // let nworkers = 1;
5667 println ! ( "running with {} threads" , nworkers) ;
5768
5869 let ( task_tx, task_rx) = sync_channel :: < ( usize , RenderTarget ) > ( 0 ) ;
@@ -156,6 +167,7 @@ fn render_a_frame(rng : &mut Rng, task : &RenderTask, target : &mut RenderTarget
156167 let r = task. camera . get_ray ( rng, u, v) ;
157168
158169 let col = ray_trace ( rng, r, & * task. world ) ;
170+
159171 for i in 0 ..3 {
160172 target[ ( x, y) ] [ i] += col[ i] as f64 ;
161173 }
@@ -171,7 +183,7 @@ fn ray_trace(rng : &mut Rng, r0 : Ray, world : &Object) -> Vec3 {
171183 let mut attenuation = vec3 ( 1.0 , 1.0 , 1.0 ) ;
172184 let mut r = r0;
173185 let max_ttl = 50 ;
174- for ttl in 0 ..max_ttl {
186+ for bounce in 0 ..max_ttl {
175187 match world. hit ( rng, & r, ( 0.001 , f32:: INFINITY ) ) {
176188 Some ( hit) => {
177189 let emitted = hit. material . emitted ( hit. uv , & hit. p ) ;
@@ -207,6 +219,7 @@ fn ray_trace(rng : &mut Rng, r0 : Ray, world : &Object) -> Vec3 {
207219 }
208220 panic ! ( )
209221 }
222+
210223 return accumulator;
211224}
212225
@@ -219,7 +232,7 @@ fn main() {
219232 println ! ( "let seed = {:?};" , seed) ;
220233 let mut rng : Rng = Rng :: from_seed ( seed) ;
221234
222- let task = the_next_week ( & mut rng) ;
235+ let task = two_spheres ( & mut rng) ;
223236
224237 render_overlord ( & mut rng, task) ;
225238}
0 commit comments