Skip to content

Commit a172110

Browse files
committed
docs: reconcile README/architecture/roadmap with actual implementation
Both README.md and docs/architecture.md had drifted significantly from the codebase: the "not a drop-in replacement" framing and v1-only feature table predated two major language-completeness passes, while architecture.md still showed a 3-node AST, a 2-node CSG IR, std::stop_token-based cancellation, and several features (embedded editor, PBR shading, SSAO, double-buffered GPU mesh swap, Embree) that were either never built or don't match the current implementation. - README: replace the stale "core CSG subset (v1)" framing with an accurate language-coverage table, correct the OpenSCAD comparison table (shading model, editor, language coverage), and point at the open correctness-bug tracker instead of implying full compatibility. - architecture.md: rewrite the AST/CSG-IR examples to match the real AST.h/CsgNode.h, correct the async pipeline description (single worker thread + generation counter, not a thread pool + std::stop_token), correct the renderer section (Blinn-Phong, not PBR; no SSAO; single GPU buffer pair, not double-buffered), correct the dependency list (no Embree, no ImGuiColorTextEdit), and correct the editor section (external-only today; embedded editor is an unimplemented placeholder). - roadmap.md: fix v1 checklist items that claimed features not actually shipped (embedded editor, std::stop_token cancellation, color-coded preview mode, double-buffered GPU swap) by moving them to v4 as open work; add a pointer to the 33 correctness-bug GitHub Issues filed by the same audit.
1 parent 9253f82 commit a172110

3 files changed

Lines changed: 379 additions & 201 deletions

File tree

README.md

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,23 @@
1313

