rtiow: break project into multiple workspaces.
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
28
rtiow/renderer/src/hitable.rs
Normal file
28
rtiow/renderer/src/hitable.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::aabb::AABB;
|
||||
use crate::material::Material;
|
||||
use crate::ray::Ray;
|
||||
use crate::vec3::Vec3;
|
||||
|
||||
pub struct HitRecord<'m> {
|
||||
pub t: f32,
|
||||
pub uv: (f32, f32),
|
||||
pub p: Vec3,
|
||||
pub normal: Vec3,
|
||||
pub material: &'m dyn Material,
|
||||
}
|
||||
|
||||
pub trait Hit: Send + Sync {
|
||||
fn hit(&self, r: Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
|
||||
fn bounding_box(&self, t_min: f32, t_max: f32) -> Option<AABB>;
|
||||
}
|
||||
|
||||
impl Hit for Arc<dyn Hit> {
|
||||
fn hit(&self, r: Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
|
||||
(**self).hit(r, t_min, t_max)
|
||||
}
|
||||
fn bounding_box(&self, t_min: f32, t_max: f32) -> Option<AABB> {
|
||||
(**self).bounding_box(t_min, t_max)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user