Wrapping up the summer with Ceramic 2.2
Summer is coming to an end, and what better way to close it than with a new release? Ceramic 2.2 is out, and it's a pretty packed one: a fully reworked Dear ImGui integration, audio filters compiled as native worklets, SIMD-optimised rendering... And alongside the release, this website got a documentation boost, with 7 new handbook guides and 15 new interactive examples. Let's take a tour!
What's new in Ceramic 2.2
Dear ImGui, on every target
The Dear ImGui integration has been completely reworked. The previous version relied on an older Dear ImGui and only worked on C++ and Web targets. The new one exposes a unified Haxe API that works on all Ceramic targets, including Unity, uses the docking branch of Dear ImGui, and is pre-configured to look nicer than the default ImGui style (Roboto font with CJK fallback, and a dark blue theme out of the box).
It also got helpers specific to Ceramic: visuals can be displayed (and stay animated and interactive) inside the ImGui layout.
Audio filters without the GC
In my previous blog post, I mentioned a longer-term plan: making audio filters GC-free on native targets so that they would never be interrupted by "Stop the World" garbage collection events. Well, that's done!
Audio filters are still written in plain Haxe, but on native targets they are now compiled as standalone C++ worklets running on the audio thread, via a dedicated reflaxe.CPP fork. Proper locking primitives, no GC interaction: no risk of audio crackling because of a collection.
Talking about audio filters, you can hear (and play with) a low-pass filter in the new audio filters example: hold & drag to sweep the filter over the music.
Faster and more flexible rendering
Ceramic's renderer now takes advantage of SIMD instructions: native SIMD on desktop and mobile, WASM SIMD on the web target, and a Burst kernel on Unity. Combined with the generational and concurrent garbage collector now enabled by default on native targets, frames should be smoother across the board, without changing anything in your code.
In addition to that, Ceramic now comes up with a new ceramic.Renderable type that allows to create visuals that directly use the cross platform graphics backend API of Ceramic. Useful to create really custom rendering!
CPPIA support, if you feel adventurous
Initial CPPIA support landed: add --cppia to your native build command and Ceramic will build the host and the client as needed. Expect some rough edges, it's bleeding edge and not fully tested yet, but it opens the door to much faster iteration times on native targets.
And a lot more
The full changelog is available in the release notes.
The handbook keeps growing
The guides section of this website got 7 new handbook chapters, covering topics that were previously undocumented:
- Tweens: animate anything with easing functions
- Cameras: follow a player through a world larger than the screen
- Particles: emitters and custom particle effects
- Arcade Physics: bodies, collisions and overlaps
- Tilemaps: from Tiled and LDtk files to procedural maps
- Shaders: using built-in shaders and writing your own in Haxe
- Saving data: persist data across app launches
Several existing guides also got refreshed along the way, like audio, input and components.
More examples to make learning Ceramic easier
The examples section also grew quite a bit, with 15 new interactive examples you can play with directly in the browser (and tweak: the source of each one is a click away).
On the basics side: tween easings, audio, audio filters, save data, scroller, state machine and camera follow.
And some more advanced samples: sprite animation, arcade bounce, nape physics, scene transitions, ui layout, brush to texture, custom shader and of course the Dear ImGui demo shown above.
What's next?
I know, I know, Ceramic is known to be a 2D Framework. Well, that could change in the future! I have been experimenting with rendering 3D with Ceramic. It's all a work in progress right now, but that is likely to be the next big feature landing in Ceramic (some time in 2027, likely).
Wrapping up
Between the release itself and the documentation update, I'm hopeful it should make Ceramic a bit more approachable than before.
Want to try Ceramic?
➔ Install it and get started now!
➔ Join the Discord server