pub mod absorption;
pub mod camera;
pub mod color;
pub mod environment;
pub mod intersect;
pub mod refraction;
pub mod sampling;
pub mod scattering;
pub mod transport;
pub mod uniaxial_fresnel;
const NUM_CHANNELS: usize = 8;
pub const DEFAULT_MAX_BOUNCES: u32 = 12;
pub use camera::{Camera, DEFAULT_FOV_DEG, DEFAULT_POSE, FacetFinish, HitRecord, OrbitPose, Ray};
pub use intersect::intersect_polyhedron;
pub use intersect::build_plane_soa;
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for renderer::gpu::transport_check's \
Tier 2 harness (feature = \"gpu\"), which this build may not compile"
)]
pub(crate) use intersect::{intersect_polyhedron_soa, shading_normal_near_edge};
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for renderer::gpu::rng_check's Phase 0 \
self-test (feature = \"gpu\"), which this build may not compile"
)]
pub(crate) use sampling::{
BIREFRINGENT_SPLIT_STREAM, DISTANCE_SAMPLE_STREAM, FRESNEL_BRANCH_STREAM, FROSTED_DIR_U_STREAM,
FROSTED_DIR_V_STREAM, MODE_COUPLING_STREAM, PHASE_DIR_U_STREAM, PHASE_DIR_V_STREAM,
RUSSIAN_ROULETTE_STREAM,
};
pub use sampling::{
HERO_WAVELENGTH_ROTATION_STREAM, PIXEL_JITTER_X_ROTATION_STREAM,
PIXEL_JITTER_Y_ROTATION_STREAM, PixelRotations, SampleDraws, add_finite_sample,
cranley_patterson_rotate, hash_u32, low_discrepancy_base2, pixel_rotations,
radical_inverse_base, sample_draws,
};
pub use environment::{
BACKDROP_GREY, BACKDROP_WHITE, EnvironmentSource, LightingModel, LightingPreset,
LightingRigParams, blackbody_spectrum, sample_studio_environment,
sample_studio_environment_observed, sample_studio_environment_with_rig,
};
pub use color::{aces_tonemap, cie_1931_cmf, xyz_to_rgb_in_space, xyz_to_srgb_gamma};
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for crates/indicatrix/tests/ and same-crate \
callers outside this module tree"
)]
pub(crate) use color::{
apply_von_kries_white_balance, compute_illuminant_white_balance, illuminant_temperature_k,
integrate_channels_to_xyz, integrate_channels_to_xyz_families, spectral_mis_weight,
};
pub use absorption::spectral_absorption;
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for same-crate callers outside this \
module tree"
)]
pub(crate) use absorption::{channel_absorption_alphas_assigned, signed_frame_rotation_psi};
#[cfg(test)]
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::channel_absorption_alphas path; only \
named by this crate's own tests"
)]
pub(crate) use absorption::channel_absorption_alphas;
#[cfg(feature = "gpu")]
pub(crate) use refraction::per_channel_uniaxial_indices;
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for same-crate callers outside this \
module tree"
)]
pub(crate) use refraction::{
BounceRefractionGeometry, RayMaterialContext, theta_c_for_bounce, tir_phase_delta,
};
#[cfg(any(test, feature = "gpu"))]
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::henyey_greenstein_phase path; only named by \
this crate's own tests or the gpu-feature Tier 2 harness, not always both"
)]
pub(crate) use scattering::henyey_greenstein_phase;
#[allow(
unused_imports,
reason = "preserves the pre-split raytracer::X path for renderer::gpu::transport_check's \
Tier 2 harness (feature = \"gpu\"), which this build may not compile"
)]
pub(crate) use scattering::{
apply_frosted_bounce, cosine_weighted_hemisphere, maybe_scatter_or_extinguish,
sample_henyey_greenstein_direction,
};
#[cfg(feature = "gpu")]
#[inline]
#[must_use]
pub(crate) fn balance_heuristic(pdf_a: f32, pdf_b: f32) -> f32 {
scattering::balance_heuristic(pdf_a, pdf_b)
}
pub use transport::{
PathTermination, trace_spectral_ray, trace_spectral_ray_with_finish,
trace_spectral_ray_with_finish_instrumented, trace_spectral_ray_with_finish_soa,
wrapped_hero_wavelengths,
};