We’re closing in on an official 0.9.3 release in the coming days and I wanted to share the draft release notes here.
Platform & Toolchain Modernization
Visual Studio 2019 & C++17 - Cinder 0.9.3 requires Visual Studio 2019 (or later) and C++17 across all platforms. All projects have been upgraded from vc2015 to vc2019, with x86 (32-bit) support removed in favor of x64-only builds on Windows.
Boost Dependency Removed - Full removal of Boost, with a bridge of Boost.Filesystem with gulrak/filesystem (ghc::filesystem) for macOS
macOS Deployment Target 10.13+ - Updated minimum macOS version to 10.13 (High Sierra) across all projects, enabling modern platform features and better Apple Silicon support with universal binaries.
UI & Input
Dear ImGui Integration - AntTweakBar has been completely removed and replaced with Dear ImGui (v1.92.3). Includes custom Cinder integration with support for GLM types, Cinder colors, and texture display. Multiple samples updated to demonstrate ImGui usage.
CanvasUi - New 2D canvas pan/zoom interaction control with Photoshop-style navigation (zoom to fit, 1:1 pixel viewing, mouse/keyboard controls). See CanvasUi and CanvasUiMinimap samples.
Video Capture Overhaul
Capture::Mode API - New explicit format control for video capture with device mode enumeration (resolution, framerate, codec, pixel format).
Platform-Specific Improvements:
- Windows: Complete DirectShow rewrite using native COM APIs (removed videoInput dependency), full Mode support
- macOS: AVFoundation hot-plug detection and Mode enumeration
- Linux: New GStreamer-based capture with automatic format negotiation and compressed format support (MJPEG, H264, HEVC)
Graphics & Rendering
OpenGL Enhancements:
- Stencil buffer controls (
gl::StencilOp,gl::StencilFunc,gl::ScopedStencilOp,gl::ScopedStencilFunc) - Color and stencil mask controls (
gl::ScopedColorMask,gl::ScopedStencilMask) - NVIDIA Path Rendering extension support
- NVIDIA Multicast extension support for multi-GPU rendering
- GLFW upgraded from 3.2.1 to 3.4.0
New geom::CubeSphere - Sphere primitive created by normalizing cube faces with optional equal vertex spacing.
Direct3D 11.1 Renderer - Proof-of-concept D3D11 renderer with DXGI 1.2 swap chains. Includes D3d11Triangle and D3d11ImageBasic samples.
File Formats & Media
QOI Image Format - Added support for Quite OK Image format with 20-50x faster encoding and 3-4x faster decoding than PNG.
JSON Implementation Change - Deprecated custom JSON implementation in favor of nlohmann/json (v3.10.5). Old API moved to JsonTree.h for compatibility.
Cairo Updates:
- macOS: Updated to 1.18.4 with universal binary support (arm64 + x86_64)
- Linux: Added system Cairo support with FindCairo.cmake module
Core Features
MediaTime Class - New time representation class for precise media timing with rational number arithmetic and common time scale support.
Path2d/Shape2d Enhancements - New convenience methods for creating basic shapes (rounded rectangles, stars, spirals), smooth curves, and relative path commands. Added translate() methods.
COM Smart Pointer - New msw::ComPtr<> template for managing COM interface lifetimes without ATL dependency (matches Wrl::ComPtr API).
Linux Improvements
- Fixed keyboard event handling - key releases now report correct codes (#2226)
- Fixed file dialog paths with trailing newlines
- Fixed file drop cursor position reporting
- GStreamer playback fixes for Ubuntu >= 22.04 (gstreamer >= 1.20)
- Cairo support with system package integration
Build System & CI
- CMake minimum version raised to 3.16
- GitHub Actions CI for Windows (2022 runner), macOS (macos-13), and Linux
- Removed Travis CI and AppVeyor configurations
- Improved C++17 standard enforcement and propagation to apps
- MSW: CMake policy CMP0091 for MSVC runtime library selection (#2117)
Removals
- AntTweakBar - Fully removed, replaced with Dear ImGui
- Boost - Dependency eliminated
- UWP - Platform support removed
- QuickTime - Windows support removed (not supported on x64)
- vc2015 - Visual Studio 2015 (v141 toolset) no longer supported
Detailed Changes
Toolchain & Build System
- Upgrade to Visual Studio 2019 (vc2019) with v142 toolset (aa5de75)
- C++17 required across all platforms (7c16b98, #2211)
- Remove vc2015 projects (2a5cd2f)
- Remove x86 (32-bit) Windows support (b49cd5d)
- macOS deployment target raised to 10.13 (3cee939, 819956)
- CMake minimum version 3.16 (4bc0972, 44c1235, e46cf60)
- CMake policy CMP0091 for MSVC runtime library (2d7e537, #2117)
- GitHub Actions CI for Windows 2022 (29db59d), macOS (3ef3f78, #2343), Linux (5a8f268)
- macOS universal binary (arm64 + x86_64) by default (1166bac)
- Fix macOS case-sensitive build issues (9ccf9d5, #2019)
- Add clang-format configuration (a9f4b00)
Dependencies
- Remove Boost, add gulrak/filesystem (ghc) (a27c82d, 44b7937)
- GLM updated to 0.9.9.7 (491624)
- ASIO updated to v1.18 (82ecc4d)
- GLFW upgraded to 3.4.0 (efe5147, 906a437)
- TinyEXR updated to 1.0.12 (c98f547)
- zlib updated to 1.3.1 (f14bd93)
- Dear ImGui v1.75 → v1.92.3 (019779, 0bb29ed, 04afdbe)
- Catch unit test framework updated to v2.13.9 (1d1327b)
UI Framework
- Dear ImGui integration with Cinder bridge (db1e174)
- ImGui sample demonstrating Cinder extensions (a48e833)
- Custom Cinder ImGui styling (ebb1574)
- ImGui multi-window support fixes (30519cc, #2242)
- ImGui keyboard event propagation fixes (1196bfd)
- Remove AntTweakBar completely (d260fed, c47c422, 6819f8d)
- Update test samples to use ImGui (b7a5191)
- CanvasUi 2D pan/zoom control (ec8e37b)
- CanvasUi sample (4588790)
- CanvasUiMinimap sample (e331eaa)
- CanvasUi 1:1 zoom with Photoshop-style hotkeys (ad55b47)
Video Capture
- Capture::Mode class for explicit format control (9948fd4)
- DirectShow complete rewrite with native COM (6c114fc)
- GStreamer capture for Linux (4280f92)
- AVFoundation Mode support and hot-plug detection (e770673)
- CaptureBasic sample with Mode selection UI (e561d9a)
- CaptureTest with stress testing (b905889)
Graphics
- Stencil buffer state controls (763101)
- gl::ScopedColorMask and gl::ScopedStencilMask (18e1214, #2324)
- NVIDIA Path Rendering extension (b4eaa2f)
- NVIDIA Multicast extension (ee01609)
- Direct3D 11.1 renderer proof-of-concept (27a9029)
- Update to GLAD for all platforms (071e776)
- Fix GLAD/APIENTRY warnings (93b91a8, #2339)
- Scoped matrix convenience constructors (be321c2)
- GLFW window move callback (7b30e70)
Geometry
- geom::CubeSphere with equal spacing option (78b02a0)
- geom::Circle precision fixes for large circles (efe951e, #2283)
- Fix sphere primitive stray triangles (4a597c3, #1810)
- VboMesh::copyAttrib() respecting strideBytes (7fcdaeb)
- TriMesh bone methods considering strideBytes (107abad)
2D Graphics
- Path2d basic shapes and commands (a70e977, #2325)
- Path2d/Shape2d translate() methods (50bcff1)
- Fix Shape2d crash on empty close() (d543c38)
- Font outline fixes - unhinted, preserve quadratic curves (cadd0bc)
Image I/O
- QOI format support (bbe0c37)
- WIC dynamic codec enumeration with ComPtr (dc77ee8)
- EXR grayscale image support (f369bcb)
- Fix EXR invalid channel write (8f64b62, #2222)
- Fix ImageTargetFileStbImage row bytes (d4dae9a)
- Fix ImageTarget alpha when ImageSource has none (b392ae9)
- Fix Channel16u/Surface16u/Channel32f texture precision (9348e13)
- Fix Texture ImageSource size mismatch (ae9eb24)
- ImageFileBasic sample with ImGui and CanvasUi (0ef87e6)
- Wide file path support for QOI on Windows (6f6690b)
Cairo
- macOS Cairo 1.18.4 with universal binary (3c5ffcf)
- Linux Cairo support with FindCairo.cmake (01c36e7)
- Update Cairo block for cross-platform compatibility (e79c8fb)
- Update Cairo samples for Linux (d14691b)
Media
- MediaTime class implementation (64364d8)
- MediaTime convenience methods (.as*()) (5a03da1)
- Fix GStreamer playback Ubuntu >= 22.04 (aecb547)
JSON
- nlohmann JSON v3.10.5 implementation (f8b0d82, bfc4220)
- Deprecate old JSON, move to JsonTree.h (5db46d6)
- Update Earthquake sample for JSON changes (757e7e0)
Audio
- AudioTests comprehensive test suite (8d59c34 through 72e47bf)
- Context UI graph viewer for recursive graphs (7e7f996)
- Fix SamplePlayerTest async file load (48f916a)
- Signals move constructor/assignment noexcept (70cbee3, #1681)
- Remove unused SignalProto::deactivate() (0374cca)
OSC
- Remove all listeners methods (8558d0a)
- Fix TCP connection close crash (d4cbb74)
- Reduce OSC build warnings (e0de949)
Platform - Windows
- Wide file path support (7bc7549, ece9f95)
- Fix file dialog bugs (9205e55, #1564)
- Fix mouseWheel position on HiDPI (5dacbf6)
- Fix Alt key freeze (adcd158)
- Fix ImGui modal dialog reentry (b6660e7)
- Command line args parsing before Renderer (ddcc0ff)
Platform - macOS
- Fix screensaver on recent macOS (156dc51)
- Fix inverse viewing matrix caching in Camera (9304fbf)
- Fix arm64 build (d7c7191)
- ARC (automatic reference counting) updates (602f5c8)
- NSCameraUsageDescription for capture samples (ea06092)
- TinderBox template updates (2bc0cb0)
Platform - Linux
- Fix keyboard event handling (6d87064, #2226)
- Fix file dialog trailing newlines (5b2ac25)
- Fix file drop cursor position (6cadaca)
- Always-on-top and borderless window support (f1f65df)
- Ubuntu 22.04+ documentation (382778)
- libc++ compatibility (89a6c2e)
- Multiple missing header fixes for gcc 15.2 (79d6dfa)
- Fix CameraPersp sample resource loading (3bb64f9, #2281)
- Headless app cleanup() emission (700b567)
- OSMesa CMake improvements (c2f4bd5)
Utilities
- Float/double comparison functions (e337a1a, #2321)
- findAncestorFile() and findAncestorDir() (9ee16dd, #2334)
- limitDirectoryFileCount() sort function (038a008)
- Color(vec3) overload (3a734d8)
- Base64 CI_API export (6d0cba4)
- StreamingBuffer class (c696dda)
- ConcurrentCircularBuffer uncancel() and clear() (0a46362)
- Fix mysterious console logging crash (684f344)
Samples
- Replace Twitter with Mastodon in GoodNightMorning (725c6aa)
- Update multiple samples to vc2019 (16d8037)
- Update Kaleidoscope sample (298db17)
- Remove Compass sample (b64dc03)
Removals
- Remove UWP/WinRT support (82c05a9)
- Remove QuickTime on Windows (72ee460, e7e788f, b427687)
- Remove Travis CI and AppVeyor (3400d0b, 0fdba9f)
C++17/C++20 Compatibility
- Replace std::result_of with decltype (cb71b70)
- ASIO C++20 compatibility (c119193)
- CircularBuffer C++20 fixes (7255181)
- TinyEXR C++20 fix (6ef39c5)
- ImageTargetFileWic C++20 fix (6525bd5)
- CaptureImplDirectShow C++20 fix (f859633)
- OutputDebugString C++20 fix (9d2cff8)
Bug Fixes
- Fix missing iterator increment (093ea5f, #2331)
- Fix event.setHandled() in MouseUp (0597e8d, #2349)
- Fix copyRawRgbFullAlpha offset (6fd9b72)
- Fix terminate handler (e9423b0)
- Fix zlib macOS build error (37eef48)
Full commit history: 58e0f82...e203ce7 (450 commits)