Repository navigation
The reference's benchmark suite and missing tests: nine scenes, SAT runs, test_collision, test_hash, the hash reads every byte (#141, #145) - #153
Merged
Conversation
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The rest of Box3D
e77352c's benchmark suite, and the reference tests a coverage audit found missing or partly ported (#142 to #149 track the rest).The benchmark suite (#141, closes it).
bench/suite.aeports the nine scenes ofbenchmark/main.cwe lacked (convex_pile, junkyard, large_world, sleep, spinner, trees25/50/100, washer) and its SAT runs.bench/suite_box3d.cruns the reference's own scene functions fromshared/benchmarks.candshared/sat_benchmark.cthe same way, andscripts/bench.sh suiteruns both. Pinned, best of two, ours against the reference's AVX2 build: 1.04x to 1.21x on every scene. The large world (a million static boxes) and the sleep scene end with the same height sum and contact count to the printed digit. The spinner's motor angle after 800 steps agrees to five digits. The SAT runs found two gaps, filed as #150 (the wide hull SAT, 1.5 to 3.4x) and #151 (the broad phase's boxes in float with outward rounding, as the reference's large-world build keeps them; pairs 1.4 to 1.6x).hull.create_complex_hull, PEEL's convex, comes with the suite: the reference's own 32 points from the same generator, the same hull counts, mass and centre.test_hash.c (#145, closes it).
tests/test_hash.aeholds our content hash to the reference's properties. That found a real defect.basics.hash_bytesread only whole 8-byte words and folded in the word count, so any blobs differing only in a tail of fewer than eight bytes collided: 4,096 zero blobs of different lengths gave 512 digests. It now reads the tail (a newnative.load_u8) and folds the byte count, and an empty blob takes the reserved 1 as the reference's does. Every family passes: word pairs, bit flips, lengths, sign flips, ULP steps, boxes, turned boxes, cylinders and cones, height fields, meshes, voxel dispersion, stability. The hash only decides which blocks a compound shares, each confirmed byte for byte, so no result moves. HashVoxelHullDatabase goes with the hull database, #147.The smaller gaps (#146, most of it):
tests/test_collision.aeis test_collision.c whole: box validity, the ray against a box in all twelve cases, a hull manifold and fat bounds at 1e7.arbitrary_perp, moved to the math module where the reference keeps it.test_basics.ae.Still open in #146: shape names on the def and the maximum manifold points (they need the API of #148), the broad phase stress test, and the SIMD width test.
test_world.c (#142, the partials and one more):
set_motion_locksboth ways.Still open in #142: the compound hit events and materials, the overflow colour pile, the worker count.
Also:
&f()reaching gcc as "lvalue required"). The tests are written the way the language allows today.Local gate on Aether 0.794.0: all 33 suites pass, no warnings, and the golden determinism trace matches bit for bit (the hash fix moves no result). Pins: Aether 0.794.0 and aeb v0.325, the latest releases.
Closes #141. Closes #145. Refs #142, #146.