[Godot 4] CSG Blockout v2.0 — World-aligned grid materials and smarter CSG node placement
Hey everyone!
I've just released v2.0 of CSG Blockout, my open-source plugin for faster CSG-based level blockout in Godot 4.
For this update, I mainly wanted to solve two things that were getting in the way of my own workflow: grid materials getting stretched on slopes and boolean shapes, and having to think about CSG hierarchy every time I created a new shape.
1. Procedural world-aligned grid materials
The new grid_triplanar.gdshader uses world-space triplanar mapping, so the grid stays aligned to the world instead of following the object's UVs.
It supports:
- Major and minor grid lines
fwidth()-based anti-aliasing- Clean grid alignment on slopes, ramps, and boolean cutouts
- No UV setup required
I also added Light, Dark, Orange, and Custom material presets, which are stored in ProjectSettings.
You can switch between them or apply one to selected meshes directly from the sidebar.
The Shift+A pie menu also uses the currently active preset when creating new geometry, with full Undo/Redo support.
2. Context-aware CSG node placement
Previously, creating a new CSG shape sometimes meant deciding whether it should be a child or a sibling, either through preferences or modifier keys.
For v2.0, CSG Blockout now uses the current selection to infer what you probably want:
- Selecting a
CSGCombiner3D→ new shapes are added as children at the bottom. - Selecting a
CSGShape3D→ new shapes are inserted as adjacent siblings. - Selecting something else or nothing → falls back to the normal parent/root placement.
This also required refactoring the creation and deletion logic to keep node order, ownership, and Undo/Redo behavior intact.
Links
GitHub: https://github.com/qwqzhanqwq/Godot-CSG-Blockout
Godot Asset Store: https://store.godotengine.org/asset/qwqzhanqwq/csg-blockout/
I'd love to hear what you think, especially if you run into any edge cases or have other blockout workflow features you'd like to see!
1 reply