cotis-wgpu
cotis-wgpu is the desktop wgpu renderer backend for Cotis. It implements Cotis's renderer traits on top of wgpu, winit, and glyphon, and can be used as a drop-in alternative to other Cotis backends such as cotis-raylib.
Status: Early
0.1.0-alpharelease. APIs are still evolving alongside the core Cotis crates.
This repository contains the renderer backend only. A full desktop application also needs core Cotis crates, a layout engine, and a pipe from the ecosystem below.
Architecture
Each frame flows through five stages. This crate owns the renderer stage:
flowchart LR
UI[UI_closure] --> LayoutMgr[CotisLayoutManager]
LayoutMgr --> LayoutOut[RenderCommandOutput]
LayoutOut --> Pipe[cotis-pipes]
Pipe --> Renderer[CotisWgpuRenderer]
- A layout manager prepares for the frame.
- UI code builds the element tree through the configurator API.
- The layout manager produces layout output items.
- A pipe transforms those items into renderer commands.
CotisWgpuRendererdraws the command stream through wgpu.
Installation
Add the renderer and required core crates to your Cargo.toml:
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
= "0.1.0-alpha"
Quick start
Clone this repository and run the shipped example:
The example opens a resizable window, lays out UI with cotis-layout and cotis-pipes, and renders rectangles, borders, and text through wgpu.
Typical app wiring
use CotisApp;
use CotisLayoutManager;
use CotisLayoutToRenderListPipeForGenerics;
use Dimensions;
use *;
let renderer = auto_start;
let manager = new;
let mut app = new;
while !app.render.window_should_close
Swap cotis-wgpu for cotis-raylib or another backend without changing layout or UI code.
Ecosystem
Cotis is split across several repositories. This repo provides the wgpu renderer; sibling repos provide core traits, layout, and pipes.
| Repository | Role |
|---|---|
cotis |
Core traits and CotisApp orchestration |
cotis-layout |
Flexbox-style layout engine (CotisLayoutManager) |
cotis-pipes |
Layout output to render commands (CotisLayoutToRenderListPipeForGenerics) |
| cotis-wgpu (this repo) | Desktop renderer (wgpu + winit + glyphon) |
cotis-raylib |
Desktop renderer (raylib) |
cotis-renderer-template |
Scaffold for authoring a custom render backend |
cotis-cli |
Plugin host for installable build and run routines |
Pick a renderer backend and swap it without changing layout or UI code. Use cotis-renderer-template to implement a new backend.
Features
| Feature | Effect |
|---|---|
complex-color |
Enables ColorLayer types from cotis-defaults; gradients are not rendered (solid/layered fallback only) |
Known limitations
- Gradients —
complex-coloris supported, but gradient layers fall back to solid or layered colors. - Images —
Imagecommands render as colored placeholder rectangles (no texture sampling yet). - Alpha blending — limited support; see crate rustdoc for details.
Documentation
- API reference:
cargo doc --open -p cotis-wgpu - Published docs: cotis-wgpu
- Core crate docs: cotis, cotis-defaults, cotis-utils