Skip to content

Commit 891e7a8

Browse files
Merge branch 'main' into add-hextiling-nodes
2 parents e5af8a0 + dcd0285 commit 891e7a8

347 files changed

Lines changed: 6304 additions & 6286 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: 59 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ jobs:
2525
python: 3.7
2626
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON -DMATERIALX_BUILD_MONOLITHIC=ON
2727

28-
- name: Linux_GCC_13_Python311
28+
- name: Linux_GCC_14_Python312
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.12
3433

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

4141
- name: Linux_GCC_CoverageAnalysis
4242
os: ubuntu-24.04
@@ -53,48 +53,47 @@ jobs:
5353
python: 3.7
5454
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
5555

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

64-
- name: MacOS_Xcode_14_Python39
65-
os: macos-13
66-
compiler: xcode
67-
compiler_version: "14.1"
68-
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
69-
python: 3.9
70-
7163
- name: MacOS_Xcode_15_Python311
7264
os: macos-14
7365
compiler: xcode
74-
compiler_version: "15.1"
66+
compiler_version: "15.4"
67+
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
7568
python: 3.11
76-
static_analysis: ON
77-
cmake_config: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
7869

7970
- name: MacOS_Xcode_15_Python312
80-
os: macos-14
71+
os: macos-15
8172
compiler: xcode
8273
compiler_version: "15.4"
8374
python: 3.12
8475
test_shaders: ON
8576

77+
- name: MacOS_Xcode_16_Python313
78+
os: macos-15
79+
compiler: xcode
80+
compiler_version: "16.1"
81+
python: 3.13
82+
static_analysis: ON
83+
cmake_config: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
84+
8685
- name: MacOS_Xcode_DynamicAnalysis
87-
os: macos-14
86+
os: macos-15
8887
compiler: xcode
89-
compiler_version: "15.4"
88+
compiler_version: "16.1"
9089
python: None
9190
dynamic_analysis: ON
9291
cmake_config: -DMATERIALX_DYNAMIC_ANALYSIS=ON
9392

94-
- name: iOS_Xcode_15
95-
os: macos-14
93+
- name: iOS_Xcode_16
94+
os: macos-15
9695
compiler: xcode
97-
compiler_version: "15.4"
96+
compiler_version: "16.1"
9897
python: None
9998
cmake_config: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=`xcrun --sdk iphoneos --show-sdk-path` -DCMAKE_OSX_ARCHITECTURES=arm64
10099

@@ -104,20 +103,20 @@ jobs:
104103
python: 3.7
105104
cmake_config: -G "Visual Studio 16 2019" -A "Win32" -DMATERIALX_BUILD_SHARED_LIBS=ON
106105

107-
- name: Windows_VS2022_x64_Python311
108-
os: windows-2022
109-
architecture: x64
110-
python: 3.11
111-
cmake_config: -G "Visual Studio 17 2022" -A "x64"
112-
test_shaders: ON
113-
114106
- name: Windows_VS2022_x64_Python312
115107
os: windows-2022
116108
architecture: x64
117109
python: 3.12
118110
cmake_config: -G "Visual Studio 17 2022" -A "x64"
119111
upload_shaders: ON
120112

113+
- name: Windows_VS2022_x64_Python313
114+
os: windows-2025
115+
architecture: x64
116+
python: 3.13
117+
cmake_config: -G "Visual Studio 17 2022" -A "x64"
118+
test_shaders: ON
119+
121120
steps:
122121
- name: Sync Repository
123122
uses: actions/checkout@v4
@@ -160,11 +159,7 @@ 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"
168163
169164
- name: Install Python ${{ matrix.python }}
170165
if: matrix.python != 'None'
@@ -177,22 +172,6 @@ jobs:
177172
if: matrix.python != 'None'
178173
run: pip install setuptools
179174

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
193-
with:
194-
node-version: '16'
195-
196175
- name: Run Clang Format
197176
if: matrix.clang_format == 'ON'
198177
run: find source \( -name *.h -o -name *.cpp -o -name *.mm -o -name *.inl \) ! -path "*/External/*" ! -path "*/NanoGUI/*" | xargs clang-format -i --verbose
@@ -227,10 +206,10 @@ jobs:
227206
- name: Shader Validation Tests (Windows)
228207
if: matrix.test_shaders == 'ON' && runner.os == 'Windows'
229208
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
209+
C:/vcpkg/vcpkg install glslang[tools] --triplet=x64-windows-release
210+
C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe -v
211+
python python/Scripts/generateshader.py resources/Materials/Examples --target glsl --validator C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe
212+
python python/Scripts/generateshader.py resources/Materials/Examples --target essl --validator C:/vcpkg/installed/x64-windows-release/tools/glslang/glslangValidator.exe
234213
235214
- name: Shader Validation Tests (MacOS)
236215
if: matrix.test_shaders == 'ON' && runner.os == 'macOS'
@@ -313,43 +292,60 @@ jobs:
313292
name: MaterialX_Coverage
314293
path: build/coverage
315294

