Skip to content

Commit e550a19

Browse files
authored
Merge branch 'AcademySoftwareFoundation:main' into render_test_perf
2 parents a030b9c + 3c78aa1 commit e550a19

305 files changed

Lines changed: 9394 additions & 6327 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/main.yml

Lines changed: 81 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,25 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
include:
21-
- name: Linux_GCC_10_Python37
21+
- name: Linux_GCC_10_Python39
2222
os: ubuntu-22.04
2323
compiler: gcc
2424
compiler_version: "10"
25-
python: 3.7
25+
python: 3.9
2626
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON -DMATERIALX_BUILD_MONOLITHIC=ON
2727

28-
- name: Linux_GCC_13_Python311
28+
- name: Linux_GCC_14_Python39
2929
os: ubuntu-24.04
3030
compiler: gcc
31-
compiler_version: "13"
32-
python: 3.11
33-
build_javascript: ON
31+
compiler_version: "14"
32+
python: 3.9
3433

35-
- name: Linux_GCC_14_Python312
34+
- name: Linux_GCC_14_Python311
3635
os: ubuntu-24.04
3736
compiler: gcc
3837
compiler_version: "14"
39-
python: 3.12
38+
python: 3.11
39+
test_render: ON
4040

4141
- name: Linux_GCC_CoverageAnalysis
4242
os: ubuntu-24.04
@@ -46,40 +46,39 @@ jobs:
4646
coverage_analysis: ON
4747
cmake_config: -DMATERIALX_COVERAGE_ANALYSIS=ON -DMATERIALX_BUILD_RENDER=OFF -DMATERIALX_BUILD_PYTHON=OFF
4848

49-
- name: Linux_Clang_13_Python37
49+
- name: Linux_Clang_13_Python39
5050
os: ubuntu-22.04
5151
compiler: clang
5252
compiler_version: "13"
53-
python: 3.7
53+
python: 3.9
5454
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
5555

56-
- name: Linux_Clang_18_Python312
56+
- name: Linux_Clang_18_Python311
5757
os: ubuntu-24.04
5858
compiler: clang
5959
compiler_version: "18"
60-
python: 3.12
61-
test_render: ON
60+
python: 3.11
6261
clang_format: ON
6362

64-
- name: MacOS_Xcode_14_Python39
65-
os: macos-13
63+
- name: MacOS_Xcode_15_Python39
64+
os: macos-14
6665
compiler: xcode
67-
compiler_version: "14.1"
66+
compiler_version: "15.4"
6867
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
6968
python: 3.9
7069

71-
- name: MacOS_Xcode_15_Python312
72-
os: macos-14
70+
- name: MacOS_Xcode_15_Python311
71+
os: macos-15
7372
compiler: xcode
74-
compiler_version: "15.4"
75-
python: 3.12
73+
compiler_version: "16.1"
74+
python: 3.11
7675
test_shaders: ON
7776

78-
- name: MacOS_Xcode_16_Python313
77+
- name: MacOS_Xcode_16_Python311
7978
os: macos-15
8079
compiler: xcode
8180
compiler_version: "16.1"
82-
python: 3.13
81+
python: 3.11
8382
static_analysis: ON
8483
cmake_config: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
8584

@@ -98,25 +97,25 @@ jobs:
9897
python: None
9998
cmake_config: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=`xcrun --sdk iphoneos --show-sdk-path` -DCMAKE_OSX_ARCHITECTURES=arm64
10099

101-
- name: Windows_VS2019_Win32_Python37
102-
os: windows-2019
100+
- name: Windows_VS2022_Win32_Python39
101+
os: windows-2022
103102
architecture: x86
104-
python: 3.7
105-
cmake_config: -G "Visual Studio 16 2019" -A "Win32" -DMATERIALX_BUILD_SHARED_LIBS=ON
103+
python: 3.9
104+
cmake_config: -G "Visual Studio 17 2022" -A "Win32"
106105

