← ClaudeAtlas

editor-viewport-guidelisted

Use when building the interactive 3D viewport that bridges a real-time renderer and an editor: GPU id-buffer object picking, selection outline/highlight rendering, and move/rotate/scale gizmos that work on any object plus the linear algebra behind them. Triggers on click-to-select in a 3D scene, reading back the picked object under the cursor, drawing a crisp selection outline, transform handles/gizmos, dragging an axis at a steep camera angle, constant screen-size handles, ray/plane projection, even when the user doesn't say 'viewport' or 'gizmo'.
xonovex/platform · ★ 5 · Code & Development · score 72
Install: claude install-skill xonovex/platform
# Editor viewport Guidelines The interactive seam where a real-time renderer meets an editor: picking what the user clicks, highlighting what is selected, and manipulating it with transform gizmos. These features straddle two subsystems, so build a thin, render-pipeline-agnostic API the editor drives with plain data. Renderer plumbing (passes, id targets, readback primitives) belongs to gpu-rendering-guide; the generic per-object transform interface is owned by ecs-guide / data-model-guide; vector/matrix/quaternion types come from c99-game-opinionated-guide. ## Requirements - A renderer that can run extra passes and expose a render-target read-back path (see gpu-rendering-guide). - A way to identify each rendered object by a stable integer/handle (entity id or equivalent) that shaders can emit. - Vector/matrix/quaternion math and screen↔world camera transforms (see c99-game-opinionated-guide). ## Essentials - **A thin data seam** - The editor passes plain POD (transforms, colors, ids); the viewport layer owns all pipeline details, see [references/render-editor-integration.md](references/render-editor-integration.md) - **Pick on the GPU** - Render object ids to a buffer and read back the pixel under the cursor instead of CPU ray-casting proxies, see [references/object-picking.md](references/object-picking.md) - **Outline by id, not depth** - Write a selection id to a separate target and edge-detect it in a fullscreen pass, see [references/selection-highlighting.md](refere