VFX Reference Platform 2025

The VFX Reference Platform is a set of tool and library versions to be used as a common target platform for building software for the VFX industry. More information can be found here: https://vfxplatform.com/

This page specifically covers the 2025 version, which is the first (mostly) compliant version of the spec to run on Windows on Arm, mainly due to OneTBB being held back in previous iterations.

Program Elements:

Name

Status

Name

Status

Python (3.11.x)

Enabled, works out of the box, downloadable from Python Releases for Windows

Qt (6.5.x)

Working, installer https://d13lb3tujbc8s0.cloudfront.net/onlineinstallers/qt-online-installer-windows-arm64-4.8.1.exe (requires login) or alternatively install via vcpkg

PyQt (6.5.x)

Installable via pip install pyqt6

PySide (6.5.x)

Blocked on missing LLVM CMake files

NumPy (1.26.x)

Working, installable via pip install numpy

OpenEXR (3.3.x)

Enabled, works out of the box

Ptex (2.4.x)

Enabled, works out of the box

Opensubdiv (3.6.x)

Enabled, works out of the box

OpenVDB (12.x)

Enabled, works out of the box

Alembic (1.8.x)

Enabled, works out of the box

OpenColorIO (2.4.x)

Enabled, works out of the box

Boost (1.85)

Enabled, works out of the box

OneTBB (2021.x)

Enabled, works out of the box as OneTBB (not 2020u3, so earlier versions of the reference platform do not work)

OneMKL (2024)

Not applicable (only runs on x64)

Adjacent elements:

Name

Status

Name

Status

OpenUSD

PR in progress: Add support for building for Windows ARM64 devices by anthony-linaro · Pull Request #3430 · PixarAnimationStudios/OpenUSD

FreeGLUT

Enabled, works out of the box

Imath

Enabled, works out of the box

ZLib

Enabled, works out of the box

blosc

Enabled, works out of the box

OpenImageIO

Enabled, works out of the box

OSL

Enabled, works out of the box

OpenTimelineIO

Enabled, works out of the box

hdf5

Enabled, works out of the box (tested via conan)

Notes on specific projects

There is an asumption for these instructions that you have a normal development environment set up (Visual Studio, CMake, Git, etc), alongside LLVM 18.1.8 on an ARM64 machine. Cross-compilation has not been validated.

All code blocks are run from a “ARM64 Native Tools Command Prompt for VS 2022” window.

As part of these examples, the libraries are built statically (as it made running ctest to verify them easier) - it is possible (and encouraged in many cases) to build them dynamically.

There is a considerable performance boost (up to 46% observed in blender) when using clang-cl instead of MSVC - consider using that instead of MSVC via -DCMAKE_C_COMPILER="clang-cl" and -DCMAKE_CXX_COMPILER="clang-cl"

Not all programs mentioned in the “Adjacent” table above are covered here, but they are known to be working (usually as part of Blender). Upon request, they can be manually verified.

PySide

This is currently not working, due how the CMake files are shipped with the Windows ARM64 installer for LLVM - meaning Clang cannot be found via CMake package discovery. Upon release of ARM64 github actions, tarball releases of LLVM will be created for these devices, which in turn will allow for a further investigation of PySide to take place.

OpenEXR

OpenEXR is an easier one to build compared to some of the other packages, as it downloads any dependencies it needs itself, as opposed to failing, like most of the other ones.

This can be built with the following instructions:

git clone https://github.com/AcademySoftwareFoundation/openexr cd openexr git checkout v3.3.2 mkdir build cd build cmake -G"Ninja" .. cmake --build . --config Release

With the above instructions, a ctest returns all tests passing.

A real-world example of it being built can be seen in the blender source: https://projects.blender.org/blender/blender/src/branch/main/build_files/build_environment/cmake/openexr.cmake

Ptex

This was tested via the conan package manager as part of some other work - it builds and appears to run.

Alternatively, Ptex can be built directly from source:

First, build zlib with the following instructions: VFX Reference Platform 2025 | zlib

Then, Ptex can be built with the following instructions:

https://github.com/wdas/ptex cd ptex git checkout v2.4.3 mkdir build cd build cmake .. -DPTEX_BUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DZLIB_ROOT=<zlib install dir> -DCMAKE_INSTALL_PREFIX=<ptex install dir> cmake --build . --config Release

OpenSubdiv

First build OneTBB with the following instructions: VFX Reference Platform 2025 | OneTBB

Then, built Ptex with the following instructions: VFX Reference Platform 2025 | Ptex

After building those, OpenSubdiv can be built with the following instructions:

https://github.com/PixarAnimationStudios/OpenSubdiv cd OpenSubdiv git checkout v3_6_0 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<opensubdiv install dir> -DTBB_DIR=<path to tbb install>\lib\cmake\tbb -DPTEX_LOCATION=<ptex install dir> -DNO_CUDA=ON -DNO_GLEW=ON -DNO_GLFW=ON -DNO_OPENCL=ON -DNO_DX=ON cmake --build . --config Release

With the above instructions, a ctest returns all tests passing.

A real-world example of it being built can be seen in the blender source: blender/opensubdiv.cmake at main

OpenVDB

First, build zlib with the following instructions: VFX Reference Platform 2025 | zlib

Then, build OneTBB with the following instructions: VFX Reference Platform 2025 | OneTBB

Then, build boost with the following instructions: VFX Reference Platform 2025 | Boost

Then, build blosc with the following instructions: VFX Reference Platform 2025 | Blosc

A real-world example of it being built can be seen in the blender source: blender/openvdb.cmake at main

Alembic

First, build Imath, with the following instructions: VFX Reference Platform 2025 | Imath

Then, alembic can be built with these instructions:

With the above instructions, a ctest returns all tests passing.

A real-world example of it being built can be seen in the blender source: blender/alembic.cmake at main

Imath

Imath can be built with the following instructions:

With the above instructions, a ctest returns all tests passing.

OneTBB

oneTBB can be built with the following instructions:

With the above instructions, a ctest returns all tests passing.

zlib

zlib can be built with the following instructions:

With the above instructions, a ctest returns the single test that zlib has as passing.

Blosc

First, build zlib, with the following instructions: VFX Reference Platform 2025 | zlib

Then, blosc can be build with the following instructions:

With the above instructions, a ctest returns all tests passing.

Boost

Boost can be built with the following instructions:

OpenTimelineIO

While not necessarily part of VFX2025, it is an adjacent program - it can be built with the following instructions (much like OpenEXR, it downloads any dependencies itself):

With the above instructions, a ctest returns all tests passing.

OpenColorIO

OpenColorIO is another easy one that downloads most of its own dependencies, and can be build with the following instructions: