From c595c40f08d044fea3e872427faa397aafd052fa Mon Sep 17 00:00:00 2001 From: Matthew Stanley <1379tech@gmail.com> Date: Wed, 5 Aug 2026 16:18:30 -0700 Subject: [PATCH] =?UTF-8?q?docs:=20isolation=20resolves=20it=20=E2=80=94?= =?UTF-8?q?=20perspective=20textures=20ship,=20geometry=20correction=20doe?= =?UTF-8?q?s=20not?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three runs on Ape Escape, same scene: off/off clean (the control, which also clears the 92-commit framework and 64-commit UI jumps), geometry-only lines, perspective-only clean. perspective_texturing never moves a vertex — it only changes UV interpolation inside a polygon with fully proven provenance — so neighbours cannot disagree about a shared edge and nothing cracks. It is safe to ship. geometry_correction moves vertices at ~5% coverage, so corrected and uncorrected triangles meet along shared edges. The seams trace polygon boundaries, confirming G1.4 and retiring G1.7's misread of the artifact as scene-spanning lines. Not tunable; needs the full PGXP dataflow. Co-Authored-By: Claude Opus 5 (1M context) --- ENHANCEMENTS.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ENHANCEMENTS.md b/ENHANCEMENTS.md index c0c10e32..d42f7846 100644 --- a/ENHANCEMENTS.md +++ b/ENHANCEMENTS.md @@ -709,3 +709,32 @@ precise_consumed() only on the GPU path — the `!s_raster_ok` software-fallback branch returns EARLY without clearing s_pc_valid, so an override could be applied to a primitive it was never computed for. That would displace a vertex arbitrarily and produce exactly these long stretched lines. + +### G1.8 — RESOLVED by isolation: perspective textures SHIP, geometry correction DOES NOT + +The control run and the two isolation runs were finally done, on Ape Escape, +OpenGL, supersampling 2, same scene each time: + +| geometry_correction | perspective_texturing | result | +|---|---|---| +| off | off | **clean** (the control — establishes the framework/UI jumps are NOT the cause) | +| **on** | off | **lines** | +| off | **on** | **clean** | + +**`perspective_texturing` is good and should ship.** It is unaffected by the +coverage problem: it only alters UV interpolation inside a polygon whose +provenance is fully proven, so a polygon either gets perspective UVs or keeps +the PS1's affine ones. Neither outcome moves a vertex, so adjacent polygons +cannot disagree about a shared edge and nothing can crack. + +**`geometry_correction` must not be offered.** It moves vertices, and at ~5% +coverage a corrected triangle meets an uncorrected neighbour along a shared +edge — the seams in the isolation run trace polygon boundaries, confirming +G1.4's mechanism (and retiring the "long scene-spanning lines" reading in G1.7, +which misjudged the artifact). It cannot be fixed by tuning: it needs the full +PGXP dataflow of G1.2/G1.3 to reach coverage where meshes move as one. + +**Recommended disposition:** keep the `perspective_texturing` setting and its +launcher row; withdraw the `geometry_correction` row until value propagation +lands (leave the setting readable from game.toml/settings.toml so the work +stays testable, but do not present it to players).