Getting Started with NVIDIA FleX

*Note: This is a legacy SDK. Developers may download and continue to use, but it is no longer supported.*

FleX is a particle based simulation technique for real-time visual effects.Traditionally, visual effects are made using a combination of elements created using specialized solvers for rigid bodies, fluids, clothing, etc. Because FleX uses a unified particle representation for all object types, it enables new effects where different simulated substances can interact with each other seamlessly.

image nvidia Flex

Download NVIDIA FleX

System Requirements

Operating Systems
Windows 32/64 bit (CUDA, DX11, DX12)
Linux 64 bit (CUDA, tested with Ubuntu 16.04 LTS and Mint 17.2 Rafaela)
Supported GPUs
A D3D11 capable graphics card with the following driver versions:
NVIDIA GeForce Game Ready Driver 396.45 or above AMD Radeon Software Version 16.9.1 or above
Intel® Graphics Version or above
Supported Drivers
Microsoft Visual Studio 2013
Microsoft Visual Studio 2015
g++ 4.6.3 or higher

Latest Version for FleX 1.2

Flex is a particle-based simulation library designed for real-time applications. Please see the programmer's manual included in this release package for more information on the solver API and usage.

Key Features
  • Artist-focused tools to ensure turnkey solutions
  • Unified solver for effects
  • Rigid/deformable bodies
  • Phase transition
  • Particles
  • Fluids
  • Cloth
  • Rope
  • Adhesion
  • Gases

  • Release Notes

    NVIDIA FleX v1.2

    - Improved collision against moving shapes, solver now correctly interpolates shape transforms for substeps

    - Improved Linux support, removed GLUT/GLEW dependencies

    - New API for adding soft-joints (dynamic shape-matching constraints) via. the extensions API, see NvFlexExtCreateSoftJoint()

    - New API to retrieve particle neighbor information, see NvFlexGetNeighbors()

    - New API to support shape collision filtering, collision channels can be assigned to particles and shapes to specify which pairs collide, see NvFlexPhase

    - New API to support per-shape plastic deformation, it is now possible to specify plastic creep and threshold coefficient on a per-shape basis (previous global settings), see NvFlexSetRigids()

    - New API to selectively disable solver features, this can lead to improved performance, see NvFlexFeatureMode, replaces global FlexParams::fluid option

    - New API to allow sub-range particle buffer updates, see NvFlexCopyDesc

    - New API for asynchronous compute, see NvFlexInitDesc

    - New API change, NvFlexUpdateTriangleMesh() now takes vertices with 16-byte stride to remove CPU synchronization step in D3D implementations

    - Fix for NvFlexParams::anisotropyScale, this change improves the fitting of ellipsoids to fluid particle distributions, it should now typically be left at 1.0

    - Fix for NvFlexGetTimers() reporting incorrect values on D3D12

    - Fix for vsync in D3D12

    - Fix for crash when using Flex with NVIDIA driver 384.76

    - Fix for unnecessary synchronization when calling NvFlexMap() on a device buffer

    - Fix numerical precision for shape-matching constraints with large coordinates

    - Fix for uninitialized contact indices returned from NvFlexGetContacts() if NvFlexUpdateSolver() has not been called

    - Fix for SDF collision in D3D12

    - Fix for free after delete in CUDA when using SDFs

    - Fix for D3D warning when using NvFlexSetRigids()

    - Add D3D12 rendering support to the demo

    - Add support for device NvFlexBuffers on D3D

    - Enable NvToolkit profiling zones so to provide annotations in NSight profiles by default, this requires nvToolsExt64_1.dll be present


    Helpful Links

    Unity NVIDIA FleX Tutorial Videos

    Part 1

    Part 2

    Part 3

    Part 4


    TouchDesigner's integration of NVIDIA Flex has let our customers run particle simulations on their NVIDIA GPUs with more than a tenfold increase in the number of particles possible before. Flex enables complex simulations that were once the realm of offline applications to run in TouchDesigner in real-time.

    — Ben Voigt, Product Manager, Derivative