Merge remote-tracking branch 'origin/main' into hands/cultmath-affine-forms

This commit is contained in:
Meta Vens 2026-10-04 07:17:20 +02:00
commit 05150acd2f
15 changed files with 683 additions and 64 deletions

View file

@ -9,7 +9,9 @@ Gustavson's `webgl-noise` project and Unity Mathematics.
`math.snoise(float3)` and `cultmath_snoise(float3)` follow `src/noise3D.glsl` and
`math.snoise(float2)` follows `src/noise2D.glsl` of stegu/webgl-noise at commit
`22434e04d7753f7e949e8d724ab3da2864c17a0f` (the simplex-boundary fix is
`21d9fe23d7`, scale `ff3b5d34ea`, permutation `a3e6d57095`).
`21d9fe23d7`, scale `ff3b5d34ea`, permutation `a3e6d57095`). Modified from upstream:
the 3D corner tie order follows Gustavson's `simplexnoise1234`, because the
upstream `step` compares are cyclic where the offset's components are equal.
`math.snoise_grad`/`cultmath_snoise_grad` (and the `fbm_grad`/`ridged_grad`
octave sums built on them) follow the analytic-gradient differentiation from

View file

@ -356,7 +356,12 @@ together, laid out as `float4(gradient.xyz, value.w)`, with no value-only twin
that permutation helper, so its values changed too, while its own kernel
(`0.5`) and scale (`130`) already matched upstream.
`NoiseGradTests.SnoiseAndItsGradientAreContinuousAcrossSimplexCellBoundaries`
pins the continuity.
pins the continuity. Ties in the offset `x0` resolve in Gustavson's
`simplexnoise1234` order (x over y, y over z, x over z), a total order, so the
four corners are always a simplex. Upstream's `step` compares are cyclic: where
the three components are equal, which includes the origin and every
`(t, t, t)`, the corners repeat the origin vertex and the value jumps by about
0.77 near the origin and up to 1.56 at magnitudes of 64 and above. `NoiseGradTests.SnoiseIsContinuousOnTheSimplexDiagonal` pins the order.
- `snoise_grad(float3 p)` carries `snoise(float3)` to value-and-gradient form,
following the differentiation in webgl-noise `src/noise3Dgrad.glsl` (Ashima
Arts / Ian McEwan, MIT), which uses the same radius, permutation and scale as
@ -571,7 +576,7 @@ with no tolerance.
`L` has provenance, not a proof. `NoiseBoundTests.MeasureLipschitz` (slow,
explicit) takes the largest `|snoise_grad|` over 1e6 seeded points in
[-256, 256]^3 (7.1933103), refines the 1e4 largest by gradient ascent
(9.181147), and multiplies by 1.10: `L = 10.099261`. It also reaches
(7.2400064), and multiplies by 1.10: `L = 7.9640074`. It also reaches
`|snoise| = 0.9718335` by the same ascent on the value, which is what lets the
bound intersect with `[-1, 1]`. `LipschitzConstantPinsSampledGradients`
checks 1e5 more seeded points against `L` and climbs again from the start

View file

@ -7,7 +7,7 @@
// Included by CultMath.hlsl after its own definitions of cultmath_smoothstep and cultmath_snoise.
// Lipschitz constant of cultmath_snoise(float3); provenance in math.Interval.cs (SNOISE_LIPSCHITZ).
static const float CULTMATH_SNOISE_LIPSCHITZ = 10.099261;
static const float CULTMATH_SNOISE_LIPSCHITZ = 7.9640074;
float2 cultmath_iv_point(float value) { return float2(value, value); }
float2 cultmath_iv_add(float2 a, float2 b) { return float2(a.x + b.x, a.y + b.y); }

View file

