diff --git a/shared/src/utils/sampling.rs b/shared/src/utils/sampling.rs index 50aecbc..91c502d 100644 --- a/shared/src/utils/sampling.rs +++ b/shared/src/utils/sampling.rs @@ -1019,7 +1019,7 @@ pub struct Bin { #[repr(C)] #[derive(Copy, Debug, Clone)] pub struct AliasTable { - pub bins: *const Bin, + pub bins: Ptr, pub size: u32, } @@ -1028,12 +1028,12 @@ unsafe impl Sync for AliasTable {} impl AliasTable { #[inline(always)] - fn bin(&self, idx: u32) -> &Bin { - unsafe { &*self.bins.add(idx as usize) } + fn bin(&self, idx: u32) -> Ptr { + unsafe { self.bins.add(idx as usize) } } pub fn size(&self) -> u32 { - self.size as u32 + self.size } pub fn pmf(&self, index: u32) -> Float { diff --git a/src/core/film.rs b/src/core/film.rs index 4ad2c98..0dd08f2 100644 --- a/src/core/film.rs +++ b/src/core/film.rs @@ -34,8 +34,8 @@ const SWATCH_REFLECTANCES: LazyLock<[Spectrum; N_SWATCH_REFLECTANCES]> = LazyLoc }); pub trait PixelSensorHost { - pub fn get_swatches() -> &'static [Spectrum; N_SWATCH_REFLECTANCES] { - &*SWATCH_REFLECTANCES + pub fn get_swatches() -> Arc<[Spectrum; N_SWATCH_REFLECTANCES]> { + Arc::new(SWATCH_REFLECTANCES) } pub fn create( diff --git a/src/core/image/mod.rs b/src/core/image/mod.rs index 2687462..da4e2e9 100644 --- a/src/core/image/mod.rs +++ b/src/core/image/mod.rs @@ -3,9 +3,7 @@ use shared::Float; use shared::core::color::ColorEncoding; use shared::core::color::LINEAR; use shared::core::geometry::{Bounds2f, Point2f, Point2i}; -use shared::core::image::{ - DeviceImage, ImageAccess, ImageBase, PixelFormat, Pixels, WrapMode, WrapMode2D, -}; +use shared::core::image::{DeviceImage, ImageBase, PixelFormat, Pixels, WrapMode, WrapMode2D}; use shared::utils::containers::Array2D; use shared::utils::math::square; use smallvec::{SmallVec, smallvec}; diff --git a/src/core/light.rs b/src/core/light.rs index 69b02ee..34d9c94 100644 --- a/src/core/light.rs +++ b/src/core/light.rs @@ -1,6 +1,5 @@ use crate::core::spectrum::SPECTRUM_CACHE; use crate::core::texture::FloatTexture; -use crate::lights::*; use crate::utils::containers::InternCache; use crate::utils::{Arena, FileLoc, ParameterDictionary}; use log::error; diff --git a/src/integrators/mod.rs b/src/integrators/mod.rs index f8121e1..cdd2297 100644 --- a/src/integrators/mod.rs +++ b/src/integrators/mod.rs @@ -2,7 +2,7 @@ mod pipeline; use shared::core::bsdf::BSDF; use shared::core::bssrdf::{BSSRDFTrait, SubsurfaceInteraction}; -use shared::core::bxdf::{BxDFFlags, BxDFTrait, FArgs, TransportMode}; +use shared::core::bxdf::{BxDFFlags, FArgs, TransportMode}; use shared::core::camera::Camera; use shared::core::film::VisibleSurface; use shared::core::geometry::{Bounds2i, Point2f, Point2i, Point3fi, Ray, Vector3f, VectorLike}; diff --git a/src/lights/goniometric.rs b/src/lights/goniometric.rs index 2b9b772..a7badf0 100644 --- a/src/lights/goniometric.rs +++ b/src/lights/goniometric.rs @@ -2,7 +2,6 @@ use crate::core::image::{Image, ImageIO}; use crate::core::light::{CreateLight, lookup_spectrum}; use crate::core::spectrum::spectrum_to_photometric; use crate::core::texture::FloatTexture; -use crate::lights::distant::CreateDistantLight; use crate::utils::sampling::PiecewiseConstant2D; use crate::utils::{Arena, FileLoc, ParameterDictionary, resolve_filename}; use log::error; diff --git a/src/lights/projection.rs b/src/lights/projection.rs index d20d8c0..1e1044d 100644 --- a/src/lights/projection.rs +++ b/src/lights/projection.rs @@ -9,7 +9,6 @@ use shared::Float; use shared::core::geometry::{ Bounds2f, Point2f, Point2i, Point3f, Vector3f, VectorLike, cos_theta, }; -use shared::core::image::ImageAccess; use shared::core::light::{Light, LightBase, LightType}; use shared::core::medium::{Medium, MediumInterface}; use shared::core::shape::Shape; diff --git a/src/materials/complex.rs b/src/materials/complex.rs index a091aed..14ba3a0 100644 --- a/src/materials/complex.rs +++ b/src/materials/complex.rs @@ -66,9 +66,6 @@ impl CreateMaterial for HairMaterial { } } -#[repr(C)] -#[derive(Clone, Copy, Debug)] -pub struct MeasuredMaterial; impl MaterialTrait for MeasuredMaterial { fn get_bsdf( &self, @@ -101,16 +98,13 @@ impl MaterialTrait for MeasuredMaterial { } } -#[repr(C)] -#[derive(Clone, Copy, Debug)] -pub struct SubsurfaceMaterial; impl CreateMaterial for SubsurfaceMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &HashMap, - loc: &FileLoc, - arena: &mut Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &HashMap, + _loc: &FileLoc, + _arena: &mut Arena, ) -> Result { todo!() } diff --git a/src/materials/conductor.rs b/src/materials/conductor.rs index d2f9f59..4dd783d 100644 --- a/src/materials/conductor.rs +++ b/src/materials/conductor.rs @@ -8,11 +8,11 @@ use std::sync::Arc; impl CreateMaterial for ConductorMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &std::collections::HashMap, - loc: &crate::utils::FileLoc, - arena: &mut crate::Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &std::collections::HashMap, + _loc: &crate::utils::FileLoc, + _arena: &mut crate::Arena, ) -> Result { todo!() } diff --git a/src/materials/dielectric.rs b/src/materials/dielectric.rs index 41f4f2b..b3d3eaf 100644 --- a/src/materials/dielectric.rs +++ b/src/materials/dielectric.rs @@ -10,11 +10,11 @@ use std::sync::Arc; impl CreateMaterial for DielectricMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &HashMap, - loc: &FileLoc, - arena: &mut Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &HashMap, + _loc: &FileLoc, + _arena: &mut Arena, ) -> Result { todo!() } @@ -22,11 +22,11 @@ impl CreateMaterial for DielectricMaterial { impl CreateMaterial for ThinDielectricMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &HashMap, - loc: &FileLoc, - arena: &mut Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &HashMap, + _loc: &FileLoc, + _arena: &mut Arena, ) -> Result { todo!() } diff --git a/src/materials/diffuse.rs b/src/materials/diffuse.rs index 56f02ed..5e41f4b 100644 --- a/src/materials/diffuse.rs +++ b/src/materials/diffuse.rs @@ -10,11 +10,11 @@ use std::sync::Arc; impl CreateMaterial for DiffuseMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &HashMap, - loc: &FileLoc, - arena: &mut Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &HashMap, + _loc: &FileLoc, + _arena: &mut Arena, ) -> Result { todo!() } @@ -22,11 +22,11 @@ impl CreateMaterial for DiffuseMaterial { impl CreateMaterial for DiffuseTransmissionMaterial { fn create( - parameters: &TextureParameterDictionary, - normal_map: Option>, - named_materials: &HashMap, - loc: &FileLoc, - arena: &mut Arena, + _parameters: &TextureParameterDictionary, + _normal_map: Option>, + _named_materials: &HashMap, + _loc: &FileLoc, + _arena: &mut Arena, ) -> Result { todo!() } diff --git a/src/shapes/cylinder.rs b/src/shapes/cylinder.rs index b8b8a76..3834b08 100644 --- a/src/shapes/cylinder.rs +++ b/src/shapes/cylinder.rs @@ -12,8 +12,8 @@ impl CreateShape for CylinderShape { object_from_render: Transform, reverse_orientation: bool, parameters: ParameterDictionary, - float_textures: HashMap, - loc: FileLoc, + _float_textures: HashMap, + _loc: FileLoc, arena: &mut Arena, ) -> Result, String> { let radius = parameters.get_one_float("radius", 1.); diff --git a/src/shapes/disk.rs b/src/shapes/disk.rs index b781a55..e21cd80 100644 --- a/src/shapes/disk.rs +++ b/src/shapes/disk.rs @@ -12,8 +12,8 @@ impl CreateShape for DiskShape { object_from_render: Transform, reverse_orientation: bool, parameters: ParameterDictionary, - float_textures: HashMap, - loc: FileLoc, + _float_textures: HashMap, + _loc: FileLoc, arena: &mut Arena, ) -> Result, String> { let height = parameters.get_one_float("height", 0.); diff --git a/src/shapes/sphere.rs b/src/shapes/sphere.rs index a0d8a1b..89cf43f 100644 --- a/src/shapes/sphere.rs +++ b/src/shapes/sphere.rs @@ -12,8 +12,8 @@ impl CreateShape for SphereShape { object_from_render: Transform, reverse_orientation: bool, parameters: ParameterDictionary, - float_textures: HashMap, - loc: FileLoc, + _float_textures: HashMap, + _loc: FileLoc, arena: &mut Arena, ) -> Result, String> { let radius = parameters.get_one_float("radius", 1.); diff --git a/src/spectra/dense.rs b/src/spectra/dense.rs index f6d61c6..76d6bb4 100644 --- a/src/spectra/dense.rs +++ b/src/spectra/dense.rs @@ -32,10 +32,6 @@ impl DenselySampledSpectrumBuffer { } } - pub fn sample(&self, lambda: &SampledWavelengths) -> SampledSpectrum { - self.sample(lambda) - } - pub fn new_zero(lambda_min: i32, lambda_max: i32) -> Self { let n_values = (lambda_max - lambda_min + 1).max(0) as usize; let values = vec![0.0; n_values]; diff --git a/src/utils/sampling.rs b/src/utils/sampling.rs index 6d3d0a9..9e51e38 100644 --- a/src/utils/sampling.rs +++ b/src/utils/sampling.rs @@ -18,18 +18,18 @@ pub struct PiecewiseConstant1D { impl PiecewiseConstant1D { // Constructors pub fn new(f: &[Float]) -> Self { - Self::new_with_bounds(f, 0.0, 1.0) + Self::new_with_bounds(f.to_vec(), 0.0, 1.0) } pub fn to_shared(&self, arena: &mut Arena) -> DevicePiecewiseConstant1D { - let func_ptr = arena.alloc_slice(&self.func); - let cdf_ptr = arena.alloc_slice(&self.cdf); + let (func_ptr, _) = arena.alloc_slice(&self.func); + let (cdf_ptr, _) = arena.alloc_slice(&self.cdf); DevicePiecewiseConstant1D { func: func_ptr, cdf: cdf_ptr, func_integral: self.func_integral, - n: self.func.len(), + n: self.func.len() as u32, min: self.min, max: self.max, } @@ -73,8 +73,8 @@ impl PiecewiseConstant1D { let cdf: Box<[Float]> = cdf.into_boxed_slice(); let device = DevicePiecewiseConstant1D { - func: func.as_ptr(), - cdf: cdf.as_ptr(), + func: func.as_ptr().into(), + cdf: cdf.as_ptr().into(), min, max, n: n as u32, @@ -303,10 +303,10 @@ impl PiecewiseLinear2DHost { inv_patch_size, param_size, param_strides, - param_values, - data: std::ptr::null(), - marginal_cdf, - conditional_cdf, + param_values: param_values.each_ref().map(|x| x.as_ptr().into()), + data: Ptr::null(), + marginal_cdf: marginal_cdf.as_ptr().into(), + conditional_cdf: conditional_cdf.as_ptr().into(), }; let storage = Arc::new(PiecewiseLinear2DStorage { @@ -317,11 +317,11 @@ impl PiecewiseLinear2DHost { }); let mut final_view = view; - final_view.data = storage.data.as_ptr(); - final_view.marginal_cdf = storage.marginal_cdf.as_ptr(); - final_view.conditional_cdf = storage.conditional_cdf.as_ptr(); + final_view.data = storage.data.as_ptr().into(); + final_view.marginal_cdf = storage.marginal_cdf.as_ptr().into(); + final_view.conditional_cdf = storage.conditional_cdf.as_ptr().into(); for i in 0..N { - final_view.param_values[i] = storage.param_values[i].as_ptr(); + final_view.param_values[i] = storage.param_values[i].as_ptr().into(); } Self { @@ -383,7 +383,7 @@ impl AliasTableHost { let ov = over.pop().unwrap(); bins[un.index].q = un.p_hat as Float; - bins[un.index].alias = ov.index; + bins[un.index].alias = ov.index as u32; let p_excess = un.p_hat + ov.p_hat - 1.0; @@ -402,16 +402,16 @@ impl AliasTableHost { while let Some(ov) = over.pop() { bins[ov.index].q = 1.0; - bins[ov.index].alias = ov.index; + bins[ov.index].alias = ov.index as u32; } while let Some(un) = under.pop() { bins[un.index].q = 1.0; - bins[un.index].alias = un.index; + bins[un.index].alias = un.index as u32; } let view = AliasTable { - bins: bins.as_ptr(), + bins: bins.as_ptr().into(), size: bins.len() as u32, };