render3d im Browser: WASM/WebGPU-3D-Viewport hinter ?engine=wasm

Feature web (wasm-bindgen) + cdylib analog render2d; WebModelRenderer
mit Canvas-Surface, set_model (walls/slabs wie der native Push) und
set_camera. Projektion liefert bereits [0,1]-Clip-Z, math.rs unveraendert.
wgpu-22-requestDevice-Shim in src/engine/requestDeviceShim.ts geteilt.
Neuer Hook useWasm3dRenderer + Wasm3DViewport (Orbit/Pan/Zoom wie three.js-
Sicht); Viewport3D dispatcht per ?engine=wasm bzw. localStorage, three.js
bleibt Default. Build-Script build:engine3d (wasm-pack, src/engine/pkg3d).
Verifiziert headful per scripts/probe-engine3d.mjs (37 % Geometrie-Pixel);
headless praesentiert Chromium keine WebGPU-Frames (auch bei render2d).
This commit is contained in:
2026-07-03 07:41:37 +02:00
parent 87d12b976f
commit 0e484746de
13 changed files with 914 additions and 2 deletions
+5
View File
@@ -768,4 +768,9 @@ export const en: Record<TranslationKey, string> = {
"rt.color": "Color",
"rt.preset": "Preset",
"rt.preset.none": "— Preset —",
// ── 3D viewport (native engine, WASM/WebGPU) ────────────────────────────────
"viewport3d.engineUnavailable": "3D engine unavailable",
"viewport3d.engineUnavailableHint":
"WebGPU could not be initialized. Switch to WebGL2 in the status bar to keep using the 3D view.",
};