June 29, 2013
You can read all about it in various publications like Fast Company, Creativity, and Advertising Age.
April 24, 2013
We're excited to announce the latest Cinder release, version 0.8.5. This is the most significant upgrade to Cinder to date. Here's what it contains:
TinderBox has been rewritten from scratch and now includes support for integrating CinderBlocks (prepackaged libraries of code for use with Cinder). Generating an app to experiment with technologies like the Kinect or OpenCV now requires just a few clicks. You can read more about CinderBlocks here and TinderBox is documented here.
Redesigned Window/Event Systems
Cinder's windowing and event subsystems have been rewritten to support multiple windows in a single application. Cinder's event-handling implementation is now built around Boost.Signals2. This allows thread-safe mechanisms for connecting multiple handlers to a given app-level or window-level event and interoperates easily with lambdas and
Visual C++ 2012 support
Cinder and TinderBox now have full support for Visual C++ 2012 (including both the v110 and v110_xp toolsets).
New icons for Cinder apps and TinderBox.
By standardizing on Xcode 4.4+ we can ensure the universal availability of
unique_ptr, lambda functions, move semantics and several other powerful tools in C++11. Additionally, Xcode and Visual C++ 2012 users can take advantage of newer features like range-based for-loops.
A traditional for-loop like this:
vector<DisplayRef> displays = Display::getDisplays(); vector<DisplayRef>::const_iterator displayIt; for( displayIt = displays.begin(); displayIt != displays.end(); ++displayIt ) console() << "Resolution: " << (*displayIt)->getSize() << endl;
Can now be written as
for( auto display : Display::getDisplays() ) console() << "Resolution: " << display->getSize() << endl;
Screensavers on Mac and Windows
A redesigned Screensaver app type has full support for Mac OS X and Windows. A new TinderBox template makes the process of creating a cross-platform screensaver with Cinder quite simple.
Cocoa-driven GUI application type
This version of Cinder adds support for creating Cocoa-based GUIs on Mac OS X, along with a corresponding TinderBox template. This is a powerful technique for apps that require a sophisticated interface, and it's quite easy to implement for users already familiar with Cocoa.
libc++ on Mac OS X and iOS
libc++ is the STL replacement for libstdc++ that has been developed in parallel with Clang. It provides a modern redesign that is C++11-centric and often significantly faster.
Support for the LocationManager support on both iOS and Mac OS X. Screenshot is from the included LocationManager sample.
Console on Windows
Windows apps can now benefit from an optional external console window for displaying
Retina Displays on iOS and Mac OS X
We've improved existing iOS support for the Retina display and added support on the Mac OS X implementation. This includes supporting dynamic pixel density when a user drags a window between a Retina and non-Retina display, and a system for writing Retina-agnostic draw logic.
New devices from Apple including the iPhone 5 use the armv7s architecture natively, and Cinder 0.8.5 adds support for targeting it.
iOS External Displays
iOS external displays via HDMI/VGA adapters and AirPlay are now supported using the same APIs as the desktop versions of Cinder. In practice the Cinder application creates multiple windows and can draw completely different content on the device's native display and an external one.
Numerous additions and improvements to the iOS implementation of Cinder, including:
- International Keyboard Support
- MotionManager support for accelerometer + gyroscope integrated orientation
- Proximity sensor signals
- Battery level and plug state change event signals
- Dynamic hide/show status bar
- Full suite of foreground/background/memory warning event signals
- Runtime detection of device type
Support for addressing front or rear camera, and for higher resolution capture.
Integration with native Cocoa GUI
The iosNativeControls sample demonstrates how to integrate Cinder into a larger Cocoa-based application on iOS.
Convex Hull Calculation
A new convex hull implementation can calculate the hull of a group of points, a
Path2d or a
Shape2d. The implementation is able to calculate the extrema of a cubic or quadratic Bézier curves to avoid costly and inexact curve tessellation.
OSC has been wrapped into a CinderBlock and no longer depends on a static library. Multicast options have been added as well.
ASIO is a powerful Boost library designed for use with asynchronous operations of all sorts, with a special emphasis on networking. Cinder Apps now maintain an ASIO
io_service for simpler integration with this library.
An official CinderBlock wrapping the FMOD library and matching app template is included with this release.
MTL File Parsing
Support for .mtl files in ObjLoader courtesy of Nick Porcino.
Stereoscopic rendering support and matching sample courtesy of Paul Houx. Several stereo rendering formats are supported including interlaced, split frame and red/cyan anaglyph.
A new Kaleidoscope sample courtesy of Greg Kepler demonstrates multithreaded downloading of Instagram images.
We've added support on Mac OS X for 64-bit applications (minus QuickTime). We now require Mac OS 10.7+ for deployment and Xcode 4.4 for development. iOS requires iOS 5.0+ for deployment.
Upgraded to Boost 1.53
A list of what's new in Boost is available here.
As always, we're incredibly indebted to The Barbarian Group, who have continued to support Cinder via its Technology Research Fellowship program. Additionally, Barbarian Rich Eakin is responsible for much of the work in this release.
May 17, 2012
The Cinder team is pleased to announce the release of Cinder version 0.8.4. Features in this release include:
A full-featured parser of the SVG vector graphics file format, including support for gradients, embedded images, and compressed SVG (SVGZ). Includes both a Cairo and OpenGL rendering pipeline, as well as full DOM-style access to element data.
In the spirit of the popular TweenLite engine for Flash, the new Timeline API allows sophisticated animation of arbitrary properties. Support for a large library of easing functions as well as custom easing, callbacks and fire-and-forget tween management.
JSON Parser & Writer
Courtesy of Stephen Schieberl, Cinder now includes a powerful JSON reader/writer called JsonTree, similar to our XmlTree XML parser.
A new alternative to resources, assets in Cinder provide a convenient method for including data with your application which requires no setup code. Read more here.
Numerous New Samples
Many new samples demonstrating multithreaded network I/O, advanced frustum culling as well as the new SVG and Timeline APIs.
Polygon Boolean Operations
Polygonal booleans supporting the calculation of arbitrarily complex polygons' union, intersection, XOR and difference.
Shape2d Hit-Testing and Precise Bounding Boxes
Simple determination of whether a point is inside of a Shape2d, as well as the precise or "tight" bounding box of a Shape2d. Suitable for click detection, for example in determining which region a user clicked in a map.
Standardization On fs::path
All file I/O routines now use fs::path (shorthand for Boost.Filesystem paths) in place of bare strings.
Base64 Encode & Decode
Built-in support for encoding and decoding Base64, necessary for things like MIME attachments and embedded images in SVGs.
An STL-style container which simplifies safe data exchange between threads, especially well-suited for implementing a producer-consumer pattern.
New Math Classes
Including new classes for representing planes, frusta and affine matrices in 2D.
Fixes and Improvements
A number of other enhancements and bug fixes including new Cairo functionality, gaussian-distributed random numbers, runtime vertical sync and window position control.
Cinder is the work of an ever-growing community of developers, and we are grateful for everyone who helped out with this release. Github reflects commits from 32 contributors now. And finally, Cinder is incredibly indebted to The Barbarian Group, who have generously underwritten the majority of the code in this release. Thanks TBG!
July 18, 2011
The Cinder team is pleased to announce the release of Cinder version 0.8.3. Features in this release include:
Part 2 of Robert Hodgin's "Hello Cinder" tutorial
The latest installment in Robert's introductory tutorials, this new section walks users through creating a full 3D "boid" simulation. Check it out here.
Text Layout Improvements
A new TextBox class allows for word-wrapped text layout under all 3 platforms.
A new class which accelerates text rendering under OpenGL, caching font glyphs to one or more OpenGL textures. Supports kerning, ligatures and under iOS and Mac OS X, word-wrapped layout.
New XML Parsing and Export API
A much improved XML parsing API built on the wicked fast RapidXML. Read about it here.
Functionality for exporting TriMeshes as OBJ files for interoperating with 3D software and 3D printers.
Easy to use functionality for copying to and pasting from the system Clipboard for iOS, Mac OS X and Windows.
Parallel Transport Frame
Built-in support for calculation of the parallel transport frame, allowing for extrusion and orientations in 3D without "twists". Includes the sample Tubular for demonstration.
Sophisticated Path Subdivision
Features in Path2d and Shape2d for subdividing curves in screen space, creating the optimal subdivision for a given resolution.
16-bit Image Pipeline
Variants of both the Surface and Channel classes allowing for native processing of 16-bit integer images, including file I/O and conversion to and from OpenGL equivalents.
Conversion of an arbitrary shape (including bezier paths) to a collection of triangles, suitable for OpenGL rendering.
A new class for representing 2D triangle meshes.
Math Core Cleanup and Optimizations
Significant additions, optimizations and improvements to Cinder's mathematical core.
Built-in Penner Easing Equations
Handy easing equations, and a demonstration sample.
Fixes and Improvements
Countless utility functions like launchWebBrowser(), Camera utility functions for worldToEye(), worldToEyeDepth() and worldToNdc(), swizzle operators on Vector classes, improvements to the built-in Params interface, as well as many other enhancements and bug fixes.
We marked our one year anniversary not long ago, and we couldn't be happier with the support and community that has developed around Cinder in that short time. Thanks to everyone, especially those users who contributed the code, fixes and feedback that made this release possible.