Commit Graph

8 Commits

Author SHA1 Message Date
Ludovic Marie 0b581f9ffe Give each crate's probe example its own target name
horizon-client, horizon-world and horizon-protocol each had an example
named `probe`. Cargo copies every crate's examples into one
<profile>/examples/ directory, so parallel parity harnesses sharing a
target dir could run another crate's probe (CI parity run 40055656303:
command_parse ran the horizon-world dispatcher). The examples are now
client_probe, world_probe and protocol_probe ([[example]] in each
Cargo.toml; the files stay where they are), and every harness builds
and runs its own crate's name.

tools/parity.py recognises the new names when it counts the probes a
harness ran, and renames the old `probe` in recorded artifacts to the
crate's target (from the record's -p, else its probe sources), so the
prebuild still builds them instead of dropping them as unknown.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 08:08:18 +02:00
Ludovic Marie 858f701ee8 Run the horizon-client parity probes from one binary
81 client examples that harnesses run become modules of examples/probe:
harnesses run `probe <name> ...` (or `cargo run --example probe -- <name>`),
and the shared helpers (audio_common, hud_fixture, chat_screen_fixture)
move with them. The benchmarks and manual tools stay standalone examples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 16:30:38 +02:00
Ludovic Marie ce87bfb8c7 Tools read the pinned Minecraft version from research-lock.json
lab.VERSION, lab.GAME (.local/minecraft/<version>) and lab.RESOURCES
(.local/horizon-client/<version>) come from the lock, and lab.version_info()
reads the pinned client jar's version.json. Every harness, generator and
tool that named 26.3 (resource folders, jar and source paths, result
records, the vanilla client's --version and asset index, the bare login
client's protocol, the benchmark's options.txt data version, the packet id
table's header) uses them, so a candidate worktree pinned to another version
runs them unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:22:20 +02:00
Ludovic Marie 88efc73ac1 Mesh biome tints through the zoomed biome and honour lighting options
The section mesher blended biome colours over quart cells at the section's
mid-height. It now follows ClientLevel.calculateBlockTint: each tinted block
averages the colours of the biomes BiomeManager picks (the eight-corner
zoom with the client's hashed seed) over the biomeBlendRadius square at the
block's own height, computed lazily per layer and column. The ao and
cutoutLeaves options are honoured too: flat lighting, skipped faces between
opaque leaves and a vertex layer flag that makes the terrain shader ignore
leaf alpha.

The section mesh parity gate gained biome-blend scenes (random zoom seeds,
radii 0 to 7, all 67 biomes, real Biome colour resolvers through a
BiomeManager in the Java oracle) and option scenes; all 1.0M quads of the 112
scenes match the client.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 13:52:25 +02:00
Ludovic Marie 9edcbc2559 Give parity harness javac runs the oracle source path
Oracles reference shared helper oracles (heightmap, level shape...) that
javac could not find when only the entry files were listed. Also let
chunkgen_bench list unsupported features (HORIZON_LIST_UNSUPPORTED=1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 23:33:12 +02:00
Ludovic Marie 0c073bb377 Cover every model state and dense mixed scenes in the section mesh gate
Adds the all-states catalogue and dense random scenes with fluids, a
--quick mode, fixture meshing time in the report, and clippy fixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:39:01 +02:00
Ludovic Marie 86dac330a5 Port vanilla block lighting and fluid rendering into the section mesher
Smooth lighting and ambient occlusion now follow BlockModelLighter
(cubic/partial faces, diagonal samples through light-permeable blocks,
light blending with the sky-borrow and zero rules, partial-face weights),
with vanilla's integer colour arithmetic, cardinal shading, quad light
emission, flat lighting for emitting or non-AO blocks, tint source counts
and random block offsets. Fluids follow FluidRenderer: occlusion against
neighbour face shapes, legacy-solid corner heights, flow-rotated UVs with
Mth.atan2 and the sine table, water overlay beside glass and leaves, back
faces and max(self, above) light. Flat model elements skip their
degenerate faces like UnbakedCuboidGeometry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:29:32 +02:00
Ludovic Marie 2940b5ac90 Add section mesh parity gate against the client's block and fluid renderers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:13:16 +02:00