diff --git a/packages/cultmath/src/CultMath/CultMath.csproj b/packages/cultmath/src/CultMath/CultMath.csproj
index b4a6ce8b..0b1ee09f 100644
--- a/packages/cultmath/src/CultMath/CultMath.csproj
+++ b/packages/cultmath/src/CultMath/CultMath.csproj
@@ -10,7 +10,7 @@
GameCult.Math
MIT AND MPL-2.0
- 0.2.4
+ 0.3.0
Clean-room C# math shaped for HLSL-style renderer code.
GameCult
README.md
diff --git a/packages/cultmath/unity/org.gamecult.cultmath/CHANGELOG.md b/packages/cultmath/unity/org.gamecult.cultmath/CHANGELOG.md
index 871022f1..74c1992d 100644
--- a/packages/cultmath/unity/org.gamecult.cultmath/CHANGELOG.md
+++ b/packages/cultmath/unity/org.gamecult.cultmath/CHANGELOG.md
@@ -5,6 +5,37 @@ All notable changes to this package are documented in this file.
Earlier releases (0.2.0-0.2.3) predate this package's changelog and are not
backfilled here; see `docs/semver-policy.md` for why.
+## [0.3.0]
+
+### Breaking
+
+- `math.snoise(float3)` and `math.snoise(float2)`, and their HLSL mirrors
+ `cultmath_snoise`, return different values. The kernel now follows
+ stegu/webgl-noise: the falloff `r^2` constant is 0.5 (was 0.6), the output
+ scale is 105 (was 42), and 2D and 3D share one permutation offset of +10.
+ This removes the value discontinuities the 3D kernel had at simplex cell
+ boundaries. Any content seeded from `snoise` changes; regenerate it when
+ you take this version.
+
+### Added
+
+- `math.smin_grad`: smooth minimum with gradient, for `float4` operands
+ carrying the gradient in `xyz` and the value in `w`.
+- `math.cellular` and the `CultCellular` result struct: cellular (Worley)
+ noise returning the gradient and distance to the nearest feature points.
+- `math.snoise_grad`, `math.fbm_grad` and `math.ridged_grad`: simplex noise,
+ fractal Brownian motion and ridged multifractal with analytic gradients,
+ returned as `float4` with the gradient in `xyz` and the value in `w`.
+- `math.phacelle` and the `CultPhasor` result struct: Phacelle noise with
+ gradient. `math.Phacelle.cs`, `CultPhasor.cs` and
+ `Shaders/CultMath.Phacelle.hlsl` are MPL-2.0 (see
+ `THIRD-PARTY-NOTICES.md`).
+- `BoundedLeastSquares`: an allocation-free, deterministic bounded
+ least-squares solver (`Solve`) with a status result and the input contract
+ documented on the type.
+- The matching `cultmath_*` HLSL mirrors of the functions above in
+ `Shaders/CultMath.hlsl` and `Shaders/CultMath.Phacelle.hlsl`.
+
## [0.2.4]
### Added
diff --git a/packages/cultmath/unity/org.gamecult.cultmath/package.json b/packages/cultmath/unity/org.gamecult.cultmath/package.json
index fc0e64c7..ed9ca931 100644
--- a/packages/cultmath/unity/org.gamecult.cultmath/package.json
+++ b/packages/cultmath/unity/org.gamecult.cultmath/package.json
@@ -1,7 +1,7 @@
{
"name": "org.gamecult.cultmath",
"displayName": "CultMath",
- "version": "0.2.4",
+ "version": "0.3.0",
"unity": "2021.3",
"description": "Precompiled CultMath numeric primitives and matching HLSL semantics for GameCult Unity runtimes.",
"license": "MPL-2.0",