1414
ChiselCAD is an open-source 3D CAD modeler for engineers and makers who prefer
1515
code-driven design. It reads OpenSCAD-syntax `.scad` files and renders them with
16-
a modern Vulkan renderer — giving you a dramatically faster and better-looking
17-
result than legacy OpenGL-based tools.
18-
19-
It is **not** a drop-in OpenSCAD replacement. It targets the core CSG workflow —
20-
primitives, booleans, and transforms — and does that subset extremely well.
16+
a modern Vulkan renderer — giving you a dramatically faster result than
17+
legacy OpenGL-based tools.
18+
19+
It implements most of the OpenSCAD language today — primitives, booleans,
20+
transforms, control flow, user-defined functions/modules, 2D extrusion,
21+
`color()`/`offset()`/`projection()`, and file I/O (`include`/`use`/`import`/
22+
`surface`/`text`). See [Supported Language](#supported-language) below for the
23+
full breakdown and the handful of constructs still missing.
24+
25+
It is **not yet** a verified drop-in replacement, for two reasons: a few
26+
language constructs aren't implemented yet (tracked in
27+
[docs/roadmap.md](docs/roadmap.md), v3), and an ongoing correctness audit has
28+
found real bugs — including some common primitive argument forms that
29+
currently produce silently wrong geometry. These are tracked individually in
30+
[GitHub Issues](https://github.com/particlesector/chiselcad/issues); until the
31+
Critical/High-severity ones are resolved, verify output geometry rather than
32+
assuming full compatibility.
2133

2234
```scad
2335
difference() {
@@ -33,36 +45,50 @@ difference() {
3345
>
3446
> | | OpenSCAD | ChiselCAD |
3547
> |---|---|---|
36-
> | Renderer | Legacy OpenGL + OpenCSG | Vulkan, PBR shading, SSAO |
48+
> | Renderer | Legacy OpenGL + OpenCSG | Vulkan, multi-light Blinn-Phong + rim lighting (PBR/SSAO planned) |
3749
> | Boolean backend | CGAL (slow) / Manifold (experimental) | Manifold (always on) |
3850
> | UI responsiveness | Blocks on F6 render | Async — UI never freezes |
39-
> | Editor | Embedded QScintilla | VS Code + LSP + file watch |
51+
> | Editor | Embedded QScintilla | External (VS Code) + file watch + diagnostics panel; embedded editor and LSP planned |
4052
> | AI assistance | None | Claude integration (planned) |
41-
> | Language coverage | Full OpenSCAD | Core CSG subset (v1) |
53+
> | Language coverage | Full OpenSCAD | Broad subset — most of the language; a few constructs + open correctness bugs remain (see below) |
4254
4355
---
4456

4557
## Features
4658

47-
- **Vulkan renderer** with PBR shading and SSAO — models look like real objects
59+
- **Vulkan renderer** with multi-light Blinn-Phong shading, rim lighting, and ACES tonemapping (PBR + SSAO on the roadmap)
4860
- **Async dual-phase preview** — instant primitive display while booleans evaluate in the background
4961
- **[Manifold](https://github.com/elalish/manifold) boolean backend** — 100–1000× faster than CGAL
50-
- **OpenSCAD-syntax compatible**`.scad` files work as-is for the supported subset
62+
- **OpenSCAD-syntax compatible**`.scad` files work as-is for most of the language (see below)
5163
- **VS Code integration** — edit in VS Code, ChiselCAD hot-reloads on save with live error feedback
5264
- **ImGui interface** — lightweight, dockable, fast
5365
- **Cross-platform** — Windows and Linux (macOS planned)
5466
- **C++20** throughout
5567

56-
### Supported Language (v1)
68+
### Supported Language
5769

5870
| Category | Supported |
5971
|---|---|
60-
| Primitives | `cube`, `sphere`, `cylinder` |
61-
| Booleans | `union()`, `difference()`, `intersection()` |
62-
| Transforms | `translate()`, `rotate()`, `scale()`, `mirror()` |
63-
| Quality | `$fn`, `$fs`, `$fa` |
72+
| Primitives (3D) | `cube`, `sphere`, `cylinder` |
73+
| Primitives (2D) | `square`, `circle`, `polygon`, `text()` |
74+
| Booleans / CSG | `union()`, `difference()`, `intersection()`, `hull()`, `minkowski()` |
75+
| Transforms | `translate()`, `rotate()`, `scale()`, `mirror()`, `multmatrix()`, `color()` |
76+
| Control flow | `for`, `if`/`else`, `let`, ternary `?:`, ranges in `for` |
77+
| Functions & modules | user-defined `function`/`module`, `children()`/`$children`, named + default args |
78+
| Built-ins | full math set, string/vector helpers (`concat`, `str`, `len`, `lookup`, `rands`, ...) |
79+
| 2D → 3D | `linear_extrude`, `rotate_extrude`, `offset()`, `projection()` |
80+
| File I/O | `include <>`, `use <>`, `import()` (STL), `surface()` (text `.dat`) |
81+
| Diagnostics | `echo()`, `assert()` |
82+
| Quality | `$fn`, `$fs`, `$fa` (global and per-node) |
6483
| Export | Binary STL |
6584

85+
**Known gaps** (tracked as [docs/roadmap.md](docs/roadmap.md) v3): CSG modifier
86+
characters `# % ! *`, list comprehensions and `each`, `polyhedron()`,
87+
`resize()`, general range-literal expressions outside `for`, nested
88+
extrusion, and import/export formats beyond STL. See the roadmap for details
89+
and the [issue tracker](https://github.com/particlesector/chiselcad/issues)
90+
for known correctness bugs currently being fixed.
91+
6692
---
6793

6894
## Building
@@ -127,8 +153,13 @@ A full LSP extension for VS Code is planned (see [docs/roadmap.md](docs/roadmap.
127153

128154
## Project Status
129155

130-
ChiselCAD is in **early development**. The architecture is designed, the test model
131-
is ready, and the build scaffold is in place. Core subsystems are being implemented.
156+
ChiselCAD is in **active development**. The core rendering pipeline, CSG
157+
evaluator, and most of the OpenSCAD language are implemented and working
158+
(see [Supported Language](#supported-language) above). Current focus is
159+
closing the remaining language gaps and fixing correctness bugs found by an
160+
ongoing audit — both tracked in [docs/roadmap.md](docs/roadmap.md) and
161+
[GitHub Issues](https://github.com/particlesector/chiselcad/issues) — before
162+
making any drop-in-replacement claim.
132163

133164
If you want to follow along or contribute, see [CONTRIBUTING.md](CONTRIBUTING.md).
134165

0 commit comments

Comments
 (0)