Skip to end of banner
Go to start of banner

VFX Reference Platform 2025

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

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

Python (3.11.x)

Enabled, works out of the box, downloadable from https://www.python.org/downloads/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

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)

PR in progress: https://github.com/AcademySoftwareFoundation/OpenColorIO/pull/2089

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

OpenUSD

PR in progress: https://github.com/PixarAnimationStudios/OpenUSD/pull/3430

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: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/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

“ctest” is broken for ptex on Windows, due to a mismatch of CRLF and LF with the test data - manually checking the difference reveals the tests pass

OpenSubdiv

First build OneTBB with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#OneTBB

Then, built Ptex with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/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: https://projects.blender.org/blender/blender/src/branch/main/build_files/build_environment/cmake/opensubdiv.cmake

OpenVDB

First, build zlib with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#zlib

Then, build OneTBB with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#OneTBB

Then, build boost with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#Boost

Then, build blosc with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#Blosc

git clone https://github.com/AcademySoftwareFoundation/openvdb
cd openvdb
git checkout v12.0.0
mkdir build
cd build
cmake -G"Ninja" .. -DCMAKE_BUILD_TYPE=Release -DZLIB_ROOT=<zlib install dir> -DBOOST_ROOT=<boost install dir> -DTBB_ROOT=<tbb install dir> -DBLOSC_ROOT=<blosc install dir>
cmake --build . --config Release

ctest does not run when compiled with the above instructions - it requires more dependencies, and is considered beyond the scope of this page.

However - upon running it though with the additional requirements, all tests pass.

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/openvdb.cmake

Alembic

First, build Imath, with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#Imath

Then, alembic can be built with these instructions:

git clone https://github.com/alembic/alembic
cd alembic
git checkout 1.8.8
mkdir build
cd build
cmake -G"Ninja" .. -DCMAKE_BUILD_TYPE=Release -DImath_DIR=<imath build dir>\config -DCMAKE_INSTALL_PREFIX=<alembic install dir> -DALEMBIC_SHARED_LIBS=OFF
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/alembic.cmake

Imath

Imath can be built with the following instructions:

git clone https://github.com/AcademySoftwareFoundation/IMath
cd Imath
mkdir build
cd build
cmake -G"Ninja" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
cmake --build . --config Release

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

OneTBB

Only OneTBB as specified in the 2025 standard works. TBB 2020.3 as defined in older versions does not work without a large patch - an example can be seen in Blender: https://projects.blender.org/blender/blender/src/branch/main/build_files/build_environment/patches/tbb.diff

Note that things such as TBBmalloc do not work with the Blender patch, and would require further engineering effort to enable

oneTBB can be built with the following instructions:

git clone https://github.com/uxlfoundation/oneTBB
cd oneTBB
git checkout v2021.13.0
mkdir build
cd build
cmake -G"Ninja" .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=<oneTBB install dir> -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target install

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

zlib

zlib appears to generate shared libraries, ignoring instructions not to - if you want to force static libraries, delete “zlib.dll” and “zlib.lib” from your installation directory

zlib can be built with the following instructions:

git clone https://github.com/madler/zlib
cd zlib
mkdir build
cd build
cmake -G"Ninja" .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=<zlib install dir> -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target install

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

Blosc

First, build zlib, with the following instructions: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/29693247491/VFX+Reference+Platform+2025#zlib

Then, blosc can be build with the following instructions:

git clone https://github.com/Blosc/c-blosc
cd c-blosc
mkdir build
cd build
cmake -G"Ninja" .. -DBUILD_SHARED_LIBS=OFF -DPREFER_EXTERNAL_ZLIB=ON -DZLIB_LIBRARY=<zlib_install_dir>\lib\zlibstatic.lib -DZLIB_INCLUDE_DIR=<zlib_install_dir>\include -DCMAKE_INSTALL_PREFIX=<blosc install dir>
cmake --build . --config Release --target install

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

Boost

Boost can be built with the following instructions:

git clone --recursive https://github.com/boostorg/boost.git
cd boost
git checkout boost-1.85.0
bootstrap.bat --prefix=<boost install dir>
b2 install architecture=arm address-model=64 --prefix=<boost install dir>

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):

git clone https://github.com/AcademySoftwareFoundation/OpenTimelineIO
cd OpenTimelineIO
mkdir build
cd build
cmake -G"Ninja" .. -DCMAKE_INSTALL_PREFIX=<otio install dir> -DCMAKE_BUILD_TYPE=Release -DOTIO_SHARED_LIBS=OFF
cmake --build . --config Release

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

  • No labels