@ -80,13 +80,14 @@ vec3 cultmath_snoise_permute(vec3 value) { return cultmath_snoise_mod289(((value
vec4 cultmath_snoise_permute(vec4 value) { return cultmath_snoise_mod289(((value * 34.0) + 10.0) * value); }
// Ashima Arts / Ian McEwan 3D simplex noise (MIT), same float32 evaluation
// order as the C# math.snoise(vec3) mirror.
// order as the C# math.snoise(vec3) mirror. Ties resolve in simplexnoise1234's
// total order; see math.snoise.
float cultmath_snoise(vec3 value)
{
vec2 c = vec2(1.0 / 6.0, 1.0 / 3.0);
vec3 i = floor(value + dot(value, c.yyy));
vec3 x0 = value - i + dot(i, c.xxx);
vec3 g = step(x0.yzx, x0.xyz);
vec3 g = vec3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
vec3 l = 1.0 - g;
vec3 i1 = min(g.xyz, l.zxy);
vec3 i2 = max(g.xyz, l.zxy);
@ -172,7 +173,7 @@ vec4 cultmath_snoise_grad(vec3 value)
vec2 c = vec2(1.0 / 6.0, 1.0 / 3.0);
vec3 i = floor(value + dot(value, c.yyy));
vec3 x0 = value - i + dot(i, c.xxx);
vec3 g = step(x0.yzx, x0.xyz);
vec3 g = vec3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
vec3 l = 1.0 - g;
vec3 i1 = min(g.xyz, l.zxy);
vec3 i2 = max(g.xyz, l.zxy);
@ -515,7 +516,7 @@ CultCellular cultmath_cellular(vec3 p)
// Included by CultMath.hlsl after its own definitions of cultmath_smoothstep and cultmath_snoise.
// Lipschitz constant of cultmath_snoise(vec3); provenance in math.Interval.cs (SNOISE_LIPSCHITZ).
const float CULTMATH_SNOISE_LIPSCHITZ = 10.099261;
const float CULTMATH_SNOISE_LIPSCHITZ = 7.9640074;
vec2 cultmath_iv_point(float value) { return vec2(value, value); }
vec2 cultmath_iv_add(vec2 a, vec2 b) { return vec2(a.x + b.x, a.y + b.y); }

View file

@ -80,13 +80,14 @@ float3 cultmath_snoise_permute(float3 value) { return cultmath_snoise_mod289(((v
float4 cultmath_snoise_permute(float4 value) { return cultmath_snoise_mod289(((value * 34.0) + 10.0) * value); }
// Ashima Arts / Ian McEwan 3D simplex noise (MIT), same float32 evaluation
// order as the C# math.snoise(float3) mirror.
// order as the C# math.snoise(float3) mirror. Ties resolve in simplexnoise1234's
// total order; see math.snoise.
float cultmath_snoise(float3 value)
{
float2 c = float2(1.0 / 6.0, 1.0 / 3.0);
float3 i = floor(value + dot(value, c.yyy));
float3 x0 = value - i + dot(i, c.xxx);
float3 g = step(x0.yzx, x0.xyz);
float3 g = float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
float3 l = 1.0 - g;
float3 i1 = min(g.xyz, l.zxy);
float3 i2 = max(g.xyz, l.zxy);
@ -172,7 +173,7 @@ float4 cultmath_snoise_grad(float3 value)
float2 c = float2(1.0 / 6.0, 1.0 / 3.0);
float3 i = floor(value + dot(value, c.yyy));
float3 x0 = value - i + dot(i, c.xxx);
float3 g = step(x0.yzx, x0.xyz);
float3 g = float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
float3 l = 1.0 - g;
float3 i1 = min(g.xyz, l.zxy);
float3 i2 = max(g.xyz, l.zxy);

View file

@ -18,7 +18,7 @@ public static partial class math
// against a fast re-measure and the ascent from MeasureLipschitz's witness.
// Empirical with a margin, not a proof; the enclosure tests are the defence. A change to the
// snoise kernel must re-run MeasureLipschitz and re-pin this constant.
public const float SNOISE_LIPSCHITZ = 10.099261f;
public const float SNOISE_LIPSCHITZ = 7.9640074f;
// Lipschitz constant of snoise(float2) in its input, with SNOISE_LIPSCHITZ's provenance rule:
// NoiseBoundTests.MeasureLipschitz2 (slow, explicit) takes the largest gradient length (central

View file

@ -599,7 +599,10 @@ public static partial class math
// in shaders/CultMath.hlsl with the same float32 evaluation order. Follows stegu/webgl-noise
// src/noise3D.glsl at 22434e04d7 (kernel radius^2 0.5, scale 105, permute (34x+10)x); see
// THIRD-PARTY-NOTICES.md. Continuous across simplex-cell boundaries
// (NoiseGradTests.SnoiseAndItsGradientAreContinuousAcrossSimplexCellBoundaries).
// (NoiseGradTests.SnoiseAndItsGradientAreContinuousAcrossSimplexCellBoundaries). Ties in x0 resolve
// in Gustavson's simplexnoise1234 order (x over y, y over z, x over z), a total order, so the four
// corners are always a simplex; upstream's step is cyclic and degenerates where x0's components are
// equal (NoiseGradTests.SnoiseIsContinuousOnTheSimplexDiagonal).
// SNOISE_LIPSCHITZ (math.Interval.cs) is measured from this kernel: a change here must re-run
// NoiseBoundTests.MeasureLipschitz and re-pin it.
public static float snoise(float3 value)
@ -608,7 +611,7 @@ public static partial class math
const float cy = 1.0f / 3.0f;
var i = floor(value + dot(value, new float3(cy, cy, cy)));
var x0 = value - i + dot(i, new float3(cx, cx, cx));
var g = step(new float3(x0.y, x0.z, x0.x), x0);
var g = new float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0f - step(x0.z, x0.x));
var l = 1.0f - g;
var lzxy = new float3(l.z, l.x, l.y);
var i1 = min(g, lzxy);
@ -714,7 +717,7 @@ public static partial class math
const float cy = 1.0f / 3.0f;
var i = floor(value + dot(value, new float3(cy, cy, cy)));
var x0 = value - i + dot(i, new float3(cx, cx, cx));
var g = step(new float3(x0.y, x0.z, x0.x), x0);
var g = new float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0f - step(x0.z, x0.x));
var l = 1.0f - g;
var lzxy = new float3(l.z, l.x, l.y);
var i1 = min(g, lzxy);

View file

@ -253,6 +253,25 @@ public sealed class GlslMirrorTests
private static float Uniform(System.Random r, float lo, float hi) => lo + (hi - lo) * r.NextSingle();
private static float3 Point3(System.Random r) => new(Uniform(r, -50.0f, 50.0f), Uniform(r, -50.0f, 50.0f), Uniform(r, -50.0f, 50.0f));
// A point on the simplex tie set, where snoise's x0 has equal components (NoiseGradTests.SnoiseIsContinuousOnTheSimplexDiagonal):
// seven of eight draws lie on a lattice diagonal v + s (1, 1, 1), v = L - sum(L) / 6 for an integer L, and one of eight on
// the line (t, t, t). A device that runs a different tie rule reads a different function here.
private static float3 TiePoint3(System.Random r)
{
if (r.Next(8) == 0)
{
var t = Uniform(r, -50.0f, 50.0f);
return new float3(t, t, t);
}
var lx = r.Next(-64, 65);
var ly = r.Next(-64, 65);
var lz = r.Next(-64, 65);
var shift = (lx + ly + lz) / 6.0f;
var s = r.NextSingle();
return new float3(lx - shift + s, ly - shift + s, lz - shift + s);
}
private static int Bits(System.Random r) => r.Next(int.MinValue, int.MaxValue);
private static float2 Interval(System.Random r)
@ -316,6 +335,8 @@ public sealed class GlslMirrorTests
new("vec2 cultmath_iv_exp(vec2)", "ulp-bounded, platform exp", r => new object[] { Interval(r) }, Platform: Platform.Ulp),
new("CultPhasor cultmath_phacelle(vec3, vec3, float, float)", "ulp-bounded, platform exp, sin, cos; across platforms |diff| <= 2^-20 max(|v|, 1)",
r => new object[] { Point3(r), Side(r), Uniform(r, 0.0f, 1.0f), 0.5f }, Platform: Platform.Scaled),
new("float cultmath_snoise(vec3)", "ulp-bounded, on the simplex tie set", r => new object[] { TiePoint3(r) }),
new("vec4 cultmath_snoise_grad(vec3)", "ulp-bounded, on the simplex tie set", r => new object[] { TiePoint3(r) }),
};
// The fixture text, each case's arguments given by family and point index.

View file

@ -444,7 +444,8 @@ public sealed class HlslSemanticsTests
}
[Theory]
[InlineData(0.0f, 0.0f, 0.0f, -0.435872972f)]
[InlineData(0.0f, 0.0f, 0.0f, 0.0f)]
[InlineData(1.25f, 1.25f, 1.25f, -0.245501652f)]
[InlineData(0.25f, -0.5f, 1.75f, 0.0492948629f)]
[InlineData(12.25f, -4.5f, 3.125f, 0.443114728f)]
[InlineData(-7.3f, 2.9f, 101.4f, -0.10221792f)]

View file

@ -465,7 +465,7 @@ public sealed class NoiseBoundTests
}
// The start MeasureLipschitz printed as its witness.
private static readonly float3 LipschitzWitness = new(-241.98447f, -249.98927f, -60.058212f);
private static readonly float3 LipschitzWitness = new(229.92526f, 73.37927f, -66.14595f);
/// <summary>
/// Pins SNOISE_LIPSCHITZ: no |snoise_grad| over 1e5 seeded points exceeds it, and the ascent from

View file

@ -133,7 +133,7 @@ public sealed class NoiseGradTests
{
var i = math.floor(p + math.dot(p, new float3(1.0f / 3.0f, 1.0f / 3.0f, 1.0f / 3.0f)));
var x0 = p - i + math.dot(i, new float3(1.0f / 6.0f, 1.0f / 6.0f, 1.0f / 6.0f));
var g = math.step(new float3(x0.y, x0.z, x0.x), x0);
var g = new float3(math.step(x0.y, x0.x), math.step(x0.z, x0.y), 1.0f - math.step(x0.z, x0.x));
var l = 1.0f - g;
var lzxy = new float3(l.z, l.x, l.y);
return (i, math.min(g, lzxy), math.max(g, lzxy));
@ -190,6 +190,64 @@ public sealed class NoiseGradTests
Assert.True(maxGradientJump < 1.0e-4f, $"gradient jump {maxGradientJump} across a simplex boundary");
}
// The simplex diagonals are where x0's three components compare equal. The tie rule must be a total
// order there (math.snoise): with a cyclic or all-strict compare the four corners stop being a
// simplex and the value jumps on the line (t, t, t), lattice diagonals included: about 0.77 near the
// origin, up to 1.56 at magnitudes of 64 and above.
[Fact]
public void SnoiseIsContinuousOnTheSimplexDiagonal()
{
const int vertices = 160;
const int perVertex = 8;
var random = new System.Random(0x71E5);
var points = new System.Collections.Generic.List<float3>();
for (var k = 0; k < 400; k++)
{
var t = (float)(random.NextDouble() * 128.0 - 64.0);
points.Add(new float3(t, t, t));
}
points.Add(new float3(0.0f, 0.0f, 0.0f));
for (var k = 0; k < vertices; k++)
{
var lx = random.Next(-64, 65);
var ly = random.Next(-64, 65);
var lz = random.Next(-64, 65);
var shift = (lx + ly + lz) / 6.0f;
var v = new float3(lx - shift, ly - shift, lz - shift);
for (var j = 0; j < perVertex; j++)
{
var s = j == 0 ? 0.0f : random.NextSingle();
points.Add(new float3(v.x + s, v.y + s, v.z + s));
}
}
foreach (var p in points)
{
var value = math.snoise(p);
for (var axis = 0; axis < 3; axis++)
{
for (var direction = -1; direction <= 1; direction += 2)
{
var q = p;
for (var ulp = 1; ulp <= 2; ulp++)
{
var component = axis == 0 ? q.x : axis == 1 ? q.y : q.z;
component = direction < 0 ? MathF.BitDecrement(component) : MathF.BitIncrement(component);
q = axis == 0 ? new float3(component, q.y, q.z) : axis == 1 ? new float3(q.x, component, q.z) : new float3(q.x, q.y, component);
var jump = MathF.Abs(math.snoise(q) - value);
Assert.True(jump <= 1.0e-4f, $"snoise jumps {jump} within {ulp} ulp of {p}");
}
}
}
var grad = math.snoise_grad(p);
Assert.Equal(BitConverter.SingleToInt32Bits(value), BitConverter.SingleToInt32Bits(grad.w));
var slope = math.length(new float3(grad.x, grad.y, grad.z));
Assert.True(slope <= math.SNOISE_LIPSCHITZ, $"|snoise_grad| {slope} exceeds SNOISE_LIPSCHITZ at {p}");
}
}
// ---- snoise_grad.w vs snoise ----
[Fact]

View file

@ -6041,7 +6041,7 @@
"422f8640 410fc954 c204cfde 3fbd7437 -> bf800000 3f800000",
"c0f11528 c23c7a7c c2434da2 3f3118f7 -> bf800000 3f800000",
"c1f2e3b6 41a20c3c 411a55cc 3fbe8bb8 -> bf800000 3f800000",
"c23a010c c20f33aa c1fdb69e 3d9fed1b -> bf26ddd9 3f6ceae1",
"c23a010c c20f33aa c1fdb69e 3d9fed1b -> bef85cca 3f423b6d",
"c1b77660 c1ce9199 40ef66a0 3f1da819 -> bf800000 3f800000",
"bfff2740 c1acf18f c203a3af 3fcc7d26 -> bf800000 3f800000",
"c181e23e c0a06d78 c16f2060 3f2f4717 -> bf800000 3f800000",
@ -6064,7 +6064,7 @@
"419ea138 42350398 c1c88b68 3fb38b11 -> bf800000 3f800000",
"c0255310 c187dac8 c1f68545 3fa8a8bb -> bf800000 3f800000",
"c1fd9c23 c1f80651 c19a5d15 3fddd94b -> bf800000 3f800000",
"4108b110 c221e416 c1b03beb 3e111679 -> bf800000 3f800000",
"4108b110 c221e416 c1b03beb 3e111679 -> bf558d8e 3f800000",
"40e94c20 41a593d4 4219708a 3f5374ca -> bf800000 3f800000",
"40722110 40f86c98 c1e9acb2 3f03316a -> bf800000 3f800000",
"c131e7d4 c209efce c0d4d978 3fd657b6 -> bf800000 3f800000",
@ -6073,11 +6073,11 @@
"c123557c c1d3a13b 413a4f38 3f620ae0 -> bf800000 3f800000",
"41fb86f4 c202e154 4162a790 3f93beda -> bf800000 3f800000",
"c219dc5c c108f8d4 c2021f1d 3fa7567c -> bf800000 3f800000",
"420e5b5c bc34e000 c186a0a6 3d9b44b3 -> bf4053d2 3f47b24e",
"420e5b5c bc34e000 c186a0a6 3d9b44b3 -> bf16e2a0 3f1e411c",
"4240eb6a c2095930 c2354f42 3e780049 -> bf800000 3f800000",
"41c3b3e0 424561ca c196181c 3f2381e6 -> bf800000 3f800000",
"421eadca c1688d60 4228236a 3fc1f9dd -> bf800000 3f800000",
"c0bba748 40a5e090 c1cef40c 3e2f92e3 -> bf73d2a4 3f800000",
"c0bba748 40a5e090 c1cef40c 3e2f92e3 -> bf161964 3f800000",
"414586d4 42271d0e 4189f854 3f2cf0b5 -> bf800000 3f800000",
"c223c9e4 c0b85ad0 411d46c4 3f3b0f3c -> bf800000 3f800000",
"422e63ae 41519470 c20fcb23 3ff97433 -> bf800000 3f800000",
@ -6093,7 +6093,7 @@
"c14aa2c8 41918ab8 41832378 3fbaf57d -> bf800000 3f800000",
"41df2430 41da2c28 4152f0bc 3f0b9955 -> bf800000 3f800000",
"c19f9bf9 c1b99959 c1090538 3fcb0f0e -> bf800000 3f800000",
"421f268e c2109520 c21af7dd 3dd692ca -> bf800000 3f68f2ec",
"421f268e c2109520 c21af7dd 3dd692ca -> bf7b89c6 3f2fad88",
"beea2c00 40f66a50 41f110dc 3fe41ea0 -> bf800000 3f800000",
"41c7f780 c236b8f3 c10e69e8 3e4c7f23 -> bf800000 3f800000",
"41d36e08 c1d59995 42241ac8 3fc59853 -> bf800000 3f800000",
@ -6107,15 +6107,15 @@
"c1b74053 40ce7818 423a5abe 3f8bd0ba -> bf800000 3f800000",
"4210fb4e 421009de c21dad4c 3fcc03f7 -> bf800000 3f800000",
"41ad2ed8 4203b2f2 4205af0c 3f70cf4a -> bf800000 3f800000",
"c23324a4 408691e8 4204b5a2 3e3954bf -> bf800000 3f7bc08c",
"c23324a4 408691e8 4204b5a2 3e3954bf -> bf800000 3f18d1e8",
"41e9ef9c c11e7534 c0d4f498 3ffe01eb -> bf800000 3f800000",
"c11714f4 420ca052 3ff97c00 3f9c557c -> bf800000 3f800000",
"41118bf8 bf73ddc0 c1ede5c9 3d8c11e0 -> be531518 3f800000",
"41118bf8 bf73ddc0 c1ede5c9 3d8c11e0 -> bd762900 3f800000",
"421a2d0c c1b38777 c2349b83 3f82f982 -> bf800000 3f800000",
"c22f92e0 41ccfe84 c1a053e2 3fa7e1c7 -> bf800000 3f800000",
"c0c19868 c1d112ce 4072a6f0 3f99024d -> bf800000 3f800000",
"417319c8 4208507e 42092dca 3fc033a1 -> bf800000 3f800000",
"c1905352 c203369a c153c478 3d61a9c0 -> beaebde6 3f458207",
"c1905352 c203369a c153c478 3d61a9c0 -> be650587 3f276475",
"c19f3429 40345360 bfd30540 3e8b5e3b -> bf800000 3f800000",
"c2426064 c148bff4 4229d57e 3f56ddc2 -> bf800000 3f800000",
"c235fcdc c1675b88 4235fbe4 3f3e9d56 -> bf800000 3f800000",
@ -6126,7 +6126,7 @@
"c2448d78 41d70ff0 c1a7496d 3f56ad3b -> bf800000 3f800000",
"c216de59 c201c5de 41ba2cb4 3f37156e -> bf800000 3f800000",
"41e9a8e0 42251fee be896280 3fafcafd -> bf800000 3f800000",
"4204a9c4 4218168a 4130f004 3e2d2cae -> bf800000 3f800000",
"4204a9c4 4218168a 4130f004 3e2d2cae -> bf800000 3f58ee06",
"c1ad0a96 c205a055 4230023a 3f947e6b -> bf800000 3f800000",
"422bc1be c11cb574 423bf572 3fff2bb6 -> bf800000 3f800000",
"41d25f6c c22b4d37 41e3ad94 3e80484c -> bf800000 3f800000",
@ -6137,12 +6137,12 @@
"420234fa 41b1f924 c064dac0 3f39a1a8 -> bf800000 3f800000",
"40d1d3e0 40d49970 c1b7f2ff 3fb28011 -> bf800000 3f800000",
"421e6036 41d05848 4158a21c 3f9b5482 -> bf800000 3f800000",
"41ef2510 c1a4b1b2 4179a788 3dd32d91 -> bf4c5a8d 3f800000",
"41ef2510 c1a4b1b2 4179a788 3dd32d91 -> bf13fd28 3f800000",
"c12e72a4 412c9bac c00265d0 3fdcc5ab -> bf800000 3f800000",
"41604e90 c1909fe0 4173a508 3f71ba59 -> bf800000 3f800000",
"c0436750 c1847e52 c2402a00 3fbf740c -> bf800000 3f800000",
"4226b68e c0860320 c1cfa023 3f404b47 -> bf800000 3f800000",
"41ca97d4 c21f3915 c20380d8 3da7d9c1 -> bf39b54f 3f6e1563",
"41ca97d4 c21f3915 c20380d8 3da7d9c1 -> bf0ce864 3f414878",
"412c01d8 c0f876c8 40bda7a0 3f1f82ed -> bf800000 3f800000",
"417f8088 40f19d90 c1ae4615 3f0c626f -> bf800000 3f800000",
"41b38564 41f35a30 c01175c0 3fc53f00 -> bf800000 3f800000",
@ -6152,7 +6152,7 @@
"4095e970 400ee170 41e04414 3f604e92 -> bf800000 3f800000",
"3fff86a0 c1bfe497 420d53fc 3fb277c2 -> bf800000 3f800000",
"c216d800 4138daf8 c0b48cb8 3ff7f830 -> bf800000 3f800000",
"c2348e08 c204a162 c1ede4a6 3e056fca -> bf5cc87b 3f800000",
"c2348e08 c204a162 c1ede4a6 3e056fca -> bf158d87 3f800000",
"c2392ce5 c14279dc 41c5f7b4 3faa5a9d -> bf800000 3f800000",
"420ed832 c1c8a15d 42131ffe 3fb806db -> bf800000 3f800000",
"c1547eb0 3f65b140 c19f64e8 3ff77de4 -> bf800000 3f800000",
@ -6163,7 +6163,7 @@
"41cb97ac c21712e8 41924e64 3fe7f7fb -> bf800000 3f800000",
"41062cf4 c206c510 c044e300 3fb11fb9 -> bf800000 3f800000",
"c1cc1020 c1da00b2 c1497a34 3f1891b0 -> bf800000 3f800000",
"41773870 c22f5a45 c22bbfba 3cbc2c13 -> bec0752c 3db45e80",
"41773870 c22f5a45 c22bbfba 3cbc2c13 -> bea75872 3d1fd730",
"4237c028 421aa0fa 42011f92 3f6a9b89 -> bf800000 3f800000",
"41685bb0 420361bc c0c316e8 3fb87e0f -> bf800000 3f800000",
"c1197ce4 c22de45c c1b8636b 3ec5c2c3 -> bf800000 3f800000",
@ -6172,11 +6172,11 @@
"42026f92 c1288478 c13b60f0 3fb61469 -> bf800000 3f800000",
"c1f36f24 c1b123ee c14fad10 3f1ad87d -> bf800000 3f800000",
"423599dc c0550050 bfdb8240 3fbbd2ec -> bf800000 3f800000",
"41daf82c 41c24c28 3efa6b00 3e04a41c -> bf800000 3f1dcb25",
"41daf82c 41c24c28 3efa6b00 3e04a41c -> bf800000 3eadf9d6",
"4236fd76 c1f85e26 413eab08 3fed1321 -> bf800000 3f800000",
"41929fe8 4238f08a 3e4de200 3f84d214 -> bf800000 3f800000",
"421d6ca6 c1b2c9e0 c22d243b 3ff63525 -> bf800000 3f800000",
"3fa78a60 c1a2336e 419cba74 3dd3371d -> bf1c5866 3f800000",
"3fa78a60 c1a2336e 419cba74 3dd3371d -> bec7f0e7 3f800000",
"c2210abd 42024d0a c1fc1443 3f909e71 -> bf800000 3f800000",
"3ebc9b80 c21b5185 c1be3559 3f3be2f6 -> bf800000 3f800000",
"c08597f8 c2113843 41d5399c 3feff853 -> bf800000 3f800000",
@ -6190,14 +6190,14 @@
"422aeb98 c1c5fc42 c04e2e70 3f8beb2a -> bf800000 3f800000",
"c1f35889 40cee8b0 422e77e2 3f37417f -> bf800000 3f800000",
"420f0066 c1fba859 c1fd41e1 3fdcf0be -> bf800000 3f800000",
"c200d76d c1ad04fa c22d43c0 3df4714d -> bf800000 3f1bcf42",
"c200d76d c1ad04fa c22d43c0 3df4714d -> bf800000 3eb521ea",
"c1bcac7f c18f1254 4189a08c 3fa3ba91 -> bf800000 3f800000",
"c1a4abed c17b2028 c209e961 3dcdd711 -> bf151c77 3f800000",
"c1a4abed c17b2028 c209e961 3dcdd711 -> bebc5798 3f800000",
"c1734554 c21c16c5 c20561f5 3e9ab5ee -> bf800000 3f800000",
"421febb6 c0394630 c18d0088 3fd693ae -> bf800000 3f800000",
"c22433c0 c1b52288 bfc17c60 3fbb5bc9 -> bf800000 3f800000",
"40e14a20 c241e4ef 41865698 3f281c92 -> bf800000 3f800000",
"422b4048 c0802eb0 c22f5309 3d58fc10 -> bf259e44 3ed89c0f",
"422b4048 c0802eb0 c22f5309 3d58fc10 -> bf08a931 3e9eb1e9",
"c1dbf6d2 422a67ec c0075000 3f79847c -> bf800000 3f800000",
"c1582078 40f63e18 41930a98 3ef2e26a -> bf800000 3f800000",
"c1b9796d 42287de2 40a52780 3f959f50 -> bf800000 3f800000",
@ -6212,7 +6212,7 @@
"41b19398 4220407c 415719b8 3e9c7d39 -> bf800000 3f800000",
"41fd8308 41030330 422bf4e0 3e927a8f -> bf800000 3f800000",
"c2472468 418c305c c20645a7 3fe139b2 -> bf800000 3f800000",
"c20afcfa 40ee8948 419697b4 3d783d2a -> bed6e6cd 3f4ded8e",
"c20afcfa 40ee8948 419697b4 3d783d2a -> be94a519 3f2cccb4",
"c224bdde c0d04b28 4105b754 3fec9647 -> bf800000 3f800000",
"c1e805c5 41adea20 c19daeb9 3ff7d4ee -> bf800000 3f800000",
"41153bf4 41dd2598 c08f9dd0 3fb802f9 -> bf800000 3f800000",
@ -6220,10 +6220,10 @@
"41dc4adc 41285a24 c1fe1feb 3fe5f490 -> bf800000 3f800000",
"41a08848 c182dfc8 c0d996a0 3e1315f4 -> bf800000 3f800000",
"c109620c 40dba650 4204d448 3f9b37ac -> bf800000 3f800000",
"4239f5d6 423200c4 c1b8788c 3de8daf1 -> bf800000 3f0224eb",
"4239f5d6 423200c4 c1b8788c 3de8daf1 -> bf800000 3e87fcb4",
"42447cf4 41ccbcc4 c1d43c62 3f349079 -> bf800000 3f800000",
"3eac4500 416950f8 42375140 3c264d95 -> be372f97 3cd60d00",
"411c5f60 418516bc 40bd3448 3da7ac80 -> bf7bbb30 3f2b9d40",
"3eac4500 416950f8 42375140 3c264d95 -> be20fe00 3b920130",
"411c5f60 418516bc 40bd3448 3da7ac80 -> bf4efa59 3efdb8d2",
"c2154b7a c1e702be c20edca0 3fde04f9 -> bf800000 3f800000",
"c229964b c130ad84 c21e4170 3f8c2b4f -> bf800000 3f800000",
"c12c7b84 41e805dc c188ada6 3fc07a13 -> bf800000 3f800000",
@ -6231,7 +6231,7 @@
"421a20ca 419d6ba4 c246bac5 3fa60025 -> bf800000 3f800000",
"3f33c4c0 c1220330 41b5f294 3efa16db -> bf800000 3f800000",
"422018d0 c1ca827d c1b6e59e 3e8518f4 -> bf800000 3f800000",
"416b1520 c200e4b0 c19f9dd9 3d8e7d1b -> bedbc41a 3f79dfe7",
"416b1520 c200e4b0 c19f9dd9 3d8e7d1b -> be8fb422 3f53d7eb",
"41ddd324 c12d8630 4231d636 3ed02d3e -> bf800000 3f800000",
"c0ed74b0 4239f34e 404091c0 3f935660 -> bf800000 3f800000",
"42084236 41b1ae78 418357e4 3ece6de1 -> bf800000 3f800000",
@ -6278,13 +6278,13 @@
"415ca654 c22c8f0e 4223c4b0 3fff62bc -> bf800000 3f800000",
"c1f28763 c0ff3190 c231c21a 3f2edbc1 -> bf800000 3f800000",
"4231cf76 c10929b0 c2047736 3fcd5709 -> bf800000 3f800000",
"40e61f48 422537c2 c21e3e39 3e174beb -> bf800000 3f800000",
"40e61f48 422537c2 c21e3e39 3e174beb -> bf800000 3f49cf31",
"41ae1f00 4233fd3e 4227ead0 3e883e1c -> bf800000 3f800000",
"411c9cd4 c1f2641a 421cbfec 3f86b975 -> bf800000 3f800000",
"41aa4190 c23cc9eb 4226b49c 3fbe4769 -> bf800000 3f800000",
"c19083b1 41358cec c1e9b1be 3ec8d60a -> bf800000 3f800000",
"41858f54 419fd8e4 41aaed18 3ffd0c29 -> bf800000 3f800000",
"41f1fbd8 42455b48 4246756e 3dea39ba -> bf604cd3 3f800000",
"41f1fbd8 42455b48 4246756e 3dea39ba -> bf21c8a3 3f800000",
"c09762b0 42055420 4207e318 3f829dbd -> bf800000 3f800000",
"416b38d0 41e11dd0 4201ef12 3ff5499c -> bf800000 3f800000",
"be88fb00 c1c74cc0 41ed74cc 3fab349c -> bf800000 3f800000",
@ -6301,7 +6301,7 @@
"c1f07d92 c219a0a2 c1b74111 3fb97222 00000004 40000000 3f000000 -> bff00000 3ff00000",
"423587d0 42113b7a 418ff060 3fc3c202 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1645498 c13cf5d0 42179b50 3fee7415 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1ed71fb 423773be c1cb5739 3e0d345b 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1ed71fb 423773be c1cb5739 3e0d345b 00000004 40000000 3f000000 -> bff00000 3fe9780e",
"41fd51ac 407b5e50 c22d0ae2 3ffe0362 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c19f458b c1b5ca2d 41f962c8 3f56b8f0 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41a6e3d4 4202ef34 40aa5130 3e900ac9 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6344,7 +6344,7 @@
"c21f5a74 4150b72c 416ccbc8 3fc5bd5d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c0f4f520 c12cc8c4 c1b584e2 3fff51a1 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41d792c0 c1a77a72 42251384 3ec5e1db 00000004 40000000 3f000000 -> bff00000 3ff00000",
"40aaa020 c1219fb4 40eb8848 3d56bf1e 00000004 40000000 3f000000 -> bfe4adcf 3f80fe4d",
"40aaa020 c1219fb4 40eb8848 3d56bf1e 00000004 40000000 3f000000 -> bfc80532 3f5b852c",
"41ca7dd8 c247e07f c19fbb31 3fafb3b3 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c08b64a8 c2246bca c20faf42 3ec05ae7 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1138a20 41cc123c 40b85690 3f1f9ba0 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6354,15 +6354,15 @@
"41a34a24 c103cc50 c212096b 3fcae792 00000004 40000000 3f000000 -> bff00000 3ff00000",
"419af9c0 c22e67b9 c2341cbc 3f8543c6 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1e84460 42387890 40db63c8 3f3f2e98 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41fe4c1c 4234c494 c210b44a 3cd7a996 00000004 40000000 3f000000 -> beee164a 3fa85c9e",
"41fe4c1c 4234c494 c210b44a 3cd7a996 00000004 40000000 3f000000 -> be97be92 3f9b1541",
"bf845e40 c07c6f60 c158c500 3fab249f 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4205c2fc 4238af3a c1f48667 3fe674ac 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1b9facf 41a5e7a0 c2012fb1 3ea33998 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4225b5f8 4201628c c12180d8 3fa9caca 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c2112bb6 420a7272 4240d3a4 3da0f2ce 00000004 40000000 3f000000 -> bf9974ce 3ff00000",
"c2112bb6 420a7272 4240d3a4 3da0f2ce 00000004 40000000 3f000000 -> bf83fa27 3ff00000",
"42359da0 c172b9d4 bf20be40 3f3031a6 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41a44bb4 c2391683 c21f4f7c 3fd7867f 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c19f6898 41700f80 c1341964 3e03cc83 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c19f6898 41700f80 c1341964 3e03cc83 00000004 40000000 3f000000 -> bfd5bfcc 3ff00000",
"c1c31e46 c032f3b0 c1bf9d22 3eaa85ee 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41b46920 c1f41a0c 413fb3e0 3fbe166b 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1dd5fc1 c1d43539 401fc9b0 3ffc8122 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6401,7 +6401,7 @@
"41dd734c c226b249 c1d4c78d 3fa7cad4 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42155e1c 4235e68a 41646f68 3f16a2c0 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c22342a1 414ae1fc 4232b9e6 3f9e975d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c20d42e6 41748c68 c1e687f7 3e226daf 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c20d42e6 41748c68 c1e687f7 3e226daf 00000004 40000000 3f000000 -> bff00000 3fe1c714",
"422b5714 410829bc c213061a 3f835f6a 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41781270 4199c670 406af290 3f284f89 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42445d7c 40576fb0 41fefcec 3f4c6497 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6411,7 +6411,7 @@
"41bd4638 c24758f0 416541b0 3ff4eb55 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c127f708 41cae6e4 c1f62e89 3f9a4a7c 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1f7b8f8 407d8bf0 4234fdb8 3fbc939e 00000004 40000000 3f000000 -> bff00000 3ff00000",
"423a6988 41bf646c c0519ce0 3e2e2f95 00000004 40000000 3f000000 -> bff00000 3ff00000",
"423a6988 41bf646c c0519ce0 3e2e2f95 00000004 40000000 3f000000 -> bfc67fcb 3ff00000",
"4094f470 4222407a 41837b90 3f2e1fe9 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c21197eb c1cce7ed c202ff90 3fd4f346 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4211f3de 410d94f4 c212964b 3f716539 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6424,7 +6424,7 @@
"c0cfc4b0 c23c9ae7 c2365094 3f7c67bd 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4203a6a0 41f939d4 c2234660 3fce7f4e 00000004 40000000 3f000000 -> bff00000 3ff00000",
"414026f8 41b0d974 41266218 3f99769d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42438d0c c2169429 3ffb5e60 3cea8023 00000004 40000000 3f000000 -> bf45c5d0 3f865d64",
"42438d0c c2169429 3ffb5e60 3cea8023 00000004 40000000 3f000000 -> bf16d493 3f6d6f4a",
"4239292e 41fb114c c239bc61 3ff76fbe 00000004 40000000 3f000000 -> bff00000 3ff00000",
"423ce6f8 c0e96200 424758e2 3feb7971 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c239e042 41113a7c 401a75a0 3fd6ebea 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6434,10 +6434,10 @@
"bf96fe60 c2154380 413b812c 3f9eda37 00000004 40000000 3f000000 -> bff00000 3ff00000",
"413397a8 412eddf0 41149310 3ebce69e 00000004 40000000 3f000000 -> bff00000 3ff00000",
"3f142180 c1427008 41e2e7d0 3f4a2a8f 00000004 40000000 3f000000 -> bff00000 3ff00000",
"405a18d0 c21cee1e 41705c80 3c8b45e2 00000004 40000000 3f000000 -> be608532 3f7e183a",
"405a18d0 c21cee1e 41705c80 3c8b45e2 00000004 40000000 3f000000 -> bd97a84b 3f66d6ce",
"c23bf3c8 c2163a39 c0884550 3ef4784f 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1aa14e0 c1c61d8c 41308b9c 3eef1579 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c085a310 c201e9d0 c2270b21 3dfa38b6 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c085a310 c201e9d0 c2270b21 3dfa38b6 00000004 40000000 3f000000 -> bff00000 3fe413bf",
"41b7c2c0 c186fc56 c21dabd7 3fadf069 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4243d1b8 41ee9b74 c00ab2b0 3fd8722b 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41f7e6ec c1432290 c199f88a 3f5a44a9 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6476,7 +6476,7 @@
"c0aeaa58 c23a0e20 42382602 3f6191c5 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4235c05e c184464e 4117b44c 3ec600ec 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42314bbc c2373532 c0761810 3fdef4b3 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c21fa19d 41e9d630 c1d6174b 3e32d8d7 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c21fa19d 41e9d630 c1d6174b 3e32d8d7 00000004 40000000 3f000000 -> bff00000 3fd46f06",
"c2307e8f c1aadaa7 412302fc 3fa72feb 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42192c76 4183dbb8 420c21e4 3f80274d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1965dce 41c09aa4 411ae120 3f2bd7f6 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6489,7 +6489,7 @@
"42364c8c 42015d36 41c093cc 3fc7dc37 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1fc6007 c07fdce0 c214b3de 3edb2734 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41be4924 c1c0633c 41edc034 3f6980fa 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c211056a c22274c1 41c1b3f8 3ddbaaea 00000004 40000000 3f000000 -> bfd69c86 3ff00000",
"c211056a c22274c1 41c1b3f8 3ddbaaea 00000004 40000000 3f000000 -> bfb94bc9 3ff00000",
"41163600 40aa6450 c2474439 3fc87be8 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c05c0b30 41df1c54 4174e310 3fd4055d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c20d86fc 41419894 40dc82b8 3ebe71e2 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6518,7 +6518,7 @@
"c20f6d1e 4143b82c 41e2e630 3f4ca0a2 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41b89bf8 c1d51421 4202a4fa 3f64ec38 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c19e8543 c16d541c c12bc0ac 3e8312f1 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4164a980 c0ddae48 c2389355 3d649ea0 00000004 40000000 3f000000 -> bfb71df2 3faf4eeb",
"4164a980 c0ddae48 c2389355 3d649ea0 00000004 40000000 3f000000 -> bfa7dca9 3f90cc57",
"4219cd52 c1a80ca4 3d99dc00 3f267284 00000004 40000000 3f000000 -> bff00000 3ff00000",
"40f22358 420d7b98 416fb358 3e82e195 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c2114dcb c23446e5 c20ab1af 3fbb00f0 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6527,11 +6527,11 @@
"4219151a 414e2b00 409f5908 3f32d155 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1439b94 41a70eec 41691608 3ea7deb0 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c219f08c c2349f3b 40ad11b8 3fa9ad30 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1a66476 c08dcdb8 c14afec4 3dd79d7e 00000004 40000000 3f000000 -> bfb491b8 3ff00000",
"c1a66476 c08dcdb8 c14afec4 3dd79d7e 00000004 40000000 3f000000 -> bf97cb6e 3ff00000",
"c233de2b 41a7bbf0 4106954c 3f137fb1 00000004 40000000 3f000000 -> bff00000 3ff00000",
"423d0136 4179fe98 c1bde6ee 3fae7e33 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c227d862 c2217eae 419be448 3f59807d 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1a088e9 c207de52 c1d744c7 3e0dd72b 00000004 40000000 3f000000 -> bfdceef0 3ff00000",
"c1a088e9 c207de52 c1d744c7 3e0dd72b 00000004 40000000 3f000000 -> bfb7133e 3ff00000",
"c154417c 42086866 c20e1d28 3f03155a 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41c01d1c c20b4546 4232cdca 3fddedf0 00000004 40000000 3f000000 -> bff00000 3ff00000",
"c1e993d3 bfaf6a80 c2431c03 3e35c328 00000004 40000000 3f000000 -> bff00000 3ff00000",
@ -6548,7 +6548,7 @@
"423f555a c2366d8b c2287c5a 3f9785e9 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41399560 42274d64 421bc45a 3fdf3279 00000004 40000000 3f000000 -> bff00000 3ff00000",
"42195024 41846bfc 420d27a4 3ffca3f4 00000004 40000000 3f000000 -> bff00000 3ff00000",
"4143603c c23109c9 c1b76371 3caad5d3 00000004 40000000 3f000000 -> bf8ea1e0 3ecc763e",
"4143603c c23109c9 c1b76371 3caad5d3 00000004 40000000 3f000000 -> bf7b111c 3e6a832e",
"c1f3b972 4242f084 4242205a 3f4628b4 00000004 40000000 3f000000 -> bff00000 3ff00000",
"41968490 c1ad3591 c0f22840 3f0bd3ed 00000004 40000000 3f000000 -> bff00000 3ff00000",
"419cc42c 41bf0d0c 4103e728 3ec4ecc5 00000004 40000000 3f000000 -> bff00000 3ff00000"
@ -7342,6 +7342,530 @@
"4202dc38 41e63848 42022206 c0bce9fa c02540d7 c0255520 3f47559a 3f000000 -> c084d4fc bfadaba0 bf72e71b bddc8f95 3dda9c31 3fbc9547 3f9a20cf bf31ddcc",
"c23292a4 c22a8178 c2430002 c07e63c5 40af967c c0681e7e 3e8d9922 3f000000 -> c075f932 4021c599 bff901fa bf2674b0 40528333 c00a732d 3fd51bfd bf427ed1"
]
},
{
"glsl": "float cultmath_snoise(vec3)",
"tolerance": "ulp-bounded, on the simplex tie set",
"cases": [
"42101793 c21be86d c0ff4367 -> 3f0b6571",
"c16005b2 420bfe93 c00016ca -> bf1b7d58",
"4186163c 414c2c79 c250f4e1 -> bf293e3d",
"c1ae4edc 41b1b124 422cd892 -> bf166489",
"41d3f056 c0207d52 c1cc0faa -> 3d672c77",
"423e12a4 c221ed5c 422a12a4 -> be138760",
"416b0c20 416b0c20 416b0c20 -> bf264714",
"c25d17e3 420ee81d 420ae81d -> 3e556a08",
"c2355597 c2355597 c2355597 -> be2d7849",
"41e69d22 c244b16f c18962de -> 3f0ba67b",
"415a0446 418d0224 418d0224 -> 3ec0e014",
"41ae8e8a c00b8bae c248b8bb -> 3d493310",
"c2485705 c1a8ae09 425fa8fb -> 3e9a4c72",
"41800913 c24bfb76 4230048a -> 3bbee378",
"c22b1eb5 41e1c296 c031eb51 -> be9071e1",
"c18a1c64 c1821c64 41fde39c -> 3e240f96",
"4244307a c14f3e18 c1d79f0c -> 3e306bb5",
"4169ecf1 c1cb0988 c136130f -> 3ea5029c",
"41ccb06d 419cb06d c24da7ca -> 3f257dfa",
"411a57b1 410a57b1 c2156a14 -> bf3db042",
"4150e9b2 c1f78b27 c18f8b27 -> 3f0241fb",
"c2365216 c2365216 c2365216 -> 3e35ef14",
"c131e43e 40fc3783 423b86f1 -> bf1e07b3",
"40c44913 c22f76de 40a44913 -> bf4c78fc",
"423cf8a3 c22b075d c16c1d72 -> 3ea06505",
"c1d80ea9 c2480755 4277f8ab -> bc97fd7b",
"417015b4 c13fea4c 41d00adb -> bf1a70d1",
"40f2862d 422650c5 c209af3b -> bf1e6f15",
"41591060 420e4419 41291060 -> beb85e22",
"41258130 40eb0261 418ac098 -> bdce06a0",
"c21e6e11 bfcdc22c c1ccdc23 -> bf031bce",
"c253d27d 42382d83 c17f49f5 -> 3effb419",
"c21588dc 418cee47 418cee47 -> be0736c5",
"c2414913 4272b6ed c2194913 -> 3daafcdf",
"411e7ebc 411e7ebc 411e7ebc -> bf1a70e3",
"41eb3975 bf18d15c c2066345 -> bf39607e",
"c2104c35 4217b3cb c2144c35 -> bf2ba806",
"423e2ce8 c1f3a632 4091673b -> bf2bbf73",
"c18450a5 c1bc50a5 c19c50a5 -> bcba69ae",
"c13de9ce 41c10b19 4228858c -> bf2dc157",
"c1e087a7 414ef0b3 419f7859 -> bebaad19",
"4148840b 42222103 c0aef7ea -> 3ef9cd78",
"415c7b06 c1c9c27d 41f63d83 -> 3f1ba7b7",
"41706f52 41506f52 c1b7c857 -> 3eaa73d8",
"c1ae4ede 4244d891 c1ee4ede -> beb1d769",
"4245906d 41eb20da c2226f93 -> 3e516a38",
"4246696e 3fcd2dca c2519692 -> bf21ac15",
"3ffc0680 3ffc0680 3ffc0680 -> 3da12b7b",
"c17970b8 c17970b8 c17970b8 -> bdc659ec",
"41448f7c 41448f7c 41448f7c -> beec41ef",
"41b19451 c1b66baf 41e19451 -> 3ec02c55",
"c0d7aa13 419a157b c216f543 -> 3e7bc777",
"412fcde2 c2200c88 3ffe6f0e -> bdaeb7c8",
"c1776ed9 4272244a c251dbb6 -> be07428f",
"40f1dd80 c1171140 422e3bb0 -> bf10a782",
"c18ed0b8 c1e6d0b8 41325e90 -> 3f538113",
"c161daab c171daab c188ed55 -> 3f13ab84",
"41158c14 41158c14 c24a9cfb -> 3e663427",
"c122dc27 c1b96e13 c1d96e13 -> be88a4e2",
"c1865805 4189a7fb 41434ff7 -> 3e910bed",
"c21b0cd0 c16c333f 4191e660 -> 3e16f485",
"c19cf121 41361dbf c2227890 -> beaeb612",
"c209415c c241415c 42875f53 -> be680992",
"c21b0567 4224fa99 41a1f532 -> becad777",
"42170a3e 42330a3e c238f5c2 -> 3ee36a71",
"3eb417aa c15a5f43 4165a0bd -> be63e4b0",
"40c4a547 bf5ad5cb 41d92952 -> 3da73820",
"423ade7f 414b79fd c1648603 -> 3ea2aeb1",
"c240f7da 40308262 410c2098 -> bed4246e",
"c2022372 c2062372 4231dc8e -> bf172d7e",
"40248770 40248770 40248770 -> be2ec0a5",
"c204003d 421fffc3 c1a80078 -> bf15791a",
"4137bc74 4137bc74 4137bc74 -> 3d36d618",
"42068770 42068770 42068770 -> 3f513c53",
"41d7cdea 410f9bd5 41a7cdea -> 3e689353",
"c21e7b0c 424984f4 420984f4 -> 3e061bff",
"3e79bd34 c0b83216 c2230642 -> 3e51e14d",
"c15b8000 42492000 c0f70000 -> 3eac7579",
"4103a583 425ce961 c227169f -> be8bcee8",
"c103030e c254c0c3 42073f3d -> beaf9b54",
"c2292eeb c052eeb4 4185a22a -> 3e8933d8",
"41cfa5a5 4197a5a5 c1f85a5b -> be637b3a",
"c250604b 42279fb5 422f9fb5 -> bdabc3f3",
"4152e045 c23b47ef 4230b811 -> 3e55b150",
"c213eecf c213eecf 420c1131 -> be0970da",
"421a9019 c145bf9b 3f240650 -> be2c524c",
"c19ef057 c17de0ae 41810fa9 -> bdac05ca",
"42383bea 41a077d3 c15f1059 -> be58075b",
"41bde07d 410bc0f9 415bc0f9 -> bed6b808",
"41e491cf c25db718 41b491cf -> 3e886641",
"c1eb0107 c1eb0107 c1eb0107 -> be6cca06",
"41de9035 bf96fca9 41c69035 -> 3dd23862",
"c22c4e3d c08271e5 c0a271e5 -> 3d1f3e05",
"423e028a 423e028a 423e028a -> bc1c0cdd",
"40b928db 4223251c c1d9b5ca -> 3f1e16ca",
"c2014e41 c2014e41 c2014e41 -> bec05c66",
"41ff41e6 c2045f0d c20c5f0d -> 3f0e016f",
"bf2a562a c216a959 bfd52b15 -> bc384e7c",
"421a3eae bfb82a34 c201c152 -> bed37477",
"c1b197e7 421b340d 422f340d -> 3e601579",
"421089b4 c213764c c10dd930 -> be60fb64",
"41923de8 c23ae10c 42551ef4 -> bf3050af",
"42197d8a c15a09d6 42017d8a -> becb6e4d",
"c2711f54 41edc158 41ddc158 -> be5b0f68",
"408b5ae3 40eb5ae3 41ead6b8 -> bd731314",
"4104b872 41b25c39 c12b478e -> bdce4bd7",
"c0d7cfdb c21ef9fc 41da0c0a -> 3e3f15df",
"c08d3c18 c08d3c18 c08d3c18 -> bf2d81e5",
"41917cab c21b41ab 41d97cab -> 3c4bbbcd",
"c221f754 c221f754 c221f754 -> bd050888",
"42283674 c20bc98c 4100d9d1 -> 3ebbe2a1",
"c22597a8 422a6858 c1bb2f51 -> 3e9afa10",
"41d0607c c22bcfc2 c0fe7e11 -> 3f4e3ac0",
"c2259259 c2259259 c2259259 -> bf247382",
"418e86fb c132f209 421b437e -> 3d37ca3f",
"421fc48b 424bc48b c2703b75 -> bf2562e8",
"c2490014 4097ff65 41ddffda -> 3dbd20e9",
"bf51393e 41817636 4142ec6c -> bf204705",
"41823060 41823060 41823060 -> 3ecb15f4",
"c11f8655 41c03cd5 c217e195 -> 3e8c4780",
"bfbdad7e c21ded6c c1dbdad8 -> 3f424213",
"c22d901e 420e6fe2 c01901e2 -> 3f43c67b",
"c1c44b71 c21625b8 408ed23d -> beb7f85c",
"c1b1e64d 42070cda 418e19b3 -> bca9f381",
"40200b98 c221ff47 415802e6 -> bf14b271",
"4245c3a5 c23e3c5b c18478b6 -> 3eaaaae8",
"c1d07d24 423bc16d c1d07d24 -> 3f45bba3",
"c1f1ed69 c228f6b4 414c252e -> 3ef59315",
"41dc4067 42022033 41c44067 -> 3f189496",
"41062f23 42098bc9 c1ace86f -> bea03aa6",
"c044da87 423bb257 c1b09b51 -> be53cb4b",
"c1fc4795 40cee1ad 3eee1ace -> 3eb6234f",
"c246e1ee c02e1ed8 41f23c25 -> be0c5173",
"c1a5ade4 421d290d c1cdade4 -> 3d5e4963",
"c0bdc0a4 c07b8148 c18f7029 -> bf10fe60",
"c0031290 c0031290 c0031290 -> 3ee05a50",
"c1efc584 c20fe2c2 41d83a7c -> 3d9c3f64",
"416b5282 c2152b60 419da941 -> beb7ed0c",
"416f7238 41cfb91c c1208dc8 -> 3f171acd",
"420962bf 41358afd c1e53a81 -> 3e00e9ab",
"401593f2 401593f2 c1c54d82 -> 3f4a8d0a",
"c12b2c0e 424534fd c21acb03 -> be6822e6",
"4229e0a7 c1087d64 41dbc14e -> bdab02fb",
"c17fe3a0 c253f8e8 42300718 -> 3f23b7af",
"c112b183 4207539f bf958c1a -> beaf3a80",
"3ded3800 3ded3800 3ded3800 -> bee5cda7",
"c21c0e8f 420ff171 411fc5c5 -> be6168a5",
"bd4ce000 bd4ce000 bd4ce000 -> 3e82b9c1",
"41838569 41170ad2 41fb8569 -> 3f240593",
"c215fba5 419408b7 4256045b -> 3c3dad93",
"3c9f8540 c247ec0f 425413f1 -> be3eb00b",
"c210c7d9 41e6704e 42173827 -> bd9bee88",
"41b346dd 3ed1b733 420da36e -> 3f04704b",
"c27c598e 425ba672 419f4ce4 -> bf1402b0",
"4254b1db 4220b1db c27b4e25 -> be8332e5",
"418b924a c091b6d6 c1dc6db6 -> 3ee60369",
"c2249c82 c2249c82 c2249c82 -> bebd6e1f",
"c1b437e1 4221e40f c19c37e1 -> 3e6fbebe",
"42233417 41fe682e c18197d2 -> 3f168a66",
"c23035f3 422bca0d c150d7cb -> bf38341c",
"41056ce9 c246a4c6 40cad9d1 -> bf215446",
"41081618 41081618 41081618 -> bc709d14",
"420f9d92 418f3b23 c268626e -> bdbaca65",
"41889cd8 42044e6c c0fd8ca0 -> beeaa472",
"419a514a c17b5d6c c17b5d6c -> 3f4f7c0d",
"41e0f7c8 41e0f7c8 41e0f7c8 -> 3f165bc4",
"c2872ab7 4209aa93 4241aa93 -> be5d983d",
"42110b49 c1c5e970 c1a5e970 -> 3f3b2457",
"423f83db c2347c25 41ff07b5 -> be7a25e0",
"421cc314 421cc314 421cc314 -> bf0a9dc8",
"c280f5e8 41bc2861 42561431 -> be640c2b",
"c20dc9e2 41e46c3c c1a393c4 -> bf0f9ed7",
"c1e7f348 c247f9a4 423c065c -> bf4592c1",
"c15eb9a2 c22fae68 bf6b9a20 -> bcf2caab",
"c2225674 4106a630 4231a98c -> 3e276dff",
"c2421a2f 422de5d1 4225e5d1 -> be90cad4",
"c1f95e3c 417d438b 3f5438a5 -> bd0369e9",
"c14fec50 c14fec50 c14fec50 -> bc567060",
"c22cf9eb c113e7ab 41de0c2b -> 3edd24bf",
"4265d5e1 40aeaf05 c2562a1f -> be025648",
"c24b6498 4084db43 42709b68 -> bf0a43ed",
"423b1dc4 c1e9c478 c218e23c -> 3e46ca3c",
"c1ef8dc0 3f872410 3d6481f4 -> bebaea2f",
"421fc6b1 c1b8729f 422fc6b1 -> beb0c33a",
"4218ecf2 4153b3c9 c26b130e -> bf0d26cb",
"424c354a 404354aa c19f956b -> bf0c9e1e",
"c1cf8846 419077ba 418077bb -> 3e616f89",
"c1a3ff57 c1c3ff57 425a0055 -> 3f05fb97",
"c219e6b0 42221950 41686541 -> bd816643",
"41303855 42380e15 c1a7e3d6 -> bdf4eb5d",
"bfb870ae 4108f1ea bfb870ae -> 3ea3ae40",
"404f37b5 3f9e6f6a 4113cded -> 3f2a92fe",
"c2115d0f 421ea2f1 c0cae879 -> 3f253dba",
"bfca4aef 41f35b51 c0652578 -> 3ef5ec53",
"41b2b778 41156eef c21ea444 -> 3f1a2098",
"4215aa76 4215aa76 c18cab13 -> 3d3ff1fd",
"c252919c c202919c 42756e64 -> 3ef79322",
"41c56405 c2494dfe 423ab202 -> 3f2782cc",
"421fbab9 41df7572 c2784547 -> be6e18b0",
"c11595df c15595df 421a9a89 -> bdade9b9",
"4215a576 4215a576 4215a576 -> bf1500a9",
"c2522b83 c2162b83 4275d47d -> bea62919",
"41864888 c181b778 414c9111 -> bf1d8636",
"4208be28 4208be28 4208be28 -> 3e630eaa",
"c13c3b2a c2630ecb 4258f135 -> bed23ace",
"41d5816e c1d27e92 4216c0b7 -> bf12e53b",
"3d720330 422c3c81 c10f0dfd -> be3a7f99",
"42440e8c 3f81d176 c247f174 -> bd218a91",
"c100b3eb 41b7a60a c2082cfa -> bf0a4668",
"c1fd42fb c12a85f5 41357a0b -> 3cc79e6a",
"3f84c825 41984c82 42042641 -> 3f510a19",
"40af4f00 40af4f00 40af4f00 -> 3da81a63",
"c18cf6da c1d4f6da c194f6da -> 3e967d0c",
"c2116e6f 422a9191 40691904 -> 3d8a1212",
"41b10615 c186f9eb 3f90614a -> 3e5fdd89",
"4166c912 c1dc9b76 c1849b76 -> beb32302",
"c256c622 425d39de 40539de2 -> 3de49603",
"c14b3284 3e99af84 40e99af8 -> 3e2a0de4",
"c210d227 c210d227 c210d227 -> bf3dffde",
"41fe886c c1a97794 c1997794 -> bd3dcd05",
"42500487 c197f6f3 c197f6f3 -> 3f2bb88a",
"c1d06501 41bf9aff 416f35fd -> bf14f7e2",
"41b9842d c2133de9 c1967bd3 -> befc3d51",
"c19d86ac c19d86ac c19d86ac -> 3e668e81",
"4018047e c1dcff71 41830090 -> 3e947be4",
"41413526 41e89a94 c1df656c -> bd99ba6e",
"c15465b4 c24d196d 4206e693 -> 3ee814c9",
"41808a15 c1df75ea c19775ea -> be98ffbe",
"c100580f 420be9fc 409f4fe2 -> bf021486",
"41bc93d8 c1cb6c28 421a49ec -> be589124",
"c0755e14 c22355e2 bf55784e -> 3b8da7e6",
"c23ee69b c09734d8 41ca32cb -> be66d015",
"41cb0a8b c2567aba 41061516 -> 3f1de475",
"4129a175 c1565e8b 41d4d0ba -> 3e93ad2e",
"c21599bc 41199912 c1b33377 -> 3da12c84",
"40f18c6e 40f18c6e 41c4631c -> bf1545cf",
"c1dd71cc c1dd71cc c1dd71cc -> bf003f5c",
"423f09e6 c22cf61a 411c2797 -> be40ab00",
"417cdde4 c199910e 41ce6ef2 -> 3f19f6dd",
"c208c2d0 c210c2d0 42233d30 -> 3e26b927",
"c1a2b7e9 402a40bf c1c2b7e9 -> bf1dc80e",
"c2385bfc 422ba404 bdb7f888 -> 3e90e108",
"c0c850d6 4222f5e5 c2210a1b -> 3f0504cd",
"420d1a56 c256e5aa 41246958 -> 3d5e142e",
"c1918cbe 422739a1 c218c65f -> 3de67fa8",
"c0954e4a c23ea9c9 411558db -> bbc538f3",
"c23a1a31 c1dc3462 4225e5cf -> bf01edaa",
"c1adf1d0 41920e30 41c20e30 -> bf029729",
"c253c185 41e87cf6 41d07cf6 -> bf17759d",
"42481a96 c1ffcad5 c18fcad5 -> be414b1a",
"c257434a 4102f2da 4260bcb6 -> bf19fcc3",
"c094b308 c094b308 c094b308 -> 3f4c791d",
"c1cdc2e0 418a3d20 c195c2e0 -> be6a789c",
"42264043 c01bfbd6 41a48085 -> bef2a965",
"4210fac4 4210fac4 4210fac4 -> be800215",
"c160b7ee c2142dfc c042dfba -> bed354c3"
]
},
{
"glsl": "vec4 cultmath_snoise_grad(vec3)",
"tolerance": "ulp-bounded, on the simplex tie set",
"cases": [
"c23acaaa c23acaaa c23acaaa -> 401052c9 3f0f16a7 bcbff362 3e0fd123",
"c25f203d 4200dfc3 41f9bf86 -> c002a42c 3fe43930 bfc80ae3 3f28af46",
"417a38d0 417a38d0 417a38d0 -> 4021c916 c01f15f9 becc73d1 be72b3c3",
"41d8995e c217b352 3d995d5e -> 3f5ba362 403ba6d9 400dd8ac 3e1dbd57",
"c1cdab59 4280952a c236d5ad -> 3fdbe5ab 408b8779 40183995 bec6de00",
"c1df605f 41513f42 41e09fa1 -> 3ee2b2ae 3ffd7d1a 3ebd27bc becd2159",
"41046bc0 41046bc0 41046bc0 -> 3e8d739e 3fc850ad 3f84baea 3dacafd4",
"421fd4d7 c1885653 c1905653 -> bf13f661 3ffd3295 3fa13f1d 3ef60904",
"4193e077 bf03f11e 4211f03b -> bf5a2722 bff6615b bfbfe7d0 bf36b29d",
"c135363e 406b2706 3f2c9c19 -> 3f88875d 3f8e18ff bfd68db4 3ec25bf5",
"3fbad472 c02295c7 c19452b9 -> c0b172f2 3ff7d196 3fa80473 3dce4aee",
"423ab63f 40f5b1fa c0aa4e06 -> c0994cdd c002adfc c02ea8f9 bdded0ee",
"41211cec 41211cec 41211cec -> 40648992 bf9400d0 403eb853 3efc8a00",
"41b80fec c0dfc04d c1b7f014 -> 3f4a3c57 400ca9ca c0129dad 3dcd5a1d",
"c2034030 c2034030 c2034030 -> bfc5b121 3f96408e bf890e26 3f0f06e8",
"c23970b6 421e8f4a c192e16b -> 3ef895b9 c038b63a 3fe20dfd 3e6b5583",
"c161b020 422793f8 c1c0d80f -> bf79bfc1 3fa30ad2 40a6b947 3ed356a4",
"c020441e 3fbf77c4 423dfbbe -> 3f2393c8 40b84bd6 c023eac0 bc82c6fa",
"c1f07fd5 c130ffaa 40be00ac -> 3f2fbdb6 402c4d24 c074df7b bdd62088",
"c24a9048 c20a9048 42496fb8 -> bff7047b 3fa2df38 3f6247a0 bf2f6ba2",
"c2414d22 412acb75 4262b2de -> 3f2c0542 c0946cd5 c07e5e45 bd829d92",
"4124abc8 4124abc8 4124abc8 -> bf7d3ba6 3ef86dca 3f660c9e 3f1072f8",
"c1c9be73 41d6418d 412c8319 -> 4048f97f 4048f97f c03460c6 be50c78f",
"42295f25 c10a8369 c246a0db -> c0b7d205 bf221d02 4023eab4 bd16719e",
"41227e6f 41d13f38 c17d8191 -> c0cc3984 bef546a1 3c52b5d9 3d9850c7",
"41b52981 40b4a605 c1f2d67f -> bf1af97a c0b57e97 4023e8e4 3da689a2",
"c1bc8ea1 4231b8b0 419b715f -> bf760574 c0a18b55 3f1259ea 3eff09a9",
"422868d7 c18f2e51 4198d1af -> bf98e393 bfc09ac5 be701e25 bee13aa0",
"42458cb1 c24a734f c1cce69e -> 3f1530ea bf51103a bf46cbf7 be8d3595",
"c21757f4 4230a80c 41895016 -> 3f2a6072 c094dd92 c07f30ba 3ca7511e",
"c2534bdb 4112d096 4204b425 -> becb5029 401d6289 bcb2b330 3f2709ab",
"c2787f22 425780de 41a701bd -> c0be3c0e 3f410c59 bf6bae55 be91d135",
"412dfb4e c16204b2 c22c812c -> 40395b10 3feb361c 3ed2b53d bed6ee38",
"c1cbe510 424e0d78 413835df -> c0b74d90 bf2085f7 4023ea86 bd4e210d",
"c1896aa4 41be955c c1a16aa4 -> bee53a16 bfde5181 3ff0a2b7 3f2260bd",
"4175c4cf 40eb899e c20a8ecc -> 3fbd2b6b bf5b4360 3fddb876 bf0356c9",
"41de3b35 42131d9a c220e266 -> c08a1945 4052b53a bf92a3df 3e0d5300",
"42405631 c213a9cf c13ea73e -> 40718601 c0493d45 3f642778 be42cea4",
"425731a7 41ce634e c23cce59 -> bf7f5cfa 3fb604c6 bea7e7c5 bf18be56",
"4098304d 427b060a c278f9f6 -> bf30aea2 bfb18a0d bfda4980 3ca5b37d",
"c13bf1a2 c18df8d1 c1bdf8d1 -> 3e454a06 3faab43f 3e12d8ff 3ede4d67",
"40da4fa0 c1816c18 c218b60c -> 3f0d2784 3f0d2784 c0cf4861 3d762401",
"c0152670 41cd5b32 c0ca9338 -> bd78718d 40283d33 bf6cab10 be50cb98",
"41ac4a8a c25ddaba 419c4a8a -> bf464f75 4036480c c0090c92 3e7122fc",
"c1f92d69 c1f92d69 c1f92d69 -> 3f8f1c99 bee1b3d0 3f41d9d6 3f4ee9ac",
"c1b642e5 41c1bd1b c1b642e5 -> 3f38e746 3f38e746 c0bce62b be8437b4",
"411ecf07 c1a8987d c17130f9 -> beed16b8 c08631c5 3f6f9544 bf1a1b13",
"42739224 c1b8dbb8 c2386ddc -> 3f2c1b6d 40455831 c098180f bd929e67",
"c0630a75 c21230a8 424dcf58 -> 3e3c7a14 c059b44a 401b5119 bea48961",
"423da984 c0d2b3e4 c1b4acf9 -> 3fabe9d9 401fcf03 405d87f2 be479240",
"c265def6 41688427 421a210a -> 40576b48 c0935f8b bfa45ada bdaf915d",
"c20801a2 c20401a2 4217fe5e -> bf82da2f c018d9d7 3fe7dba4 3da28c2a",
"401f0a79 c060f587 418be14f -> 405ea10e c0048e10 c084dfe4 3d2a5460",
"422ec79c c2153864 c18a70c9 -> 404f2ea9 3f292231 c0a45e99 bd151acd",
"c1c1d74d c22ceba7 41fe28b3 -> bfa60e4c c0730a5f bff61026 3f0e2ae7",
"c1bb8e8d 424e38b9 c1071d1b -> 3f4158ea 3f415858 c0b94424 be8ec97c",
"4235c4a6 c1ac76b3 c2563b5a -> 3ff226bf 40710acc 4020c4d6 3e81ce88",
"421820de c17f7c88 41a841bc -> bf0f0420 c03b809b c002228b 3ecd4759",
"41f78cfc 407c67de c150e608 -> 3fcb6e71 be689ec6 c05a065d bf1a3e60",
"422ccfc6 c12cc0ea 420ccfc6 -> bf3d7ecc 4038c65d c006e892 3e700be4",
"420e7ae5 c219851b c166146d -> 40aad885 3ef531d7 c023c08e be2e20b4",
"424053f6 424053f6 424053f6 -> 3f947526 c098ce67 bea5da3e bef927ab",
"42662514 c245daec c23ddaec -> 3e3294e1 3fadc9c8 4000c557 bf1b8d41",
"415a02d5 425e80b5 c2417f4b -> 4005b7c6 3ecead0e 402b2dc3 3df42dda",
"c1ac0cc6 408fcce8 4219f99d -> 3fbad271 bf1551a7 4009423d 3f1fc671",
"c2002bc1 421bd43f c2402bc1 -> bf6b3ea5 4037aa2b c01592ea be70c4d4",
"c26180af 422a7f51 40f3fa88 -> 4018ae51 40077174 4074322a 3ed62f73",
"4131d958 4131d958 4131d958 -> 3e052188 3e0681f2 c011d54a bf4785f2",
"421ce193 c0b8f364 4200e193 -> 4046c9f4 4046c9d8 c03453fd 3e58d8b5",
"c1a73963 423c634f 41018d3c -> be2de0e4 bf810173 3bc8f9b5 3f1cd89d",
"c21d747b c229747b 42768b85 -> c093f1f4 4057b3cc bfa57414 3da5fe25",
"422e0da1 3f036817 c221f25f -> bfea2043 3ff95074 bf5b92f9 bf179153",
"42465de8 42465de8 42465de8 -> c04546f5 4063fa71 3f4b2769 3e4ffd8c",
"c2558aae 41e4eaa5 3fceaa40 -> 3f73caea c080e5f1 c059f3e5 3ec742af",
"425e4891 c265b76f bfb6edd2 -> 3f7e6459 3f384c0d 3f71d93f bef89218",
"c233c183 42841f3f c24bc183 -> c077bb48 bfad0978 bffda5ab bf09babc",
"42764950 c20db6b0 c215b6b0 -> 403266d0 3f2fa211 c08159d3 3dcc9604",
"40b75282 423aea50 c0e8ad7e -> c082b517 3fecaba9 3fad63f5 3e53b670",
"c24c92de 410db48a 425b6d22 -> c0b7a388 3ff8a412 3fa6b524 bd73bbc8",
"413d1124 3fe88920 41a68893 -> 400244c3 c0155f26 3fd5a407 be4df706",
"c1b6549d c22b2a4e 4224d5b2 -> c08b83e8 bfdbdae4 c018340b bec6f420",
"4120f008 4120f008 4120f008 -> 4077ad83 bf83014a 405087bc 3edc3bcf",
"423ea770 4246a770 c284ac48 -> 40521628 3f281cad c0a80d42 3b87a509",
"421d5cb3 c15a8d32 3eae59b1 -> bef953cc c0ccc5b5 3bbb43c7 bd4b41f7",
"c223cc65 c17f3194 41f06736 -> 3f6f4d2e c0822359 c05c4376 bec19408",
"409ffe00 409ffe00 409ffe00 -> 40045877 409a674c 403075f7 bb1a675e",
"c170afa8 c0815f50 c20c2bea -> 3ff60996 c05a954a 407b1e90 bdea6488",
"4115e543 4057950e c20286af -> bfd49c68 40364011 bf07cb8c bf18e442",
"c2382835 4233d7cb c0e141a5 -> 3fe79c1e c03553fa 3f2715b7 bf16d605",
"c1f5e848 40a85ee1 c216f424 -> beef1900 beef18fb c04a518b bf374cad",
"4155549e 4135549e 4182aa4f -> 405f30cc c005ea02 c085ea0e 39fde108",
"41318042 bff3fdf1 c079fef8 -> 3e88705c 40988a5e c022f623 be7bce51",
"41357cf3 c21ea0c4 41457cf3 -> c05ef4f1 400558f0 40857b0c 3cdc8290",
"41676cb6 c108934a 41f3b65b -> bf59afe1 bfbc0762 bfcf3e57 bf2bcf8b",
"41393b88 42264ee2 c251b11e -> 3fb70412 c03bd5ad c018eab9 3f163ada",
"42084341 41510d05 c25bbcbf -> bfae28c9 bfb29c2d bf69bb0e 3f13c0f1",
"c12cc191 c23b3064 41819f37 -> bf634fe8 c0006104 3f8f1317 3d39cc43",
"40af1a48 40af1a48 40af1a48 -> c0b36d15 bf14a543 4023e539 3dd87fc4",
"41e6d375 c2349645 c2209645 -> bf1c29e8 c0b5e1e0 4023e963 bd9b3ab0",
"42068a0c c175d7d1 c135d7d0 -> bf1d9bb4 bf1d9be0 40c8731c be2ca06c",
"40041d57 c11ef8aa c1df7c55 -> 406e0d68 bf8b97ac 40479241 3eed80b7",
"421b9677 c2106989 c1a8d312 -> bfb63828 407d0730 bda287a2 bf0ddef3",
"42136374 c2409c8c 41bec6e8 -> 405ff438 405ff438 c034a44d 3d6e0a13",
"c1c511a1 c1ed11a1 42017730 -> bf39fc17 3fd61b94 40bbe20b 3e73abb9",
"4207c02f 423fc02f c2343fd1 -> 3eb9c922 bfc22cde 4069c466 3f16a984",
"4229a7b3 c1f4b099 c1196132 -> c07f5e75 bfee0ee0 3f4d93d1 bf198848",
"41a12108 41a12108 41a12108 -> bf07c935 c005f8af 40427a80 3df1af83",
"c0b37808 40ec87f8 c1fcde02 -> 3ffce781 3f4466e0 40128b6b 3d0a997a",
"417e6bb8 417e6bb8 417e6bb8 -> 40843171 bfaf28bb 3bd2e9ca bf0af4fb",
"c1942e99 c1185d32 3ef459c2 -> befef937 bff5c156 40031999 3f20ef59",
"4211707d c11a3e0a c1dd1f04 -> 4094622a 3ff6875d 4026a3a7 3e80d524",
"41b1b20a c0326fac 41736415 -> 3fcb781d be9f4a74 3e2777fe bf4efd66",
"3f9f5936 40a7d64d c22b0536 -> c09986e5 3ff375aa 3fabff0d be32ee4b",
"419c31ed c1379c25 41ac31ed -> 3f13f3e5 c00c3635 bf07c190 3e29957f",
"4224fe59 c20701a7 41d1fcb2 -> be4c9140 3facb4aa 3ff70f32 bed63d1f",
"41ee1ec8 c214f09c 40f87b20 -> 3ff50a16 c0a104ff 3faaf23b 3e21f21f",
"c1dc4e04 c1289c07 4225d8ff -> bf1e47bc 3fc08e6c 3f9d355f 3f00a006",
"41058091 41258091 c1ed3fb8 -> bf934a5f 3ebeb548 bf429e94 bf4ea0cd",
"40e6d3b5 c25b2589 41b9b4ee -> 408823a7 3fd1ba3f 4012b795 3edacd0d",
"41adf624 41adf624 41adf624 -> bde611e0 bd1cb601 3e038041 3dcd4edd",
"428eef15 c24621d4 c24221d4 -> 40243fab 3f90b617 3fa98640 3eff74d0",
"4221d60f c18c53e2 c24229f1 -> 3f589e6f c0885cd3 c067dd81 3ea0a968",
"c24871ce c20071ce 425f8e32 -> bf419836 bf419836 40b928a2 3e8f14de",
"41cfb3b8 41cfb3b8 41cfb3b8 -> c0a7bdff c0350055 3e41a40c 3ea11c8c",
"c2798a0f 427275f1 4159d7c4 -> bdd02373 3f628cd1 3cb1b6f1 3f1f45ff",
"c1f0dd9c c1a0dd9c c121bb38 -> 4049f35e c03ceb52 3f1c6437 be61a037",
"c1d76516 42244d75 41889aea -> 4019684f 3e690704 3f0d917a bcb4a4fd",
"c1c29b78 c1fa9b78 c14536f0 -> bf1f19d6 3feb5294 40c4966d 3d604727",
"c1422a78 417dd588 418eeac4 -> c0c5064f bec03b03 3dd9cca4 be582e5f",
"41f5c1a2 420ae0d1 c1823e5e -> 40b64e5a bf57b22f 3f4ad6f9 3eb10fcb",
"c18ab573 410a951a c1a2b573 -> c0ca2372 bfdc2ea5 3b69d609 3d2d83c1",
"c22f6b01 c22f6b01 c22f6b01 -> bfc3a2fa 40410e60 bf90f89a 3e69c10c",
"42126692 42126692 42126692 -> 407ee67a bc5665d4 c020acf5 3e99b241",
"421ce8c2 41e9d183 c12c5cf9 -> bf27ebde c0033068 bfc95f51 3f112da1",
"4244e20a c24b1df6 41d9c415 -> 403985d5 c043a800 bf134a2b 3e653955",
"c24ca519 42335ae7 c1629462 -> 3f1605e4 c0cd02b8 bf94c07e bd1bc5b0",
"c1df4511 c03a288c c12e8a23 -> 404578c4 c064a1b8 bf4c5ad6 be4f6c31",
"42321e25 c22de1db 41843c4b -> c0470b69 be7dd5de bfa75abd 3d976422",
"bfbb3b4c 42162625 40b1312d -> be99aba6 bf714fe4 bf230b4d 3f3ea0ca",
"c1b6a318 c20f518c c15d462f -> bff900a4 40baadf2 bfa606af 3c1d0a3b",
"c28a0e93 4233e2dc 4247e2dc -> 3ea13555 402b8b6a 4032727f 3ecab3d5",
"c1c96066 c1b16066 c20cb034 -> 3d4e87d6 402e6eb7 3ea5d0cb bf210d81",
"c1ee493a c1ee493a c1ee493a -> bffd00f1 bf29ccfe bfc72cec 3f1f6539",
"423c93cd c1eed866 41e1279a -> 402d39dc bf0e23ca bfe7c0fb be7018eb",
"c235b891 c05b8916 c01b8916 -> bea5d46f 3f8b56de bfb3745c be0f019d",
"c1924a83 422adabf c1d24a83 -> 3fcc2603 3fcc2595 409920a6 3ed6bcd0",
"c232a0b5 c1fd416a 421d5f4b -> 4060e1f4 4060e1f4 c034a493 3d2846ac",
"c20b955b 422c6aa5 42006aa5 -> c01aa60c bec55416 be851f06 bd8b78b3",
"3ff8cc80 3f719900 c081cce0 -> c05fdfb9 c039f7d9 c0222698 beb0dfe0",
"c24616b9 c1d42d73 421de947 -> bebcbed8 bfead9e7 4009904b 3f223499",
"c1c64ae4 425cda8d c23b2573 -> 3e9b05c2 bfcf417b be3705d7 3f4e33e9",
"42171c86 42171c86 42171c86 -> 3b0c0bc2 3f863254 bf2b788b 3f164873",
"41df9f54 41d79f54 c110c158 -> 3e85372f bfd56562 be610c04 bf4e2e19",
"41704893 4180244a c247eddb -> 3f2d035d c0167bef 3e862848 bf2a32e8",
"4240cc4b 3e4c4a52 bf4ced6c -> 408cc795 bf4861aa 40701a62 3e82b079",
"418d6ca7 c1ca9359 c1aa9359 -> 405eddd8 c00520ed c0855041 bd01b4e1",
"414d5175 411d5175 c210aba2 -> bf8e40ea c01cf194 3fe0da91 3d9880ee",
"416c6b88 416c6b88 416c6b88 -> 400776f9 3d1678b2 3f2d5655 beb1e6f1",
"c112c540 c1a162a0 c208b150 -> bc9cedfc 4003ef82 40324adc 3f144df7",
"41d58a10 41ad8a10 c2493af7 -> c094b9b0 bff78f49 c0273263 be7a69b6",
"c21fc111 42403eef 42283eef -> c04058bd bf8e0527 3fa15c09 3f32b9b6",
"bed70a84 c215ae15 c1a35c2a -> 3e53f75a c09b56f8 3f20f7a4 bef1dc13",
"4218ba02 4218ba02 4218ba02 -> 3f376eac 3fc90a14 bf986d3f bf1ba274",
"c18d2939 424d6b63 c22e949d -> c0c956a9 3f20cfa0 bf8d08de be189ee8",
"c21c3076 c21c3076 c21c3076 -> c0844975 3f677f60 c0604495 3eb71e70",
"40f657b2 c1ca6a14 4256caf6 -> be777e3d 403ea154 c00fcf70 bea9d831",
"c20c2821 421bd7df 41d7afbe -> 3fd05647 c04112ba 3eee4f8a bf183824",
"42281c68 42281c68 42281c68 -> 3fdca504 bf31b95c 40be91fe 3e4e0f8d",
"421efefd c174040d 41d5fdfa -> 3f41651d 3f41651d 40653cc6 bf2ad41e",
"c11a38ce 422971cc 41c2e399 -> c067830c bfce9f7c bff6ef15 3ee337f0",
"4269ab2a c27654d6 4146aca6 -> 40237656 3fe2df99 40311398 be880f11",
"42487cdc c2038324 c2038324 -> 3efba243 40abe99c c023c70b be27ae72",
"3febfddf 420f5fef c1a14022 -> 3f188e04 c00d2f9b 3e4d95de bf2a2747",
"c22698f8 41159c21 4192ce11 -> 400d9f41 bfd98cab 3f9da3dd 3f13303f",
"40dd1ed4 c1d0b84b c1e0b84b -> 3f6d8318 3f6d8318 c0a5b78f beb869d0",
"c217ddeb c03ddeb1 425c2215 -> 3fa6873e c004bcf0 3f60f066 bf2d1587",
"c2134451 c09a2281 c1de88a0 -> c0c7eaae bfd6cba9 3d10f898 be081179",
"427a6ecc c1eb2266 c21d9134 -> 4045da41 400618c0 407e89d1 3e86f3bd",
"4101912c 4101912c 4101912c -> 3fef2043 c088a9e2 3fada502 be4d3aa2",
"416f1bcc c1e8721a c0c1c869 -> 3e4d00f9 bfce4efa 4057d0aa 3f1a68c1",
"bfd45400 bfd45400 bfd45400 -> 3f663143 bfeb202c 3f1248e5 bf2f384d",
"c1d025df c21412f0 40bf6883 -> 4003d8fa c05e55cd 4084553e bd5193c3",
"40d6a221 41a5a888 41f5a888 -> c04c13d2 bf2a27a8 40a0762f 3d51ffac",
"c14ab103 c0d56206 c1955882 -> 401c2ae7 3f94a4c6 bf5763db 3f141b9e",
"419444af c1fbbb50 41cc44af -> bf13a0c5 bf165a4e 3fc8c685 bf4d21dd",
"c1a6c93f 42409b60 c19ec93f -> 3f0e23d3 402e7369 be99480f 3e21c0b5",
"4273bd9c c2822132 414ef670 -> c05f40c3 c05f40c3 3f0ef4d0 3f06554d",
"425eb2d1 c2194d2f c2494d2f -> 3f864097 4014fb12 bf918e3e 3f18d9dd",
"4233dc77 413f71db c2042389 -> c0b0d116 bf0cb025 4023ddc1 3e049d63",
"4188541f c24bd5f0 41f0541f -> bfb3a8cf 3ee77f73 bc120676 3f503a10",
"42019299 c159b59b c22e6d67 -> 3f68fd3c c0b02c58 bf319ae4 bec485bd",
"c1fe49d1 400db178 c17c93a1 -> c0aa7b81 bef300de 4023be41 be30400d",
"c1fab43e 41cd4bc2 40f52f07 -> 3f4f4a5e bf072d63 40157608 bf34417b",
"4196efa1 c238882f 424b77d1 -> bf19469b 3f960838 be188c9e bf521670",
"c21a422f c1a4845c 425dbdd1 -> c07fd687 3fb452f0 3d6a68c0 bf0d37d8",
"c2627bae 4286c22a c1d4f75b -> bfc2118d 3f532e99 c0b39da4 bea50053",
"c187f3ea c1eff3ea 4120182b -> 3fccecce bff55146 3f408ab8 3f192291",
"40ec0dc2 421d81b8 c0d3f23e -> be93264d 404d5c90 c01de457 bea52c08",
"c13ebe6d 42205065 c11ebe6d -> 3e596a5a 4093c660 c022a333 3e84d2ae",
"c16d9d7b c1eecebe c1b6cebe -> 3ec5d3f1 3fc2faef 40371821 3f1d8b03",
"c103e181 c230f860 423b07a0 -> 409b5eeb bff3de40 bfabc17c be2f1f68",
"c13e1132 c09c2263 4083dd9d -> 3f30edae 3f30ed90 c0c04dc6 3e721259",
"c1b8ec0c c1c8ec0c c180ec0c -> 405f6c78 3fefa135 404c20d5 be4700dc",
"c20134a9 c174d2a4 c164d2a4 -> bfc6f6ef c0c15e61 3e03cf5c be805010",
"41da95ca 41052b93 bfd6a364 -> 3e29eb39 3fbbabb2 3f8084d1 3f446eb1",
"c206ce67 42093199 42013199 -> bfa62996 40087a6d bf5cc459 bf2c639b",
"4229adb3 41eb5b66 c1b4a49a -> 4027e8d0 4027e8d0 c0331921 be94bdc9",
"c1ce5182 bf4a3033 c21328c1 -> bff563cf 405a714b c07a9f25 bded9d0e",
"c18d4bc5 40aad0eb c20aa5e3 -> 3f95f3af c02ca88c 3f63e8f5 3e73d9c1",
"c18f5136 41d0aeca c1cf5136 -> be13625f c08db126 40222572 be8c65bb",
"4251ef9f 4215ef9f c26e1061 -> 3fa97ac3 bfd4717a bfbd2c51 be30d06c",
"41df6857 3f6d0aea c0a25ea3 -> bff42bac 409cc77b bfab903c be2c0dc4",
"402db957 414b6e56 c18a48d6 -> c0ba752c be6647c4 3e77bd86 be9fd9ab",
"c1a193ea 41f66c16 c1b993ea -> bfd47bce 3ddfa79f 3fc081ec 3ea873bc",
"42266905 c20596fb c20196fb -> 3fcbd4d1 3e652430 3ff4fc93 3f01cabb",
"c18de16a 40887a55 41da1e96 -> 3e9d5ba9 409c1b7e c0232bcb be701f9e",
"413c022a 3fe0114d 41ae0115 -> bdc01632 be05b5d6 bf890896 3f263a81",
"c250542b 4203abd5 418757ac -> bf245aae c09019ed 3f4e5349 bf121e22",
"bf6dd748 41e89146 40a24517 -> 3f8b2f90 bf8bb7c7 c09cf330 beed68c8",
"420b9e3e c22861c2 c22861c2 -> 404e378e 3f9e08a5 3fe23d60 be8d4f0d",
"413183a0 413183a0 413183a0 -> bef317ed bef317e1 c04b0c88 bf3701b0",
"42513853 c222c7ad 4124e14a -> bf2f9606 3ee5eb97 4017a261 be3c08bf",
"421033d0 c281e618 424c33d0 -> beff81eb bf1f2bf4 3fcabcca 3e042f68",
"41116c49 41e8b624 c1d749dc -> bf6fe628 bf6fe689 40a4a170 beba3049",
"4123be4b 4123be4b c03106d0 -> bf85b17e 3f94b3dc 40a0b93e 3ee409a4",
"41a17d38 41a17d38 41a17d38 -> bd6234b1 bf6c7400 401cd761 3e20a134",
"c206e35f 424d1ca1 3e8e506a -> 400a0fe8 bfdfae2a 3fd5b7a7 3f26de2d",
"c2139432 c2139432 c2139432 -> 3f2089a2 c0778c6e 3f803b42 bf0d5366",
"c0cd9e79 c106cf3d 42164c31 -> c07c9fa3 404c5f28 bf78d5cc be3559b4",
"41c100e2 40e40386 c22b7f8f -> 3ed7dd22 c02b0424 3fcad2e0 bf2d4e8a",
"42230ced c04f3127 4098676c -> c0626452 3f95e344 c03cb9d0 3effb025",
"c22b6037 42289fc9 41d13f92 -> 3ea908be 402fbe9a 3f13ad5c 3f1861cc",
"c1226b75 c1226b75 41d6ca46 -> bff8d9d7 40b960f3 bfa65223 3d2304b9",
"400b6327 41996c65 421cb632 -> befc6f63 3ff83926 be2f5ac8 bf283133",
"c1062ade 41bcea91 42167548 -> bf2a0de7 c023a9d4 4065ed25 3ddec8f2",
"c1cff936 41c806ca 418006ca -> c0bab1ea 3ff9012a 3fa605be bc0cd7af",
"c1e3242d c106485a 42626de9 -> 400c9250 3e00ffb4 3f24ce7b 3f4721f0",
"4182f92c c21e836a c19d06d4 -> c033ebfa c0a70c98 3e4cc8d1 bea57a20",
"41800c7e c1bff382 41b00c7e -> 3e2de8a4 3fc164e6 c0344986 3e0bfdd1",
"c23e7c5e 422983a2 c159f178 -> 3efa0ae3 40aba62c c023c57f 3e294e21",
"42157598 3faeb310 c15a299e -> bf03b9ea bf03b80b 3fcc22d9 bf4e57a7",
"c2107687 420f8979 c2387687 -> 3feed40b 3f4e600f 3e769654 bef61d79",
"bee9463b c20dd28c 420a2d74 -> c0552489 408ed5a0 3f9ba948 3dec2fe2",
"42401820 c18fcfc0 40a0c0ff -> bf2981fb 40172dad c022cd13 bea270c8",
"411a4518 411a4518 411a4518 -> bfaf3d3e bfb128c5 401b29f4 bebbea12",
"c1af9776 42483445 40434455 -> 3ef824a6 bf73200b 3f2b14d5 be521161",
"40f91788 40f91788 40f91788 -> 401966d2 3ef494ea 4027a253 bcca160f",
"416f44db 40de89b6 c170bb25 -> 4036c56c c0333bce bee2b43f be695215",
"c02288c7 4221d773 c256288d -> bfdddc0e 403ae0e3 bf10a541 3f175582",
"410ad0f1 423ab43c c2654bc4 -> 3f2233c8 40b7d965 c023eaaf 3d12b808",
"c1ed68d2 bfd68d20 4182972e -> 3fcb2b83 c009f5a0 bf9d6643 3f127fc9",
"4257e7fd 414f9ff4 c2441803 -> 400299cb c05dd0b2 408360db bd8437c7",
"c2160c0f c0b06075 c1ac181d -> bf213218 c0b78598 4023ea9d 3d38aa90",
"414f9c31 426fe70d c26c18f3 -> 3fd9032a 3cb7522e bf9d1762 beb0b6cb",
"4256e995 c229166b c225166b -> c03e87af 404ed03a 3f250ae5 be5f05f6",
"40b5fd99 4206bfb4 41a57f66 -> 4007362a bf7b6b1a bf118d1e 3f2d6b64"
]
}
]
}

View file

@ -7,7 +7,7 @@
// Included by CultMath.hlsl after its own definitions of cultmath_smoothstep and cultmath_snoise.
// Lipschitz constant of cultmath_snoise(float3); provenance in math.Interval.cs (SNOISE_LIPSCHITZ).
static const float CULTMATH_SNOISE_LIPSCHITZ = 10.099261;
static const float CULTMATH_SNOISE_LIPSCHITZ = 7.9640074;
float2 cultmath_iv_point(float value) { return float2(value, value); }
float2 cultmath_iv_add(float2 a, float2 b) { return float2(a.x + b.x, a.y + b.y); }

View file

@ -80,13 +80,14 @@ float3 cultmath_snoise_permute(float3 value) { return cultmath_snoise_mod289(((v
float4 cultmath_snoise_permute(float4 value) { return cultmath_snoise_mod289(((value * 34.0) + 10.0) * value); }
// Ashima Arts / Ian McEwan 3D simplex noise (MIT), same float32 evaluation
// order as the C# math.snoise(float3) mirror.
// order as the C# math.snoise(float3) mirror. Ties resolve in simplexnoise1234's
// total order; see math.snoise.
float cultmath_snoise(float3 value)
{
float2 c = float2(1.0 / 6.0, 1.0 / 3.0);
float3 i = floor(value + dot(value, c.yyy));
float3 x0 = value - i + dot(i, c.xxx);
float3 g = step(x0.yzx, x0.xyz);
float3 g = float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
float3 l = 1.0 - g;
float3 i1 = min(g.xyz, l.zxy);
float3 i2 = max(g.xyz, l.zxy);
@ -172,7 +173,7 @@ float4 cultmath_snoise_grad(float3 value)
float2 c = float2(1.0 / 6.0, 1.0 / 3.0);
float3 i = floor(value + dot(value, c.yyy));
float3 x0 = value - i + dot(i, c.xxx);
float3 g = step(x0.yzx, x0.xyz);
float3 g = float3(step(x0.y, x0.x), step(x0.z, x0.y), 1.0 - step(x0.z, x0.x));
float3 l = 1.0 - g;
float3 i1 = min(g.xyz, l.zxy);
float3 i2 = max(g.xyz, l.zxy);

View file

@ -9,7 +9,9 @@ Gustavson's `webgl-noise` project and Unity Mathematics.
`math.snoise(float3)` and `cultmath_snoise(float3)` follow `src/noise3D.glsl` and
`math.snoise(float2)` follows `src/noise2D.glsl` of stegu/webgl-noise at commit
`22434e04d7753f7e949e8d724ab3da2864c17a0f` (the simplex-boundary fix is
`21d9fe23d7`, scale `ff3b5d34ea`, permutation `a3e6d57095`).
`21d9fe23d7`, scale `ff3b5d34ea`, permutation `a3e6d57095`). Modified from upstream:
the 3D corner tie order follows Gustavson's `simplexnoise1234`, because the
upstream `step` compares are cyclic where the offset's components are equal.
`math.snoise_grad`/`cultmath_snoise_grad` (and the `fbm_grad`/`ridged_grad`
octave sums built on them) follow the analytic-gradient differentiation from