Skip to content

Commit 90da6cd

Browse files
Merge branch 'main' into fractal2d
2 parents ac642dd + f24695f commit 90da6cd

File tree

162 files changed

+3277
-2707
lines changed

Some content is hidden

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

162 files changed

+3277
-2707
lines changed

.github/workflows/main.yml

Lines changed: 41 additions & 45 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,23 +53,22 @@ 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
63+
- name: MacOS_Xcode_15_Python311
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
69-
python: 3.9
68+
python: 3.11
7069

7170
- name: MacOS_Xcode_15_Python312
72-
os: macos-14
71+
os: macos-15
7372
compiler: xcode
7473
compiler_version: "15.4"
7574
python: 3.12
@@ -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: 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

CMakeLists.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# MaterialX Version
22
set(MATERIALX_MAJOR_VERSION 1)
33
set(MATERIALX_MINOR_VERSION 39)
4-
set(MATERIALX_BUILD_VERSION 3)
4+
set(MATERIALX_BUILD_VERSION 4)
55
set(MATERIALX_LIBRARY_VERSION ${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION})
66

77
# Cmake setup
8-
cmake_minimum_required(VERSION 3.24)
8+
cmake_minimum_required(VERSION 3.26)
99
set(CMAKE_CXX_STANDARD 17)
1010
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
1111
set(CMAKE_MACOSX_RPATH ON)
1212
enable_testing()
13-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
14-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
15-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
13+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
14+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
15+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
1616

1717
# JavaScript setup
1818
option(MATERIALX_BUILD_JS "Build the MaterialX JavaScript package from C++ bindings. Requires the emscripten environment." OFF)
@@ -49,6 +49,7 @@ option(MATERIALX_BUILD_TESTS "Build unit tests." OFF)
4949
option(MATERIALX_BUILD_BENCHMARK_TESTS "Build benchmark tests." OFF)
5050

