a3b25da96d
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.
47 lines
1.3 KiB
JSON
47 lines
1.3 KiB
JSON
{
|
|
"name": "cad",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"tauri": "tauri",
|
|
"tauri:dev": "tauri dev",
|
|
"tauri:build": "tauri build",
|
|
"dump:native": "node scripts/dump-native-scene.mjs",
|
|
"shell": "scripts/chromium-shell.sh",
|
|
"build:engine": "wasm-pack build src-tauri/render2d --release --target web --out-dir ../../src/engine/pkg --out-name render2d --no-default-features --features web"
|
|
},
|
|
"dependencies": {
|
|
"@mlightcad/libredwg-web": "^0.7.7",
|
|
"@tauri-apps/api": "^2.11.1",
|
|
"delaunator": "^5.1.0",
|
|
"dxf-parser": "^1.1.2",
|
|
"jspdf": "^4.2.1",
|
|
"jszip": "^3.10.1",
|
|
"opencascade.js": "^1.1.1",
|
|
"polygon-clipping": "^0.15.7",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"svg2pdf.js": "^2.7.0",
|
|
"three": "^0.169.0"
|
|
},
|
|
"devDependencies": {
|
|
"@tauri-apps/cli": "^2.11.4",
|
|
"@types/react": "^18.3.11",
|
|
"@types/react-dom": "^18.3.0",
|
|
"@types/three": "^0.169.0",
|
|
"@vitejs/plugin-react": "^4.3.2",
|
|
"playwright": "^1.61.1",
|
|
"puppeteer": "^25.2.1",
|
|
"typescript": "^5.6.2",
|
|
"vite": "^5.4.8",
|
|
"vitest": "^4.1.9",
|
|
"wasm-pack": "^0.15.0"
|
|
}
|
|
}
|