[package] name = "render2d" version = "0.1.0" edition = "2021" description = "Nativer wgpu-2D-Renderer fuer den CAD-Grundriss (Tessellierung + Pipelines)" # Bewusst NICHT Teil des src-tauri-Workspaces: die Tessellierungs-Bibliothek soll # unabhaengig von Tauri baubar/testbar bleiben (headless, ohne Webview-Toolchain). # Der leere [workspace]-Block schliesst die Crate aus einem uebergeordneten # Workspace aus, sodass `cargo test`/`cargo build` hier eigenstaendig laufen. [workspace] [features] # Standard: nur die reine Tessellierung + Szene + Ortho-Matrix + WGSL-Quellen. # Diese Schicht ist serde-only, hat keine GPU-Abhaengigkeit und ist headless # vollstaendig per `cargo test` pruefbar. default = [] # GPU-Pipelines (wgpu). Baut auch headless (wgpu laedt Vulkan/GL erst zur # Laufzeit dynamisch), rendert aber nur mit einer aktiven Grafik-Session. render = ["dep:wgpu", "dep:bytemuck", "dep:pollster"] # Fenster-Spike (winit) inkl. lauffaehigem Binary. Braucht Wayland/X11 + eine # Display-Session zur visuellen Verifikation. window = ["render", "dep:winit", "dep:env_logger"] [dependencies] serde = { version = "1", features = ["derive"] } # --- GPU (nur mit Feature "render") ------------------------------------------ # Standard-Features von wgpu (wgsl, webgpu, dx12, metal). Die Linux-Backends # Vulkan/GLES aktiviert wgpu selbst ueber seine target-spezifischen Defaults — # es gibt in wgpu 22 keine expliziten `vulkan`/`gles`-Feature-Namen. wgpu = { version = "22", optional = true } bytemuck = { version = "1", optional = true, features = ["derive"] } pollster = { version = "0.3", optional = true } # --- Fenster (nur mit Feature "window") -------------------------------------- winit = { version = "0.30", optional = true } env_logger = { version = "0.11", optional = true } [dev-dependencies] serde_json = "1" # naga validiert die WGSL-Quellen headless (Parser + Validator) im Test, ohne # GPU/Display. Version an wgpu 22 gekoppelt (transitiv ohnehin vorhanden). naga = { version = "22", features = ["wgsl-in"] } # Der Fenster-Spike ist nur mit Feature "window" verfuegbar; ohne das Feature # wird das Binary aus dem Build ausgeschlossen (required-features). [[bin]] name = "spike" path = "src/bin/spike.rs" required-features = ["window"]