render2d im Browser: WASM/WebGPU-Viewport hinter ?engine=wasm
Integrations-Spike: die native 2D-Engine (src-tauri/render2d) laeuft jetzt als WASM/WebGPU-Canvas in der App-UI, mit derselben Szene (planToRenderScene) und ViewBox wie der WebGL2-Pfad; das SVG-Overlay (Text/Griffe/Auswahl) bleibt drueber. - render2d: neues Feature "web" (wasm-bindgen/web-sys), Fassade WebPlanRenderer (new/set_scene/set_view_box/set_paper_scale/resize/render) auf Canvas-Surface. Geteilte GPU-Schicht (gpu.rs), native Fensterschicht (winit) unberuehrt. - Font: cosmic-text findet auf wasm keine Systemfonts -> Inter-Bytes eingebettet (assets/Inter.ttf), Renderer.load_font + text_family aus der geladenen Familie. - Frontend: useWasmPlanRenderer (gleiche Schnittstelle wie useGlPlanRenderer); PlanView waehlt die Engine per ?engine=wasm + navigator.gpu, sonst WebGL2/SVG. - Build: npm-Script build:engine (wasm-pack, target web -> src/engine/pkg, gitignored). chromium-shell.sh mit WebGPU-Flags (--enable-unsafe-webgpu/Vulkan). - Kompat-Shim: wgpu 22 sendet das spec-entfernte Limit maxInterStageShaderComponents, das neuere Chromium ablehnen -> im Hook vor requestDevice entfernt. Verifiziert: cargo test -p render2d gruen (18), tsc gruen, wasm-Build gruen; Headless-Chromium (?engine=wasm) zeichnet den Grundriss (Waende/Schraffur/ Tuerschwenk/Treppe/Raumtext) im WASM-Viewport, Fallback ohne Flag unveraendert.
This commit is contained in:
@@ -77,11 +77,19 @@ trap cleanup EXIT
|
||||
|
||||
mkdir -p "${PROFILE_DIR}"
|
||||
|
||||
echo "chromium-shell: öffne ${URL} in ${BROWSER_BIN} (App-Modus) …"
|
||||
# WebGPU: Auf Linux liegt WebGPU in Chromium noch hinter Flags. Für den
|
||||
# render2d-WASM-Viewport (`?engine=wasm`, useWasmPlanRenderer) muss `navigator.gpu`
|
||||
# vorhanden sein — daher `--enable-unsafe-webgpu` (aktiviert die API auch ohne
|
||||
# volle Konformität) plus `--enable-features=Vulkan` (WebGPU nutzt unter Linux das
|
||||
# Vulkan-Backend). Ohne `?engine=wasm` sind die Flags folgenlos (der Standard-
|
||||
# WebGL2-Pfad läuft unverändert weiter).
|
||||
echo "chromium-shell: öffne ${URL} in ${BROWSER_BIN} (App-Modus, WebGPU aktiv) …"
|
||||
"${BROWSER_BIN}" \
|
||||
--app="${URL}" \
|
||||
--user-data-dir="${PROFILE_DIR}" \
|
||||
--window-size=1600,1000 \
|
||||
--enable-unsafe-webgpu \
|
||||
--enable-features=Vulkan \
|
||||
>/tmp/cad-chromium-shell-browser.log 2>&1
|
||||
|
||||
# Läuft weiter, bis der Browserprozess (das App-Fenster) beendet wird; dann
|
||||
|
||||
Reference in New Issue
Block a user