# BREP
Umbrella crate for the **BREP** CAD kernel family. One dependency that
re-exports the geometry kernel and, behind feature flags, the higher layers of
the stack — so downstream code says `use brep::kernel::…` / `use brep::render::…`
instead of depending on each sibling crate directly.
| `kernel` | *(always)* | [`BREP_kernel`](../BREP_kernel) | The BREP geometry kernel (NURBS B-rep, booleans, tessellation). |
| `gizmos` | `gizmos` | [`BREP_gizmos`](../BREP_gizmos) | In-scene gizmos / overlay widgets (pure geometry + hit-testing). |
| `render` | `render` | [`BREP_render`](../BREP_render) | Windowing-agnostic wgpu render/pick engine. |
| `app` | `app` | [`BREP_app`](../BREP_app) | The eframe (egui + wgpu) CAD application. |
The kernel is always re-exported; everything above it is opt-in so a headless
geometry consumer never compiles `wgpu` / `eframe`.
```toml
[dependencies]
BREP = "0.2" # kernel only (headless)
BREP = { version = "0.2", features = ["render"] } # + the wgpu render engine
BREP = { version = "0.2", features = ["full"] } # everything, incl. the app
```
Additional features: `full` (= `app`), and `parallel` (forwards to the kernel's
rayon-parallel tessellation).
> **Package vs. lib name:** the crates.io package is `BREP`; the Rust library is
> `brep` (lowercase, lint-clean). This mirrors the whole family — package
> `BREP_render` / lib `brep_render`, etc. See [PUBLISHING.md](../PUBLISHING.md).