Third-Party Notices
This package contains third-party software components governed by the license(s) indicated below.
Serialization & Compression¶
protobuf-net¶
- Description: .NET runtime/library for Protocol Buffers serialization by Marc Gravell.
- Upstream: GitHub repository
- License: Apache License 2.0
- License URL: Apache License 2.0
- Notes: Uses attributes such as [ProtoContract]/[ProtoMember] and runtime
ProtoBuf.Serializer.
7-Zip LZMA SDK¶
- Description: LZMA compression/decompression implementation (encoder/decoder) used via
SevenZip.Compression.LZMA. - Upstream: 7-Zip LZMA SDK
- License: Public Domain (per 7-Zip LZMA SDK)
- Notes: Integrated sources under
Runtime/Utils/SevenZip/Compress/LZMA.
Editor Tools¶
Unity-Serializable-Dictionary¶
- Description: Serializable dictionary implementation enabling Unity serialization of generic dictionaries.
- Upstream: GitHub repository
- License: MIT License
- License URL: MIT License
- Notes: Adapted naming and serialization cache handling to align with Wallstop Studios Unity Helpers conventions.
Unity Editor Toolbox (Inline Editor)¶
- Description: Inline inspector drawer inspiration for editing object references in-place.
- Upstream: GitHub repository
- License: MIT License
- License URL: MIT License
- Notes: Portions of
WInLineEditorDrawerbuild upon concepts from the toolbox's InlineEditor drawer implementation.
SeniaAnimationEventEditor¶
- Description: Editor window for inspecting and editing
AnimationEvententries on anAnimationClip. - Author: yujen
- Upstream: GitHub gist
- License: Not recorded in this repository.
- Notes: Portions of
Editor/AnimationEventEditor.csare adapted from this gist.
Sorting Algorithms¶
The following sorting algorithm implementations in Runtime/Core/Extension/Sorting/ are adapted from or inspired by third-party sources.
Pattern-Defeating QuickSort (pdqsort)¶
- Description: Hybrid sorting algorithm combining quicksort with insertion sort and heapsort fallback.
- Author: Orson Peters
- Upstream: GitHub repository
- License: zlib License
- Notes: C# adaptation retaining pattern-detection heuristics while operating on
IList<T>.
Grail Sort¶
- Description: Block merge sort algorithm achieving stable O(n log n) sorting with O(1) extra space.
- Author: Mrrl (Andrey Astrelin)
- Upstream: GitHub repository
- License: MIT License
- Notes: Adaptation uses pooled buffers instead of manual block buffers while keeping stability.
WikiSort (Block Merge Sort)¶
- Description: In-place stable merge sort using block rearrangement.
- Author: Mike McFadden (BonzaiThePenguin)
- Upstream: GitHub repository
- License: Public Domain
- Notes: Adaptation uses a pooled full-size buffer for simplicity.
PowerSort¶
- Description: Adaptive mergesort leveraging natural runs with optimal merge scheduling.
- Authors: J. Ian Munro and Sebastian Wild
- Upstream: arXiv paper
- License: CC BY 4.0 (paper); algorithm is public domain
- Notes: Implementation detects runs and merges them with pooled buffers.
sort-research-rs Algorithms (Glidesort, Fluxsort, Ipnsort)¶
- Description: Modern high-performance sorting algorithms from the sort-research-rs project.
- Authors: Orson Peters, Lukas Bergdoll (Voultapher)
- Upstream: GitHub repository
- License: Apache License 2.0 / MIT License (dual-licensed)
- Notes: C# adaptations of Glidesort (stable galloping merges), Fluxsort (dual-pivot quicksort), and Ipnsort (introspective quicksort with median-of-medians).
IPS4o Sort¶
- Description: In-place parallel super scalar samplesort.
- Authors: Michael Axtmann, Sascha Witt, Daniel Ferizovic, Peter Sanders
- Upstream: arXiv paper
- License: Academic paper; algorithm concepts are freely implementable
- Notes: Single-threaded C# adaptation with multiway partitioning.
YamSort¶
- Description: Stable top-down bisection mergesort that adapts its insertion-sort threshold and merge strategy to how sequential the data turns out to be.
- Author: Gary Gende
- Upstream: GitHub repository
- License: MIT License
- Notes: Adaptation in
Runtime/Core/Extension/Sorting/IListSortYam.csreplaces the upstreamSpan/IComparablesurface withIList<T>and an explicit comparer.
Random Number Generators¶
The following PRNG implementations in Runtime/Core/Random/ are adapted from or inspired by third-party sources.
PCG Random¶
- Description: Permuted Congruential Generator family of PRNGs with excellent statistical properties.
- Author: Melissa O'Neill
- Upstream: PCG Random website
- Paper: PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation
- License: Apache License 2.0
- Notes: Implementation based on the reference PCG Random.
Xoroshiro / Xoshiro / SplitMix64¶
- Description: Fast, high-quality PRNGs with small state.
- Authors: David Blackman, Sebastiano Vigna
- Upstream: Scrambled Linear PRNGs (xoshiro/xoroshiro); reference implementations; Fast Splittable PRNGs (SplitMix64)
- License: CC0 1.0 Universal (Public Domain)
- Notes: Implements xoroshiro128+ (returning the low 32 bits of each 64-bit output), xoshiro128**, xoshiro256**, and SplitMix64.
RomuDuo¶
- Description: Rotate-multiply PRNG family optimized for modern CPUs.
- Author: Mark A. Overton
- Upstream: Romu reference code (archived); Overton's paper
- License: Apache License 2.0
- License URL: Apache License 2.0
- Notes: Implements published romuDuo: two 64-bit state words, the ROMU multiplier and the
ROTL(y,36) + ROTL(y,15) - xupdate. Through 3.5.1 the update rule differed from both published romuDuo and romuDuoJr; see Runtime/Core/Random/RomuDuo.cs.
SFC64¶
- Description: Small Fast Chaotic 64-bit generator: three 64-bit state words plus a draw counter.
- Author: Chris Doty-Humphrey; MIT-licensed reference adaptation by Melissa E. O'Neill
- Upstream: O'Neill's sfc64 reference; distributed with the PractRand test suite
- License: MIT License
- License URL: MIT License
- Notes: Implements sfc64 with the canonical seeding (counter starts at 1, twelve warm-up draws).
NextUintreturns the upper half of the output word; see Runtime/Core/Random/Sfc64Random.cs.
WyRandom (wyhash)¶
- Description: Fast PRNG based on the wyhash hash function.
- Author: Wang Yi
- Upstream: GitHub repository
- License: The Unlicense (Public Domain)
- .NET Reference: cocowalla/wyhash-dotnet (MIT License)
- Notes: Implementation references the cocowalla .NET port.
Will Stafford Parsons Algorithms¶
The following algorithms are by Will Stafford Parsons (GitHub: wstaffordp). Note: the original GitHub repositories are currently unreachable (HTTP 404 as of 2026-08).
- IllusionFlow: Five-word 32-bit rotate/xor/add generator with a Weyl counter.
- FlurryBurst: Six-word ARX-style generator.
- StormDrop: Large-state ARX generator over a 1024-word ring buffer.
- PhotonSpin: 20-word ring-buffer generator.
- BlastCircuit: Four-word ARX-style generator.
- WaveSplat: One-word chaotic generator.
- Meteor Sort: Gap-sequence-based hybrid sorting algorithm.
- Ghost Sort: Hybrid gap-based sorting algorithm.
License: These implementations are used with attribution to the original author. Please refer to the individual repositories for specific licensing terms if they become available again.
Perlin Noise (Improved Noise)¶
- Description: Gradient noise function; the default permutation table and the fade and gradient functions come from Ken Perlin's reference implementation.
- Author: Ken Perlin
- Upstream: Not recorded in this repository (Ken Perlin's Improved Noise reference implementation).
- License: Not recorded in this repository.
- Notes: Implemented in
Runtime/Core/Random/PerlinNoise.cs, which adds seeded permutation shuffling and Unity vector overloads.
Runtime Utilities¶
The following runtime helpers adapt code or techniques published by others.
Ramer-Douglas-Peucker Line Simplification¶
- Description: Polyline simplification by recursive perpendicular-distance splitting.
- Authors: Algorithm by Ramer, Douglas, and Peucker; the C# implementation adapted here was published by Craig Selbert.
- Upstream: CodeProject article (archived)
- License: Not recorded in this repository.
- Notes:
Runtime/Core/Helper/LineHelper.csadapts the implementation for Unity vector types.
Unity Community Wiki TextureScale¶
- Description: Bilinear and point texture scaling routines for
Texture2D. - Author: Not recorded in this repository.
- Upstream: Unity Community wiki
- License: Not recorded in this repository.
- Notes:
Runtime/Utils/TextureScale.csadapts these routines with pooled buffers, task-based parallelism, input validation, and center-aligned sampling.
Academic & Historical Acknowledgments¶
The following algorithms are based on well-known academic work and are implemented from published descriptions:
Sorting Algorithms¶
- TimSort: Hybrid stable sort by Tim Peters. His description
- Dual-Pivot Quicksort: Partitioning scheme published by Vladimir Yaroslavskiy (2009), used by
FluxSort's partition helper. - SmoothSort: Heap-based adaptive sort by Edsger Dijkstra. Further analysis by Stefan Edelkamp and Armin Wegener.
- JesseSort: Dual-patience sort hybrid by Jesse Lew (Copyright © 2026 Jesse Lew), licensed under MIT. GitHub
- greeNsort: Symmetric mergesort by Jens Oehlschlegel. Website
- Ska Sort: Branch-friendly dual-pivot quicksort by Malte Skarupke. Blog post
- PowerSort+: Enhanced run-priority mergesort by Sebastian Wild and Martin Nebel.
Random Number Generators¶
- XorShift: Classic PRNG by George Marsaglia (2003). Paper
- Linear Congruential Generator: "Quick and dirty" LCG (a = 1664525, c = 1013904223, m = 2^32) from Press et al., Numerical Recipes in C (ranqd1), after Knuth and H. W. Lewis.
- Squirrel Noise: Hash-based noise function by Squirrel Eiserloh. GDC Talk
- SystemRandom: Reimplements the algorithm of .NET's classic
System.Random: Knuth's subtractive lagged-Fibonacci generator (modulus 2^31-1, the 161803398 seed constant, and a 55-element lag table) from Donald Knuth, The Art of Computer Programming, Vol. 2.
Sampling & Geometry¶
- Uniform Random Rotations: Shoemake, "Uniform Random Rotations", Graphics Gems III. Implemented in
RandomExtensions.NextRotation. - Sphere Point Picking: Marsaglia's rejection method for uniform points on a sphere. Implemented in
RandomExtensions.
Additional Notes¶
- System.Text.Json and other .NET BCL components are used as part of the .NET runtime and are subject to their respective licenses (e.g., MIT for dotnet/runtime). No vendored sources from these components are included in this repository.
Full License Texts¶
MIT License¶
Used by: Unity-Serializable-Dictionary, Unity Editor Toolbox, Grail Sort, YamSort, JesseSort, cocowalla/wyhash-dotnet
Apache License 2.0¶
Used by: protobuf-net, PCG Random, RomuDuo, sort-research-rs algorithms
zlib License¶
Used by: pdqsort
CC0 1.0 Universal (Public Domain Dedication)¶
Used by: Xoroshiro/Xoshiro/SplitMix64
The Unlicense¶
Used by: wyhash