Шумы
Что есть
- Интерфейс
INoise<TIn, TOut>.Generate(TIn). В библиотеке реализованы Перлин-подобные value/gradient шумы и curl-поля. - Value шумы:
PerlinNoise2D/PerlinNoise3D→float. - Gradient шумы:
GradientNoise2D/GradientNoise3D→Vector2/Vector3(частные производные value шума). - Curl:
CurlNoise2D/ CurlNoise3D→ бездивергентные вектора (2D через производные, 3D как cross двух gradient-шумов).
Примеры использования
var perlin2D = new PerlinNoise2D(seed: 42);
float h = perlin2D.Generate(new Vector2(12.3f, 7.8f));
var grad3D = new GradientNoise3D(seed: 99);
Vector3 g = grad3D.Generate(new Vector3(1.2f, 0.7f, 0.3f)); // (dh/dx, dh/dy, dh/dz)
var curl = new CurlNoise2D(seed: 7);
Vector2 flow = curl.Generate(new Vector2(4.5f, 0.2f));
Практика
- Входное значение — физические координаты; для изменения частоты масштабируйте вход:
noise.Generate(pos * 0.1f). - Шумы детерминированы по seed (используются хеши integer-координат и плавная интерполяция \(3t^2-2t^3\)).
- Фрактальную композицию (октавы, fbm, ridged) собирайте вручную, суммируя несколько вызовов с разной частотой/амплитудой.
- CurlNoise2D использует производные того же value шума; CurlNoise3D строится как
crossдвух независимых градиентных шумов, так что seed влияет на оба поля.
© 2026 Igdrasil Project. Все права защищены.