107-
- name: Windows_VS2022_x64_Python312
108-
os: windows-2022
106+
- name: Windows_VS2022_x64_Python311
107+
os: windows-2025
109108
architecture: x64
110-
python: 3.12
109+
python: 3.11
111110
cmake_config: -G "Visual Studio 17 2022" -A "x64"
112-
upload_shaders: ON
111+
test_shaders: ON
113112

114-
- name: Windows_VS2022_x64_Python313
113+
- name: Windows_VS2022_x64_SharedLibs
115114
os: windows-2025
116115
architecture: x64
117-
python: 3.13
118-
cmake_config: -G "Visual Studio 17 2022" -A "x64"
119-
test_shaders: ON
116+
python: None
117+
cmake_config: -G "Visual Studio 17 2022" -A "x64" -DMATERIALX_BUILD_SHARED_LIBS=ON
118+
upload_shaders: ON
120119

121120
steps:
122121
- name: Sync Repository
@@ -160,11 +159,14 @@ jobs:
160159
- name: Install Dependencies (Windows)
161160
if: runner.os == 'Windows'
162161
run: |
163-
git clone https://github.com/Microsoft/vcpkg -b 2021.05.12 -c advice.detachedHead=false
164-
vcpkg/bootstrap-vcpkg.bat -disableMetrics
165162
Add-Content $env:GITHUB_PATH "$PWD/build/installed/bin"
166-
Add-Content $env:GITHUB_PATH "$PWD/vcpkg/installed/x64-windows/bin"
167-
Add-Content $env:GITHUB_PATH "$PWD/vcpkg/installed/x64-windows/tools"
163+
164+
- name: Install OpenImageIO
165+
if: matrix.build_oiio == 'ON' && runner.os == 'Windows'
166+
run: |
167+
C:/vcpkg/vcpkg install openimageio --triplet=x64-windows-release
168+
Add-Content $env:GITHUB_PATH "C:/vcpkg/installed/x64-windows-release/bin"
169+
Add-Content $env:GITHUB_PATH "C:/vcpkg/installed/x64-windows-release/share/openimageio"
168170
169171
- name: Install Python ${{ matrix.python }}
170172
if: matrix.python != 'None'
@@ -177,21 +179,10 @@ jobs:
177179
if: matrix.python != 'None'
178180
run: pip install setuptools
179181

180-
- name: Install Emscripten
181-
if: matrix.build_javascript == 'ON'
182-
run: |
183-
git clone https://github.com/emscripten-core/emsdk --recursive
184-
cd emsdk
185-
./emsdk install 2.0.20
186-
./emsdk activate 2.0.20
187-
source ./emsdk_env.sh
188-
echo "EMSDK=$EMSDK" >> $GITHUB_ENV
189-
190-
- name: Install Node
191-
if: matrix.build_javascript == 'ON'
192-
uses: actions/setup-node@v4
182+
- name: Install CMake
183+
uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
193184
with:
194-
node-version: '16'
185+
cmakeVersion: 3.26
195186

196187
- name: Run Clang Format
197188
if: matrix.clang_format == 'ON'
@@ -219,6 +210,7 @@ jobs:
219210
python Scripts/mxdoc.py --docType md ../libraries/pbrlib/pbrlib_defs.mtlx
220211
python Scripts/mxdoc.py --docType html ../libraries/bxdf/standard_surface.mtlx
221212
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface --target glsl
213+
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface --target vulkan
222214
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface --target osl
223215
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface --target mdl
224216
python Scripts/generateshader.py ../resources/Materials/Examples/StandardSurface --target msl
@@ -227,10 +219,11 @@ jobs:
227219
- name: Shader Validation Tests (Windows)
228220
if: matrix.test_shaders == 'ON' && runner.os == 'Windows'
229221
run: |
230-
vcpkg/vcpkg install glslang --triplet=x64-windows
231-
glslangValidator.exe -v
232-
python python/Scripts/generateshader.py resources/Materials/Examples --target glsl --validator glslangValidator.exe
233-
python python/Scripts/generateshader.py resources/Materials/Examples --target essl --validator glslangValidator.exe
222+
C:/vcpkg/vcpkg install glslang[tools] --triplet=x64-windows-release
223+
C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe -v
224+
python python/Scripts/generateshader.py resources/Materials/Examples --target glsl --validator C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe
225+
python python/Scripts/generateshader.py resources/Materials/Examples/StandardSurface --target essl --validator C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe
226+
python python/Scripts/generateshader.py resources/Materials/Examples/StandardSurface --target vulkan --validator C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe
234227
235228
- name: Shader Validation Tests (MacOS)
236229
if: matrix.test_shaders == 'ON' && runner.os == 'macOS'
@@ -296,7 +289,7 @@ jobs:
296289
uses: actions/upload-artifact@v4
297290
if: matrix.upload_shaders == 'ON'
298291
with:
299-
name: Reference_Shaders_${{ matrix.name }}
292+
name: MaterialX_ReferenceShaders
300293
path: build/bin/reference/
301294

