"Plug-ins compiled with GCC versions 4.1 through 4.8.2 without C++11 support should be compatible...The use of C++11 via GCC, clang or the Intel compiler is untested and unsupported, especially in terms of passing standard library objects targeted at C++11 through the plug-in interface." (NDK Dev Guide)
These plugins use some C++11 language features and therefore requires GCC 4.8. GCC 4.8.1 was the first feature-complete implementation of the 2011 C++11 standard. Although The Foundry states that the use of C++11 is untested and unsupported, the usage of C++11 in afx-nuke-plugins has not caused any issues in testing. GCC 4.8.2 is the recommended version.
To check the system version of GCC:
gcc --version
GCC 4.8.2:
dependencies: libgmp-dev libmpc-dev
- Download GCC 4.8.2 source.
tar -xvzf gcc-4.8.2.tar.gz
cd gcc-4.8.2
mkdir build
cd build
../configure --prefix=/usr/local/gcc-4.8.2 --disable-multilib --enable-language=c,c++
make -j$(nproc) bootstrap
make -j$(nproc)
sudo make install
Boost:
- Download boost source
- Extract and cd into boost root
export BOOST_VERSION=${PWD##*/}
cd tools/build
./bootstrap.sh
./b2 install --prefix=../../boost.build
cd ../..
echo "using gcc : 4.8.2 : /usr/local/gcc-4.8.2/bin/g++ : root=/usr/local/gcc-4.8.2 <cxxflags>-std=c++11 ;" >> boost.build/user-config.jam
export BOOST_BUILD_PATH=$(pwd)/boost.build
sudo -E boost.build/bin/b2 --prefix=/usr/local/${BOOST_VERSION} --build-dir=$(pwd)/build --with-thread toolset=gcc-4.8.2 variant=release link=shared threading=multi runtime-link=shared install
sudo ln -s /usr/local/${BOOST_VERSION} /usr/local/boost
IlmBase:
wget http://download.savannah.nongnu.org/releases/openexr/ilmbase-2.2.0.tar.gz
tar -xvzf ilmbase-2.2.0.tar.gz
cd ilmbase-2.2.0
mkdir build
cd build
../configure --prefix=/usr/local/IlmBase CC=/usr/local/gcc-4.8.2/bin/gcc CXX=/usr/local/gcc-4.8.2/bin/g++
sudo make -j$(nproc) install
afx-nuke-plugins:
git clone https://github.com/AuthorityFX/afx-nuke-plugins.git
cd afx-nuke-plugins
mkdir build
cd build
cmake -DCMAKE_C_COMPILER=/usr/local/gcc-4.8.2/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/gcc-4.8.2/bin/g++ ..
make -j$(nproc) install
"NUKE on Windows is compatible with plug-ins built with: Visual Studio 2010 - (Manifest Version: 10.0.30319)" (NDK Dev Guide)
Download and install the following build tools:
Launch Cmd.exe
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release /x64
git clone https://github.com/AuthorityFX/afx-nuke-plugins.git
cd afx-nuke-plugins
mkdir build
cd build
cmake -G "Visual Studio 10 2010 Win64" ..
cmake --build . --target INSTALL --config Release
Launch Cmd.exe
git clone https://github.com/AuthorityFX/afx-nuke-plugins.git
cd afx-nuke-plugins
mkdir build
cd build
cmake -G "Visual Studio 10 2010 Win64" ..
cmake --build . --target INSTALL --config Release
If .NET Framework 4.x and/or Visual Studio C++ 2010 Redistributable are installed:
- Uninstall conflicting packages
- Install Windows 7 SDK
- Reinstall confliting packages
Installing Visual Studio 2010 Service Pack 1 may remove compilers and libraries installed by the Windows SDK. The following solution is from MSDN blog
Installation order:
- Visual Studio 2010
- Windows SDK 7.1
- Visual Studio SP1
- Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1
"On Mac OS X, NUKE is built on Snow Leopard, using GCC 4.0. We recommend third-party developers to do the same." (NDK Dev Guide)
Ancient compiler...
On installation, the following code will be appended to $HOME/.nuke/init.py, where {CMAKE_INSTALL_PREFIX} will be the absolute path of the CMAKE_INSTALL_PREFIX variable:
nuke.pluginAddPath('{CMAKE_INSTALL_PREFIX}')
{CMAKE_INSTALL_PREFIX} defaults to: "{HOME}/.nuke/" if not provided.
Advanced:
Nuke will search for init.py in the default plugin paths. To add an additional search path, modify the NUKE_PATH enviroment variable:
export NUKE_PATH=$NUKE_PATH:{location-of-init.py}
Additional info on Nuke start-up scripts, init.py and menu.py
Additional info on installing plugins
AFXGlow — A beautiful glow with realistic falloff. The extremely intuitive controls yield predictable results. AFXGlow Youtube example
AFXSoftClip — Non-linearly reduce exposure. The algorithm was originally written for use in Eyeon Fusion. It’s much more intuitive than the Native Nuke implementation.
AFXToneMap — Exposure control, soft clipping, and dark contrast.
AFXMedian — Extremely fast median filter with sharpness parameter to reduce unwanted morphological changes and floating point size control. Faster than Nuke’s native median filter by an order of magnitude. AFXMedian Youtube example
AFXChromaKey — Generates a 2D polygon with CIELab (A, B) Cartesian coordinates to represent the chroma screen. Alpha is 0 for pixels within polygon, otherwise, alpha is function of distance to polygon. Matte is invariant to lighting and grading changes due to per frame chroma analysis.
AFXDespill — Uses Rodrigues rotation to shift screen hue to either 1/3 or 2/3. Spill suppression is is calculated using simple RGB based de-sill algorithms. Outputs a normalized spill matte.
AFXAntiAlias — Morphological anti-aliasing to smooth ‘jaggies’ that are a very common problem with keying. Extremely useful for monitor comps. AFXAntiAlias Youtube example
- libboost_system
- libboost_thread
- libcudart
- libippi
- libippcore
- libHalf
- libhoard
- Write documentation
- Test on Windows and Mac OS (Built with gcc4 :( )
- Create youtube videos for suggested usage and tips
- Finish writing cufft implementation for afx_glow
- Update AFXChromaKey to use non-convex hull
- Make icons for plugins