Skip to content

Ceramic v2.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:32
· 6 commits to master since this release

A lot is landing in this new Ceramic release: a fully reworked cross-backend Dear ImGui integration, audio filters compiled as standalone native worklets with Reflaxe.CPP, concurrent garbage collector on HXCPP, rendering optimised with SIMD, initial CPPIA support, iOS fixes, along with more improvements and fixes.

Changelog

New Features

  • Cppia: CPPIA is now supported in Ceramic. Add --cppia to your native Ceramic build command and it will use it: build the host and the client as needed. Expect some rough edges though, it's bleeding edge and is not yet fully tested, but if you feel adventurous...
  • ImGui: Complete rework of the Dear ImGui integration. Previous version used an older Dear ImGui version, and it only worked on C++ and Web targets. Now, a new unified Haxe API is compatible with all Ceramic targets, including Unity, using the docking branch of Dear ImGui, and pre-configured to look nicer than the default style!
  • Audio: Audio filters can now be compiled as standalone C++ worklets running on the audio thread (via a dedicated reflaxe.CPP fork), with proper locking primitives and no GC interaction
  • Rendering: SIMD-optimized rendering on native targets, WASM SIMD on the web target and Burst kernel on Unity
  • Runtime: New beginRenderVisuals and endRenderVisuals events, allowing to draw overlays right before the whole frame is submitted
  • Runtime: New ceramic.Renderable type allowing to create custom visuals that directly talk with the cross-platform graphics backend
  • Runtime: Line now supports round caps and round joins, backed by a more robust clipper2-based implementation
  • iOS: New --run-device option to build, deploy and run on a plugged device straight from the CLI
  • iOS/Android: settings.orientation now controls device orientation at runtime
  • Tools: New toolchain to cross-compile Windows builds from mac and linux
  • Electron: Add a way to take screenshots on signal (from code), and an option to hide the window while still rendering it
  • Web: New ceramic_web_update_in_background define to keep updating at least every 100ms in background (useful to keep network operations alive)
  • Runtime/Tools: Equal.equal() now supports deep array/object equality via an additional argument
  • Runtime: Add utility macro to help detect infinite loops

Improvements

  • Clay: Generational and concurrent GC enabled by default on native targets
  • Clay: Desktop GL now requests CORE 3.3+ contexts, and the GLSL version is patched from the actual context version instead of hardcoded defines (also improves Raspberry Pi support)
  • Unity: Compatibility with Unity 6.5, including RenderGraph support with unsafe render passes, and a new burst kernel for the renderer to improve performance
  • iOS: App code is now packaged as an xcframework with device and arm64 simulator support, and the dead CocoaPods machinery was removed
  • Mac: Deployment target moved to macOS 12.0
  • Runtime: Window title defaults to the app display name
  • Runtime: msaa setting is clamped to what the device actually supports, when possible
  • Runtime: Line/Graphics clipper2 internals use object pooling, and Float instead of Int64 on the js target for better performance
  • Tools: C++ objects are automatically cleaned when haxe defines change
  • Tools: Shaders are no longer transpiled over and over when they did not change (clay and unity)
  • Tools: ceramic plugin list output is sorted alphabetically, more robust glob patterns and image processing
  • Web: Better wasm buffer growing, and more eager focus handling to play better with itch.io and similar embedding contexts
  • Android: Http support code is only bound when the http plugin is enabled
  • Loreline: Updated to v0.10.0 (beat parameters, dynamic beat calls), which now ships its own self-contained interpreter: the hscript dependency is gone
  • Updated Haxe to 4.3.7, and refreshed hxcpp, SDL3 and ANGLE

Bug Fixes

  • Runtime: Fix randomElement()
  • Runtime: Fix SpinLock not actually locking, and audio filter params locking
  • Runtime: Fix handling of closed paths and looping lines in Graphics
  • Unity: Fix render passes being culled or reordered by RenderGraph when sampling ceramic render textures through a material
  • Headless: Fix audio assets making headless builds fail when only mp3 or flac files are present
  • Elements: Cope better with read-only locked field
  • iOS: Fix wrong build settings in the generated iOS project

New Contributors

Full Changelog: v2.1.0...v2.2.0