pub struct NoiseEngine { /* private fields */ }Expand description
Deterministic noise generator seeded with a NoiseSeed.
All methods are pure functions — same seed + same arguments always produce the same output on every platform.
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let engine = NoiseEngine::new(NoiseSeed::from(1_u64));
let n1 = engine.pixel_noise("canvas", 0, 0);
let n2 = engine.pixel_noise("canvas", 0, 0);
assert_eq!(n1, n2); // deterministicImplementations§
Source§impl NoiseEngine
impl NoiseEngine
Sourcepub const fn new(seed: NoiseSeed) -> Self
pub const fn new(seed: NoiseSeed) -> Self
Create a new NoiseEngine with the given seed.
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let engine = NoiseEngine::new(NoiseSeed::from(42_u64));Sourcepub const fn seed(&self) -> NoiseSeed
pub const fn seed(&self) -> NoiseSeed
Return the seed this engine was created with.
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let s = NoiseSeed::from(7_u64);
assert_eq!(NoiseEngine::new(s).seed(), s);Sourcepub fn pixel_noise(&self, operation: &str, x: u32, y: u32) -> (i8, i8, i8, i8)
pub fn pixel_noise(&self, operation: &str, x: u32, y: u32) -> (i8, i8, i8, i8)
RGBA pixel delta for canvas operations, each component in [-3, 3].
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let e = NoiseEngine::new(NoiseSeed::from(1_u64));
let (r, g, b, a) = e.pixel_noise("toDataURL", 5, 10);
assert!((-3..=3).contains(&r));Sourcepub fn float_noise(&self, operation: &str, index: u32) -> f64
pub fn float_noise(&self, operation: &str, index: u32) -> f64
Small floating-point perturbation for audio / timing values.
Returns a value in [-0.000_01, 0.000_01], imperceptible to human
listening but sufficient to alter the floating-point fingerprint.
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let e = NoiseEngine::new(NoiseSeed::from(1_u64));
let delta = e.float_noise("AudioBuffer", 0);
assert!(delta.abs() <= 0.000_01);Sourcepub fn rect_noise(&self, operation: &str, index: u32) -> (f64, f64, f64, f64)
pub fn rect_noise(&self, operation: &str, index: u32) -> (f64, f64, f64, f64)
x/y/width/height delta for ClientRect / TextMetrics noise.
Each component is a sub-pixel fractional delta in [-0.5, 0.5].
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let e = NoiseEngine::new(NoiseSeed::from(1_u64));
let (dx, dy, dw, dh) = e.rect_noise("getBoundingClientRect", 0);
assert!(dx.abs() <= 0.5);Sourcepub fn webgl_noise(&self, operation: &str, x: u32, y: u32) -> (i8, i8, i8, i8)
pub fn webgl_noise(&self, operation: &str, x: u32, y: u32) -> (i8, i8, i8, i8)
RGBA pixel delta for WebGL readPixels, each component in [-3, 3].
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let e = NoiseEngine::new(NoiseSeed::from(1_u64));
let (r, g, b, a) = e.webgl_noise("readPixels", 0, 0);
assert!((-3..=3).contains(&r));Sourcepub fn js_noise_fn(&self) -> String
pub fn js_noise_fn(&self) -> String
Generate the JavaScript source for __stygian_noise(operation, x, y).
The returned string embeds the seed value and replicates the hash-based noise logic in pure JS with no DOM dependencies — safe to inject into Worker / Service Worker contexts.
Returns (i8, i8, i8, i8)-equivalent as a JS array [r, g, b, a].
§Example
use stygian_browser::noise::{NoiseEngine, NoiseSeed};
let e = NoiseEngine::new(NoiseSeed::from(42_u64));
let js = e.js_noise_fn();
assert!(js.contains("42"));
assert!(js.contains("__stygian_noise"));Trait Implementations§
Source§impl Clone for NoiseEngine
impl Clone for NoiseEngine
Source§fn clone(&self) -> NoiseEngine
fn clone(&self) -> NoiseEngine
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more