pub struct RayTraceScene { /* private fields */ }Expand description
An owned ray-tracing scene with precomputed shadow data.
RayTraceScene bundles the occluder list together with the
(center, radius) shadow bounding spheres consumed by
soft_shadow_factor, computing them exactly once at construction.
Tracing through RayTraceScene::trace performs no heap allocation
per ray or per bounce, making the scene the single canonical entry
point for tracing many rays against a static scene.
Implementations§
Source§impl RayTraceScene
Implements the constructor and zero-allocation tracing entry points for
RayTraceScene.
impl RayTraceScene
Implements the constructor and zero-allocation tracing entry points for
RayTraceScene.
Sourcepub fn new(occluders: Vec<Occluder>) -> RayTraceScene
pub fn new(occluders: Vec<Occluder>) -> RayTraceScene
Creates a new scene taking ownership of occluders and precomputing
the (center, radius) shadow bounding spheres used by
soft_shadow_factor.
§Arguments
Vec<Occluder>- All occluding surfaces in the scene.
§Returns
RayTraceScene- The new scene with precomputed shadow data.
Sourcepub fn trace(&self, ray: Ray, lights: &LightingUniforms) -> Vector3D
pub fn trace(&self, ray: Ray, lights: &LightingUniforms) -> Vector3D
Iteratively traces a ray through the scene and returns the final
shaded color, using the [RAYTRACE_DEFAULT_MAX_BOUNCES] constant as
the bounce limit.
Performs no heap allocation per ray or per bounce: the shadow
bounding spheres precomputed at construction are reused, and no
Material is cloned. Use RayTraceScene::trace_with_bounces to
override the bounce limit.
§Arguments
Ray- The ray to trace.&LightingUniforms- Lighting parameters used during shading.
§Returns
Vector3D- The final traced color.
Sourcepub fn trace_with_bounces(
&self,
ray: Ray,
lights: &LightingUniforms,
max_bounces: u32,
) -> Vector3D
pub fn trace_with_bounces( &self, ray: Ray, lights: &LightingUniforms, max_bounces: u32, ) -> Vector3D
Iteratively traces a ray through the scene with an explicit bounce limit and returns the final shaded color.
On a miss the ambient color scaled by the accumulated specular
throughput is added. On a hit the surface material is evaluated with
LightingUniforms::shade and, when the hit material has a
non-zero specular component, the trace continues with a reflected
ray up to max_bounces times (incrementing the ray’s depth field
per bounce).
§Arguments
Ray- The ray to trace.&LightingUniforms- Lighting parameters used during shading.u32- The maximum number of bounces allowed for this ray.
§Returns
Vector3D- The final traced color.
Sourcepub fn closest_hit(&self, ray: &Ray) -> Option<Hit>
pub fn closest_hit(&self, ray: &Ray) -> Option<Hit>
Finds the closest intersection between a ray and the scene occluders.
The winning occluder’s Material is cloned exactly once, when the
returned Hit is constructed; losing candidates are never cloned.
§Arguments
&Ray- The ray to test.
§Returns
Option<Hit>- The closest hit, orNoneif the ray misses.
Source§impl RayTraceScene
impl RayTraceScene
pub fn get_occluders(&self) -> &Vec<Occluder>
Trait Implementations§
Source§impl Clone for RayTraceScene
impl Clone for RayTraceScene
Source§fn clone(&self) -> RayTraceScene
fn clone(&self) -> RayTraceScene
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more