CultLib/packages/cultmath/unity/org.gamecult.cultmath/README.md
Meta Vens 0acc3728ed CultMath: Phacelle port moves into MPL-2.0 files; prune cut pinned by boundary points
MPL-2.0 is file-level and the Phacelle port sat inside MIT files. phacelle and
CultPhasor now live in math.Phacelle.cs and CultPhasor.cs, and cultmath_phacelle
in CultMath.Phacelle.hlsl (included by CultMath.hlsl, both tracked copies), each
with the MPL header and Johansen / Luke Mitchell attribution. math stays one
partial class, so math.phacelle is called exactly as before. The GameCult.Math
package declares MIT AND MPL-2.0 and packs THIRD-PARTY-NOTICES.md and the new
include; the Unity LICENSE.md points at CultLib; build-unity-package.ps1
requires the new include.

The random sweeps never met a cell whose box bound sits just under the 2.25 cut
while its weight is still nonzero, so cuts of 2.245, 2.24 and 2.2 survived.
Six hard-coded points (found by an offline search) sit next to such cells; the
C# pruned-vs-unpruned test and the HLSL mirror test both use them, with a
witness check that re-derives the property from the hash.

Docs: the prune keeps about 45 of 64 cells (14 is the nonzero-weight count),
the support radius is 1.49998 (d^2 = 2.24995), normalization's range and
saturation, W = 0 only for adversarial hashes, and the support-edge gradient
seam size.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 00:34:27 +02:00

1.6 KiB

CultMath for Unity

This is CultMath's Unity 2021.3-compatible Git-UPM surface. It contains the precompiled CultMath.dll, portable symbols, the numeric Shaders/CultMath.hlsl mirror (with its CultMath.Phacelle.hlsl include), and the CultMath.UnityBridge assembly.

CultMath.UnityBridge is the only C# source Unity compiles here. It holds the UnityEngine conversions the engine-free core cannot declare: ToCultMath() on Vector2/3/4, Vector2Int/3Int, Quaternion, and Color; ToUnity() on float2/3/4, int2/3, and quaternion; ToColor() on float4. C# only admits conversion operators on the source or target type, so these are extension methods rather than implicit casts. Import CultMath.UnityBridge to use them.

Unity does not compile CultMath's repository source tree. That source uses the current C# language and remains owned by the normal .NET project. The package imports only the tracked auto-referenced precompiled assembly, so consumers do not need csc.rsp language overrides or an asmdef propagation shim.

Build and inspect the package from the repository root:

.\scripts\build-unity-package.ps1

The builder fresh-builds CultMath for netstandard2.1, verifies the tracked DLL/PDB and stable Unity metadata, and stages an inspectable package under artifacts/unity/org.gamecult.cultmath.

Consume the repository package with:

"org.gamecult.cultmath": "https://github.com/GameCult/CultLib.git?path=/packages/cultmath/unity/org.gamecult.cultmath"

Production consumers should pin that URL to a commit or release tag.