302295
- name: Upload Renders
@@ -313,47 +306,64 @@ jobs:
313306
name: MaterialX_Coverage
314307
path: build/coverage
315308

309+
javascript:
310+
name: JavaScript
311+
runs-on: ubuntu-latest
312+
313+
steps:
314+
- name: Sync Repository
315+
uses: actions/checkout@v4
316+
317+
- name: Install Emscripten
318+
run: |
319+
git clone https://github.com/emscripten-core/emsdk --recursive
320+
cd emsdk
321+
./emsdk install 2.0.20
322+
./emsdk activate 2.0.20
323+
source ./emsdk_env.sh
324+
echo "EMSDK=$EMSDK" >> $GITHUB_ENV
325+
326+
- name: Install Node
327+
uses: actions/setup-node@v4
328+
with:
329+
node-version: '16'
330+
316331
- name: JavaScript CMake Generate
317-
if: matrix.build_javascript == 'ON'
318332
run: cmake -S . -B javascript/build -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=${{ env.EMSDK }}
319333

320334
- name: JavaScript CMake Build
321-
if: matrix.build_javascript == 'ON'
322335
run: cmake --build javascript/build --target install --config Release --parallel 2
323336

324337
- name: JavaScript Unit Tests
325-
if: matrix.build_javascript == 'ON'
326338
run: |
327339
npm install
328340
npm run test
329341
npm run test:browser
330342
working-directory: javascript/MaterialXTest
331343

332344
- name: Build Web Viewer
333-
if: matrix.build_javascript == 'ON'
334345
run: |
335346
npm install
336347
npm run build
337348
working-directory: javascript/MaterialXView
338349

339350
- name: Deploy Web Viewer
340-
if: matrix.build_javascript == 'ON' && github.event_name != 'pull_request'
341-
uses: JamesIves/github-pages-deploy-action@v4.6.4
351+
if: github.event_name != 'pull_request'
352+
uses: JamesIves/github-pages-deploy-action@6c2d9db40f9296374acc17b90404b6e8864128c8 # v4.7.3
342353
with:
343354
branch: gh-pages
344355
folder: javascript/MaterialXView/dist
345356
single-commit: true
346357

347358
- name: Upload JavaScript Package
348-
if: matrix.build_javascript == 'ON'
349359
uses: actions/upload-artifact@v4
350360
with:
351361
name: MaterialX_JavaScript
352-
path: javascript/build/installed/JavaScript/MaterialX
362+
path: javascript/build/installed/JavaScript/MaterialX
353363

354364
sdist:
355365
name: Python SDist
356-
runs-on: ubuntu-22.04
366+
runs-on: ubuntu-24.04
357367
if: github.repository == 'AcademySoftwareFoundation/MaterialX'
358368
outputs:
359369
sdist_filename: ${{ steps.generate.outputs.filename }}
@@ -388,8 +398,8 @@ jobs:
388398
strategy:
389399
fail-fast: false
390400
matrix:
391-
python-minor: ['7', '8', '9', '10', '11', '12']
392-
os: ['ubuntu-22.04', 'windows-2022', 'macos-14-large']
401+
python-minor: ['9', '10', '11', '12', '13']
402+
os: ['ubuntu-24.04', 'windows-2022', 'macos-15']
393403

