aukio-3d.git
2 weeks agoPackage relocation: make package structure real and acyclic
Svjatoslav Agejenko [Sun, 20 Sep 2026 08:46:18 +0000 (11:46 +0300)]
Package relocation: make package structure real and acyclic

Moved (git mv, move-only, no behavior change):
- gui -> renderer.raster: RenderingContext, SegmentRenderingContext,
  HiZPyramid, CullingStatistics, StereoEye, Frustum, Vertex (math)
- gui -> diag: ThreadActivityRecorder, DebugLogBuffer
- gui -> geometry: Camera (decoupled from gui.FrameListener: dead
  ViewPanel param dropped, panel registers a lambda adapter)
- geometry -> renderer.raster.shapes.composite.base: Plane, BspTree,
  PolygonType (CSG machinery, used only by shapes)
- renderer.octree -> geometry: IntegerPoint (zero-dep coordinate type)
- ShapeCollection's ViewPanel overloads deleted (trivial delegates;
  callers pass getCamera()); RenderingContext.bufferedImage made public
  (AWT shell blits it); javadoc {@link}s re-qualified.

Resulting layering: math <- geometry <- renderer.raster <- gui, with
diag a standalone leaf. Remaining known renderer->gui edges (next
refactor): DeveloperTools field + mouse-picking API types
(MouseEvent/MouseInteractionController/ViewSpaceTracker/TextPointer)
and demo-only RayTracer->ViewPanel.

Verified: engine 37/37 tests, all 3 consumer repos (demos, aukio,
aukio-environment-fo4) compile, demo goldens bit-identical to the
pre-relocation run.

2 weeks agoHoist per-triangle mipmap metrics out of the per-tile paint path
Svjatoslav Agejenko [Sun, 20 Sep 2026 08:17:58 +0000 (11:17 +0300)]
Hoist per-triangle mipmap metrics out of the per-tile paint path

- paintFlat no longer recomputes the screen-edge perimeter (3 sqrt) per
  overlapped tile: callers pass it in. Object path already computed it
  in paintTriangle (it was computed twice per paint); mesh handles read
  a per-slot value computed once in TriangleMeshBlock.transform (queued
  triangles only). Clipped fan sub-triangles compute inline (rare).
- TriangleMeshBlock UV perimeter (origTtd) precomputed once at build
  into uvPerimeter[] instead of 3 sqrt over the final uv[] per paint.

Bit-exact: same expressions, same accumulation order, same inputs —
verified by identical golden diff counts against the pre-change run
(23/23 scenes).

2 weeks agoParallel radix sort for large render queues
Svjatoslav Agejenko [Sun, 20 Sep 2026 02:29:37 +0000 (05:29 +0300)]
Parallel radix sort for large render queues

The radix path now uses the paint executor: key build, the 8 LSD passes
(per-chunk histograms, digit-major/chunk-minor offsets, per-chunk
scatter) and the final permute all run chunked in parallel. Stability is
preserved exactly, so the output is bit-identical to the serial sort for
any chunk count (pinned by a new RadixLongSortTest property test over
sizes 0..250k x chunk counts 1..8) — golden-image determinism intact.

Also deletes the now-unreachable parallelMergeSort/runSortTasks/
mergeRuns (~100 LOC) and routes the no-executor (headless) path through
the serial radix instead of Arrays.parallelSort.

Measured on a 24-core desktop (450k pairs, SortBench/SortSweep harnesses):
sort phase ~7 ms serial -> ~4-5 ms parallel (1.2-1.8x; bandwidth-bound,
frequency-capped test machine). Key-build/permute parallelization comes
on top in the full pipeline.

2 weeks agoComment/doc truth pass: purge painter-era and double-buffer-era staleness
Svjatoslav Agejenko [Sun, 20 Sep 2026 02:13:15 +0000 (05:13 +0300)]
Comment/doc truth pass: purge painter-era and double-buffer-era staleness

Code comments/javadoc now match the z-buffer, triple-buffered reality:
- RenderAggregator class javadoc (was painter's algorithm), ctor slot docs
- ViewPanel frameContexts/frameParity comments (was double-buffer/parity)
- RenderingContext depth comment (dropped dead -Daukio.zbuffer knob and
  'Null in classic painter mode' — depth is always allocated)
- TexturedTriangle/ShapeCollection/package-info: slot ranges 0..2,
  javadoc links retargeted off deleted painter span writers
- AGENTS.org: removed dead BSP-painter and Agentic-development doc links,
  added Depth buffer doc, LightmappedCompositeShape + TriangleMeshBlock
  to the class catalog, render-pipeline overview now describes the
  radix-sort + two-pass z-buffer flow
- TODO.org: dropped completed 'Add 3D mouse support' (SpaceMouse exists)

No behavior change.

2 weeks agoDelete verified dead code (~340 LOC)
Svjatoslav Agejenko [Sun, 20 Sep 2026 02:05:12 +0000 (05:05 +0300)]
Delete verified dead code (~340 LOC)

Classes unreferenced across engine, tests and all consumer repos
(demos, aukio, aukio-environment-fo4): geometry.Circle,
gui.ViewUpdateTimerTask, gui.humaninput.Connexion3D,
renderer.octree.raytracer.RayHit,
shapes.composite.solid.SolidPolygonMesh,
shapes.composite.wireframe.WireframeDrawing.

Also: ViewPanel.renderExecutor — a thread pool that was created,
resized and shut down but never submitted to; and the write-only
static renderFrameCount counter.

2 weeks agoRename doc/ to Documentation/ and unify version at 1.0.0-SNAPSHOT
Svjatoslav Agejenko [Sat, 19 Sep 2026 21:41:33 +0000 (00:41 +0300)]
Rename doc/ to Documentation/ and unify version at 1.0.0-SNAPSHOT

- Documentation/ picks up the whole former doc/ tree (org sources,
  diagrams, screenshots); export-docs.sh comments follow
- .gitignore, AGENTS.org and Tools/Update web site updated to the new
  layout (export scan, javadoc staging, graphs, upload)
- pom.xml: 1.5-SNAPSHOT -> 1.0.0-SNAPSHOT; correct <scm> to the
  current hosting URL

2 weeks agoinitial commit
Svjatoslav Agejenko [Sat, 19 Sep 2026 18:50:12 +0000 (21:50 +0300)]
initial commit