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: VFX Reference Platform: Home Page
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 |
---|---|
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 |
Blocked on missing LLVM CMake files | |
NumPy (1.26.x) | Working, installable via |
Enabled, works out of the box | |
Enabled, works out of the box | |
Enabled, works out of the box | |
Enabled, works out of the box | |
Enabled, works out of the box | |
OpenColorIO (2.4.x) | Enabled, works out of the box |
Enabled, works out of the box | |
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 |
---|---|
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 |
Enabled, works out of the box | |
Enabled, works out of the box | |
Enabled, works out of the box | |
OpenImageIO | Enabled, works out of the box |
OSL | Enabled, works out of the box |
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: