feat(3d): gl1 shim M4+M6+M7 — GLU quadrics, production link, stub retired; 47/47 parity

- gl1_glu: gluCylinder/gluDisk/gluSphere per the SGI GLU reference
  tessellation (sin/cos phase, strip emission order, pole fans — Apple's
  GLU derives from the same source, so vertices match the goldens);
  emission goes through the public glBegin/glVertex entry points so
  quadrics record into display lists
- glLineWidth>1 one-time warning (browsers clamp to 1; affected coverage
  stays under the parity floor — zero floors.json overrides needed)
- production link site: build-kicad-target.sh now compiles wasm/gl1 from
  sources.txt and applies wrapped_symbols.txt --wrap flags (same manifests
  as the test harness); kicad_editor's RENDER_3D_OPENGL links against the
  real emulation layer instead of no-ops
- wasm/stubs/gl_ffp_stub.c deleted (role fully superseded; history in git)
- docs: 3d-regression README port-status section (floor-blind small
  geometry + line-width caveats), harness comments de-red-stated

Parity: 47/47 under the 0.02 floor, zero overrides. Native golden path
byte-identical to bb0e238 (whose gate ran green) — scenarios/, native/,
baseline/, manifest, floors, spec all untouched by the port.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Istvan Matejcsok 2026-07-03 11:56:19 +02:00
commit 27992f4f18
8 changed files with 240 additions and 157 deletions

View file

@ -3,8 +3,8 @@
# Build script for the 3D-renderer WebGL test harness (WASM).
#
# Builds the shared 3D scenarios (tests/3d-regression/scenarios) + real KiCad
# 3D-viewer TUs against the FFP no-op stubs (wasm/stubs/gl_ffp_stub.c) — the
# TDD red state for the OpenGL->WebGL port. Output: tests/apps/3d-webgl/.
# 3D-viewer TUs against the wasm/gl1 GL1->WebGL2 emulation layer (the
# OpenGL->WebGL port). Output: tests/apps/3d-webgl/.
#
# Requires the wxWidgets WASM build (scripts/build-wx-wasm.sh) and the sysroot
# headers (boost/glm) in build-wasm/sysroot.
@ -15,7 +15,7 @@
# ./scripts/build-3d-webgl-test.sh --debug # Debug build with source maps
#
# Modeled on scripts/build-gal-webgl-test.sh (no shader-generation step — the
# FFP renderer has no GLSL yet; the port will add one here).
# gl1 shim's FFP uber-shader lives inline in wasm/gl1/src/gl1_shaders.cpp).
#
source "$(dirname "$0")/common/logging.sh"