5151
option(MATERIALX_BUILD_SHARED_LIBS "Build MaterialX libraries as shared rather than static." OFF)
52+
option(MATERIALX_BUILD_DATA_LIBRARY "Build generated products from the MaterialX data library." OFF)
5253
option(MATERIALX_BUILD_MONOLITHIC "Build a single monolithic MaterialX library." OFF)
5354
option(MATERIALX_BUILD_USE_CCACHE "Enable the use of ccache to speed up build time, if present." ON)
5455
option(MATERIALX_PYTHON_LTO "Enable link-time optimizations for MaterialX Python." ON)
@@ -170,6 +171,7 @@ mark_as_advanced(MATERIALX_BUILD_RENDER_PLATFORMS)
170171
mark_as_advanced(MATERIALX_BUILD_OIIO)
171172
mark_as_advanced(MATERIALX_BUILD_BENCHMARK_TESTS)
172173
mark_as_advanced(MATERIALX_BUILD_SHARED_LIBS)
174+
mark_as_advanced(MATERIALX_BUILD_DATA_LIBRARY)
173175
mark_as_advanced(MATERIALX_BUILD_MONOLITHIC)
174176
mark_as_advanced(MATERIALX_BUILD_USE_CCACHE)
175177
mark_as_advanced(MATERIALX_NAMESPACE_SUFFIX)
@@ -252,7 +254,7 @@ endif()
252254
253255
# Adjust the default installation path
254256
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
255-
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/installed" CACHE PATH "Default install path" FORCE)
257+
set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/installed" CACHE PATH "Default install path" FORCE)
256258
endif()
257259
258260
# Set the installation path for shared libraries
@@ -356,7 +358,7 @@ function(mx_add_library MATERIALX_MODULE_NAME)
356358
357359
# Create version resource
358360
if(MATERIALX_BUILD_SHARED_LIBS AND MSVC)
359-
configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
361+
configure_file(${PROJECT_SOURCE_DIR}/cmake/modules/MaterialXVersion.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
360362
target_sources(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
361363
endif()
362364
@@ -586,10 +588,10 @@ if(NOT SKBUILD)
586588
endif()
587589

588590
configure_package_config_file(cmake/modules/MaterialXConfig.cmake.in
589-
${CMAKE_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}Config.cmake
591+
${PROJECT_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}Config.cmake
590592
INSTALL_DESTINATION "${MATERIALX_GEN_CONFIG_PATH}"
591593
PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_PROJECT_NAME)
592-
write_basic_package_version_file(${CMAKE_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
594+
write_basic_package_version_file(${PROJECT_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
593595
VERSION ${MATERIALX_LIBRARY_VERSION}
594596
COMPATIBILITY AnyNewerVersion)
595597

@@ -599,7 +601,7 @@ if(NOT SKBUILD)
599601
DESTINATION "${MATERIALX_GEN_CONFIG_PATH}"
600602
FILE ${CMAKE_PROJECT_NAME}Targets.cmake)
601603

602-
install(FILES "${CMAKE_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
603-
"${CMAKE_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}Config.cmake"
604+
install(FILES "${PROJECT_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
605+
"${PROJECT_BINARY_DIR}/cmake/${CMAKE_PROJECT_NAME}Config.cmake"
604606
DESTINATION "${MATERIALX_GEN_CONFIG_PATH}")
605607
endif()

documents/CMakeLists.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@ set(DOXYGEN_HTML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/html)
33
set(DOXYGEN_INPUT_LIST ${CMAKE_CURRENT_BINARY_DIR}/MainPage.md)
44

55
set(MATERIALX_DOXYGEN_SOURCE_FOLDERS
6-
${CMAKE_SOURCE_DIR}/source/MaterialXCore
7-
${CMAKE_SOURCE_DIR}/source/MaterialXFormat
8-
${CMAKE_SOURCE_DIR}/source/MaterialXGenShader
9-
${CMAKE_SOURCE_DIR}/source/MaterialXGenShader/Nodes
10-
${CMAKE_SOURCE_DIR}/source/MaterialXGenGlsl
11-
${CMAKE_SOURCE_DIR}/source/MaterialXGenGlsl/Nodes
12-
${CMAKE_SOURCE_DIR}/source/MaterialXGenOsl
13-
${CMAKE_SOURCE_DIR}/source/MaterialXGenMdl
14-
${CMAKE_SOURCE_DIR}/source/MaterialXRender
15-
${CMAKE_SOURCE_DIR}/source/MaterialXRenderHw
16-
${CMAKE_SOURCE_DIR}/source/MaterialXRenderGlsl
17-
${CMAKE_SOURCE_DIR}/source/MaterialXRenderOsl)
6+
${PROJECT_SOURCE_DIR}/source/MaterialXCore
7+
${PROJECT_SOURCE_DIR}/source/MaterialXFormat
8+
${PROJECT_SOURCE_DIR}/source/MaterialXGenShader
9+
${PROJECT_SOURCE_DIR}/source/MaterialXGenShader/Nodes
10+
${PROJECT_SOURCE_DIR}/source/MaterialXGenGlsl
11+
${PROJECT_SOURCE_DIR}/source/MaterialXGenGlsl/Nodes
12+
${PROJECT_SOURCE_DIR}/source/MaterialXGenOsl
13+
${PROJECT_SOURCE_DIR}/source/MaterialXGenMdl
14+
${PROJECT_SOURCE_DIR}/source/MaterialXRender
15+
${PROJECT_SOURCE_DIR}/source/MaterialXRenderHw
16+
${PROJECT_SOURCE_DIR}/source/MaterialXRenderGlsl
17+
${PROJECT_SOURCE_DIR}/source/MaterialXRenderOsl)
1818

1919
find_package(Doxygen REQUIRED)
2020

2121
foreach(FOLDER ${MATERIALX_DOXYGEN_SOURCE_FOLDERS})
22-
file(GLOB FOLDER_HEADERS CONFIGURE_DEPENDS ${FOLDER}/*.h)
22+
file(GLOB FOLDER_HEADERS ${FOLDER}/*.h)
2323
list(APPEND DOXYGEN_INPUT_LIST ${FOLDER_HEADERS})
2424
endforeach()
2525

documents/Doxyfile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ INPUT = ${DOXYGEN_INPUT_STR}
99
OUTPUT_DIRECTORY = ${DOXYGEN_OUTPUT_DIR}
1010
IMAGE_PATH = ${DOXYGEN_OUTPUT_DIR}
1111
HTML_OUTPUT = ${DOXYGEN_HTML_OUTPUT_DIR}
12-
STRIP_FROM_PATH = ${CMAKE_SOURCE_DIR}
12+
STRIP_FROM_PATH = ${PROJECT_SOURCE_DIR}
1313

1414
JAVADOC_AUTOBRIEF = YES
1515
HIDE_SCOPE_NAMES = YES

javascript/MaterialXTest/browser/shaderGenerator.spec.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ describe('Generate Shaders', function ()
3434

3535
const generators = []
3636
if (typeof mx.EsslShaderGenerator != 'undefined')
37-
generators.push(new mx.EsslShaderGenerator());
37+
generators.push(mx.EsslShaderGenerator.create());
3838
if (typeof mx.GlslShaderGenerator != 'undefined')
39-
generators.push(new mx.GlslShaderGenerator());
39+
generators.push(mx.GlslShaderGenerator.create());
4040
if (typeof mx.MslShaderGenerator != 'undefined')
41-
generators.push(new mx.MslShaderGenerator());
41+
generators.push(mx.MslShaderGenerator.create());
4242
if (typeof mx.OslShaderGenerator != 'undefined')
43-
generators.push(new mx.OslShaderGenerator());
43+
generators.push(mx.OslShaderGenerator.create());
4444
if (typeof mx.VkShaderGenerator != 'undefined')
45-
generators.push(new mx.VkShaderGenerator());
45+
generators.push(mx.VkShaderGenerator.create());
4646
if (typeof mx.MdlShaderGenerator != 'undefined')
47-
generators.push(new mx.MdlShaderGenerator());
47+
generators.push(mx.MdlShaderGenerator.create());
4848

4949
const elem = mx.findRenderableElement(doc);
5050
for (let gen of generators)

0 commit comments

Comments
 (0)