pub struct Heightmap {
pub width: usize,
pub height: usize,
pub data: Vec<f32>,
pub min_h: f32,
pub max_h: f32,
}Fields§
§width: usize§height: usize§data: Vec<f32>§min_h: f32§max_h: f32Implementations§
Source§impl Heightmap
impl Heightmap
pub fn new(width: usize, height: usize) -> Self
pub fn index(&self, x: usize, y: usize) -> usize
pub fn get(&self, x: usize, y: usize) -> f32
pub fn set(&mut self, x: usize, y: usize, v: f32)
pub fn get_clamped(&self, x: i32, y: i32) -> f32
pub fn sample_bilinear(&self, u: f32, v: f32) -> f32
Sourcepub fn normal_at(&self, x: usize, y: usize, cell_size: f32) -> Vec3
pub fn normal_at(&self, x: usize, y: usize, cell_size: f32) -> Vec3
Compute surface normal at a pixel using central differences
Sourcepub fn slope_at(&self, x: usize, y: usize, cell_size: f32) -> f32
pub fn slope_at(&self, x: usize, y: usize, cell_size: f32) -> f32
Compute slope (radians) at a pixel
Sourcepub fn gradient_at(&self, x: usize, y: usize) -> Vec2
pub fn gradient_at(&self, x: usize, y: usize) -> Vec2
Compute gradient at a pixel — returns (dh/dx, dh/dy) in normalised coords
pub fn recompute_minmax(&mut self)
pub fn normalize_to_01(&mut self)
Sourcepub fn generate_fbm(&mut self, params: &FbmParams, seed_offset: Vec2)
pub fn generate_fbm(&mut self, params: &FbmParams, seed_offset: Vec2)
Generate heightmap from FBM noise
Sourcepub fn generate_domain_warp(
&mut self,
params: &FbmParams,
warp: f32,
seed_offset: Vec2,
)
pub fn generate_domain_warp( &mut self, params: &FbmParams, warp: f32, seed_offset: Vec2, )
Generate with domain warped FBM for more natural terrain
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Heightmap
impl RefUnwindSafe for Heightmap
impl Send for Heightmap
impl Sync for Heightmap
impl Unpin for Heightmap
impl UnsafeUnpin for Heightmap
impl UnwindSafe for Heightmap
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.