295+
javascript:
296+
name: JavaScript
297+
runs-on: ubuntu-latest
298+
299+
steps:
300+
- name: Sync Repository
301+
uses: actions/checkout@v4
302+
303+
- name: Install Emscripten
304+
run: |
305+
git clone https://github.com/emscripten-core/emsdk --recursive
306+
cd emsdk
307+
./emsdk install 2.0.20
308+
./emsdk activate 2.0.20
309+
source ./emsdk_env.sh
310+
echo "EMSDK=$EMSDK" >> $GITHUB_ENV
311+
312+
- name: Install Node
313+
uses: actions/setup-node@v4
314+
with:
315+
node-version: '16'
316+
316317
- name: JavaScript CMake Generate
317-
if: matrix.build_javascript == 'ON'
318318
run: cmake -S . -B javascript/build -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=${{ env.EMSDK }}
319319

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

324323
- name: JavaScript Unit Tests
325-
if: matrix.build_javascript == 'ON'
326324
run: |
327325
npm install
328326
npm run test
329327
npm run test:browser
330328
working-directory: javascript/MaterialXTest
331329

332330
- name: Build Web Viewer
333-
if: matrix.build_javascript == 'ON'
334331
run: |
335332
npm install
336333
npm run build
337334
working-directory: javascript/MaterialXView
338335

339336
- name: Deploy Web Viewer
340-
if: matrix.build_javascript == 'ON' && github.event_name != 'pull_request'
337+
if: github.event_name != 'pull_request'
341338
uses: JamesIves/github-pages-deploy-action@v4.6.4
342339
with:
343340
branch: gh-pages
344341
folder: javascript/MaterialXView/dist
345342
single-commit: true
346343

347344
- name: Upload JavaScript Package
348-
if: matrix.build_javascript == 'ON'
349345
uses: actions/upload-artifact@v4
350346
with:
351347
name: MaterialX_JavaScript
352-
path: javascript/build/installed/JavaScript/MaterialX
348+
path: javascript/build/installed/JavaScript/MaterialX
353349

354350
sdist:
355351
name: Python SDist

CHANGELOG.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,68 @@
11
# Change Log
22

3-
## [1.39.2] - 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.
30+
31+
## [1.39.2] - 2025-01-20
432

533
### Added
634
- Added support for the [Chiang Hair BSDF](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1968), with initial implementations in hardware shading languages and MDL.
735
- Added support for the [Disney Principled](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2004) shading model, implemented as a language-independent graph.
36+
- Added support for [generic color ramps](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1884), using a graph-based ramp node with ten control points.
37+
- Added support for [Worley noise with solid cells](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2119), opening up new artistic options for metal flake shaders.
838
- Added support for [data library referencing](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2054), enabling improved performance in shader generation.
939
- Added support for [custom structure types](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1831) in MaterialX.
1040
- Added support for [functional equivalence](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2003) tests between MaterialX elements.
41+
- Added support for [geompropvalueuniform nodes](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2092), improving functional parity between MaterialX and USD.
1142
- Added support for [transmission effects](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2027) in the translation graph from Standard Surface to glTF PBR.
1243
- Added support for [coated emission](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2087) in the translation graph from Standard Surface to UsdPreviewSurface.
1344
- Added support for [Apple framework builds](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2020).
1445
- Added support for [MDL 1.9](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2102) in shader generation.
1546
- Added support for [viewdirection space](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2036) in hardware shading languages.
47+
- Added support for [image downsampling](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2159) in MaterialXRender.
48+
- Added support for [image difference statistics](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2160) in render tests.
1649
- Added a [combined version define](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2031) to MaterialX C++.
1750
- Added a [release signing workflow](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2009) to GitHub Actions.
1851
- Added documentation for [keyboard shortcuts](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2026) in the MaterialX Viewer.
1952

2053
### Changed
54+
- Improved the performance of [graph traversal](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2023) by skipping edges that have already been visited.
2155
- Reduced duplication between the [MSL and GLSL implementations](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2068) of nodes.
56+
- Updated the [UsdPreviewSurface shading model](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2084) to v2.6, maintaining the visual interpretation of existing assets.
57+
- Raised the [minimum OSL version](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2144) to v1.12.6 in OSL shader generation.
2258

2359
### Fixed
2460
- Fixed [unintentional camera orbiting](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2032) in the render view of the MaterialX Graph Editor.
2561
- Fixed [banding artifacts](https://github.com/AcademySoftwareFoundation/MaterialX/pull/1977) in the MaterialX Viewer on MacOS.
62+
- Fixed the handling of [missing scenes](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2124) in the MaterialX Web Viewer.
63+
- Fixed an edge case for [node pasting](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2145) in the MaterialX Graph Editor.
64+
- Fixed the implementation of [texture filtering](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2158) in OSL shader generation.
65+
- Fixed the implementation of the [heighttonormal node](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2165) in OSL shader generation.
2666
- Fixed a call to the [anisotropic_vdf closure](https://github.com/AcademySoftwareFoundation/MaterialX/pull/2016) in OSL shader generation.
2767

2868
### Removed

0 commit comments

Comments
 (0)