394404
steps:
395405
- name: Sync Repository
@@ -407,21 +417,18 @@ jobs:
407417
path: sdist
408418

409419
- name: Build Wheel
410-
uses: pypa/cibuildwheel@v2.19.2
420+
uses: pypa/cibuildwheel@v2.23.2
411421
with:
412422
package-dir: ${{ github.workspace }}/sdist/${{ needs.sdist.outputs.sdist_filename }}
413423
env:
414424
CIBW_BUILD: 'cp3${{ matrix.python-minor }}-*'
415425
CIBW_SKIP: '*musllinux*'
416426
CIBW_ARCHS: 'auto64'
417-
# https://github.com/pypa/manylinux
418-
# manylinux2014 is CentOS 7 based. Which means GCC 10 and glibc 2.17.
419-
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
427+
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
420428
CIBW_BEFORE_ALL_LINUX: yum install -y libXt-devel
421429
CIBW_BUILD_VERBOSITY: 1
422430
CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=2
423-
# CIBW_BUILD_FRONTEND: build # https://github.com/pypa/build
424-
MACOSX_DEPLOYMENT_TARGET: '10.15'
431+
MACOSX_DEPLOYMENT_TARGET: '11.0'
425432

426433
- name: Install Wheel
427434
run: python -m pip install MaterialX --find-links wheelhouse --no-index

CHANGELOG.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,32 @@
11
# Change Log
22

3-
## [1.39.3] - Development
3+
## [1.39.4] - Development
4+
5+
## [1.39.3] - 2025-03-07
6+
7+
### Added
8+
- Added support for the [fract node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2169), with implementations in GLSL, OSL, and MDL.
9+
- Added a bitangent input to the [bump node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2196), aligning its feature set with the normalmap node.
10+
- Added support for [OSL 1.14](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2204) in shader generation, leveraging the latest closures when available.
11+
- Added support for [MDL 1.10](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2214) in shader generation, leveraging the latest closures when available.
12+
- Added initial support for [data library builds](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2226), allowing future releases to generate derived artifacts from the MaterialX data libraries.
13+
- Added an [ElementVec type alias](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2231) in MaterialX C++, allowing certain patterns to be expressed more clearly and concisely.
14+
15+
### Changed
16+
- Improved the compatibility of MaterialX shader generation with [Hydra Storm](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2211).
17+
- Refactored the [type system](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2176) in shader generation, improving the thread-safety and robustness of the generation process.
18+
- Improved the implementations of the [BSDF operator nodes](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2191), preferring data definitions over explicit C++ code.
19+
- Improved the implementations of the [time node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2192), using a graph definition in hardware shading languages.
20+
- Optimized [GitHub CI](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2253) to reduce build times for contributors.
21+
- Raised the minimum CMake version to [CMake 3.26](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2235).
22+
23+
### Fixed
24+
- Fixed two edge cases in the [version](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2248) [upgrade](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2251) logic for normalmap nodes, addressing the usage of MaterialX versioning in OpenUSD.
25+
- Fixed [tangent frame orthogonalization](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2245) for the normalmap node in OSL shader generation.
26+
- Added validation of [tree depth](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2232) and [XInclude depth](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2233) in XML parsing, addressing cases where unusually complex documents could trigger a stack overflow.
27+
- Adding two missing [null](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2228) [checks](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2229) in the getShaderNodes helper function.
28+
- Integrated fixes to [OSL type classes](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2200) from recent work in the OSL project.
29+
- Improved the handling of [invalid materials](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2230) in the MaterialX Viewer, addressing cases where missing lights could trigger a crash.
430

531
## [1.39.2] - 2025-01-20
632

0 commit comments

Comments
 (0)