Separate MaterialX Node library from Document. #1774
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: main | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Linux_GCC_9_Python37 | |
os: ubuntu-20.04 | |
compiler: gcc | |
compiler_version: "9" | |
python: 3.7 | |
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON | |
- name: Linux_GCC_11_Python39 | |
os: ubuntu-20.04 | |
compiler: gcc | |
compiler_version: "11" | |
python: 3.9 | |
build_javascript: ON | |
- name: Linux_GCC_12_Python39 | |
os: ubuntu-22.04 | |
compiler: gcc | |
compiler_version: "12" | |
python: 3.9 | |
upload_shaders: ON | |
- name: Linux_Clang_10_Python37 | |
os: ubuntu-20.04 | |
compiler: clang | |
compiler_version: "10" | |
python: 3.7 | |
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON | |
- name: Linux_Clang_13_Python39 | |
os: ubuntu-22.04 | |
compiler: clang | |
compiler_version: "13" | |
python: 3.9 | |
test_render: ON | |
- name: Linux_Clang_14_Python39 | |
os: ubuntu-22.04 | |
compiler: clang | |
compiler_version: "14" | |
python: 3.9 | |
cmake_config: -DMATERIALX_DYNAMIC_ANALYSIS=ON | |
dynamic_analysis: ON | |
- name: MacOS_Xcode_11_Python37 | |
os: macos-11 | |
compiler: xcode | |
compiler_version: "11.7" | |
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON | |
python: 3.7 | |
- name: MacOS_Xcode_12_Python37 | |
os: macos-11 | |
compiler: xcode | |
compiler_version: "12.4" | |
python: 3.7 | |
- name: MacOS_Xcode_13_Python39 | |
os: macos-12 | |
compiler: xcode | |
compiler_version: "13.3" | |
python: 3.9 | |
static_analysis: ON | |
- name: Windows_VS2019_Win32_Python27 | |
os: windows-2019 | |
architecture: x86 | |
python: 2.7 | |
cmake_config: -G "Visual Studio 16 2019" -A "Win32" -DMATERIALX_BUILD_SHARED_LIBS=ON | |
- name: Windows_VS2019_x64_Python38 | |
os: windows-2019 | |
architecture: x64 | |
python: 3.8 | |
cmake_config: -G "Visual Studio 16 2019" -A "x64" | |
- name: Windows_VS2022_x64_Python39 | |
os: windows-2022 | |
architecture: x64 | |
python: 3.9 | |
cmake_config: -G "Visual Studio 17 2022" -A "x64" | |
#test_shaders: ON | |
steps: | |
- name: Sync Repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install Dependencies (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install libglu1-mesa-dev xorg-dev | |
if [ "${{ matrix.compiler }}" = "gcc" ]; then | |
sudo apt-get install -y g++-${{ matrix.compiler_version }} g++-${{ matrix.compiler_version }}-multilib | |
echo "CC=gcc-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
echo "CXX=g++-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
else | |
sudo apt-get install -y clang-${{ matrix.compiler_version }} libc++-${{ matrix.compiler_version }}-dev libc++abi-${{ matrix.compiler_version }}-dev | |
echo "CC=clang-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
echo "CXX=clang++-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
fi | |
- name: Install Dependencies (MacOS) | |
if: runner.os == 'macOS' | |
run: | | |
if [ "${{ matrix.compiler }}" = "gcc" ]; then | |
brew install gcc@${{ matrix.compiler_version }} | |
echo "CC=gcc-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
echo "CXX=g++-${{ matrix.compiler_version }}" >> $GITHUB_ENV | |
else | |
ls -ls /Applications/ | |
sudo xcode-select -switch /Applications/Xcode_${{ matrix.compiler_version }}.app | |
echo "CC=clang" >> $GITHUB_ENV | |
echo "CXX=clang++" >> $GITHUB_ENV | |
fi | |
- name: Install Dependencies (Windows) | |
if: runner.os == 'Windows' | |
run: | | |
git clone https://github.com/Microsoft/vcpkg -b 2021.05.12 -c advice.detachedHead=false | |
vcpkg/bootstrap-vcpkg.bat -disableMetrics | |
echo $PWD/build/installed/bin | Out-File -FilePath $env:GITHUB_PATH -Append | |
echo $PWD/vcpkg/installed/x64-windows/bin | Out-File -FilePath $env:GITHUB_PATH -Append | |
echo $PWD/vcpkg/installed/x64-windows/tools | Out-File -FilePath $env:GITHUB_PATH -Append | |
- name: Install Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
architecture: ${{ matrix.architecture }} | |
- name: Install OpenImageIO | |
if: matrix.install_oiio == 'ON' && runner.os == 'Windows' | |
run: | | |
vcpkg/vcpkg install openimageio --triplet=x64-windows | |
- name: Install Emscripten | |
if: matrix.build_javascript == 'ON' | |
run: | | |
git clone https://github.com/emscripten-core/emsdk --recursive | |
cd emsdk | |
./emsdk install 2.0.20 | |
./emsdk activate 2.0.20 | |
source ./emsdk_env.sh | |
echo "EMSDK=$EMSDK" >> $GITHUB_ENV | |
- name: Install Node | |
if: matrix.build_javascript == 'ON' | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
- name: CMake Generate | |
run: | | |
mkdir build | |
cd build | |
cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_BUILD_VIEWER=ON -DMATERIALX_TEST_RENDER=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ${{matrix.cmake_config}} .. | |
- name: CMake Build | |
run: cmake --build . --target install --config Release --parallel 2 | |
working-directory: build | |
- name: CMake Unit Tests | |
run: ctest -VV --output-on-failure --build-config Release | |
working-directory: build | |
- name: Python Tests | |
if: matrix.dynamic_analysis != 'ON' | |
run: | | |
python MaterialXTest/main.py | |
python MaterialXTest/genshader.py | |
python Scripts/mxupdate.py ../resources/Materials/TestSuite/stdlib/upgrade --yes | |
python Scripts/mxvalidate.py ../resources/Materials/Examples/StandardSurface/standard_surface_marble_solid.mtlx --verbose | |
python Scripts/mxdoc.py --docType md ../libraries/pbrlib/pbrlib_defs.mtlx | |
python Scripts/mxdoc.py --docType html ../libraries/bxdf/standard_surface.mtlx | |
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface/standard_surface_gold.mtlx --path .. --target glsl | |
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface/standard_surface_copper.mtlx --path .. --target osl | |
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface/standard_surface_jade.mtlx --path .. --target mdl | |
working-directory: python | |
- name: Shader Validation Tests | |
if: matrix.test_shaders == 'ON' && runner.os == 'Windows' | |
run: | | |
vcpkg/vcpkg install glslang --triplet=x64-windows | |
glslangValidator.exe -v | |
python python/Scripts/generateshader.py resources/Materials/Examples/StandardSurface/standard_surface_look_brass_tiled.mtlx --path . --target glsl --validator glslangValidator.exe --vulkanGlsl True --validatorArgs="-V --aml" | |
python python/Scripts/generateshader.py resources/Materials/Examples/StandardSurface/standard_surface_look_brass_tiled.mtlx --path . --target essl --validator glslangValidator.exe | |
- name: Static Analysis Tests | |
if: matrix.static_analysis == 'ON' && runner.os == 'macOS' | |
run: | | |
brew install cppcheck | |
cppcheck --project=build/compile_commands.json --error-exitcode=1 --suppress=*:*/Catch/* --suppress=*:*/External/* --suppress=*:*/NanoGUI/* --suppress=*:*/PugiXML/* | |
- name: Initialize Virtual Framebuffer | |
if: matrix.test_render == 'ON' && runner.os == 'Linux' | |
run: | | |
Xvfb :1 -screen 0 1280x960x24 & | |
echo "DISPLAY=:1" >> $GITHUB_ENV | |
echo "MESA_GL_VERSION_OVERRIDE=4.0FC" >> $GITHUB_ENV | |
echo "MESA_GLSL_VERSION_OVERRIDE=400" >> $GITHUB_ENV | |
echo "GALLIUM_DRIVER=softpipe" >> $GITHUB_ENV | |
- name: Render Script Tests | |
if: matrix.test_render == 'ON' | |
run: | | |
mkdir build/render | |
python python/Scripts/baketextures.py resources/Materials/Examples/StandardSurface/standard_surface_brass_tiled.mtlx build/render/brass_average_baked.mtlx --average --path . | |
python python/Scripts/translateshader.py resources/Materials/Examples/StandardSurface/standard_surface_carpaint.mtlx build/render/usd_preview_surface_carpaint.mtlx UsdPreviewSurface --hdr --path . | |
- name: Viewer Tests | |
if: matrix.test_render == 'ON' | |
run: | | |
../installed/bin/MaterialXView --material brass_average_baked.mtlx --mesh ../../resources/Geometry/sphere.obj --screenWidth 48 --screenHeight 48 --cameraZoom 1.4 --shadowMap false --captureFilename Viewer_BrassAverage.png | |
../installed/bin/MaterialXView --material usd_preview_surface_carpaint.mtlx --mesh ../../resources/Geometry/sphere.obj --screenWidth 48 --screenHeight 48 --cameraZoom 1.4 --shadowMap false --captureFilename Viewer_CarpaintTranslated.png | |
working-directory: build/render | |
- name: Upload Installed Package | |
if: matrix.dynamic_analysis != 'ON' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: MaterialX_${{ matrix.name }} | |
path: build/installed/ | |
- name: Upload Reference Shaders | |
uses: actions/upload-artifact@v3 | |
if: matrix.upload_shaders == 'ON' | |
with: | |
name: Reference_Shaders_${{ matrix.name }} | |
path: build/bin/reference/ | |
- name: Upload Renders | |
uses: actions/upload-artifact@v3 | |
if: matrix.test_render == 'ON' | |
with: | |
name: Renders_${{ matrix.name }} | |
path: build/render/ | |
- name: JavaScript CMake Generate | |
if: matrix.build_javascript == 'ON' | |
run: | | |
mkdir javascript/build | |
cd javascript/build | |
cmake -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=${{ env.EMSDK }} -DMATERIALX_BUILD_RENDER=OFF -DMATERIALX_BUILD_TESTS=OFF -DMATERIALX_BUILD_GEN_OSL=OFF -DMATERIALX_BUILD_GEN_MDL=OFF ../.. | |
- name: JavaScript CMake Build | |
if: matrix.build_javascript == 'ON' | |
run: cmake --build . --target install --config Release --parallel 2 | |
working-directory: javascript/build | |
- name: JavaScript Unit Tests | |
if: matrix.build_javascript == 'ON' | |
run: | | |
npm install | |
npm run test | |
npm run test:browser | |
working-directory: javascript/MaterialXTest | |
- name: Build Web Viewer | |
if: matrix.build_javascript == 'ON' | |
run: | | |
npm install | |
npm run build | |
working-directory: javascript/MaterialXView | |
- name: Deploy Web Viewer | |
if: matrix.build_javascript == 'ON' && github.ref == 'refs/heads/main' | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
branch: gh-pages | |
folder: javascript/MaterialXView/dist | |
single-commit: true | |
- name: Upload JavaScript Package | |
if: matrix.build_javascript == 'ON' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: MaterialX_JavaScript | |
path: javascript/build/installed/JavaScript/MaterialX | |
if-no-files-found: ignore |