easy-to-use-icon   EASY TO USE

Fabric is for everyone

Whether or not you are comfortable writing code, you’ll love how easy it is to quickly build tools with the Fabric Canvas visual programming system. Artists can build simple tools themselves. Programmers can mock up prototypes or final production-ready tools. And because Canvas nodes are expressed in KL, you’ll get performance that is comparable to C++.

Artists

You don’t write code – and you don’t want to. That’s ok. With Fabric you don’t need to. Canvas is an intuitive visual programming system that gives you direct access to the power of the core execution engine.

Technical Artists

If you’re familiar with a language such as Python, you’ll pick up KL really quickly in addition to using the built-in visual programming system, Canvas. And to make things even easier, you’ll have access to a bunch of ready-made tools and extensions on GitHub.

Programmers

Go ahead. Mix code and node. The data flow graph (DFG) underneath the Canvas UI is written in KL. Since the visual programming nodes are expressed in KL they run just as fast as similar functionality written in KL directly, allowing you to mix visual programming nodes and KL code as desired.

Canvas

Canvas gives you all the performance, flexibility and extensibility of Fabric Engine in an easy-to-use and fun way. Simple to learn, Canvas invites use by non-programmers even as it provides powerful creation and prototyping tools for hardcore developers.

Canvas Blocks

Blocks are handy pre-built functions in Canvas that you can easily tweak without programming to get just the effect you want. They make it straightforward for non-technical Fabric users to control the behavior of presets in Canvas without having to write a single line of code.

Canvas Rigging

See how easy is to make adjustments in real-time with Fabric. This multipede built in Canvas lets you interactively adjust segment and joint parameters to create many variations of the original model.

KL

 

KL is a simple but very powerful and highly optimized language that acts as the main interface to the Fabric Core. Anyone familiar with dynamic languages like JavaScript or Python will be comfortable with KL. It’s dynamically and JIT compiled, accessible and delivers performance comparable to C++.

 

“KL has been great to pick up. Not coming from a heavy math or computer science background, I’m able to do things I thought were out of reach. Parallel Execution or multithreading was something I thought I’d have to learn C++ for. In KL I’ve been able to setup and prototype solvers and deformers with multithreading with ease.”


Eric Thivierge

Rigging lead – Hybride

“By the way, we eat our own dog food: very large Fabric subsystems such as the DFG are written in KL.”


Peter Zion

Chief architect – Fabric Software

Easy to Learn

KL feels immediately familiar to first-time users and can be learned quickly and easily, reducing risk while increasing accessibility beyond hard-core C++ programmers. Unlike the complexities inherent in C++, KL automates memory allocation, multithreading and specific operating system requirements.

Compiled at Run-time

Programming in a stop-fix-compile-run loop – or even a stop-fix-run loop for interpreted languages – can be slow, especially when debugging complex issues that require many such iterations. Not only is KL compiled on-the-fly to the precise architecture it is being run on, KL programs can be modified on-the-fly and recompiled while the host application is still running. This provides a seamless investigative process, allowing you to get to working code faster.

Extensible

Common third party C/C++ libraries such as Alembic, Bullet and OIIO have been wrapped (and are available on GitHub) so that they are directly callable from KL. Or use Fabric Engine’s Extension Development Kit (EDK) to wrap your own.

Designed for Performance

By leveraging LLVM, the KL compiler optimizes code more intensively than is feasible with hand-crafted code. KL deploys several multithreading paradigms, both automatic and user controlled. From threading across datasets, manual loop-based threading (Execute Parallel) or threading for reduction (MapReduce), KL provides parallelism functionality that will help you create tools that are impressively fast.

Aggressively Optimized

Like C++, another strongly-typed language, KL code is highly suited to aggressive optimization by LLVM. This is why KL and C++ have very similar performance characteristics. And that means you get the best of both words: tools that run as fast as those written in C++ and a very rapid and fluid development experience.

FE_logo_losange-75

Get Started with Fabric

Looking for a better, faster, cheaper way to build high performance tools?

Get Fabric