Commit Graph
2 Commits
Author SHA1 Message Date
leonarski_fandClaude Opus 5 4e15fba98a Pin what the beam-stop parallelisation must not change
The mask rewrite replaces a BFS dilation with a separable box-max, a full-frame border flood with a
bounded one, and three median passes with a single bin-and-rank - four separate equivalence
arguments, none of them obvious by inspection. The reference count in the first test was taken from
the serial implementation before any of it was picked, and is unchanged by all three commits.

Two properties the reference alone cannot cover: the mask must not depend on how many threads split
the per-pixel passes, and it must not depend on which shard a frame was accumulated into - including
the maximum, which lives in a single shard when the reflection is on one frame. A four-armed scene is
invariant under a quarter turn and so must its mask be, which is the sharpest probe available for the
x and y passes being written differently.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VfYvJT5Nb71suJCowRBn5z
2026-08-23 12:51:53 +02:00
leonarski_fandClaude Opus 5 6190787913 Test that the beam-stop finder finds a beam stop
ShadowFinder has run by default in rugnux for a release and has never had a test. The scene is a
beam stop - an opaque disk on the beam with an arm running off it to the edge - and the mask has to
be that and nothing else: not the corners, and not a reflection recorded through the penumbra, which
has to be given back.

The last assertion pins the number of masked pixels as the serial implementation produces it. The
detection is several passes of dilation, hole filling and a per-ring median, and a rewrite that moves
the answer by a pixel would otherwise surface as a merging statistic several stages downstream, if at
all. The scene is integer and noise-free so every mean is exact, and 257 is odd, square and not a
multiple of 64 - the beam lands on a pixel, a cross is exactly 4-fold symmetric, and the
column-blocked passes meet a short final block.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VfYvJT5Nb71suJCowRBn5z
2026-08-23 12:49:44 +02:00