June 29, 2013
01:29 PM

CINDER WINS INNOVATION LION

A pretty remarkable thing happened recently. Cinder won the highest honor in the advertising industry, a Grand Prix at the Cannes Lions festival. In fact, Cinder was awarded the first ever Grand Prix for a new brand-new category, Innovation. We're obviously quite proud of this fact, and have been amazed at all of the new attention Cinder is getting.

You can read all about it in various publications like Fast Company, Creativity, and Advertising Age.

April 24, 2013
03:59 PM

CINDER 0.8.5. RELEASED

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:

New TinderBox

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 std::function.


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

New icons for Cinder apps and TinderBox.

C++11 Features

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.


LocationManager Support

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 std::cout.


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.


Support for armv7s

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.


iOS Additions

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
  • Camera Improvements

    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 PolyLine2f, 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 Refactored

OSC has been wrapped into a CinderBlock and no longer depends on a static library. Multicast options have been added as well.


ASIO Integration

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.


FMOD CinderBlock

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 Cameras

Stereoscopic rendering support and matching sample courtesy of Paul Houx. Several stereo rendering formats are supported including interlaced, split frame and red/cyan anaglyph.


Kaleidoscope Sample

A new Kaleidoscope sample courtesy of Greg Kepler demonstrates multithreaded downloading of Instagram images.


Architectural Changes

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
03:17 PM

CINDER 0.8.4 RELEASED

The Cinder team is pleased to announce the release of Cinder version 0.8.4. Features in this release include:

SVG Parser

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.


Timeline API

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.


Assets System

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.


ConcurrentCircularBuffer

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
10:38 PM

CINDER 0.8.3 RELEASED

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.


TextureFont Class

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.


OBJ Exporting

Functionality for exporting TriMeshes as OBJ files for interoperating with 3D software and 3D printers.


Clipboard Support

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.


Triangulation API

Conversion of an arbitrary shape (including bezier paths) to a collection of triangles, suitable for OpenGL rendering.


TriMesh2d

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.