tile57 OpenCPN plugin
This plugin and the tile57 engine behind it are coded almost entirely with AI (Claude) and human-reviewed — an experiment in implementing a large, complex specification (IHO S-52/S-101), not a certified or tested navigation product. The plugin marks its output accordingly (the "EXPERIMENTAL / NOT FOR NAVIGATION" note rides in the chart name OpenCPN shows). Do not rely on it for real-world navigation. See Known limitations.
An OpenCPN plugin that draws S-57/S-101 electronic navigational charts using tile57's live S-52 portrayal, rendered as vector geometry on the GPU.

The plugin installs a first-class GL vector chart, not an overlay. OpenCPN discovers a tile57 chart by file mask, adds it to the chart database, and drives it like any native chart, chart bar, quilting, and scale transitions included. When OpenCPN asks the chart to draw, tile57 portrays the whole view into draw-ready GPU buffers, the plugin uploads them once, and every frame draws them under a per-frame transform inside OpenCPN's own render loop.
How it fits together
ENC cells (.000) OpenCPN tile57 engine
│ │ │
Build Charts │ │
(bake up front) │ │
▼ │ RenderRegionViewOnGL │
PMTiles bundles ────────────┤─────────────────────────────►│ S-52 portrayal
│ │ whole-view GPU scene │ (tile57_chart_gpu_scene)
▼ │◄─────────────────────────────┤
chart directory │ uploaded once, drawn per │
└──────────────────────► frame as a GPU transform │
Charts are baked to PMTiles bundles once (via the plugin's Build Charts dialog), then OpenCPN loads them like any chart directory and drives the GPU render.
- tile57 is the chart engine: it reads S-57, adapts to the S-101 data model, runs the official IHO S-101 Portrayal Catalogue, and emits resolved draw primitives. This plugin embeds tile57 as a static library and calls it through its C ABI.
- OpenCPN owns the canvas, the quilt, and the draw order. The plugin is a
PlugInChartBaseExtendedchart class; OpenCPN selects and renders it exactly as it would a native ENC.
Where to go next
- Building — dependencies, the tile57 static library, and the CMake build (Linux and macOS).
- Getting Started — bake or link a chart, add it to OpenCPN, and enable OpenGL.
- Architecture — the chart class, the bake flow, and how the plugin plugs into OpenCPN's quilted render.
- Rendering — the tiled portray/cache/compose pipeline, the whole-view label pass, and the GPU vertex model.
- Settings — how OpenCPN's S-52 display options (safety contour, depth shades, light descriptions, …) map onto tile57's mariner settings.
- Known limitations — what does not work yet.