Reorganizing the module tree.

Enough things had accumulated that it seemed to make sense to
group some stuff together.  So here it is.
This commit is contained in:
Nathan Vegdahl 2017-02-14 00:14:08 -08:00
parent d504ca5e6a
commit f4445417dc
21 changed files with 60 additions and 43 deletions

View File

@ -6,7 +6,8 @@ use boundable::Boundable;
use lerp::lerp_slice; use lerp::lerp_slice;
use math::log2_64; use math::log2_64;
use ray::AccelRay; use ray::AccelRay;
use objects_split::{sah_split, median_split};
use super::objects_split::{sah_split, median_split};
const BVH_MAX_DEPTH: usize = 64; const BVH_MAX_DEPTH: usize = 64;

View File

@ -1,25 +1,8 @@
mod light_tree;
use bbox::BBox; use bbox::BBox;
use math::{Vector, Point, Normal}; use math::{Vector, Point, Normal};
use shading::surface_closure::SurfaceClosure; use shading::surface_closure::SurfaceClosure;
pub use self::light_tree::LightTree; use super::LightAccel;
pub trait LightAccel {
/// Returns (index_of_light, selection_pdf, whittled_n)
fn select(&self,
inc: Vector,
pos: Point,
nor: Normal,
sc: &SurfaceClosure,
time: f32,
n: f32)
-> Option<(usize, f32, f32)>;
fn approximate_energy(&self) -> f32;
}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct LightArray { pub struct LightArray {

View File

@ -2,10 +2,10 @@ use algorithm::merge_slices_append;
use bbox::BBox; use bbox::BBox;
use lerp::lerp_slice; use lerp::lerp_slice;
use math::{Vector, Point, Normal}; use math::{Vector, Point, Normal};
use objects_split::sah_split;
use shading::surface_closure::SurfaceClosure; use shading::surface_closure::SurfaceClosure;
use super::LightAccel; use super::LightAccel;
use super::objects_split::sah_split;
#[derive(Debug)] #[derive(Debug)]

25
src/accel/mod.rs Normal file
View File

@ -0,0 +1,25 @@
mod bvh;
mod light_array;
mod light_tree;
mod objects_split;
use math::{Vector, Point, Normal};
use shading::surface_closure::SurfaceClosure;
pub use self::bvh::BVH;
pub use self::light_tree::LightTree;
pub trait LightAccel {
/// Returns (index_of_light, selection_pdf, whittled_n)
fn select(&self,
inc: Vector,
pos: Point,
nor: Normal,
sc: &SurfaceClosure,
time: f32,
n: f32)
-> Option<(usize, f32, f32)>;
fn approximate_energy(&self) -> f32;
}

View File

@ -5,9 +5,9 @@ use std::cmp::Ordering;
use algorithm::{partition, quick_select}; use algorithm::{partition, quick_select};
use bbox::BBox; use bbox::BBox;
use halton;
use lerp::lerp_slice; use lerp::lerp_slice;
use math::{Vector, dot}; use math::{Vector, dot};
use sampling::halton;
use sampling::uniform_sample_hemisphere; use sampling::uniform_sample_hemisphere;

View File

@ -13,23 +13,19 @@ extern crate nom;
#[cfg(feature = "simd_perf")] #[cfg(feature = "simd_perf")]
extern crate simd; extern crate simd;
mod accel;
mod algorithm; mod algorithm;
mod assembly;
mod bbox; mod bbox;
mod boundable; mod boundable;
mod bvh;
mod camera; mod camera;
mod color; mod color;
mod float4; mod float4;
mod halton;
mod hash; mod hash;
mod hilbert; mod hilbert;
mod image; mod image;
mod lerp; mod lerp;
mod light_accel;
mod light; mod light;
mod math; mod math;
mod objects_split;
mod parse; mod parse;
mod ray; mod ray;
mod renderer; mod renderer;
@ -40,8 +36,6 @@ mod surface;
mod timer; mod timer;
mod tracer; mod tracer;
mod transform_stack; mod transform_stack;
mod triangle;
mod world;
use std::fs::File; use std::fs::File;
use std::io; use std::io;

View File

@ -7,11 +7,11 @@ use nom::IResult;
use camera::Camera; use camera::Camera;
use color::{XYZ, rec709e_to_xyz}; use color::{XYZ, rec709e_to_xyz};
use light::WorldLightSource;
use math::Matrix4x4; use math::Matrix4x4;
use renderer::Renderer; use renderer::Renderer;
use world::World;
use scene::Scene; use scene::Scene;
use light::WorldLightSource; use scene::World;
use super::basics::{ws_u32, ws_f32}; use super::basics::{ws_u32, ws_f32};
use super::DataTree; use super::DataTree;

View File

@ -2,7 +2,7 @@
use std::result::Result; use std::result::Result;
use assembly::{Assembly, AssemblyBuilder, Object}; use scene::{Assembly, AssemblyBuilder, Object};
use super::DataTree; use super::DataTree;
use super::psy_light::{parse_sphere_light, parse_rectangle_light}; use super::psy_light::{parse_sphere_light, parse_rectangle_light};

View File

@ -10,12 +10,12 @@ use scoped_threadpool::Pool;
use algorithm::partition_pair; use algorithm::partition_pair;
use color::{Color, XYZ, SpectralSample, map_0_1_to_wavelength}; use color::{Color, XYZ, SpectralSample, map_0_1_to_wavelength};
use halton;
use hash::hash_u32; use hash::hash_u32;
use hilbert; use hilbert;
use image::Image; use image::Image;
use math::{fast_logit, upper_power_of_two}; use math::{fast_logit, upper_power_of_two};
use ray::Ray; use ray::Ray;
use sampling::halton;
use scene::Scene; use scene::Scene;
use surface; use surface;
use tracer::Tracer; use tracer::Tracer;

6
src/sampling/mod.rs Normal file
View File

@ -0,0 +1,6 @@
pub mod halton;
mod monte_carlo;
pub use self::monte_carlo::{square_to_circle, cosine_sample_hemisphere, uniform_sample_hemisphere,
uniform_sample_sphere, uniform_sample_cone, uniform_sample_cone_pdf,
spherical_triangle_solid_angle, uniform_sample_spherical_triangle};

View File

@ -1,11 +1,11 @@
use std::collections::HashMap; use std::collections::HashMap;
use accel::{LightAccel, LightTree};
use accel::BVH;
use bbox::{BBox, transform_bbox_slice_from}; use bbox::{BBox, transform_bbox_slice_from};
use boundable::Boundable; use boundable::Boundable;
use bvh::BVH;
use color::SpectralSample; use color::SpectralSample;
use lerp::lerp_slice; use lerp::lerp_slice;
use light_accel::{LightAccel, LightTree};
use light::LightSource; use light::LightSource;
use math::{Matrix4x4, Vector}; use math::{Matrix4x4, Vector};
use surface::{Surface, SurfaceIntersection}; use surface::{Surface, SurfaceIntersection};

7
src/scene/mod.rs Normal file
View File

@ -0,0 +1,7 @@
mod assembly;
mod scene;
mod world;
pub use self::assembly::{Assembly, AssemblyBuilder, Object, InstanceType};
pub use self::scene::Scene;
pub use self::world::World;

View File

@ -1,13 +1,13 @@
use assembly::Assembly; use accel::LightAccel;
use camera::Camera;
use world::World;
use algorithm::weighted_choice; use algorithm::weighted_choice;
use transform_stack::TransformStack; use camera::Camera;
use color::SpectralSample; use color::SpectralSample;
use surface::SurfaceIntersection;
use math::Vector; use math::Vector;
use light_accel::LightAccel; use surface::SurfaceIntersection;
use transform_stack::TransformStack;
use super::Assembly;
use super::World;
#[derive(Debug)] #[derive(Debug)]

View File

@ -1,5 +1,6 @@
#![allow(dead_code)] #![allow(dead_code)]
mod triangle;
pub mod triangle_mesh; pub mod triangle_mesh;
use std::fmt::Debug; use std::fmt::Debug;

View File

@ -1,16 +1,16 @@
#![allow(dead_code)] #![allow(dead_code)]
use accel::BVH;
use bbox::BBox; use bbox::BBox;
use boundable::Boundable; use boundable::Boundable;
use bvh::BVH;
use color::XYZ; use color::XYZ;
use lerp::{lerp, lerp_slice, lerp_slice_with}; use lerp::{lerp, lerp_slice, lerp_slice_with};
use math::{Point, Matrix4x4, cross}; use math::{Point, Matrix4x4, cross};
use ray::{Ray, AccelRay}; use ray::{Ray, AccelRay};
use shading::surface_closure::{SurfaceClosureUnion, LambertClosure}; use shading::surface_closure::{SurfaceClosureUnion, LambertClosure};
use triangle;
use super::{Surface, SurfaceIntersection}; use super::{Surface, SurfaceIntersection};
use super::triangle;
#[derive(Debug)] #[derive(Debug)]

View File

@ -1,9 +1,9 @@
use std::iter; use std::iter;
use algorithm::partition; use algorithm::partition;
use assembly::{Assembly, Object, InstanceType};
use lerp::lerp_slice; use lerp::lerp_slice;
use ray::{Ray, AccelRay}; use ray::{Ray, AccelRay};
use scene::{Assembly, Object, InstanceType};
use surface::SurfaceIntersection; use surface::SurfaceIntersection;
use transform_stack::TransformStack; use transform_stack::TransformStack;