Fabric Engine

Fri 2nd Dec 2011, by Paul Hellard | Productfocus

CGSociety :: Technology Focus

2 December 2011, by Paul Hellard

Fabric Engine CEO Paul Doyle
Fabric Engine Inc. has just gone public with a new web application platform (open beta), a computational engine, that will enable web developers to tap into a computer's multi-core power to bring multi-threaded performance in a web browser.

Up til now, web applications remain single-threaded, unable to tap into the computing muscle of multi-core hardware. When performance is paramount, developers resort to compiled code. The implications of this new technology for 3D graphics, media and entertainment, engineering, medicine, social media, and for web development in general, are huge.

“I worked previously at AVID Softimage and Phil Taylor was an inventor of CAT,” explains Paul Doyle, CEO of Fabric Engine Inc. “We stayed in touch and Phil had been working on a prototype that we both agreed would, performance-wise, be revolutionary.”

Using web technologies for the front end, they knew there were hundred of thousands of people developing widgets and buttons in Javascript and as Doyle puts it, he could “stand on the shoulders of giants for free, by building a native framework and uses html at the front end.”

The majority of the team at Fabric Engine has worked together in the past on ICE at AVID for Softimage, in various roles. “We were already amazed at what multi-threaded code could actually do. It could revolutionize the industry,” Doyle says. Peter Zion came onto the team and Fabric Engine was well on the way to building Fabric Engine into bullet-proof architecture based on Phil Taylor’s prototyping. Up til then, the team had built a really fast multi-threading engine. “We’d built all the elements of a browser while the real gold was to become a plugin for all the existing browsers,” explains Doyle. “Fabric Engine is the high performance bit that is not otherwise available.”

Using the browser’s Netscape Plugin API, Fabric Engine can be downloaded and run on Firefox and Chrome. Safari, Opera and Microsoft IE are being developed for release in a couple of months.

The many DCC applications are all doing great work producing assets and the Fabric Engine crew actually find the niches of the industry very interesting places. Areas like previsualization and simulation and MoCap. All these areas are quite greedy for performance. “Studios don’t want to spend their time building architecture because this doesn’t benefit them directly towards completing a shot or a game level, which is fair enough,” Doyle explains. “What Fabric represents is about 80% of the solution for that spatial problem.”

The next big thing for the Media & Entertainment space is server side computation. Fabric Engine will soon bake out the data in an Alembic format. “At the moment we’re streaming data in, and it’s relatively simple for us to save it out,” Doyle explains.

Fabric Engine also has importers for COLLADA and OBJ, and have just secured a deal with an asset management company and where they’d implemented Fabric Engine as an Alembic viewer.

The Tech

Web applications developed with Fabric Engine have two parts: the regular web technologies (HTML5, JavaScript, CSS, etc) that define the interface, interaction and layout of the application, and the high-performance core of the application that is written using a performance-specific JavaScript variant, Fabric KL.

In order for Fabric-enabled web apps to tap into multi-core processing power, Fabric apps are described as a dependency graph, which defines where tasks can be performed in parallel, and where the same operations can be applied to lots of data at the same time (SIMD). Fabric Engine then handles CPU multi-threading automatically and compiles the application locally.


Fabric Engine has an embedded compiler (LLVM) that allows developers to dynamically compile their applications on target. This allows Fabric developers to escape the traditional compiled software model of making changes, compiling those changes, and then executing the program. Fabric enables developers to work with high-performance code in the same way that they work with web development today – rapid iteration and immediate execution. Web applications created with Fabric Engine run inside the web browser with the Fabric Engine plugin. Fabric Engine currently runs in Firefox and Chrome (support for other browsers coming soon), and supports all major operating systems (Windows, Linux, Mac OS). Fabric server applications currently integrate with Node.js, running on Linux and OSX. Ruby on Rails, Python/Django and Windows support will be added soon.

Performance Wherever It’s Needed

On the server side, the Fabric Engine is ideal for web application developers looking for performance without having to resort to compiled languages. On the client side, Fabric Engine provides the perfect platform for taking native applications to the Web.

Client-side Applications: By embedding a high-performance multi-threading engine in the browser, Fabric Engine allows developers to keep working in JavaScript, yet achieve speeds that were previously impossible. Ideal applications include:
- Image/video processing
- 3D Interaction (games, storytelling, interactive manuals)
- Perceptual/Visual computing
- Simulation (physics, crowds, financial, etc)
- Visualization for use in medical, engineering, and oil and gas
- Raw computation
Video tutorials of client-side applications can be found here.

Server-side Application: Fabric-enabled Server applications use regular web languages (Node, Ruby on Rails, Python, etc) and Fabric’s high-performance multi-threading engine. This allows developers to keep all the advantages of dynamic languages, and gain the benefit of native performance as well. Ideal applications include:
- Data mining
- Business intelligence
- Semantic analysis
- Recommendation engines
- Large-scale simulations
- Other computationally intensive applications




blog comments powered by Disqus