diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index aeba7b2c45..1af8012ef0 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -38,6 +38,7 @@ jobs:
compiler_version: "13"
python: 3.12
static_analysis: ON
+ cmake_config: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: Linux_GCC_CoverageAnalysis
os: ubuntu-22.04
@@ -77,17 +78,17 @@ jobs:
cmake_config: -DMATERIALX_BUILD_SHARED_LIBS=ON
python: 3.7
- - name: MacOS_Xcode_13_Python39
- os: macos-12
- compiler: xcode
- compiler_version: "13.4"
- python: 3.9
-
- name: MacOS_Xcode_14_Python311
os: macos-13
compiler: xcode
compiler_version: "14.3"
python: 3.11
+
+ - name: MacOS_Xcode_15_Python312
+ os: macos-13
+ compiler: xcode
+ compiler_version: "15.0"
+ python: 3.12
test_shaders: ON
- name: iOS_Xcode_15
@@ -194,17 +195,13 @@ jobs:
- name: Run Clang Format
if: matrix.clang_format == 'ON'
- run: find source \( -name *.h -o -name *.cpp -o -name *.mm \) ! -path "*/External/*" ! -path "*/NanoGUI/*" | xargs clang-format -i --verbose
+ run: find source \( -name *.h -o -name *.cpp -o -name *.mm -o -name *.inl \) ! -path "*/External/*" ! -path "*/NanoGUI/*" | xargs clang-format -i --verbose
- name: CMake Generate
- run: |
- mkdir build
- cd build
- cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_BUILD_VIEWER=ON -DMATERIALX_BUILD_GRAPH_EDITOR=ON -DMATERIALX_TEST_RENDER=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ${{matrix.cmake_config}} ..
+ run: cmake -S . -B build -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_BUILD_VIEWER=ON -DMATERIALX_BUILD_GRAPH_EDITOR=ON -DMATERIALX_TEST_RENDER=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON ${{matrix.cmake_config}}
- name: CMake Build
- run: cmake --build . --target install --config Release --parallel 2
- working-directory: build
+ run: cmake --build build --target install --config Release --parallel 2
- name: CMake Unit Tests
run: ctest -VV --output-on-failure --build-config Release
@@ -312,15 +309,11 @@ jobs:
- 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 ../..
+ run: cmake -S . -B javascript/build -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=${{ env.EMSDK }}
- name: JavaScript CMake Build
if: matrix.build_javascript == 'ON'
- run: cmake --build . --target install --config Release --parallel 2
- working-directory: javascript/build
+ run: cmake --build javascript/build --target install --config Release --parallel 2
- name: JavaScript Unit Tests
if: matrix.build_javascript == 'ON'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0d6a64d6b1..c29565a7ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ set(MATERIALX_BUILD_VERSION 9)
set(MATERIALX_LIBRARY_VERSION ${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION})
# Cmake setup
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(CMAKE_MACOSX_RPATH ON)
@@ -61,13 +61,21 @@ option(MATERIALX_BUILD_IOS "Build MaterialX for iOS." OFF)
if (MATERIALX_BUILD_IOS)
set(CMAKE_SYSTEM_NAME iOS)
add_definitions(-DTARGET_OS_IOS=1)
- set(MATERIALX_BUILD_PYTHON OFF)
- set(MATERIALX_BUILD_VIEWER OFF)
- set(MATERIALX_BUILD_GRAPH_EDITOR OFF)
- set(MATERIALX_BUILD_GEN_GLSL OFF)
- set(MATERIALX_BUILD_GEN_OSL OFF)
- set(MATERIALX_BUILD_GEN_MDL OFF)
- set(MATERIALX_BUILD_TESTS OFF)
+ set(MATERIALX_BUILD_PYTHON OFF)
+ set(MATERIALX_BUILD_VIEWER OFF)
+ set(MATERIALX_BUILD_GRAPH_EDITOR OFF)
+ set(MATERIALX_BUILD_GEN_GLSL OFF)
+ set(MATERIALX_BUILD_GEN_OSL OFF)
+ set(MATERIALX_BUILD_GEN_MDL OFF)
+ set(MATERIALX_BUILD_TESTS OFF)
+endif()
+
+if (MATERIALX_BUILD_JS)
+ set(MATERIALX_BUILD_GEN_OSL OFF)
+ set(MATERIALX_BUILD_GEN_MSL OFF)
+ set(MATERIALX_BUILD_GEN_MDL OFF)
+ set(MATERIALX_BUILD_RENDER OFF)
+ set(MATERIALX_BUILD_TESTS OFF)
endif()
set(MATERIALX_PYTHON_VERSION "" CACHE STRING
@@ -81,10 +89,6 @@ set(MATERIALX_PYTHON_PYBIND11_DIR "" CACHE PATH
set(MATERIALX_OIIO_DIR "" CACHE PATH "Path to the root folder of the OpenImageIO installation.")
-if (MATERIALX_BUILD_JS)
- set(MATERIALX_BUILD_GEN_GLSL ON)
-endif()
-
# Settings to define installation layout
set(MATERIALX_INSTALL_INCLUDE_PATH "include" CACHE STRING "Install header include path (e.g. 'inc', 'include').")
set(MATERIALX_INSTALL_LIB_PATH "lib" CACHE STRING "Install lib path (e.g. 'libs', 'lib').")
@@ -339,14 +343,12 @@ if(MATERIALX_BUILD_JS)
add_subdirectory(source/JsMaterialX)
endif()
-if(${CMAKE_VERSION} VERSION_GREATER "3.6.2")
- if(MATERIALX_BUILD_VIEWER)
- set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXView)
- elseif(MATERIALX_BUILD_GRAPH_EDITOR)
- set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXGraphEditor)
- elseif(MATERIALX_BUILD_TESTS)
- set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXTest)
- endif()
+if(MATERIALX_BUILD_VIEWER)
+ set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXView)
+elseif(MATERIALX_BUILD_GRAPH_EDITOR)
+ set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXGraphEditor)
+elseif(MATERIALX_BUILD_TESTS)
+ set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MaterialXTest)
endif()
# Install root-level documents
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index b4520d9e3c..2ec3d7b867 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -48,7 +48,7 @@ The current Voting Members of the MaterialX TSC are:
- Doug Smythe - Industrial Light & Magic
- Niklas Harrysson - Lumiere Software
- Orn Gunnarsson - Autodesk
-- David Larsson - Adobe
+- Andréa Machizaud - Adobe
### Stakeholders
@@ -68,8 +68,8 @@ The current Stakeholders of the MaterialX TSC are:
- Rafal Jaroszkiewicz - SideFX
- Lee Kerley - Sony Pictures Imageworks
- Lutz Kettner - NVIDIA
+- Chris Kulla - Epic Games
- Bernard Kwok - Khronos Group
-- Jonathan Litt - Epic Games
- André Mazzone - ILM
- Magnus Pettersson - IKEA
- Brian Savery - AMD
diff --git a/javascript/MaterialXTest/package-lock.json b/javascript/MaterialXTest/package-lock.json
index 7835f07ce5..e7d6980fd8 100644
--- a/javascript/MaterialXTest/package-lock.json
+++ b/javascript/MaterialXTest/package-lock.json
@@ -9,10 +9,10 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
- "@babel/core": "^7.22.5",
- "@babel/preset-env": "^7.22.5",
- "@babel/register": "^7.22.5",
- "chai": "^4.3.7",
+ "@babel/core": "^7.23.6",
+ "@babel/preset-env": "^7.23.6",
+ "@babel/register": "^7.22.15",
+ "chai": "^4.3.10",
"copyfiles": "^2.4.1",
"karma": "^6.4.2",
"karma-chai": "^0.1.0",
@@ -37,47 +37,48 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
+ "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
- "convert-source-map": "^1.7.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.6",
+ "@babel/parser": "^7.23.6",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.6",
+ "@babel/types": "^7.23.6",
+ "convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -88,12 +89,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
- "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.23.6",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -115,51 +116,48 @@
}
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
- "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.3",
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
"lru-cache": "^5.1.1",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
- "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz",
+ "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
"@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "semver": "^6.3.0"
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -169,14 +167,14 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz",
- "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"regexpu-core": "^5.3.1",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -186,39 +184,38 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
- "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz",
+ "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
"debug": "^4.1.1",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
+ "resolve": "^1.14.2"
},
"peerDependencies": {
- "@babel/core": "^7.4.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
- "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
@@ -237,46 +234,46 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
- "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
"@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-optimise-call-expression": {
@@ -301,15 +298,14 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
- "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
@@ -319,20 +315,20 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
- "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-simple-access": {
@@ -360,9 +356,9 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
- "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
@@ -372,69 +368,68 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
- "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
+ "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
"dev": true,
"dependencies": {
"@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.22.19"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz",
- "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
+ "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.6",
+ "@babel/types": "^7.23.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
@@ -442,9 +437,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
- "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -454,9 +449,9 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
- "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
+ "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -469,14 +464,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
- "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
+ "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5"
+ "@babel/plugin-transform-optional-chaining": "^7.23.3"
},
"engines": {
"node": ">=6.9.0"
@@ -485,29 +480,29 @@
"@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz",
+ "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==",
"dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
- "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
"dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -577,9 +572,9 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
- "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
+ "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -592,9 +587,9 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
- "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
+ "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -749,9 +744,9 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
- "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
+ "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -764,14 +759,14 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz",
- "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz",
+ "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
"@babel/plugin-syntax-async-generators": "^7.8.4"
},
"engines": {
@@ -782,14 +777,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
- "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
+ "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5"
+ "@babel/helper-remap-async-to-generator": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
@@ -799,9 +794,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
- "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
+ "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -814,9 +809,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
- "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
+ "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -829,12 +824,12 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
- "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
+ "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -845,12 +840,12 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
- "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
+ "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-class-static-block": "^7.14.5"
},
@@ -862,19 +857,19 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz",
- "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==",
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz",
+ "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-split-export-declaration": "^7.22.6",
"globals": "^11.1.0"
},
"engines": {
@@ -885,13 +880,13 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
- "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
+ "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.5"
+ "@babel/template": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
@@ -901,9 +896,9 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
- "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
+ "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -916,12 +911,12 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
- "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
+ "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -932,9 +927,9 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
- "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
+ "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -947,9 +942,9 @@
}
},
"node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
- "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
+ "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -963,12 +958,12 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
- "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
+ "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
"dev": true,
"dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -979,9 +974,9 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
- "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+ "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -995,12 +990,13 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
- "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
+ "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1010,13 +1006,13 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
- "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
+ "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
"dev": true,
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-function-name": "^7.23.0",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1027,9 +1023,9 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
- "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
+ "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1043,9 +1039,9 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
- "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
+ "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1058,9 +1054,9 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
- "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
+ "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1074,9 +1070,9 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
- "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
+ "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1089,12 +1085,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
- "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
+ "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1105,12 +1101,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
- "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
+ "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-simple-access": "^7.22.5"
},
@@ -1122,15 +1118,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
- "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz",
+ "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==",
"dev": true,
"dependencies": {
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5"
+ "@babel/helper-validator-identifier": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
@@ -1140,12 +1136,12 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
- "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
+ "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
"dev": true,
"dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1172,9 +1168,9 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
- "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
+ "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1187,9 +1183,9 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
- "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
+ "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1203,9 +1199,9 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
- "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
+ "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1219,16 +1215,16 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
- "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz",
+ "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/compat-data": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.22.5"
+ "@babel/plugin-transform-parameters": "^7.23.3"
},
"engines": {
"node": ">=6.9.0"
@@ -1238,13 +1234,13 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
- "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
+ "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5"
+ "@babel/helper-replace-supers": "^7.22.20"
},
"engines": {
"node": ">=6.9.0"
@@ -1254,9 +1250,9 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
- "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
+ "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1270,9 +1266,9 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz",
- "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
+ "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1287,9 +1283,9 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
- "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+ "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1302,12 +1298,12 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
- "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
+ "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
"dev": true,
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1318,13 +1314,13 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
- "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
+ "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
"dev": true,
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
@@ -1336,9 +1332,9 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
- "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
+ "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1351,13 +1347,13 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
- "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
+ "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
- "regenerator-transform": "^0.15.1"
+ "regenerator-transform": "^0.15.2"
},
"engines": {
"node": ">=6.9.0"
@@ -1367,9 +1363,9 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
- "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
+ "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1382,9 +1378,9 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
- "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
+ "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1397,9 +1393,9 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
- "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
+ "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1413,9 +1409,9 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
- "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
+ "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1428,9 +1424,9 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
- "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
+ "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1443,9 +1439,9 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
- "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
+ "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1458,9 +1454,9 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
- "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
+ "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1473,12 +1469,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
- "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
+ "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1489,12 +1485,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
- "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
+ "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1505,12 +1501,12 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
- "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
+ "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
"dev": true,
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
@@ -1521,25 +1517,26 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz",
- "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz",
+ "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "^7.12.13",
"@babel/plugin-syntax-class-static-block": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.22.5",
- "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-assertions": "^7.23.3",
+ "@babel/plugin-syntax-import-attributes": "^7.23.3",
"@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
@@ -1551,61 +1548,60 @@
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.22.5",
- "@babel/plugin-transform-async-generator-functions": "^7.22.5",
- "@babel/plugin-transform-async-to-generator": "^7.22.5",
- "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
- "@babel/plugin-transform-block-scoping": "^7.22.5",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-class-static-block": "^7.22.5",
- "@babel/plugin-transform-classes": "^7.22.5",
- "@babel/plugin-transform-computed-properties": "^7.22.5",
- "@babel/plugin-transform-destructuring": "^7.22.5",
- "@babel/plugin-transform-dotall-regex": "^7.22.5",
- "@babel/plugin-transform-duplicate-keys": "^7.22.5",
- "@babel/plugin-transform-dynamic-import": "^7.22.5",
- "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
- "@babel/plugin-transform-export-namespace-from": "^7.22.5",
- "@babel/plugin-transform-for-of": "^7.22.5",
- "@babel/plugin-transform-function-name": "^7.22.5",
- "@babel/plugin-transform-json-strings": "^7.22.5",
- "@babel/plugin-transform-literals": "^7.22.5",
- "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
- "@babel/plugin-transform-member-expression-literals": "^7.22.5",
- "@babel/plugin-transform-modules-amd": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.5",
- "@babel/plugin-transform-modules-systemjs": "^7.22.5",
- "@babel/plugin-transform-modules-umd": "^7.22.5",
+ "@babel/plugin-transform-arrow-functions": "^7.23.3",
+ "@babel/plugin-transform-async-generator-functions": "^7.23.4",
+ "@babel/plugin-transform-async-to-generator": "^7.23.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.23.3",
+ "@babel/plugin-transform-block-scoping": "^7.23.4",
+ "@babel/plugin-transform-class-properties": "^7.23.3",
+ "@babel/plugin-transform-class-static-block": "^7.23.4",
+ "@babel/plugin-transform-classes": "^7.23.5",
+ "@babel/plugin-transform-computed-properties": "^7.23.3",
+ "@babel/plugin-transform-destructuring": "^7.23.3",
+ "@babel/plugin-transform-dotall-regex": "^7.23.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.23.3",
+ "@babel/plugin-transform-dynamic-import": "^7.23.4",
+ "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
+ "@babel/plugin-transform-export-namespace-from": "^7.23.4",
+ "@babel/plugin-transform-for-of": "^7.23.6",
+ "@babel/plugin-transform-function-name": "^7.23.3",
+ "@babel/plugin-transform-json-strings": "^7.23.4",
+ "@babel/plugin-transform-literals": "^7.23.3",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.23.4",
+ "@babel/plugin-transform-member-expression-literals": "^7.23.3",
+ "@babel/plugin-transform-modules-amd": "^7.23.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.23.3",
+ "@babel/plugin-transform-modules-umd": "^7.23.3",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
- "@babel/plugin-transform-new-target": "^7.22.5",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
- "@babel/plugin-transform-numeric-separator": "^7.22.5",
- "@babel/plugin-transform-object-rest-spread": "^7.22.5",
- "@babel/plugin-transform-object-super": "^7.22.5",
- "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5",
- "@babel/plugin-transform-parameters": "^7.22.5",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/plugin-transform-private-property-in-object": "^7.22.5",
- "@babel/plugin-transform-property-literals": "^7.22.5",
- "@babel/plugin-transform-regenerator": "^7.22.5",
- "@babel/plugin-transform-reserved-words": "^7.22.5",
- "@babel/plugin-transform-shorthand-properties": "^7.22.5",
- "@babel/plugin-transform-spread": "^7.22.5",
- "@babel/plugin-transform-sticky-regex": "^7.22.5",
- "@babel/plugin-transform-template-literals": "^7.22.5",
- "@babel/plugin-transform-typeof-symbol": "^7.22.5",
- "@babel/plugin-transform-unicode-escapes": "^7.22.5",
- "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.3",
- "babel-plugin-polyfill-corejs3": "^0.8.1",
- "babel-plugin-polyfill-regenerator": "^0.5.0",
- "core-js-compat": "^3.30.2",
- "semver": "^6.3.0"
+ "@babel/plugin-transform-new-target": "^7.23.3",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4",
+ "@babel/plugin-transform-numeric-separator": "^7.23.4",
+ "@babel/plugin-transform-object-rest-spread": "^7.23.4",
+ "@babel/plugin-transform-object-super": "^7.23.3",
+ "@babel/plugin-transform-optional-catch-binding": "^7.23.4",
+ "@babel/plugin-transform-optional-chaining": "^7.23.4",
+ "@babel/plugin-transform-parameters": "^7.23.3",
+ "@babel/plugin-transform-private-methods": "^7.23.3",
+ "@babel/plugin-transform-private-property-in-object": "^7.23.4",
+ "@babel/plugin-transform-property-literals": "^7.23.3",
+ "@babel/plugin-transform-regenerator": "^7.23.3",
+ "@babel/plugin-transform-reserved-words": "^7.23.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.23.3",
+ "@babel/plugin-transform-spread": "^7.23.3",
+ "@babel/plugin-transform-sticky-regex": "^7.23.3",
+ "@babel/plugin-transform-template-literals": "^7.23.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.23.3",
+ "@babel/plugin-transform-unicode-escapes": "^7.23.3",
+ "@babel/plugin-transform-unicode-property-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.6",
+ "babel-plugin-polyfill-corejs3": "^0.8.5",
+ "babel-plugin-polyfill-regenerator": "^0.5.3",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1615,25 +1611,23 @@
}
},
"node_modules/@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
"dev": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
"@babel/types": "^7.4.4",
"esutils": "^2.0.2"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/@babel/register": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz",
- "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz",
+ "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==",
"dev": true,
"dependencies": {
"clone-deep": "^4.0.1",
@@ -1656,46 +1650,46 @@
"dev": true
},
"node_modules/@babel/runtime": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz",
- "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
+ "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "^0.13.11"
+ "regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
- "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
- "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
+ "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
- "debug": "^4.1.0",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.6",
+ "debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
@@ -1703,13 +1697,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -1740,9 +1734,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
"dev": true,
"engines": {
"node": ">=6.0.0"
@@ -1764,21 +1758,15 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
"dev": true,
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
"node_modules/@socket.io/component-emitter": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
@@ -1792,19 +1780,22 @@
"dev": true
},
"node_modules/@types/cors": {
- "version": "2.8.13",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
- "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
- "version": "20.3.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz",
- "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==",
- "dev": true
+ "version": "20.10.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz",
+ "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
},
"node_modules/accepts": {
"version": "1.3.8",
@@ -1878,42 +1869,42 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
- "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz",
+ "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "semver": "^6.1.1"
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
+ "semver": "^6.3.1"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
- "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz",
+ "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "core-js-compat": "^3.30.1"
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
+ "core-js-compat": "^3.33.1"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
- "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz",
+ "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==",
"dev": true,
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0"
+ "@babel/helper-define-polyfill-provider": "^0.4.4"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/balanced-match": {
@@ -2008,9 +1999,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
"dev": true,
"funding": [
{
@@ -2027,10 +2018,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
},
"bin": {
"browserslist": "cli.js"
@@ -2055,13 +2046,14 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2080,9 +2072,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001512",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
- "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
+ "version": "1.0.30001570",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
+ "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
"dev": true,
"funding": [
{
@@ -2100,18 +2092,18 @@
]
},
"node_modules/chai": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
- "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz",
+ "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==",
"dev": true,
"dependencies": {
"assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^4.1.2",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
"pathval": "^1.1.1",
- "type-detect": "^4.0.5"
+ "type-detect": "^4.0.8"
},
"engines": {
"node": ">=4"
@@ -2132,10 +2124,13 @@
}
},
"node_modules/check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
"dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.2"
+ },
"engines": {
"node": "*"
}
@@ -2280,9 +2275,9 @@
}
},
"node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
"node_modules/cookie": {
@@ -2314,12 +2309,12 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.31.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz",
- "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==",
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz",
+ "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==",
"dev": true,
"dependencies": {
- "browserslist": "^4.21.5"
+ "browserslist": "^4.22.2"
},
"funding": {
"type": "opencollective",
@@ -2401,6 +2396,20 @@
"node": ">=6"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -2454,9 +2463,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.449",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.449.tgz",
- "integrity": "sha512-TxLRpRUj/107ATefeP8VIUWNOv90xJxZZbCW/eIbSZQiuiFANCx2b7u+GbVc9X4gU+xnbvypNMYVM/WArE1DNQ==",
+ "version": "1.4.615",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz",
+ "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -2475,9 +2484,9 @@
}
},
"node_modules/engine.io": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz",
- "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==",
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz",
+ "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==",
"dev": true,
"dependencies": {
"@types/cookie": "^0.4.1",
@@ -2488,17 +2497,17 @@
"cookie": "~0.4.1",
"cors": "~2.8.5",
"debug": "~4.3.1",
- "engine.io-parser": "~5.1.0",
+ "engine.io-parser": "~5.2.1",
"ws": "~8.11.0"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-parser": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz",
- "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz",
+ "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -2652,15 +2661,15 @@
}
},
"node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
"dev": true,
"funding": [
{
@@ -2698,9 +2707,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -2712,10 +2721,13 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
@@ -2736,24 +2748,24 @@
}
},
"node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
+ "function-bind": "^1.1.2",
"has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2800,24 +2812,24 @@
"node": ">=4"
}
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -2827,6 +2839,18 @@
"node": ">=4"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
@@ -2851,6 +2875,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -2940,12 +2976,12 @@
}
},
"node_modules/is-core-module": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3264,12 +3300,12 @@
}
},
"node_modules/loupe": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
- "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
"dev": true,
"dependencies": {
- "get-func-name": "^2.0.0"
+ "get-func-name": "^2.0.1"
}
},
"node_modules/lru-cache": {
@@ -3295,9 +3331,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
@@ -3618,9 +3654,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true
},
"node_modules/noms": {
@@ -3652,9 +3688,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3965,9 +4001,9 @@
"dev": true
},
"node_modules/regenerate-unicode-properties": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
"dev": true,
"dependencies": {
"regenerate": "^1.4.2"
@@ -3977,15 +4013,15 @@
}
},
"node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/regenerator-transform": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
- "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.8.4"
@@ -4045,12 +4081,12 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.11.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -4109,9 +4145,9 @@
"dev": true
},
"node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -4126,6 +4162,21 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -4159,21 +4210,21 @@
}
},
"node_modules/socket.io": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz",
- "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==",
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz",
+ "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==",
"dev": true,
"dependencies": {
"accepts": "~1.3.4",
"base64id": "~2.0.0",
"cors": "~2.8.5",
"debug": "~4.3.2",
- "engine.io": "~6.5.0",
+ "engine.io": "~6.5.2",
"socket.io-adapter": "~2.5.2",
"socket.io-parser": "~4.2.4"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/socket.io-adapter": {
@@ -4440,9 +4491,9 @@
}
},
"node_modules/ua-parser-js": {
- "version": "0.7.35",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz",
- "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==",
+ "version": "0.7.37",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz",
+ "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==",
"dev": true,
"funding": [
{
@@ -4452,12 +4503,22 @@
{
"type": "paypal",
"url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
}
],
"engines": {
"node": "*"
}
},
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -4526,9 +4587,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
"dev": true,
"funding": [
{
diff --git a/javascript/MaterialXTest/package.json b/javascript/MaterialXTest/package.json
index ac3fa3a182..122ec55338 100644
--- a/javascript/MaterialXTest/package.json
+++ b/javascript/MaterialXTest/package.json
@@ -16,10 +16,10 @@
"author": "",
"license": "ISC",
"devDependencies": {
- "@babel/core": "^7.22.5",
- "@babel/preset-env": "^7.22.5",
- "@babel/register": "^7.22.5",
- "chai": "^4.3.7",
+ "@babel/core": "^7.23.6",
+ "@babel/preset-env": "^7.23.6",
+ "@babel/register": "^7.22.15",
+ "chai": "^4.3.10",
"copyfiles": "^2.4.1",
"karma": "^6.4.2",
"karma-chai": "^0.1.0",
diff --git a/javascript/MaterialXView/index.ejs b/javascript/MaterialXView/index.ejs
index d832f03e42..8f278051af 100644
--- a/javascript/MaterialXView/index.ejs
+++ b/javascript/MaterialXView/index.ejs
@@ -10,6 +10,22 @@
margin: 0;
font-family: Arial
}
+
+ /* Property editor item color */
+ .peditoritem {
+ background-color: #334444;
+ }
+ /* Property editor folder color */
+ .peditorfolder {
+ background-color: #333333;
+ }
+
+ .peditor_material_assigned {
+ background-color: #006cb8;
+ }
+ .peditor_material_assigned:hover {
+ background-color: #32adff;
+ }
diff --git a/javascript/MaterialXView/package-lock.json b/javascript/MaterialXView/package-lock.json
index 7bdf38ceba..474a6ff984 100644
--- a/javascript/MaterialXView/package-lock.json
+++ b/javascript/MaterialXView/package-lock.json
@@ -9,13 +9,13 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
- "dat.gui": "^0.7.9",
- "three": "^0.136.0",
- "webpack": "^5.88.2"
+ "lil-gui": "^0.19.1",
+ "three": "^0.152.2",
+ "webpack": "^5.89.0"
},
"devDependencies": {
"copy-webpack-plugin": "^8.1.1",
- "html-webpack-plugin": "^5.5.3",
+ "html-webpack-plugin": "^5.6.0",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.15.1"
}
@@ -43,9 +43,9 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
"engines": {
"node": ">=6.0.0"
}
@@ -73,19 +73,14 @@
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
- },
"node_modules/@leichtgewicht/ip-codec": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
@@ -128,9 +123,9 @@
}
},
"node_modules/@types/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
"dev": true,
"dependencies": {
"@types/connect": "*",
@@ -138,27 +133,27 @@
}
},
"node_modules/@types/bonjour": {
- "version": "3.5.10",
- "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
- "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
+ "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/connect": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
- "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/connect-history-api-fallback": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
- "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
+ "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
"dev": true,
"dependencies": {
"@types/express-serve-static-core": "*",
@@ -166,32 +161,32 @@
}
},
"node_modules/@types/eslint": {
- "version": "8.44.1",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz",
- "integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==",
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
"node_modules/@types/eslint-scope": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
}
},
"node_modules/@types/estree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
- "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA=="
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
"node_modules/@types/express": {
- "version": "4.17.17",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
- "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
"dev": true,
"dependencies": {
"@types/body-parser": "*",
@@ -201,9 +196,9 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.35",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
- "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
+ "version": "4.17.41",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
+ "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
"dev": true,
"dependencies": {
"@types/node": "*",
@@ -219,46 +214,58 @@
"dev": true
},
"node_modules/@types/http-errors": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
- "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
"dev": true
},
"node_modules/@types/http-proxy": {
- "version": "1.17.11",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
- "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
+ "version": "1.17.14",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+ "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/json-schema": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA=="
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
},
"node_modules/@types/mime": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
- "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
"dev": true
},
"node_modules/@types/node": {
- "version": "20.4.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz",
- "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg=="
+ "version": "20.10.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz",
+ "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-forge": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz",
+ "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
},
"node_modules/@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "version": "6.9.10",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
+ "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==",
"dev": true
},
"node_modules/@types/range-parser": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
- "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
"dev": true
},
"node_modules/@types/retry": {
@@ -268,9 +275,9 @@
"dev": true
},
"node_modules/@types/send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
- "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
"dev": true,
"dependencies": {
"@types/mime": "^1",
@@ -278,18 +285,18 @@
}
},
"node_modules/@types/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
+ "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
"dev": true,
"dependencies": {
"@types/express": "*"
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz",
- "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
+ "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
"dev": true,
"dependencies": {
"@types/http-errors": "*",
@@ -298,18 +305,18 @@
}
},
"node_modules/@types/sockjs": {
- "version": "0.3.33",
- "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
- "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
+ "version": "0.3.36",
+ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
+ "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/ws": {
- "version": "8.5.5",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
- "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
+ "version": "8.5.10",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
+ "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -506,9 +513,9 @@
}
},
"node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
"bin": {
"acorn": "bin/acorn"
},
@@ -730,9 +737,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
"funding": [
{
"type": "opencollective",
@@ -748,10 +755,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
},
"bin": {
"browserslist": "cli.js"
@@ -775,13 +782,14 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -798,9 +806,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001517",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
- "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
+ "version": "1.0.30001570",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
+ "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
"funding": [
{
"type": "opencollective",
@@ -852,9 +860,9 @@
}
},
"node_modules/clean-css": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
- "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
"dev": true,
"dependencies": {
"source-map": "~0.6.0"
@@ -1052,11 +1060,6 @@
"url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/dat.gui": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz",
- "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ=="
- },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -1078,6 +1081,20 @@
"node": ">= 10"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -1131,9 +1148,9 @@
"dev": true
},
"node_modules/dns-packet": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
- "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
"dev": true,
"dependencies": {
"@leichtgewicht/ip-codec": "^2.0.1"
@@ -1223,9 +1240,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.470",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.470.tgz",
- "integrity": "sha512-zZM48Lmy2FKWgqyvsX9XK+J6FfP7aCDUFLmgooLJzA7v1agCs/sxSoBpTIwDLhmbhpx9yJIxj2INig/ncjJRqg=="
+ "version": "1.4.615",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz",
+ "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
@@ -1258,9 +1275,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.10.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
- "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
+ "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
"dev": true,
"bin": {
"envinfo": "dist/cli.js"
@@ -1270,9 +1287,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
- "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
},
"node_modules/escalade": {
"version": "3.1.1",
@@ -1427,9 +1444,9 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -1457,9 +1474,9 @@
}
},
"node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+ "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -1520,10 +1537,19 @@
"node": ">=8"
}
},
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true,
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
"node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
"dev": true,
"funding": [
{
@@ -1559,9 +1585,9 @@
}
},
"node_modules/fs-monkey": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz",
- "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
+ "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==",
"dev": true
},
"node_modules/fs.realpath": {
@@ -1571,9 +1597,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -1585,21 +1611,24 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
+ "function-bind": "^1.1.2",
"has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -1674,6 +1703,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -1685,18 +1726,6 @@
"integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
"dev": true
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -1705,6 +1734,18 @@
"node": ">=8"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
@@ -1729,6 +1770,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -1818,9 +1871,9 @@
}
},
"node_modules/html-webpack-plugin": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz",
- "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
+ "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
"dev": true,
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
@@ -1837,7 +1890,16 @@
"url": "https://opencollective.com/html-webpack-plugin"
},
"peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
"webpack": "^5.20.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
}
},
"node_modules/htmlparser2": {
@@ -1947,9 +2009,9 @@
}
},
"node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -2021,12 +2083,12 @@
}
},
"node_modules/is-core-module": {
- "version": "2.12.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
- "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2179,15 +2241,20 @@
}
},
"node_modules/launch-editor": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
- "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz",
+ "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==",
"dev": true,
"dependencies": {
"picocolors": "^1.0.0",
- "shell-quote": "^1.7.3"
+ "shell-quote": "^1.8.1"
}
},
+ "node_modules/lil-gui": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.19.1.tgz",
+ "integrity": "sha512-9dbIg+UxS8RIROI6OH5gV2KrVE0Cn37bcLOQGF2GKN8ibTxDrUSLzzZfkQR82LnZsgs7DEZOOGfn3zhtd6hk0Q=="
+ },
"node_modules/loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -2397,9 +2464,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
"node_modules/normalize-path": {
"version": "3.0.0",
@@ -2435,9 +2502,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2720,9 +2787,9 @@
}
},
"node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"engines": {
"node": ">=6"
}
@@ -2879,12 +2946,12 @@
"dev": true
},
"node_modules/resolve": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.11.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -3022,11 +3089,12 @@
"dev": true
},
"node_modules/selfsigned": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
- "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
"dev": true,
"dependencies": {
+ "@types/node-forge": "^1.3.0",
"node-forge": "^1"
},
"engines": {
@@ -3150,6 +3218,21 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -3405,9 +3488,9 @@
}
},
"node_modules/terser": {
- "version": "5.19.2",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
- "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
+ "version": "5.26.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz",
+ "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -3468,9 +3551,9 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
"node_modules/three": {
- "version": "0.136.0",
- "resolved": "https://registry.npmjs.org/three/-/three-0.136.0.tgz",
- "integrity": "sha512-+fEMX7nYLz2ZesVP/dyifli5Jf8gR3XPAnFJveQ80aMhibFduzrADnjMbARXh8+W9qLK7rshJCjAIL/6cDxC+A=="
+ "version": "0.152.2",
+ "resolved": "https://registry.npmjs.org/three/-/three-0.152.2.tgz",
+ "integrity": "sha512-Ff9zIpSfkkqcBcpdiFo2f35vA9ZucO+N8TNacJOqaEE6DrB0eufItVMib8bK8Pcju/ZNT6a7blE1GhTpkdsILw=="
},
"node_modules/thunky": {
"version": "1.1.0",
@@ -3500,9 +3583,9 @@
}
},
"node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
"node_modules/type-is": {
@@ -3518,6 +3601,11 @@
"node": ">= 0.6"
}
},
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -3528,9 +3616,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
"funding": [
{
"type": "opencollective",
@@ -3625,9 +3713,9 @@
}
},
"node_modules/webpack": {
- "version": "5.88.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
- "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
+ "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.0",
@@ -3915,12 +4003,13 @@
}
},
"node_modules/webpack-merge": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
- "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
+ "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
"dev": true,
"dependencies": {
"clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
"wildcard": "^2.0.0"
},
"engines": {
@@ -3986,9 +4075,9 @@
"dev": true
},
"node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "version": "8.15.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz",
+ "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==",
"dev": true,
"engines": {
"node": ">=10.0.0"
diff --git a/javascript/MaterialXView/package.json b/javascript/MaterialXView/package.json
index adce3d2e82..01049bf6c9 100644
--- a/javascript/MaterialXView/package.json
+++ b/javascript/MaterialXView/package.json
@@ -10,13 +10,13 @@
"author": "",
"license": "ISC",
"dependencies": {
- "dat.gui": "^0.7.9",
- "three": "^0.136.0",
- "webpack": "^5.88.2"
+ "lil-gui": "^0.19.1",
+ "three": "^0.152.2",
+ "webpack": "^5.89.0"
},
"devDependencies": {
"copy-webpack-plugin": "^8.1.1",
- "html-webpack-plugin": "^5.5.3",
+ "html-webpack-plugin": "^5.6.0",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.15.1"
}
diff --git a/javascript/MaterialXView/public/shader_ball.svg b/javascript/MaterialXView/public/shader_ball.svg
new file mode 100644
index 0000000000..2b51705a42
--- /dev/null
+++ b/javascript/MaterialXView/public/shader_ball.svg
@@ -0,0 +1,5 @@
+
diff --git a/javascript/MaterialXView/public/shader_ball2.svg b/javascript/MaterialXView/public/shader_ball2.svg
new file mode 100644
index 0000000000..62907b5df8
--- /dev/null
+++ b/javascript/MaterialXView/public/shader_ball2.svg
@@ -0,0 +1,8 @@
+
diff --git a/javascript/MaterialXView/source/helper.js b/javascript/MaterialXView/source/helper.js
index 111dfd9b5d..98441a605f 100644
--- a/javascript/MaterialXView/source/helper.js
+++ b/javascript/MaterialXView/source/helper.js
@@ -19,59 +19,15 @@ const IMAGE_PATH_SEPARATOR = "/";
*/
export function prepareEnvTexture(texture, capabilities)
{
- const rgbaTexture = RGBToRGBA_Float(texture);
- rgbaTexture.wrapS = THREE.RepeatWrapping;
- rgbaTexture.anisotropy = capabilities.getMaxAnisotropy();
- rgbaTexture.minFilter = THREE.LinearMipmapLinearFilter;
- rgbaTexture.magFilter = THREE.LinearFilter;
- rgbaTexture.generateMipmaps = true;
- rgbaTexture.needsUpdate = true;
+ let newTexture = new THREE.DataTexture(texture.image.data, texture.image.width, texture.image.height, texture.format, texture.type);
+ newTexture.wrapS = THREE.RepeatWrapping;
+ newTexture.anisotropy = capabilities.getMaxAnisotropy();
+ newTexture.minFilter = THREE.LinearMipmapLinearFilter;
+ newTexture.magFilter = THREE.LinearFilter;
+ newTexture.generateMipmaps = true;
+ newTexture.needsUpdate = true;
- return rgbaTexture;
-}
-
-/**
- * Create a new (half)float texture containing an alpha channel with a value of 1 from a RGB (half)float texture.
- * @param {THREE.Texture} texture
- */
-function RGBToRGBA_Float(texture)
-{
- const w = texture.image.width;
- const h = texture.image.height;
- const dataSize = texture.image.data.length;
- const stride = dataSize / (w *h);
- // No need to convert to RGBA if already 4 channel.
- if (stride == 3)
- {
- const rgbData = texture.image.data;
- const length = (rgbData.length / 3) * 4;
- let rgbaData;
-
- switch (texture.type)
- {
- case THREE.FloatType:
- rgbaData = new Float32Array(length);
- break;
- case THREE.HalfFloatType:
- rgbaData = new Uint16Array(length);
- break;
- default:
- break;
- }
-
- if (rgbaData)
- {
- for (let i = 0; i < length / 4; i++)
- {
- rgbaData[(i * 4) + 0] = rgbData[(i * 3) + 0];
- rgbaData[(i * 4) + 1] = rgbData[(i * 3) + 1];
- rgbaData[(i * 4) + 2] = rgbData[(i * 3) + 2];
- rgbaData[(i * 4) + 3] = 1.0;
- }
- return new THREE.DataTexture(rgbaData, texture.image.width, texture.image.height, THREE.RGBAFormat, texture.type);
- }
- }
- return texture;
+ return newTexture;
}
/**
diff --git a/javascript/MaterialXView/source/index.js b/javascript/MaterialXView/source/index.js
index 56e2e1f5a2..d46bd2350f 100644
--- a/javascript/MaterialXView/source/index.js
+++ b/javascript/MaterialXView/source/index.js
@@ -21,6 +21,8 @@ let turntableEnabled = false;
let turntableSteps = 360;
let turntableStep = 0;
+let captureRequested = false;
+
// Get URL options. Fallback to defaults if not specified.
let materialFilename = new URLSearchParams(document.location.search).get("file");
if (!materialFilename) {
@@ -31,6 +33,18 @@ let viewer = Viewer.create();
init();
viewer.getEditor().updateProperties(0.9);
+// Capture the current frame and save an image file.
+function captureFrame()
+{
+ let canvas = document.getElementById('webglcanvas');
+ var url = canvas.toDataURL();
+ var link = document.createElement('a');
+ link.setAttribute('href', url);
+ link.setAttribute('target', '_blank');
+ link.setAttribute('download', 'screenshot.png');
+ link.click();
+}
+
function init()
{
let canvas = document.getElementById('webglcanvas');
@@ -41,7 +55,7 @@ function init()
materialsSelect.value = materialFilename;
materialsSelect.addEventListener('change', (e) => {
materialFilename = e.target.value;
- viewer.getEditor().clearFolders();
+ viewer.getEditor().initialize();
viewer.getMaterial().loadMaterials(viewer, materialFilename);
viewer.getEditor().updateProperties(0.9);
viewer.getScene().setUpdateTransforms();
@@ -62,6 +76,13 @@ function init()
// Set up renderer
renderer = new THREE.WebGLRenderer({ canvas, context });
renderer.setSize(window.innerWidth, window.innerHeight);
+ // Disable introspection for shader debugging for deployment.
+ // - The code associated with getting program information can be very slow when
+ // dealing with shaders with lots of input uniforms (such as standard surface, openpbr shading models)
+ // as each call is blocking.
+ // - Adding this avoids the chess set scene from "hanging" the Chrome browser on Windows to a few second load.
+ // - Documentation for this flag: https://threejs.org/docs/index.html#api/en/renderers/WebGLRenderer.debug
+ renderer.debug.checkShaderErrors = false;
composer = new EffectComposer(renderer);
const renderPass = new RenderPass(scene.getScene(), scene.getCamera());
@@ -75,28 +96,34 @@ function init()
orbitControls = new OrbitControls(scene.getCamera(), renderer.domElement);
orbitControls.addEventListener('change', () => {
viewer.getScene().setUpdateTransforms();
- })
+ })
- // Load model and shaders
+ // Add hotkey 'f' to capture the current frame and save an image file.
+ // See check inside the render loop when a capture can be performed.
+ document.addEventListener('keydown', (event) => {
+ if (event.key === 'f') {
+ captureRequested = true;
+ }
+ });
// Initialize editor
viewer.getEditor().initialize();
const hdrLoader = viewer.getHdrLoader();
- const fileLooder = viewer.getFileLoader();
+ const fileLoader = viewer.getFileLoader();
Promise.all([
- new Promise(resolve => hdrLoader.setDataType(THREE.FloatType).load('Lights/san_giuseppe_bridge_split.hdr', resolve)),
- new Promise(resolve => fileLooder.load('Lights/san_giuseppe_bridge_split.mtlx', resolve)),
- new Promise(resolve => hdrLoader.setDataType(THREE.FloatType).load('Lights/irradiance/san_giuseppe_bridge_split.hdr', resolve)),
+ new Promise(resolve => hdrLoader.load('Lights/san_giuseppe_bridge_split.hdr', resolve)),
+ new Promise(resolve => hdrLoader.load('Lights/irradiance/san_giuseppe_bridge_split.hdr', resolve)),
+ new Promise(resolve => fileLoader.load('Lights/san_giuseppe_bridge_split.mtlx', resolve)),
new Promise(function (resolve) {
MaterialX().then((module) => {
resolve(module);
});
})
- ]).then(async ([loadedRadianceTexture, loadedLightSetup, loadedIrradianceTexture, mxIn]) =>
+ ]).then(async ([radianceTexture, irradianceTexture, lightRigXml, mxIn]) =>
{
// Initialize viewer + lighting
- await viewer.initialize(mxIn, renderer, loadedRadianceTexture, loadedLightSetup, loadedIrradianceTexture);
+ await viewer.initialize(mxIn, renderer, radianceTexture, irradianceTexture, lightRigXml);
// Load geometry
let scene = viewer.getScene();
@@ -122,7 +149,7 @@ function init()
setLoadingCallback(file => {
materialFilename = file.fullPath || file.name;
- viewer.getEditor().clearFolders();
+ viewer.getEditor().initialize();
viewer.getMaterial().loadMaterials(viewer, materialFilename);
viewer.getEditor().updateProperties(0.9);
viewer.getScene().setUpdateTransforms();
@@ -153,6 +180,12 @@ function animate()
composer.render();
viewer.getScene().updateTransforms();
+
+ if (captureRequested)
+ {
+ captureFrame();
+ captureRequested = false;
+ }
}
function handleKeyEvents(event)
diff --git a/javascript/MaterialXView/source/viewer.js b/javascript/MaterialXView/source/viewer.js
index d1adfd9ef4..9992dd6985 100644
--- a/javascript/MaterialXView/source/viewer.js
+++ b/javascript/MaterialXView/source/viewer.js
@@ -9,7 +9,7 @@ import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
import { prepareEnvTexture, getLightRotation, findLights, registerLights, getUniformValues } from './helper.js'
import { Group } from 'three';
-import { GUI } from 'dat.gui';
+import GUI from 'lil-gui';
const ALL_GEOMETRY_SPECIFIER = "*";
const NO_GEOMETRY_SPECIFIER = "";
@@ -111,7 +111,8 @@ export class Scene
console.log("Total geometry load time: ", performance.now() - startTime, " ms.");
- viewer.getMaterial().updateMaterialAssignments(viewer);
+ viewer.getMaterial().clearSoloMaterialUI();
+ viewer.getMaterial().updateMaterialAssignments(viewer, "");
this.setUpdateTransforms();
}
@@ -303,13 +304,16 @@ export class Scene
}
else
{
- const paths = geometry.split(',');
- for (let path of paths)
+ if (geometry != NO_GEOMETRY_SPECIFIER)
{
- if (dagPath.match(path))
+ const paths = geometry.split(',');
+ for (let path of paths)
{
- matches = true;
- break;
+ if (dagPath.match(path))
+ {
+ matches = true;
+ break;
+ }
}
}
}
@@ -416,78 +420,40 @@ export class Scene
*/
export class Editor
{
- // Update ui properties
- // - Hide close button
- // - Update transparency so scene shows through if overlapping
- updateProperties(targetOpacity = 1)
+ // Initialize the editor, clearing any elements from previous materials.
+ initialize()
{
- // Set opacity
- Array.from(document.getElementsByClassName('dg')).forEach(
- function (element, index, array) {
- element.style.opacity = targetOpacity;
- }
- );
-
- // Hide close button
- if (this._hideCloseControl)
- {
- Array.from(document.getElementsByClassName('close-button')).forEach(
- function (element, index, array) {
- element.style.display = "none";
- }
- );
- }
- }
-
- //
- // Clear folders with children contain elements for any previous material
- // and recreate top gui.
- //
- clearFolders()
- {
- Array.from(document.getElementsByClassName('folder')).forEach(
+ Array.from(document.getElementsByClassName('lil-gui')).forEach(
function (element, index, array) {
if (element.className) {
- let child = element.firstElementChild;
- if (child && child.className == 'dg') {
- element.remove();
- }
+ element.remove();
}
}
);
- // Create new GUI.
- this._gui = new GUI();
+ this._gui = new GUI( { title: "Property Editor" } );
+ this._gui.close();
}
- // Create the editor
- initialize()
+ // Update ui properties
+ // - Hide close button
+ // - Update transparency so scene shows through if overlapping
+ updateProperties(targetOpacity = 1)
{
- // Search document to find GUI elements and remove them
- // If not done then multiple GUIs will be created from different
- // threads.
+ // Set opacity
Array.from(document.getElementsByClassName('dg')).forEach(
function (element, index, array) {
- if (element.className) {
- element.remove();
- }
+ element.style.opacity = targetOpacity;
}
);
-
- // Create new GUI.
- this._gui = new GUI();
- this._gui.open();
-
- return this._gui;
}
-
+
getGUI()
{
return this._gui;
}
_gui = null;
- _hideCloseControl = false;
}
class MaterialAssign
@@ -498,6 +464,17 @@ class MaterialAssign
this._geometry = geometry;
this._collection = collection;
this._shader = null;
+ this._materialUI = null;
+ }
+
+ setMaterialUI(value)
+ {
+ this._materialUI = value;
+ }
+
+ getMaterialUI()
+ {
+ return this._materialUI;
}
setShader(shader)
@@ -520,6 +497,11 @@ class MaterialAssign
return this._geometry;
}
+ setGeometry(value)
+ {
+ this._geometry = value;
+ }
+
getCollection()
{
return this._collection;
@@ -544,19 +526,44 @@ export class Material
{
this._materials = [];
this._defaultMaterial = null;
+ this._soloMaterial = "";
+ }
+
+ clearMaterials()
+ {
+ this._materials.length = 0;
+ this._defaultMaterial = null;
+ this._soloMaterial = "";
+ }
+
+ setSoloMaterial(value)
+ {
+ this._soloMaterial = value;
+ }
+
+ getSoloMaterial()
+ {
+ return this._soloMaterial;
}
// If no material file is selected, we programmatically create a default material as a fallback
static createFallbackMaterial(doc)
{
- const ssName = 'SR_default';
- const ssNode = doc.addChildOfCategory('standard_surface', ssName);
+ let ssNode = doc.getChild('Generated_Default_Shader');
+ if (ssNode)
+ {
+ return ssNode;
+ }
+ const ssName = 'Generated_Default_Shader';
+ ssNode = doc.addChildOfCategory('standard_surface', ssName);
ssNode.setType('surfaceshader');
const smNode = doc.addChildOfCategory('surfacematerial', 'Default');
smNode.setType('material');
const shaderElement = smNode.addInput('surfaceshader');
shaderElement.setType('surfaceshader');
shaderElement.setNodeName(ssName);
+
+ return ssNode;
}
async loadMaterialFile(loader, materialFilename)
@@ -603,11 +610,10 @@ export class Material
// Check if there are any looks defined in the document
// If so then traverse the looks for all material assignments.
// Generate code and compile for any associated surface shader
- // and assign to the associatged geometry. If there are no looks
+ // and assign to the associated geometry. If there are no looks
// then the first material is found and assignment to all the
- // geometry.
- this._materials.length = 0;
- this._defaultMaterial = null;
+ // geometry.
+ this.clearMaterials();
var looks = doc.getLooks();
if (looks.length)
{
@@ -648,7 +654,7 @@ export class Material
}
else
{
- newAssignment = new MaterialAssign(shader, NO_GEOMETRY_SPECIFIER);
+ newAssignment = new MaterialAssign(shader, NO_GEOMETRY_SPECIFIER, null);
}
if (newAssignment)
@@ -661,35 +667,133 @@ export class Material
}
else
{
- // Search for any surface shader. It
+ // Search for any surface shaders. The first found
// is assumed to be assigned to the entire scene
// The identifier used is "*" to mean the entire scene.
- let elem = mx.findRenderableElement(doc);
- if (elem)
+ const materialNodes = doc.getMaterialNodes();
+ let shaderList = [];
+ let foundRenderable = false;
+ for (let i=0; i 0)
+ {
+ let shaderNodePath = shaderNodes[0].getNamePath()
+ if (!shaderList.includes(shaderNodePath))
+ {
+ let assignment = NO_GEOMETRY_SPECIFIER;
+ if (foundRenderable == false)
+ {
+ assignment = ALL_GEOMETRY_SPECIFIER;
+ foundRenderable = true;
+ }
+ console.log('-- add shader: ', shaderNodePath);
+ shaderList.push(shaderNodePath);
+ this._materials.push(new MaterialAssign(shaderNodes[0], assignment));
+ }
+ }
+ }
}
+ const nodeGraphs = doc.getNodeGraphs();
+ for (let i=0; i 0)
+ {
+ continue
+ }
+ let outputs = nodeGraph.getOutputs();
+ for (let j=0; j" + elem.getNamePath();
+ let img = matTitle.getElementsByTagName('img')[0];
+ if (img)
+ {
+ // Add event listener to icon to call updateSoloMaterial function
+ img.addEventListener('click', function(event)
+ {
+ Material.updateSoloMaterial(viewer, elemPath, materials,event);
+ });
+ }
+
+ if (closeUI)
+ {
+ matUI.close();
+ }
const uniformBlocks = Object.values(shader.getStage('pixel').getUniformBlocks());
var uniformToUpdate;
const ignoreList = ['u_envRadianceMips', 'u_envRadianceSamples', 'u_alphaThreshold'];
@@ -852,8 +1059,13 @@ export class Material
continue;
}
- let currentNode = currentElem ? currentElem.getParent() : null;
- let uiname;
+ let currentNode = null;
+ if (currentElem.getParent() && currentElem.getParent().getNamePath() != "")
+ {
+ currentNode = currentElem.getParent();
+ }
+ let uiname = "";
+ let nodeDefInput = null;
if (currentNode) {
let currentNodePath = currentNode.getNamePath();
@@ -870,15 +1082,20 @@ export class Material
// Check for ui attributes
var nodeDef = currentNode.getNodeDef();
if (nodeDef) {
- let input = nodeDef.getActiveInput(name);
- if (input) {
- uiname = input.getAttribute('uiname');
- let uifolderName = input.getAttribute('uifolder');
+ // Remove node name from shader uniform name for non root nodes
+ let lookup_name = name.replace(currentNode.getName() + '_', '');
+ nodeDefInput = nodeDef.getActiveInput(lookup_name);
+ if (nodeDefInput)
+ {
+ uiname = nodeDefInput.getAttribute('uiname');
+ let uifolderName = nodeDefInput.getAttribute('uifolder');
if (uifolderName && uifolderName.length) {
let newFolderName = currentNodePath + '/' + uifolderName;
currentFolder = folderList[newFolderName];
- if (!currentFolder) {
+ if (!currentFolder)
+ {
currentFolder = matUI.addFolder(uifolderName);
+ currentFolder.domElement.classList.add('peditorfolder');
folderList[newFolderName] = currentFolder;
}
}
@@ -918,26 +1135,145 @@ export class Material
}
}
- switch (variable.getType().getName()) {
-
+ switch (variable.getType().getName())
+ {
case 'float':
uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
- currentFolder.add(material.uniforms[name], 'value').name(path);
+ if (uniformToUpdate && value != null)
+ {
+ var minValue = DEFAULT_MIN;
+ if (value < minValue)
+ {
+ minValue = value;
+ }
+ var maxValue = DEFAULT_MAX;
+ if (value > maxValue)
+ {
+ maxValue = value;
+ }
+ var step = 0;
+ if (nodeDefInput)
+ {
+ if (nodeDefInput.hasAttribute('uisoftmin'))
+ minValue = parseFloat(nodeDefInput.getAttribute('uisoftmin'));
+ else if (nodeDefInput.hasAttribute('uimin'))
+ minValue = parseFloat(nodeDefInput.getAttribute('uimin'));
+
+ if (nodeDefInput.hasAttribute('uisoftmax'))
+ maxValue = parseFloat(nodeDefInput.getAttribute('uisoftmax'));
+ else if (nodeDefInput.hasAttribute('uimax'))
+ maxValue = parseFloat(nodeDefInput.getAttribute('uimax'));
+
+ if (nodeDefInput.hasAttribute('uistep'))
+ step = parseFloat(nodeDefInput.getAttribute('uistep'));
+ }
+ if (step == 0)
+ {
+ step = (maxValue - minValue) / 1000.0;
+ }
+ const w = currentFolder.add(material.uniforms[name], 'value', minValue, maxValue, step).name(path);
+ w.domElement.classList.add('peditoritem');
}
break;
case 'integer':
uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
- currentFolder.add(material.uniforms[name], 'value').name(path);
+ if (uniformToUpdate && value != null)
+ {
+ var minValue = DEFAULT_MIN;
+ if (value < minValue)
+ {
+ minValue = value;
+ }
+ var maxValue = DEFAULT_MAX;
+ if (value > maxValue)
+ {
+ maxValue = value;
+ }
+ var step = 0;
+ var enumList = []
+ var enumValues = []
+ if (nodeDefInput)
+ {
+ if (nodeDefInput.hasAttribute('enum'))
+ {
+ // Get enum and enum values attributes (if present)
+ enumList = nodeDefInput.getAttribute('enum').split(',');
+ if (nodeDefInput.hasAttribute('enumvalues'))
+ {
+ enumValues = nodeDefInput.getAttribute('enumvalues').split(',').map(Number);
+ }
+ }
+ else
+ {
+ if (nodeDefInput.hasAttribute('uisoftmin'))
+ minValue = parseInt(nodeDefInput.getAttribute('uisoftmin'));
+ else if (nodeDefInput.hasAttribute('uimin'))
+ minValue = parseInt(nodeDefInput.getAttribute('uimin'));
+
+ if (nodeDefInput.hasAttribute('uisoftmax'))
+ maxValue = parseInt(nodeDefInput.getAttribute('uisoftmax'));
+ else if (nodeDefInput.hasAttribute('uimax'))
+ maxValue = parseInt(nodeDefInput.getAttribute('uimax'));
+
+ if (nodeDefInput.hasAttribute('uistep'))
+ step = parseInt(nodeDefInput.getAttribute('uistep'));
+ }
+ }
+ if (enumList.length == 0)
+ {
+ if (step == 0)
+ {
+ step = 1 / (maxValue - minValue);
+ step = Math.ceil(step);
+ if (step == 0)
+ {
+ step = 1;
+ }
+ }
+ }
+ if (enumList.length == 0)
+ {
+ let w = currentFolder.add(material.uniforms[name], 'value', minValue, maxValue, step).name(path);
+ w.domElement.classList.add('peditoritem');
+ }
+ else
+ {
+ // Map enumList strings to values
+ // Map to 0..N if no values are specified via enumvalues attribute
+ if (enumValues.length == 0)
+ {
+ for (let i = 0; i < enumList.length; ++i)
+ {
+ enumValues.push(i);
+ }
+ }
+ const enumeration = {};
+ enumList.forEach((str, index) => {
+ enumeration[str] = enumValues[index];
+ });
+
+ // Function to handle enum drop-down
+ function handleDropdownChange(value) {
+ if (material.uniforms[name])
+ {
+ material.uniforms[name].value = value;
+ }
+ }
+ const defaultOption = enumList[value]; // Set the default selected option
+ const dropdownController = currentFolder.add(enumeration, defaultOption, enumeration).name(path);
+ dropdownController.onChange(handleDropdownChange);
+ dropdownController.domElement.classList.add('peditoritem');
+ }
}
break;
case 'boolean':
uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
- currentFolder.add(material.uniforms[name], 'value').name(path);
+ if (uniformToUpdate && value != null)
+ {
+ let w = currentFolder.add(material.uniforms[name], 'value').name(path);
+ w.domElement.classList.add('peditoritem');
}
break;
@@ -945,30 +1281,63 @@ export class Material
case 'vector3':
case 'vector4':
uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
+ if (uniformToUpdate && value != null)
+ {
+ var minValue = [DEFAULT_MIN, DEFAULT_MIN, DEFAULT_MIN, DEFAULT_MIN];
+ var maxValue = [DEFAULT_MAX, DEFAULT_MAX, DEFAULT_MAX, DEFAULT_MAX];
+ var step = [0, 0, 0, 0];
+
+ if (nodeDefInput)
+ {
+ if (nodeDefInput.hasAttribute('uisoftmin'))
+ minValue = nodeDefInput.getAttribute('uisoftmin').split(',').map(Number);
+ else if (nodeDefInput.hasAttribute('uimin'))
+ minValue = nodeDefInput.getAttribute('uimin').split(',').map(Number);
+
+ if (nodeDefInput.hasAttribute('uisoftmax'))
+ maxValue = nodeDefInput.getAttribute('uisoftmax').split(',').map(Number);
+ else if (nodeDefInput.hasAttribute('uimax'))
+ maxValue = nodeDefInput.getAttribute('uimax').split(',').map(Number);
+
+ if (nodeDefInput.hasAttribute('uistep'))
+ step = nodeDefInput.getAttribute('uistep').split(',').map(Number);
+ }
+ for (let i = 0; i < 4; ++i)
+ {
+ if (step[i] == 0)
+ {
+ step[i] = 1 / (maxValue[i] - minValue[i]);
+ }
+ }
+
+ const keyString = ["x", "y", "z", "w"];
let vecFolder = currentFolder.addFolder(path);
Object.keys(material.uniforms[name].value).forEach((key) => {
- vecFolder.add(material.uniforms[name].value, key).name(path + "." + key);
+ let w = vecFolder.add(material.uniforms[name].value,
+ key, minValue[key], maxValue[key], step[key]).name(keyString[key]);
+ w.domElement.classList.add('peditoritem');
})
}
break;
case 'color3':
- // Irksome way to mape arrays to colors and back
+ // Irksome way to map arrays to colors and back
uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
- var dummy = {
+ if (uniformToUpdate && value != null)
+ {
+ var dummy =
+ {
color: 0xFF0000
};
const color3 = new THREE.Color(dummy.color);
color3.fromArray(material.uniforms[name].value);
dummy.color = color3.getHex();
- currentFolder.addColor(dummy, 'color').name(path)
+ let w = currentFolder.addColor(dummy, 'color').name(path)
.onChange(function (value) {
const color3 = new THREE.Color(value);
material.uniforms[name].value.set(color3.toArray());
- }
- );
+ });
+ w.domElement.classList.add('peditoritem');
}
break;
@@ -981,11 +1350,16 @@ export class Material
case 'filename':
break;
case 'string':
- uniformToUpdate = material.uniforms[name];
- if (uniformToUpdate && value != null) {
- item = currentFolder.add(material.uniforms[name], 'value');
+ console.log('String: ', name);
+ if (value != null) {
+ var dummy =
+ {
+ thevalue: value
+ }
+ let item = currentFolder.add(dummy, 'thevalue');
item.name(path);
- item.readonly(true);
+ item.disable(true);
+ item.domElement.classList.add('peditoritem');
}
break;
default:
@@ -1035,7 +1409,7 @@ export class Viewer
// Create shader generator, generation context and "base" document which
// contains the standard definition libraries and lighting elements.
//
- async initialize(mtlxIn, renderer, loadedRadianceTexture, loadedLightSetup, loadedIrradianceTexture)
+ async initialize(mtlxIn, renderer, radianceTexture, irradianceTexture, lightRigXml)
{
this.mx = mtlxIn;
@@ -1047,30 +1421,30 @@ export class Viewer
this.stdlib = this.mx.loadStandardLibraries(this.genContext);
this.document.importLibrary(this.stdlib);
- this.initializeLighting(renderer, loadedRadianceTexture, loadedLightSetup, loadedIrradianceTexture);
+ this.initializeLighting(renderer, radianceTexture, irradianceTexture, lightRigXml);
- loadedRadianceTexture.mapping = THREE.EquirectangularReflectionMapping;
- this.getScene().setBackgroundTexture(loadedRadianceTexture);
+ radianceTexture.mapping = THREE.EquirectangularReflectionMapping;
+ this.getScene().setBackgroundTexture(radianceTexture);
}
//
// Load in lighting rig document and register lights with generation context
// Initialize environment lighting (IBLs).
//
- async initializeLighting(renderer, loadedRadianceTexture, loadedLightSetup, loadedIrradianceTexture)
+ async initializeLighting(renderer, radianceTexture, irradianceTexture, lightRigXml)
{
// Load lighting setup into document
const mx = this.getMx();
this.lightRigDoc = mx.createDocument();
- await mx.readFromXmlString(this.lightRigDoc, loadedLightSetup);
+ await mx.readFromXmlString(this.lightRigDoc, lightRigXml);
this.document.importLibrary(this.lightRigDoc);
// Register lights with generation context
this.lights = findLights(this.document);
this.lightData = registerLights(mx, this.lights, this.genContext);
- this.radianceTexture = prepareEnvTexture(loadedRadianceTexture, renderer.capabilities);
- this.irradianceTexture = prepareEnvTexture(loadedIrradianceTexture, renderer.capabilities);
+ this.radianceTexture = prepareEnvTexture(radianceTexture, renderer.capabilities);
+ this.irradianceTexture = prepareEnvTexture(irradianceTexture, renderer.capabilities);
}
getEditor() {
diff --git a/javascript/README.md b/javascript/README.md
index 38d1734392..bed7e0bcda 100644
--- a/javascript/README.md
+++ b/javascript/README.md
@@ -34,7 +34,7 @@ mkdir ./javascript/build
cd ./javascript/build
```
-If you are using the emsdk directly on Windows, note that the emscripten SDK doesn't work with Microsoft's Visual Studio build tools. You need to use an alternative CMake generator like [MinGW](http://mingw-w64.org/doku.php) Makefiles or [Ninja](https://ninja-build.org/). We recommend to use Ninja (unless you already have MinGW installed), since it's pretty lightweight and a pure build system, instead of a full compiler suite.
+If you are using the emsdk directly on Windows, note that the emscripten SDK doesn't work with Microsoft's Visual Studio build tools. You need to use an alternative CMake generator like [MinGW](http://mingw-w64.org/doku.php) Makefiles or [Ninja](https://ninja-build.org/). We recommend to use Ninja (unless you already have MinGW installed), since it's pretty lightweight and a pure build system, instead of a full compiler suite. Download Ninja for Windows and unzip the ninja.exe file to some suitable directory in your path (use the command "echo $PATH" or similar to view your PATH variable).
Generate the build files with CMake. When building the JavaScript bindings, you can optionally specify the emsdk path with the `MATERIALX_EMSDK_PATH` option. This option can be omitted if the `emsdk/emsdk_env.sh` script was run beforehand.
```sh
diff --git a/javascript/build_javascript_win.bat b/javascript/build_javascript_win.bat
index 43d8b8b562..d62f05f84a 100644
--- a/javascript/build_javascript_win.bat
+++ b/javascript/build_javascript_win.bat
@@ -1,5 +1,8 @@
+@rem This script builds MaterialX JavaScript on Windows. The final command starts a local server, allowing you to
+@rem run the MaterialX Web Viewer locally by entering 'http://localhost:8080' in the search bar of your browser.
@echo --------------------- Setup Emscripten ---------------------
@echo on
+@rem Edit the following paths to match your local locations for the Emscripten and MaterialX projects.
set EMSDK_LOCATION=C:/GitHub/emsdk
set MATERIALX_LOCATION=C:/GitHub/MaterialX
call %EMSDK_LOCATION%/emsdk.bat install latest
@@ -8,14 +11,12 @@ if NOT ["%errorlevel%"]==["0"] pause
@echo --------------------- Build MaterialX With JavaScript ---------------------
@echo on
cd %MATERIALX_LOCATION%
-mkdir javascript\build
-cd javascript\build
-cmake -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=%EMSDK_LOCATION% -G Ninja -DMATERIALX_BUILD_RENDER=OFF -DMATERIALX_BUILD_TESTS=OFF -DMATERIALX_BUILD_GEN_OSL=OFF -DMATERIALX_BUILD_GEN_MDL=OFF ..\..
-cmake --build . --target install --config RelWithDebInfo --parallel 2
+cmake -S . -B javascript/build -DMATERIALX_BUILD_JS=ON -DMATERIALX_EMSDK_PATH=%EMSDK_LOCATION% -G Ninja
+cmake --build javascript/build --target install --config RelWithDebInfo --parallel 2
if NOT ["%errorlevel%"]==["0"] pause
@echo --------------------- Run JavaScript Tests ---------------------
@echo on
-cd ../MaterialXTest
+cd javascript/MaterialXTest
call npm install
call npm run test
call npm run test:browser
diff --git a/libraries/bxdf/gltf_pbr.mtlx b/libraries/bxdf/gltf_pbr.mtlx
index 6654e63454..b42054a185 100644
--- a/libraries/bxdf/gltf_pbr.mtlx
+++ b/libraries/bxdf/gltf_pbr.mtlx
@@ -359,7 +359,7 @@
-
+
diff --git a/libraries/bxdf/usd_preview_surface.mtlx b/libraries/bxdf/usd_preview_surface.mtlx
index 984bad0326..6efb288184 100644
--- a/libraries/bxdf/usd_preview_surface.mtlx
+++ b/libraries/bxdf/usd_preview_surface.mtlx
@@ -9,7 +9,7 @@
-
+
@@ -18,7 +18,7 @@
-
+
diff --git a/libraries/nprlib/genglsl/nprlib_genglsl_impl.mtlx b/libraries/nprlib/genglsl/nprlib_genglsl_impl.mtlx
new file mode 100644
index 0000000000..1a96f315e5
--- /dev/null
+++ b/libraries/nprlib/genglsl/nprlib_genglsl_impl.mtlx
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/nprlib/genmdl/nprlib_genmdl_impl.mtlx b/libraries/nprlib/genmdl/nprlib_genmdl_impl.mtlx
new file mode 100644
index 0000000000..73a9d22945
--- /dev/null
+++ b/libraries/nprlib/genmdl/nprlib_genmdl_impl.mtlx
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/nprlib/genmsl/nprlib_genmsl_impl.mtlx b/libraries/nprlib/genmsl/nprlib_genmsl_impl.mtlx
new file mode 100644
index 0000000000..615e9d8ce0
--- /dev/null
+++ b/libraries/nprlib/genmsl/nprlib_genmsl_impl.mtlx
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/nprlib/genosl/nprlib_genosl_impl.mtlx b/libraries/nprlib/genosl/nprlib_genosl_impl.mtlx
new file mode 100644
index 0000000000..0b077b6406
--- /dev/null
+++ b/libraries/nprlib/genosl/nprlib_genosl_impl.mtlx
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/nprlib/nprlib_defs.mtlx b/libraries/nprlib/nprlib_defs.mtlx
new file mode 100644
index 0000000000..e724658ae5
--- /dev/null
+++ b/libraries/nprlib/nprlib_defs.mtlx
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/pbrlib/genglsl/lib/mx_environment_fis.glsl b/libraries/pbrlib/genglsl/lib/mx_environment_fis.glsl
index 575991e28d..85c88c3280 100644
--- a/libraries/pbrlib/genglsl/lib/mx_environment_fis.glsl
+++ b/libraries/pbrlib/genglsl/lib/mx_environment_fis.glsl
@@ -1,15 +1,5 @@
#include "mx_microfacet_specular.glsl"
-// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch20.html
-// Section 20.4 Equation 13
-float mx_latlong_compute_lod(vec3 dir, float pdf, float maxMipLevel, int envSamples)
-{
- const float MIP_LEVEL_OFFSET = 1.5;
- float effectiveMaxMipLevel = maxMipLevel - MIP_LEVEL_OFFSET;
- float distortion = sqrt(1.0 - mx_square(dir.y));
- return max(effectiveMaxMipLevel - 0.5 * log2(float(envSamples) * pdf * distortion), 0.0);
-}
-
vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd)
{
// Generate tangent frame.
diff --git a/libraries/pbrlib/genglsl/lib/mx_environment_prefilter.glsl b/libraries/pbrlib/genglsl/lib/mx_environment_prefilter.glsl
index 6def6fb439..e448ae247e 100644
--- a/libraries/pbrlib/genglsl/lib/mx_environment_prefilter.glsl
+++ b/libraries/pbrlib/genglsl/lib/mx_environment_prefilter.glsl
@@ -1,12 +1,5 @@
#include "mx_microfacet_specular.glsl"
-float mx_latlong_compute_lod(float alpha)
-{
- // Select a mip level based on input alpha.
- float lodBias = alpha < 0.25 ? sqrt(alpha) : 0.5*alpha + 0.375;
- return lodBias * float($envRadianceMips);
-}
-
vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd)
{
N = mx_forward_facing_normal(N, V);
@@ -19,7 +12,7 @@ vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distributio
float G = mx_ggx_smith_G2(NdotV, NdotV, avgAlpha);
vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G;
- vec3 Li = mx_latlong_map_lookup(L, $envMatrix, mx_latlong_compute_lod(avgAlpha), $envRadiance);
+ vec3 Li = mx_latlong_map_lookup(L, $envMatrix, mx_latlong_alpha_to_lod(avgAlpha), $envRadiance);
return Li * FG;
}
diff --git a/libraries/pbrlib/genglsl/lib/mx_table.glsl b/libraries/pbrlib/genglsl/lib/mx_generate_albedo_table.glsl
similarity index 100%
rename from libraries/pbrlib/genglsl/lib/mx_table.glsl
rename to libraries/pbrlib/genglsl/lib/mx_generate_albedo_table.glsl
diff --git a/libraries/pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl b/libraries/pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl
new file mode 100644
index 0000000000..e437e886af
--- /dev/null
+++ b/libraries/pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl
@@ -0,0 +1,71 @@
+#include "mx_microfacet_specular.glsl"
+
+// Construct an orthonormal basis from a unit vector.
+// https://graphics.pixar.com/library/OrthonormalB/paper.pdf
+mat3 mx_orthonormal_basis(vec3 N)
+{
+ float sign = (N.z < 0.0) ? -1.0 : 1.0;
+ float a = -1.0 / (sign + N.z);
+ float b = N.x * N.y * a;
+ vec3 X = vec3(1.0 + sign * N.x * N.x * a, sign * b, -sign * N.x);
+ vec3 Y = vec3(b, sign + N.y * N.y * a, -N.y);
+ return mat3(X, Y, N);
+}
+
+// The inverse of mx_latlong_projection.
+vec3 mx_latlong_map_projection_inverse(vec2 uv)
+{
+ float latitude = (uv.y - 0.5) * M_PI;
+ float longitude = (uv.x - 0.5) * M_PI * 2.0;
+
+ float x = -cos(latitude) * sin(longitude);
+ float y = -sin(latitude);
+ float z = cos(latitude) * cos(longitude);
+
+ return vec3(x, y, z);
+}
+
+vec3 mx_generate_prefilter_env()
+{
+ // The tangent view vector is aligned with the normal.
+ vec3 V = vec3(0.0, 0.0, 1.0);
+ float NdotV = 1.0;
+
+ // Compute derived properties.
+ vec2 uv = gl_FragCoord.xy * pow(2.0, $envPrefilterMip) / vec2(textureSize($envRadiance, 0));
+ vec3 worldN = mx_latlong_map_projection_inverse(uv);
+ mat3 tangentToWorld = mx_orthonormal_basis(worldN);
+ float alpha = mx_latlong_lod_to_alpha(float($envPrefilterMip));
+ float G1V = mx_ggx_smith_G1(NdotV, alpha);
+
+ // Integrate the LD term for the given environment and alpha.
+ vec3 radiance = vec3(0.0, 0.0, 0.0);
+ float weight = 0.0;
+ int envRadianceSamples = 1024;
+ for (int i = 0; i < envRadianceSamples; i++)
+ {
+ vec2 Xi = mx_spherical_fibonacci(i, envRadianceSamples);
+
+ // Compute the half vector and incoming light direction.
+ vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, vec2(alpha));
+ vec3 L = -V + 2.0 * H.z * H;
+
+ // Compute dot products for this sample.
+ float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0);
+
+ // Compute the geometric term.
+ float G = mx_ggx_smith_G2(NdotL, NdotV, alpha);
+
+ // Sample the environment light from the given direction.
+ vec3 Lw = tangentToWorld * L;
+ float pdf = mx_ggx_NDF(H, vec2(alpha)) * G1V / (4.0 * NdotV);
+ float lod = mx_latlong_compute_lod(Lw, pdf, float($envRadianceMips - 1), envRadianceSamples);
+ vec3 sampleColor = mx_latlong_map_lookup(Lw, $envMatrix, lod, $envRadiance);
+
+ // Add the radiance contribution of this sample.
+ radiance += G * sampleColor;
+ weight += G;
+ }
+
+ return radiance / weight;
+}
diff --git a/libraries/pbrlib/genglsl/lib/mx_microfacet_specular.glsl b/libraries/pbrlib/genglsl/lib/mx_microfacet_specular.glsl
index 63aba17869..a27f717a24 100644
--- a/libraries/pbrlib/genglsl/lib/mx_microfacet_specular.glsl
+++ b/libraries/pbrlib/genglsl/lib/mx_microfacet_specular.glsl
@@ -593,3 +593,28 @@ vec3 mx_latlong_map_lookup(vec3 dir, mat4 transform, float lod, sampler2D envSam
vec2 uv = mx_latlong_projection(envDir);
return textureLod(envSampler, uv, lod).rgb;
}
+
+// Return the mip level with the appropriate coverage for a filtered importance sample.
+// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch20.html
+// Section 20.4 Equation 13
+float mx_latlong_compute_lod(vec3 dir, float pdf, float maxMipLevel, int envSamples)
+{
+ const float MIP_LEVEL_OFFSET = 1.5;
+ float effectiveMaxMipLevel = maxMipLevel - MIP_LEVEL_OFFSET;
+ float distortion = sqrt(1.0 - mx_square(dir.y));
+ return max(effectiveMaxMipLevel - 0.5 * log2(float(envSamples) * pdf * distortion), 0.0);
+}
+
+// Return the mip level associated with the given alpha in a prefiltered environment.
+float mx_latlong_alpha_to_lod(float alpha)
+{
+ float lodBias = (alpha < 0.25) ? sqrt(alpha) : 0.5 * alpha + 0.375;
+ return lodBias * float($envRadianceMips - 1);
+}
+
+// Return the alpha associated with the given mip level in a prefiltered environment.
+float mx_latlong_lod_to_alpha(float lod)
+{
+ float lodBias = lod / float($envRadianceMips - 1);
+ return (lodBias < 0.5) ? mx_square(lodBias) : 2.0 * (lodBias - 0.375);
+}
diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl
new file mode 100644
index 0000000000..aa10ef5b98
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl
@@ -0,0 +1,6 @@
+void mx_creatematrix_vector3_matrix33(vec3 in1, vec3 in2, vec3 in3, out mat3 result)
+{
+ result = mat3(in1.x, in1.y, in1.z,
+ in2.x, in2.y, in2.z,
+ in3.x, in3.y, in3.z);
+}
diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl
new file mode 100644
index 0000000000..194fad421a
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl
@@ -0,0 +1,7 @@
+void mx_creatematrix_vector3_matrix44(vec3 in1, vec3 in2, vec3 in3, vec3 in4, out mat4 result)
+{
+ result = mat4(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ in4.x, in4.y, in4.z, 1.0);
+}
diff --git a/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl b/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl
new file mode 100644
index 0000000000..665a22212b
--- /dev/null
+++ b/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl
@@ -0,0 +1,7 @@
+void mx_creatematrix_vector4_matrix44(vec4 in1, vec4 in2, vec4 in3, vec4 in4, out mat4 result)
+{
+ result = mat4(in1.x, in1.y, in1.z, in1.w,
+ in2.x, in2.y, in2.z, in2.w,
+ in3.x, in3.y, in3.z, in3.w,
+ in4.x, in4.y, in4.z, in4.w);
+}
diff --git a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector2.glsl b/libraries/stdlib/genglsl/mx_fractal3d_fa_vector2.glsl
deleted file mode 100644
index 59dbbee127..0000000000
--- a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector2.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_fractal3d_fa_vector2(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec2 result)
-{
- vec2 value = mx_fractal_noise_vec2(position, octaves, lacunarity, diminish);
- result = value * amplitude;
-}
diff --git a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector3.glsl b/libraries/stdlib/genglsl/mx_fractal3d_fa_vector3.glsl
deleted file mode 100644
index d0f30defd4..0000000000
--- a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector3.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_fractal3d_fa_vector3(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec3 result)
-{
- vec3 value = mx_fractal_noise_vec3(position, octaves, lacunarity, diminish);
- result = value * amplitude;
-}
diff --git a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector4.glsl b/libraries/stdlib/genglsl/mx_fractal3d_fa_vector4.glsl
deleted file mode 100644
index b9c66c4465..0000000000
--- a/libraries/stdlib/genglsl/mx_fractal3d_fa_vector4.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_fractal3d_fa_vector4(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec4 result)
-{
- vec4 value = mx_fractal_noise_vec4(position, octaves, lacunarity, diminish);
- result = value * amplitude;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise2d_fa_vector2.glsl b/libraries/stdlib/genglsl/mx_noise2d_fa_vector2.glsl
deleted file mode 100644
index f5a81565d7..0000000000
--- a/libraries/stdlib/genglsl/mx_noise2d_fa_vector2.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise2d_fa_vector2(float amplitude, float pivot, vec2 texcoord, out vec2 result)
-{
- vec3 value = mx_perlin_noise_vec3(texcoord);
- result = value.xy * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise2d_fa_vector3.glsl b/libraries/stdlib/genglsl/mx_noise2d_fa_vector3.glsl
deleted file mode 100644
index 0735965ca0..0000000000
--- a/libraries/stdlib/genglsl/mx_noise2d_fa_vector3.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise2d_fa_vector3(float amplitude, float pivot, vec2 texcoord, out vec3 result)
-{
- vec3 value = mx_perlin_noise_vec3(texcoord);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise2d_fa_vector4.glsl b/libraries/stdlib/genglsl/mx_noise2d_fa_vector4.glsl
deleted file mode 100644
index 6d51a59e4a..0000000000
--- a/libraries/stdlib/genglsl/mx_noise2d_fa_vector4.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise2d_fa_vector4(float amplitude, float pivot, vec2 texcoord, out vec4 result)
-{
- vec3 xyz = mx_perlin_noise_vec3(texcoord);
- float w = mx_perlin_noise_float(texcoord + vec2(19, 73));
- result = vec4(xyz, w) * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise3d_fa_vector2.glsl b/libraries/stdlib/genglsl/mx_noise3d_fa_vector2.glsl
deleted file mode 100644
index 06d91f9135..0000000000
--- a/libraries/stdlib/genglsl/mx_noise3d_fa_vector2.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise3d_fa_vector2(float amplitude, float pivot, vec3 position, out vec2 result)
-{
- vec3 value = mx_perlin_noise_vec3(position);
- result = value.xy * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise3d_fa_vector3.glsl b/libraries/stdlib/genglsl/mx_noise3d_fa_vector3.glsl
deleted file mode 100644
index 168bf572f1..0000000000
--- a/libraries/stdlib/genglsl/mx_noise3d_fa_vector3.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise3d_fa_vector3(float amplitude, float pivot, vec3 position, out vec3 result)
-{
- vec3 value = mx_perlin_noise_vec3(position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_noise3d_fa_vector4.glsl b/libraries/stdlib/genglsl/mx_noise3d_fa_vector4.glsl
deleted file mode 100644
index 680410f9d3..0000000000
--- a/libraries/stdlib/genglsl/mx_noise3d_fa_vector4.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "lib/mx_noise.glsl"
-
-void mx_noise3d_fa_vector4(float amplitude, float pivot, vec3 position, out vec4 result)
-{
- vec3 xyz = mx_perlin_noise_vec3(position);
- float w = mx_perlin_noise_float(position + vec3(19, 73, 29));
- result = vec4(xyz, w) * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genglsl/mx_normalmap.glsl b/libraries/stdlib/genglsl/mx_normalmap.glsl
index 86d5610fea..19e0797c4f 100644
--- a/libraries/stdlib/genglsl/mx_normalmap.glsl
+++ b/libraries/stdlib/genglsl/mx_normalmap.glsl
@@ -1,4 +1,4 @@
-void mx_normalmap(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T, out vec3 result)
+void mx_normalmap_vector2(vec3 value, int map_space, vec2 normal_scale, vec3 N, vec3 T, out vec3 result)
{
// Decode the normal map.
value = (value == vec3(0.0f)) ? vec3(0.0, 0.0, 1.0) : value * 2.0 - 1.0;
@@ -14,3 +14,8 @@ void mx_normalmap(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T,
// Normalize the result.
result = normalize(value);
}
+
+void mx_normalmap_float(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T, out vec3 result)
+{
+ mx_normalmap_vector2(value, map_space, vec2(normal_scale), N, T, result);
+}
diff --git a/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx b/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
index 07aae6ce66..3cd3ae305d 100644
--- a/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
+++ b/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx
@@ -42,7 +42,9 @@
-
+
+
+
@@ -96,42 +98,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -748,6 +729,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx b/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
index 022f0896f1..5250501320 100644
--- a/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
+++ b/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx
@@ -44,7 +44,8 @@
-
+
+
@@ -98,42 +99,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -754,6 +734,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genmsl/mx_normalmap.metal b/libraries/stdlib/genmsl/mx_normalmap.metal
index c9c7bd5546..a3ffedaad5 100644
--- a/libraries/stdlib/genmsl/mx_normalmap.metal
+++ b/libraries/stdlib/genmsl/mx_normalmap.metal
@@ -1,4 +1,4 @@
-void mx_normalmap(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T, out vec3 result)
+void mx_normalmap_vector2(vec3 value, int map_space, vec2 normal_scale, vec3 N, vec3 T, out vec3 result)
{
// Decode the normal map.
value = all(value == vec3(0.0f)) ? vec3(0.0, 0.0, 1.0) : value * 2.0 - 1.0;
@@ -14,3 +14,8 @@ void mx_normalmap(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T,
// Normalize the result.
result = normalize(value);
}
+
+void mx_normalmap_float(vec3 value, int map_space, float normal_scale, vec3 N, vec3 T, out vec3 result)
+{
+ mx_normalmap_vector2(value, map_space, vec2(normal_scale), N, T, result);
+}
diff --git a/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx b/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
index dea1c49636..8526330d47 100644
--- a/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
+++ b/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx
@@ -42,7 +42,8 @@
-
+
+
@@ -96,42 +97,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -748,6 +728,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/genosl/mx_creatematrix.osl b/libraries/stdlib/genosl/mx_creatematrix.osl
new file mode 100644
index 0000000000..3e567d3b5b
--- /dev/null
+++ b/libraries/stdlib/genosl/mx_creatematrix.osl
@@ -0,0 +1,23 @@
+void mx_creatematrix_vector3_matrix33(vector in1, vector in2, vector in3, output matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ 0.0, 0.0, 0.0, 1.0);
+}
+
+void mx_creatematrix_vector3_matrix44(vector in1, vector in2, vector in3, vector in4, output matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, 0.0,
+ in2.x, in2.y, in2.z, 0.0,
+ in3.x, in3.y, in3.z, 0.0,
+ in4.x, in4.y, in4.z, 1.0);
+}
+
+void mx_creatematrix_vector4_matrix44(vector4 in1, vector4 in2, vector4 in3, vector4 in4, output matrix result)
+{
+ result = matrix(in1.x, in1.y, in1.z, in1.w,
+ in2.x, in2.y, in2.z, in2.w,
+ in3.x, in3.y, in3.z, in3.w,
+ in4.x, in4.y, in4.z, in4.w);
+}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_color3.osl b/libraries/stdlib/genosl/mx_fractal3d_color3.osl
deleted file mode 100644
index bf1744890b..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_color3(vector amplitude, int octaves, float lacunarity, float diminish, vector position, output color result)
-{
- color f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_color4.osl b/libraries/stdlib/genosl/mx_fractal3d_color4.osl
deleted file mode 100644
index 9943a92dfd..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_color4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector position, output color4 result)
-{
- color4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * color4(color(amplitude.x, amplitude.y, amplitude.z), amplitude.w);
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_fa_color3.osl b/libraries/stdlib/genosl/mx_fractal3d_fa_color3.osl
deleted file mode 100644
index 889848c692..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_fa_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_fa_color3(float amplitude, int octaves, float lacunarity, float diminish, vector position, output color result)
-{
- color f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_fa_color4.osl b/libraries/stdlib/genosl/mx_fractal3d_fa_color4.osl
deleted file mode 100644
index d2a8f49291..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_fa_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_fa_color4(float amplitude, int octaves, float lacunarity, float diminish, vector position, output color4 result)
-{
- color4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_fa_vector2.osl b/libraries/stdlib/genosl/mx_fractal3d_fa_vector2.osl
deleted file mode 100644
index c1266d473c..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_fa_vector2.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_fa_vector2(float amplitude, int octaves, float lacunarity, float diminish, vector position, output vector2 result)
-{
- vector2 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_fa_vector3.osl b/libraries/stdlib/genosl/mx_fractal3d_fa_vector3.osl
deleted file mode 100644
index 34f6515ca8..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_fa_vector3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_fa_vector3(float amplitude, int octaves, float lacunarity, float diminish, vector position, output vector result)
-{
- vector f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_fractal3d_fa_vector4.osl b/libraries/stdlib/genosl/mx_fractal3d_fa_vector4.osl
deleted file mode 100644
index fb5a8c73d6..0000000000
--- a/libraries/stdlib/genosl/mx_fractal3d_fa_vector4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_fractal3d_fa_vector4(float amplitude, int octaves, float lacunarity, float diminish, vector position, output vector4 result)
-{
- vector4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise");
- result = f * amplitude;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_color3.osl b/libraries/stdlib/genosl/mx_noise2d_color3.osl
deleted file mode 100644
index 37421ee810..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_color3(vector amplitude, float pivot, vector2 texcoord, output color result)
-{
- color value = noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_color4.osl b/libraries/stdlib/genosl/mx_noise2d_color4.osl
deleted file mode 100644
index ec8064c577..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_color4(vector4 amplitude, float pivot, vector2 texcoord, output color4 result)
-{
- color4 value = mx_noise("snoise", texcoord.x, texcoord.y);
- result = value * color4(color(amplitude.x, amplitude.y, amplitude.z), amplitude.w) + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_fa_color3.osl b/libraries/stdlib/genosl/mx_noise2d_fa_color3.osl
deleted file mode 100644
index 29c09c1ae2..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_fa_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_fa_color3(float amplitude, float pivot, vector2 texcoord, output color result)
-{
- color value = noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_fa_color4.osl b/libraries/stdlib/genosl/mx_noise2d_fa_color4.osl
deleted file mode 100644
index 35d3463ff7..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_fa_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_fa_color4(float amplitude, float pivot, vector2 texcoord, output color4 result)
-{
- color4 value = mx_noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_fa_vector2.osl b/libraries/stdlib/genosl/mx_noise2d_fa_vector2.osl
deleted file mode 100644
index b64dc6de7a..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_fa_vector2.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_fa_vector2(float amplitude, float pivot, vector2 texcoord, output vector2 result)
-{
- vector2 value = mx_noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_fa_vector3.osl b/libraries/stdlib/genosl/mx_noise2d_fa_vector3.osl
deleted file mode 100644
index c1f060a265..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_fa_vector3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_fa_vector3(float amplitude, float pivot, vector2 texcoord, output vector result)
-{
- vector value = noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise2d_fa_vector4.osl b/libraries/stdlib/genosl/mx_noise2d_fa_vector4.osl
deleted file mode 100644
index 9cb9f57c7c..0000000000
--- a/libraries/stdlib/genosl/mx_noise2d_fa_vector4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise2d_fa_vector4(float amplitude, float pivot, vector2 texcoord, output vector4 result)
-{
- vector4 value = mx_noise("snoise", texcoord.x, texcoord.y);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_color3.osl b/libraries/stdlib/genosl/mx_noise3d_color3.osl
deleted file mode 100644
index f4649a598a..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_color3(vector amplitude, float pivot, vector position, output color result)
-{
- color value = noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_color4.osl b/libraries/stdlib/genosl/mx_noise3d_color4.osl
deleted file mode 100644
index c522f81493..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_color4(vector4 amplitude, float pivot, vector position, output color4 result)
-{
- color4 value = mx_noise("snoise", position);
- result = value * color4(color(amplitude.x, amplitude.y, amplitude.z), amplitude.w) + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_fa_color3.osl b/libraries/stdlib/genosl/mx_noise3d_fa_color3.osl
deleted file mode 100644
index 83b777b2f2..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_fa_color3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_fa_color3(float amplitude, float pivot, vector position, output color result)
-{
- color value = noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_fa_color4.osl b/libraries/stdlib/genosl/mx_noise3d_fa_color4.osl
deleted file mode 100644
index ee1a48ea0c..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_fa_color4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_fa_color4(float amplitude, float pivot, vector position, output color4 result)
-{
- color4 value = mx_noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_fa_vector2.osl b/libraries/stdlib/genosl/mx_noise3d_fa_vector2.osl
deleted file mode 100644
index 9317d8933b..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_fa_vector2.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_fa_vector2(float amplitude, float pivot, vector position, output vector2 result)
-{
- vector2 value = mx_noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_fa_vector3.osl b/libraries/stdlib/genosl/mx_noise3d_fa_vector3.osl
deleted file mode 100644
index 4e235febce..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_fa_vector3.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_fa_vector3(float amplitude, float pivot, vector position, output vector result)
-{
- vector value = noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_noise3d_fa_vector4.osl b/libraries/stdlib/genosl/mx_noise3d_fa_vector4.osl
deleted file mode 100644
index 177fc3f286..0000000000
--- a/libraries/stdlib/genosl/mx_noise3d_fa_vector4.osl
+++ /dev/null
@@ -1,5 +0,0 @@
-void mx_noise3d_fa_vector4(float amplitude, float pivot, vector position, output vector4 result)
-{
- vector4 value = mx_noise("snoise", position);
- result = value * amplitude + pivot;
-}
diff --git a/libraries/stdlib/genosl/mx_normalmap.osl b/libraries/stdlib/genosl/mx_normalmap.osl
index a1f276faf1..79b31df69d 100644
--- a/libraries/stdlib/genosl/mx_normalmap.osl
+++ b/libraries/stdlib/genosl/mx_normalmap.osl
@@ -1,4 +1,4 @@
-void mx_normalmap(vector value, string map_space, float normal_scale, vector N, vector U, output vector result)
+void mx_normalmap_vector2(vector value, string map_space, vector2 normal_scale, vector N, vector U, output vector result)
{
// Tangent space
if (map_space == "tangent")
@@ -6,7 +6,7 @@ void mx_normalmap(vector value, string map_space, float normal_scale, vector N,
vector v = value * 2.0 - 1.0;
vector T = normalize(U - dot(U, N) * N);
vector B = normalize(cross(N, T));
- result = normalize(T * v[0] * normal_scale + B * v[1] * normal_scale + N * v[2]);
+ result = normalize(T * v[0] * normal_scale.x + B * v[1] * normal_scale.y + N * v[2]);
}
// Object space
else
@@ -15,3 +15,8 @@ void mx_normalmap(vector value, string map_space, float normal_scale, vector N,
result = normalize(n);
}
}
+
+void mx_normalmap_float(vector value, string map_space, float normal_scale, vector N, vector U, output vector result)
+{
+ mx_normalmap_vector2(value, map_space, vector2(normal_scale, normal_scale), N, U, result);
+}
diff --git a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
index 42828ce641..7268ee61dd 100644
--- a/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
+++ b/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx
@@ -44,7 +44,8 @@
-
+
+
@@ -98,42 +99,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -751,6 +731,11 @@
+
+
+
+
+
diff --git a/libraries/stdlib/stdlib_defs.mtlx b/libraries/stdlib/stdlib_defs.mtlx
index 3f187e2be1..051891cf83 100644
--- a/libraries/stdlib/stdlib_defs.mtlx
+++ b/libraries/stdlib/stdlib_defs.mtlx
@@ -2505,6 +2505,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2479,7 +2673,7 @@
-
+
-
-
-
-
-
-
-
+
-
+
@@ -46,11 +39,11 @@
-
+
-
-
-
+
+
+
diff --git a/resources/Materials/TestSuite/_options.mtlx b/resources/Materials/TestSuite/_options.mtlx
index bb29fbd7c1..74bfe1eb35 100644
--- a/resources/Materials/TestSuite/_options.mtlx
+++ b/resources/Materials/TestSuite/_options.mtlx
@@ -91,7 +91,7 @@
-
+
diff --git a/resources/Materials/TestSuite/nprlib/edge_brighten.mtlx b/resources/Materials/TestSuite/nprlib/edge_brighten.mtlx
new file mode 100644
index 0000000000..7e9aca7f22
--- /dev/null
+++ b/resources/Materials/TestSuite/nprlib/edge_brighten.mtlx
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Materials/TestSuite/nprlib/starfield.mtlx b/resources/Materials/TestSuite/nprlib/starfield.mtlx
new file mode 100644
index 0000000000..6898054a6d
--- /dev/null
+++ b/resources/Materials/TestSuite/nprlib/starfield.mtlx
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Materials/TestSuite/pbrlib/surfaceshader/normalmapped_surfaceshader.mtlx b/resources/Materials/TestSuite/pbrlib/surfaceshader/normalmapped_surfaceshader.mtlx
index 8a92848783..460f8a8998 100644
--- a/resources/Materials/TestSuite/pbrlib/surfaceshader/normalmapped_surfaceshader.mtlx
+++ b/resources/Materials/TestSuite/pbrlib/surfaceshader/normalmapped_surfaceshader.mtlx
@@ -25,4 +25,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Materials/TestSuite/stdlib/math/matrix.mtlx b/resources/Materials/TestSuite/stdlib/math/matrix.mtlx
new file mode 100644
index 0000000000..4bcb555739
--- /dev/null
+++ b/resources/Materials/TestSuite/stdlib/math/matrix.mtlx
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Materials/TestSuite/stdlib/noise/noise.mtlx b/resources/Materials/TestSuite/stdlib/noise/noise.mtlx
index 14ab1b9702..9a43223c60 100644
--- a/resources/Materials/TestSuite/stdlib/noise/noise.mtlx
+++ b/resources/Materials/TestSuite/stdlib/noise/noise.mtlx
@@ -1,208 +1,127 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Materials/TestSuite/stdlib/procedural/tiledshape.mtlx b/resources/Materials/TestSuite/stdlib/procedural/tiledshape.mtlx
index 69fd225f2c..fe6e414535 100644
--- a/resources/Materials/TestSuite/stdlib/procedural/tiledshape.mtlx
+++ b/resources/Materials/TestSuite/stdlib/procedural/tiledshape.mtlx
@@ -24,7 +24,7 @@
-
+
diff --git a/resources/Materials/TestSuite/stdlib/texture/noise.mtlx b/resources/Materials/TestSuite/stdlib/texture/noise.mtlx
deleted file mode 100644
index 760e508896..0000000000
--- a/resources/Materials/TestSuite/stdlib/texture/noise.mtlx
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_37.mtlx b/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_37.mtlx
index 66dc69f668..7404b75575 100644
--- a/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_37.mtlx
+++ b/resources/Materials/TestSuite/stdlib/upgrade/syntax_1_37.mtlx
@@ -58,7 +58,7 @@
-
+
diff --git a/source/JsMaterialX/JsMaterialXCore/JsNode.cpp b/source/JsMaterialX/JsMaterialXCore/JsNode.cpp
index 8878a219f5..fae1bcba5d 100644
--- a/source/JsMaterialX/JsMaterialXCore/JsNode.cpp
+++ b/source/JsMaterialX/JsMaterialXCore/JsNode.cpp
@@ -57,6 +57,7 @@ EMSCRIPTEN_BINDINGS(node)
.function("setNodeDef", &mx::NodeGraph::setNodeDef)
.function("getNodeDef", &mx::NodeGraph::getNodeDef)
.function("getImplementation", &mx::NodeGraph::getImplementation)
+ .function("getDownstreamPorts", &mx::NodeGraph::getDownstreamPorts)
.function("addInterfaceName", &mx::NodeGraph::addInterfaceName)
.function("removeInterfaceName", &mx::NodeGraph::removeInterfaceName)
.function("modifyInterfaceName", &mx::NodeGraph::modifyInterfaceName)
diff --git a/source/JsMaterialX/JsMaterialXGenShader/JsGenOptions.cpp b/source/JsMaterialX/JsMaterialXGenShader/JsGenOptions.cpp
index 7e3313cdf7..9b28a6f534 100644
--- a/source/JsMaterialX/JsMaterialXGenShader/JsGenOptions.cpp
+++ b/source/JsMaterialX/JsMaterialXGenShader/JsGenOptions.cpp
@@ -42,5 +42,6 @@ EMSCRIPTEN_BINDINGS(GenOptions)
.property("hwMaxActiveLightSources", &mx::GenOptions::hwMaxActiveLightSources)
.property("hwNormalizeUdimTexCoords", &mx::GenOptions::hwNormalizeUdimTexCoords)
.property("hwWriteAlbedoTable", &mx::GenOptions::hwWriteAlbedoTable)
+ .property("hwWriteEnvPrefilter", &mx::GenOptions::hwWriteEnvPrefilter)
;
}
diff --git a/source/MaterialXCore/Definition.cpp b/source/MaterialXCore/Definition.cpp
index cf9587ecda..c3150e2a87 100644
--- a/source/MaterialXCore/Definition.cpp
+++ b/source/MaterialXCore/Definition.cpp
@@ -84,7 +84,7 @@ InterfaceElementPtr NodeDef::getImplementation(const string& target) const
}
}
}
-
+
// Then search for a generic match.
for (InterfaceElementPtr interface : interfaces)
{
diff --git a/source/MaterialXCore/Util.cpp b/source/MaterialXCore/Util.cpp
index 9bb75a19b5..639b8f343c 100644
--- a/source/MaterialXCore/Util.cpp
+++ b/source/MaterialXCore/Util.cpp
@@ -24,7 +24,7 @@ const std::tuple LIBRARY_VERSION_TUPLE(MATERIALX_MAJOR_VERSION,
bool invalidNameChar(char c)
{
- return !isalnum(c) && c != '_' && c != ':';
+ return !isalnum((unsigned char) c) && c != '_' && c != ':';
}
} // anonymous namespace
diff --git a/source/MaterialXFormat/File.cpp b/source/MaterialXFormat/File.cpp
index bb40ba54d1..62b7ec39a8 100644
--- a/source/MaterialXFormat/File.cpp
+++ b/source/MaterialXFormat/File.cpp
@@ -51,7 +51,7 @@ const string MATERIALX_SEARCH_PATH_ENV_VAR = "MATERIALX_SEARCH_PATH";
inline bool hasWindowsDriveSpecifier(const string& val)
{
- return (val.length() > 1 && std::isalpha(val[0]) && (val[1] == ':'));
+ return (val.length() > 1 && std::isalpha((unsigned char) val[0]) && (val[1] == ':'));
}
//
diff --git a/source/MaterialXFormat/Util.cpp b/source/MaterialXFormat/Util.cpp
index 32feda4d0d..48ded1d6b1 100644
--- a/source/MaterialXFormat/Util.cpp
+++ b/source/MaterialXFormat/Util.cpp
@@ -234,7 +234,7 @@ FileSearchPath getDefaultDataSearchPath()
}
currentPath = currentPath.getParentPath();
}
- return FileSearchPath();
+ return FileSearchPath();
}
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXFormat/Util.h b/source/MaterialXFormat/Util.h
index 46f55c41ee..c7ef0c6d38 100644
--- a/source/MaterialXFormat/Util.h
+++ b/source/MaterialXFormat/Util.h
@@ -62,7 +62,7 @@ MX_FORMAT_API FileSearchPath getSourceSearchPath(ConstDocumentPtr doc);
/// Return a file search path to the default data library folder.
/// The module path and all parent paths are examined to until either there is
-/// no parent or the library folder is found.
+/// no parent or the library folder is found.
MX_FORMAT_API FileSearchPath getDefaultDataSearchPath();
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXFormat/XmlIo.cpp b/source/MaterialXFormat/XmlIo.cpp
index 67d41225a4..2bc0908008 100644
--- a/source/MaterialXFormat/XmlIo.cpp
+++ b/source/MaterialXFormat/XmlIo.cpp
@@ -353,7 +353,7 @@ void readFromXmlFile(DocumentPtr doc, FilePath filename, FileSearchPath searchPa
documentFromXml(doc, xmlDoc, searchPath, readOptions);
}
-void readFromXmlString(DocumentPtr doc, const string& str, FileSearchPath searchPath, const XmlReadOptions* readOptions)
+void readFromXmlString(DocumentPtr doc, const string& str, const FileSearchPath& searchPath, const XmlReadOptions* readOptions)
{
std::istringstream stream(str);
readFromXmlStream(doc, stream, searchPath, readOptions);
diff --git a/source/MaterialXFormat/XmlIo.h b/source/MaterialXFormat/XmlIo.h
index b098c0fb3a..3aa8d41ed5 100644
--- a/source/MaterialXFormat/XmlIo.h
+++ b/source/MaterialXFormat/XmlIo.h
@@ -146,7 +146,7 @@ MX_FORMAT_API void readFromXmlFile(DocumentPtr doc,
/// If provided, then the given options will affect the behavior of the
/// read function. Defaults to a null pointer.
/// @throws ExceptionParseError if the document cannot be parsed.
-MX_FORMAT_API void readFromXmlString(DocumentPtr doc, const string& str, FileSearchPath searchPath = FileSearchPath(), const XmlReadOptions* readOptions = nullptr);
+MX_FORMAT_API void readFromXmlString(DocumentPtr doc, const string& str, const FileSearchPath& searchPath = FileSearchPath(), const XmlReadOptions* readOptions = nullptr);
/// @}
/// @name Write Functions
diff --git a/source/MaterialXGenGlsl/GlslResourceBindingContext.cpp b/source/MaterialXGenGlsl/GlslResourceBindingContext.cpp
index 3aad355d60..925aa2cd0c 100644
--- a/source/MaterialXGenGlsl/GlslResourceBindingContext.cpp
+++ b/source/MaterialXGenGlsl/GlslResourceBindingContext.cpp
@@ -58,7 +58,7 @@ void GlslResourceBindingContext::emitDirectives(GenContext& context, ShaderStage
void GlslResourceBindingContext::emitResourceBindings(GenContext& context, const VariableBlock& uniforms, ShaderStage& stage)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
const Syntax& syntax = generator.getSyntax();
// First, emit all value uniforms in a block with single layout binding
@@ -108,7 +108,7 @@ void GlslResourceBindingContext::emitStructuredResourceBindings(GenContext& cont
ShaderStage& stage, const std::string& structInstanceName,
const std::string& arraySuffix)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
const Syntax& syntax = generator.getSyntax();
// Glsl structures need to be aligned. We make a best effort to base align struct members and add
diff --git a/source/MaterialXGenGlsl/GlslShaderGenerator.cpp b/source/MaterialXGenGlsl/GlslShaderGenerator.cpp
index ec5e48d4ec..f0126f10d9 100644
--- a/source/MaterialXGenGlsl/GlslShaderGenerator.cpp
+++ b/source/MaterialXGenGlsl/GlslShaderGenerator.cpp
@@ -6,14 +6,8 @@
#include
#include
-#include
-#include
-#include
-#include
#include
#include
-#include
-#include
#include
#include
#include
@@ -32,6 +26,13 @@
#include
#include
#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
#include
#include
#include
@@ -56,17 +57,17 @@ GlslShaderGenerator::GlslShaderGenerator() :
//
StringVec elementNames;
-
+
//
elementNames = {
//
- "IM_switch_float_" + GlslShaderGenerator::TARGET,
- "IM_switch_color3_" + GlslShaderGenerator::TARGET,
- "IM_switch_color4_" + GlslShaderGenerator::TARGET,
+ "IM_switch_float_" + GlslShaderGenerator::TARGET,
+ "IM_switch_color3_" + GlslShaderGenerator::TARGET,
+ "IM_switch_color4_" + GlslShaderGenerator::TARGET,
"IM_switch_vector2_" + GlslShaderGenerator::TARGET,
"IM_switch_vector3_" + GlslShaderGenerator::TARGET,
"IM_switch_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_switch_floatI_" + GlslShaderGenerator::TARGET,
"IM_switch_color3I_" + GlslShaderGenerator::TARGET,
@@ -85,7 +86,7 @@ GlslShaderGenerator::GlslShaderGenerator() :
"IM_swizzle_float_vector2_" + GlslShaderGenerator::TARGET,
"IM_swizzle_float_vector3_" + GlslShaderGenerator::TARGET,
"IM_swizzle_float_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_swizzle_color3_float_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color3_color3_" + GlslShaderGenerator::TARGET,
@@ -93,7 +94,7 @@ GlslShaderGenerator::GlslShaderGenerator() :
"IM_swizzle_color3_vector2_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color3_vector3_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color3_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_swizzle_color4_float_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color4_color3_" + GlslShaderGenerator::TARGET,
@@ -101,7 +102,7 @@ GlslShaderGenerator::GlslShaderGenerator() :
"IM_swizzle_color4_vector2_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color4_vector3_" + GlslShaderGenerator::TARGET,
"IM_swizzle_color4_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_swizzle_vector2_float_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector2_color3_" + GlslShaderGenerator::TARGET,
@@ -109,7 +110,7 @@ GlslShaderGenerator::GlslShaderGenerator() :
"IM_swizzle_vector2_vector2_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector2_vector3_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector2_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_swizzle_vector3_float_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector3_color3_" + GlslShaderGenerator::TARGET,
@@ -117,7 +118,7 @@ GlslShaderGenerator::GlslShaderGenerator() :
"IM_swizzle_vector3_vector2_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector3_vector3_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector3_vector4_" + GlslShaderGenerator::TARGET,
-
+
//
"IM_swizzle_vector4_float_" + GlslShaderGenerator::TARGET,
"IM_swizzle_vector4_color3_" + GlslShaderGenerator::TARGET,
@@ -164,13 +165,13 @@ GlslShaderGenerator::GlslShaderGenerator() :
registerImplementation(elementNames, CombineNode::create);
//
- registerImplementation("IM_position_vector3_" + GlslShaderGenerator::TARGET, PositionNodeGlsl::create);
+ registerImplementation("IM_position_vector3_" + GlslShaderGenerator::TARGET, HwPositionNode::create);
//
- registerImplementation("IM_normal_vector3_" + GlslShaderGenerator::TARGET, NormalNodeGlsl::create);
+ registerImplementation("IM_normal_vector3_" + GlslShaderGenerator::TARGET, HwNormalNode::create);
//
- registerImplementation("IM_tangent_vector3_" + GlslShaderGenerator::TARGET, TangentNodeGlsl::create);
+ registerImplementation("IM_tangent_vector3_" + GlslShaderGenerator::TARGET, HwTangentNode::create);
//
- registerImplementation("IM_bitangent_vector3_" + GlslShaderGenerator::TARGET, BitangentNodeGlsl::create);
+ registerImplementation("IM_bitangent_vector3_" + GlslShaderGenerator::TARGET, HwBitangentNode::create);
//
registerImplementation("IM_texcoord_vector2_" + GlslShaderGenerator::TARGET, HwTexCoordNode::create);
registerImplementation("IM_texcoord_vector3_" + GlslShaderGenerator::TARGET, HwTexCoordNode::create);
@@ -193,9 +194,11 @@ GlslShaderGenerator::GlslShaderGenerator() :
registerImplementation("IM_geompropvalue_string_" + GlslShaderGenerator::TARGET, GeomPropValueNodeGlslAsUniform::create);
//
- registerImplementation("IM_frame_float_" + GlslShaderGenerator::TARGET, FrameNodeGlsl::create);
+ registerImplementation("IM_frame_float_" + GlslShaderGenerator::TARGET, HwFrameNode::create);
//
- registerImplementation("IM_time_float_" + GlslShaderGenerator::TARGET, TimeNodeGlsl::create);
+ registerImplementation("IM_time_float_" + GlslShaderGenerator::TARGET, HwTimeNode::create);
+ //
+ registerImplementation("IM_viewdirection_vector3_" + GlslShaderGenerator::TARGET, HwViewDirectionNode::create);
//
registerImplementation("IM_surface_" + GlslShaderGenerator::TARGET, SurfaceNodeGlsl::create);
@@ -553,7 +556,7 @@ void GlslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& c
bool lighting = requiresLighting(graph);
// Define directional albedo approach
- if (lighting || context.getOptions().hwWriteAlbedoTable)
+ if (lighting || context.getOptions().hwWriteAlbedoTable || context.getOptions().hwWriteEnvPrefilter)
{
emitLine("#define DIRECTIONAL_ALBEDO_METHOD " + std::to_string(int(context.getOptions().hwDirectionalAlbedoMethod)), stage, false);
emitLineBreak(stage);
@@ -587,7 +590,14 @@ void GlslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& c
// Emit directional albedo table code.
if (context.getOptions().hwWriteAlbedoTable)
{
- emitLibraryInclude("pbrlib/genglsl/lib/mx_table.glsl", context, stage);
+ emitLibraryInclude("pbrlib/genglsl/lib/mx_generate_albedo_table.glsl", context, stage);
+ emitLineBreak(stage);
+ }
+
+ // Emit environment prefiltering code
+ if (context.getOptions().hwWriteEnvPrefilter)
+ {
+ emitLibraryInclude("pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl", context, stage);
emitLineBreak(stage);
}
@@ -636,6 +646,10 @@ void GlslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& c
{
emitLine(outputSocket->getVariable() + " = vec4(mx_generate_dir_albedo_table(), 1.0)", stage);
}
+ else if (context.getOptions().hwWriteEnvPrefilter)
+ {
+ emitLine(outputSocket->getVariable() + " = vec4(mx_generate_prefilter_env(), 1.0)", stage);
+ }
else
{
// Add all function calls.
@@ -899,31 +913,9 @@ ShaderNodeImplPtr GlslShaderGenerator::getImplementation(const NodeDef& nodedef,
return impl;
}
-const string GlslImplementation::SPACE = "space";
-const string GlslImplementation::INDEX = "index";
-const string GlslImplementation::GEOMPROP = "geomprop";
-
-namespace
-{
-
-// List name of inputs that are not to be editable and
-// published as shader uniforms in GLSL.
-const std::set IMMUTABLE_INPUTS =
-{
- // Geometric node inputs are immutable since a shader needs regeneration if they change.
- "index", "space", "attrname"
-};
-
-} // anonymous namespace
-
const string& GlslImplementation::getTarget() const
{
return GlslShaderGenerator::TARGET;
}
-bool GlslImplementation::isEditable(const ShaderInput& input) const
-{
- return IMMUTABLE_INPUTS.count(input.getName()) == 0;
-}
-
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/GlslShaderGenerator.h b/source/MaterialXGenGlsl/GlslShaderGenerator.h
index acc8b0d6ee..aafd665140 100644
--- a/source/MaterialXGenGlsl/GlslShaderGenerator.h
+++ b/source/MaterialXGenGlsl/GlslShaderGenerator.h
@@ -88,30 +88,13 @@ class MX_GENGLSL_API GlslShaderGenerator : public HwShaderGenerator
};
/// Base class for common GLSL node implementations
-class MX_GENGLSL_API GlslImplementation : public ShaderNodeImpl
+class MX_GENGLSL_API GlslImplementation : public HwImplementation
{
public:
const string& getTarget() const override;
- bool isEditable(const ShaderInput& input) const override;
-
protected:
GlslImplementation() { }
-
- // Integer identifiers for coordinate spaces.
- // The order must match the order given for
- // the space enum string in stdlib.
- enum Space
- {
- MODEL_SPACE = 0,
- OBJECT_SPACE = 1,
- WORLD_SPACE = 2
- };
-
- /// Internal string constants
- static const string SPACE;
- static const string INDEX;
- static const string GEOMPROP;
};
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.cpp
deleted file mode 100644
index 6f515824e7..0000000000
--- a/source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr BitangentNodeGlsl::create()
-{
- return std::make_shared();
-}
-
-void BitangentNodeGlsl::createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const
-{
- const GenOptions& options = context.getOptions();
-
- ShaderStage& vs = shader.getStage(Stage::VERTEX);
- ShaderStage& ps = shader.getStage(Stage::PIXEL);
-
- if (options.hwImplicitBitangents)
- {
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_NORMAL, vs);
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_TANGENT, vs);
- }
- else
- {
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_BITANGENT, vs);
- }
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
- if (space == WORLD_SPACE)
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_BITANGENT_WORLD, vs, ps);
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::MATRIX44, HW::T_WORLD_MATRIX, vs);
-
- if (options.hwImplicitBitangents)
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_NORMAL_WORLD, vs, ps);
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_TANGENT_WORLD, vs, ps);
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::MATRIX44, HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX, vs);
- }
- }
- else
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_BITANGENT_OBJECT, vs, ps);
- }
-}
-
-void BitangentNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- const GlslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
- const GenOptions& options = context.getOptions();
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
-
- DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
- {
- VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- if (space == WORLD_SPACE)
- {
- ShaderPort* bitangent = vertexData[HW::T_BITANGENT_WORLD];
-
- if (!bitangent->isEmitted())
- {
- bitangent->setEmitted();
-
- if (options.hwImplicitBitangents)
- {
- ShaderPort* normal = vertexData[HW::T_NORMAL_WORLD];
- if (!normal->isEmitted())
- {
- normal->setEmitted();
- shadergen.emitLine(prefix + normal->getVariable() + " = normalize((" + HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX + " * vec4(" + HW::T_IN_NORMAL + ", 0.0)).xyz)", stage);
- }
- ShaderPort* tangent = vertexData[HW::T_TANGENT_WORLD];
- if (!tangent->isEmitted())
- {
- tangent->setEmitted();
- shadergen.emitLine(prefix + tangent->getVariable() + " = normalize((" + HW::T_WORLD_MATRIX + " * vec4(" + HW::T_IN_TANGENT + ", 0.0)).xyz)", stage);
- }
- shadergen.emitLine(prefix + bitangent->getVariable() + " = cross(" + prefix + normal->getVariable() + ", " + prefix + tangent->getVariable() + ")", stage);
- }
- else
- {
- shadergen.emitLine(prefix + bitangent->getVariable() + " = normalize((" + HW::T_WORLD_MATRIX + " * vec4(" + HW::T_IN_BITANGENT + ", 0.0)).xyz)", stage);
- }
- }
- }
- else
- {
- ShaderPort* bitangent = vertexData[HW::T_BITANGENT_OBJECT];
- if (!bitangent->isEmitted())
- {
- bitangent->setEmitted();
-
- if (options.hwImplicitBitangents)
- {
- shadergen.emitLine(prefix + bitangent->getVariable() + " = cross(" + HW::T_IN_NORMAL + ", " + HW::T_IN_TANGENT + ")", stage);
- }
- else
- {
- shadergen.emitLine(prefix + bitangent->getVariable() + " = " + HW::T_IN_BITANGENT, stage);
- }
- }
- }
- }
-
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- if (space == WORLD_SPACE)
- {
- const ShaderPort* bitangent = vertexData[HW::T_BITANGENT_WORLD];
- shadergen.emitString(" = normalize(" + prefix + bitangent->getVariable() + ")", stage);
- }
- else
- {
- const ShaderPort* bitangent = vertexData[HW::T_BITANGENT_OBJECT];
- shadergen.emitString(" = normalize(" + prefix + bitangent->getVariable() + ")", stage);
- }
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.cpp
deleted file mode 100644
index b6dbb2002b..0000000000
--- a/source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr FrameNodeGlsl::create()
-{
- return std::make_shared();
-}
-
-void FrameNodeGlsl::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
-{
- ShaderStage& ps = shader.getStage(Stage::PIXEL);
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::FLOAT, HW::T_FRAME, ps);
-}
-
-void FrameNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- const ShaderGenerator& shadergen = context.getShaderGenerator();
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- shadergen.emitString(" = " + HW::T_FRAME, stage);
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.cpp
deleted file mode 100644
index d37af520b2..0000000000
--- a/source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr PositionNodeGlsl::create()
-{
- return std::make_shared();
-}
-
-void PositionNodeGlsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
-{
- ShaderStage vs = shader.getStage(Stage::VERTEX);
- ShaderStage ps = shader.getStage(Stage::PIXEL);
-
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_POSITION, vs);
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
- if (space == WORLD_SPACE)
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_POSITION_WORLD, vs, ps);
- }
- else
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_POSITION_OBJECT, vs, ps);
- }
-}
-
-void PositionNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- const GlslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
-
- DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
- {
- VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- if (space == WORLD_SPACE)
- {
- ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
- if (!position->isEmitted())
- {
- position->setEmitted();
- shadergen.emitLine(prefix + position->getVariable() + " = hPositionWorld.xyz", stage);
- }
- }
- else
- {
- ShaderPort* position = vertexData[HW::T_POSITION_OBJECT];
- if (!position->isEmitted())
- {
- position->setEmitted();
- shadergen.emitLine(prefix + position->getVariable() + " = " + HW::T_IN_POSITION, stage);
- }
- }
- }
-
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- if (space == WORLD_SPACE)
- {
- const ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
- shadergen.emitString(" = " + prefix + position->getVariable(), stage);
- }
- else
- {
- const ShaderPort* position = vertexData[HW::T_POSITION_OBJECT];
- shadergen.emitString(" = " + prefix + position->getVariable(), stage);
- }
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/Nodes/SurfaceNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/SurfaceNodeGlsl.cpp
index c83fbe1d78..2e222f6bcc 100644
--- a/source/MaterialXGenGlsl/Nodes/SurfaceNodeGlsl.cpp
+++ b/source/MaterialXGenGlsl/Nodes/SurfaceNodeGlsl.cpp
@@ -45,8 +45,8 @@ void SurfaceNodeGlsl::createVariables(const ShaderNode&, GenContext& context, Sh
{
// TODO:
// The surface shader needs position, normal, view position and light sources. We should solve this by adding some
- // dependency mechanism so this implementation can be set to depend on the PositionNodeGlsl, NormalNodeGlsl
- // ViewDirectionNodeGlsl and LightNodeGlsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
+ // dependency mechanism so this implementation can be set to depend on the HwPositionNode, HwNormalNode
+ // HwViewDirectionNode and LightNodeGlsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
// is needed.
//
ShaderStage& vs = shader.getStage(Stage::VERTEX);
diff --git a/source/MaterialXGenGlsl/Nodes/SurfaceShaderNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/SurfaceShaderNodeGlsl.cpp
index 00362b1cab..5e97b8ffc6 100644
--- a/source/MaterialXGenGlsl/Nodes/SurfaceShaderNodeGlsl.cpp
+++ b/source/MaterialXGenGlsl/Nodes/SurfaceShaderNodeGlsl.cpp
@@ -24,8 +24,8 @@ void SurfaceShaderNodeGlsl::createVariables(const ShaderNode&, GenContext& conte
{
// TODO:
// The surface shader needs position, view position and light sources. We should solve this by adding some
- // dependency mechanism so this implementation can be set to depend on the PositionNodeGlsl,
- // ViewDirectionNodeGlsl and LightNodeGlsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
+ // dependency mechanism so this implementation can be set to depend on the HwPositionNode,
+ // HwViewDirectionNode and LightNodeGlsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
// is needed.
//
ShaderStage& vs = shader.getStage(Stage::VERTEX);
diff --git a/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.cpp b/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.cpp
deleted file mode 100644
index e508391141..0000000000
--- a/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr TimeNodeGlsl::create()
-{
- return std::make_shared();
-}
-
-void TimeNodeGlsl::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
-{
- ShaderStage& ps = shader.getStage(Stage::PIXEL);
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::FLOAT, HW::T_FRAME, ps);
-}
-
-void TimeNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- const ShaderGenerator& shadergen = context.getShaderGenerator();
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- shadergen.emitString(" = " + HW::T_FRAME + " / ", stage);
- const ShaderInput* fpsInput = node.getInput("fps");
- const string fps = fpsInput->getValue()->getValueString();
- shadergen.emitString(fps, stage);
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.h b/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.h
deleted file mode 100644
index c97f6b4741..0000000000
--- a/source/MaterialXGenGlsl/Nodes/TimeNodeGlsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_TIMENODEGLSL_H
-#define MATERIALX_TIMENODEGLSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Time node implementation for GLSL
-class MX_GENGLSL_API TimeNodeGlsl : public GlslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenGlsl/VkResourceBindingContext.cpp b/source/MaterialXGenGlsl/VkResourceBindingContext.cpp
index 38e7186f4a..3c5d8b6bb0 100644
--- a/source/MaterialXGenGlsl/VkResourceBindingContext.cpp
+++ b/source/MaterialXGenGlsl/VkResourceBindingContext.cpp
@@ -24,7 +24,7 @@ void VkResourceBindingContext::initialize()
void VkResourceBindingContext::emitDirectives(GenContext& context, ShaderStage& stage)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
// Write shader stage directives for Vulkan compliance
std::string shaderStage;
@@ -45,7 +45,7 @@ void VkResourceBindingContext::emitDirectives(GenContext& context, ShaderStage&
void VkResourceBindingContext::emitResourceBindings(GenContext& context, const VariableBlock& uniforms, ShaderStage& stage)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
const Syntax& syntax = generator.getSyntax();
// First, emit all value uniforms in a block with single layout binding
@@ -95,7 +95,7 @@ void VkResourceBindingContext::emitStructuredResourceBindings(GenContext& contex
ShaderStage& stage, const std::string& structInstanceName,
const std::string& arraySuffix)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
const Syntax& syntax = generator.getSyntax();
// Glsl structures need to be aligned. We make a best effort to base align struct members and add
diff --git a/source/MaterialXGenMdl/MdlShaderGenerator.cpp b/source/MaterialXGenMdl/MdlShaderGenerator.cpp
index e10d586d69..af75a2cef4 100644
--- a/source/MaterialXGenMdl/MdlShaderGenerator.cpp
+++ b/source/MaterialXGenMdl/MdlShaderGenerator.cpp
@@ -291,9 +291,9 @@ ShaderPtr MdlShaderGenerator::generate(const string& name, ElementPtr element, G
{
emitLine("float3 displacement__ = " + result + ".geometry.displacement", stage);
emitLine("color finalOutput__ = mk_color3("
- "r: math::dot(displacement__, state::texture_tangent_u(0)),"
- "g: math::dot(displacement__, state::texture_tangent_v(0)),"
- "b: math::dot(displacement__, state::normal()))", stage);
+ "r: math::dot(displacement__, state::texture_tangent_u(0)),"
+ "g: math::dot(displacement__, state::texture_tangent_v(0)),"
+ "b: math::dot(displacement__, state::normal()))", stage);
}
else
{
diff --git a/source/MaterialXGenMdl/MdlSyntax.cpp b/source/MaterialXGenMdl/MdlSyntax.cpp
index 9d5483bcca..7560297ce4 100644
--- a/source/MaterialXGenMdl/MdlSyntax.cpp
+++ b/source/MaterialXGenMdl/MdlSyntax.cpp
@@ -48,7 +48,7 @@ class MdlFilenameTypeSyntax : public ScalarTypeSyntax
// assuming it ends with a slash ...
if (outputValue.back() == '/')
{
- return getDefaultValue(true);
+ return getDefaultValue(true);
}
// ... or the last segment does not have an extension suffix
size_t idx_s = outputValue.find_last_of('/');
diff --git a/source/MaterialXGenMdl/Nodes/ClosureCompoundNodeMdl.cpp b/source/MaterialXGenMdl/Nodes/ClosureCompoundNodeMdl.cpp
index e175696d55..0a2004cd71 100644
--- a/source/MaterialXGenMdl/Nodes/ClosureCompoundNodeMdl.cpp
+++ b/source/MaterialXGenMdl/Nodes/ClosureCompoundNodeMdl.cpp
@@ -41,7 +41,7 @@ void ClosureCompoundNodeMdl::emitFunctionDefinition(const ShaderNode& node, GenC
{
if (!outputSocket->getConnection())
continue;
-
+
const ShaderNode* upstream = outputSocket->getConnection()->getNode();
const bool isMaterialExpr = (upstream->hasClassification(ShaderNode::Classification::CLOSURE) ||
upstream->hasClassification(ShaderNode::Classification::SHADER));
diff --git a/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.cpp b/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.cpp
index fd27d5e547..bff1351142 100644
--- a/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.cpp
+++ b/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.cpp
@@ -368,12 +368,12 @@ const string& MixBsdfNodeMdl::getOperatorName(size_t index) const
{
switch (index)
{
- case 0:
- return StringConstantsMdl::FG;
- case 1:
- return StringConstantsMdl::BG;
- default:
- return StringConstantsMdl::EMPTY;
+ case 0:
+ return StringConstantsMdl::FG;
+ case 1:
+ return StringConstantsMdl::BG;
+ default:
+ return StringConstantsMdl::EMPTY;
}
}
@@ -386,12 +386,12 @@ const string& AddOrMultiplyBsdfNodeMdl::getOperatorName(size_t index) const
{
switch (index)
{
- case 0:
- return StringConstantsMdl::IN1;
- case 1:
- return StringConstantsMdl::IN2;
- default:
- return StringConstantsMdl::EMPTY;
+ case 0:
+ return StringConstantsMdl::IN1;
+ case 1:
+ return StringConstantsMdl::IN2;
+ default:
+ return StringConstantsMdl::EMPTY;
}
}
diff --git a/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.h b/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.h
index 75ea46046c..95c51198f8 100644
--- a/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.h
+++ b/source/MaterialXGenMdl/Nodes/ClosureLayerNodeMdl.h
@@ -21,18 +21,18 @@ class MX_GENMDL_API StringConstantsMdl
public:
/// String constants
- static const string TOP; ///< layer parameter name of the top component
+ static const string TOP; ///< layer parameter name of the top component
static const string BASE; ///< layer parameter name of the base component
- static const string FG; ///< parameter of the mix node
- static const string BG; ///< parameter of the mix node
- static const string IN1; ///< parameter of the add and multiply nodes
- static const string IN2; ///< parameter of the add and multiply nodes
+ static const string FG; ///< parameter of the mix node
+ static const string BG; ///< parameter of the mix node
+ static const string IN1; ///< parameter of the add and multiply nodes
+ static const string IN2; ///< parameter of the add and multiply nodes
static const string THICKNESS; ///< thickness parameter name of the thin_film_bsdf
- static const string IOR; ///< ior parameter name of the thin_film_bsdf
+ static const string IOR; ///< ior parameter name of the thin_film_bsdf
static const string THIN_FILM_THICKNESS; ///< helper parameter name for transporting thickness
- static const string THIN_FILM_IOR; ///< helper parameter name for transporting ior
+ static const string THIN_FILM_IOR; ///< helper parameter name for transporting ior
static const string EMPTY; ///< the empty string ""
};
@@ -41,7 +41,7 @@ class MX_GENMDL_API StringConstantsMdl
/// thin_film_bsdf through layers and mixers, etc., to the elemental bsdfs that support thin film.
/// Because thin-film can not be layered on any BSDF in MDL, we try to push down the parameters to
/// the nodes that support thin-film.
-template class CarryThinFilmParameters : public TBase
+template class CarryThinFilmParameters : public TBase
{
public:
/// Add the thin film inputs for transporting the parameter.
diff --git a/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl b/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl
index 4ba4f0875a..708ea15603 100644
--- a/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl
+++ b/source/MaterialXGenMdl/mdl/materialx/stdlib.mdl
@@ -1366,6 +1366,22 @@ export float mx_time_float(
return ::state::animation_time();
}
+export float3 mx_viewdirection_vector3(
+ uniform mx_coordinatespace_type mxp_space = mx_coordinatespace_type(mx_coordinatespace_type_world)
+ [[
+ anno::description("Enumeration {model,object,world}."),
+ anno::unused()
+ ]]
+)
+ [[
+ anno::description("Node Group: nprlib")
+ ]]
+{
+ // Not implemented: mx_viewdirection_vector3
+ float3 defaultValue = float3(0.0, 0.0, 1.0);
+ return defaultValue;
+}
+
export color mx_modulo_color3(
color mxp_in1 = color(0.0, 0.0, 0.0),
color mxp_in2 = color(1.0, 1.0, 1.0)
@@ -2044,13 +2060,13 @@ export float4 mx_transformmatrix_vector4(
return mxp_mat * mxp_in;
}
-export float3 mx_normalmap(
+export float3 mx_normalmap_vector2(
float3 mxp_in = float3(0.5, 0.5, 1.0),
uniform string mxp_space = string("tangent")
[[
anno::description("Enumeration {tangent, object}.")
]],
- float mxp_scale = float(1.0),
+ float2 mxp_scale = float2(1.0, 1.0),
float3 mxp_normal = float3(::state::transform_normal(::state::coordinate_internal,::state::coordinate_world,::state::normal())),
float3 mxp_tangent = float3(state::transform_vector(::state::coordinate_internal,::state::coordinate_world,::state::texture_tangent_u(0)))
)
@@ -2062,7 +2078,7 @@ export float3 mx_normalmap(
{
float3 v = mxp_in * 2.0 - 1.0;
float3 binormal = ::math::normalize(::math::cross(mxp_normal, mxp_tangent));
- return ::math::normalize(mxp_tangent * v.x * mxp_scale + binormal * v.y * mxp_scale + mxp_normal * v.z);
+ return ::math::normalize(mxp_tangent * v.x * mxp_scale.x + binormal * v.y * mxp_scale.y + mxp_normal * v.z);
}
else
{
@@ -2071,6 +2087,23 @@ export float3 mx_normalmap(
}
}
+export float3 mx_normalmap_float(
+ float3 mxp_in = float3(0.5, 0.5, 1.0),
+ uniform string mxp_space = string("tangent")
+ [[
+ anno::description("Enumeration {tangent, object}.")
+ ]],
+ float mxp_scale = float(1.0),
+ float3 mxp_normal = float3(::state::transform_normal(::state::coordinate_internal,::state::coordinate_world,::state::normal())),
+ float3 mxp_tangent = float3(state::transform_vector(::state::coordinate_internal,::state::coordinate_world,::state::texture_tangent_u(0)))
+)
+ [[
+ anno::description("Node Group: math")
+ ]]
+{
+ return mx_normalmap_vector2(mxp_in, mxp_space, float2(mxp_scale, mxp_scale), mxp_normal, mxp_tangent);
+}
+
export float3x3 mx_transpose_matrix33(
float3x3 mxp_in = float3x3(1.0,0.0,0.0, 0.0,1.0,0.0, 0.0,0.0,1.0)
)
@@ -4131,6 +4164,46 @@ export float4 mx_combine4_vector4(
return float4(mxp_in1, mxp_in2, mxp_in3, mxp_in4);
}
+export float3x3 mx_creatematrix_vector3_matrix33(
+ float3 mxp_in1 = float3(1.0, 0.0, 0.0),
+ float3 mxp_in2 = float3(0.0, 1.0, 0.0),
+ float3 mxp_in3 = float3(0.0, 0.0, 1.0)
+)
+ [[
+ anno::description("Node Group: math")
+ ]]
+{
+ return float3x3(mxp_in1[0],mxp_in1[1],mxp_in1[2],mxp_in2[0],mxp_in2[1],mxp_in2[2],mxp_in3[0],mxp_in3[1],mxp_in3[2]);
+}
+
+
+export float4x4 mx_creatematrix_vector3_matrix44(
+ float3 mxp_in1 = float3(1.0, 0.0, 0.0),
+ float3 mxp_in2 = float3(0.0, 1.0, 0.0),
+ float3 mxp_in3 = float3(0.0, 0.0, 1.0)
+ float3 mxp_in4 = float3(0.0, 0.0, 0.0)
+)
+ [[
+ anno::description("Node Group: math")
+ ]]
+{
+ return float4x4(mxp_in1[0],mxp_in1[1],mxp_in1[2],0.0, mxp_in2[0],mxp_in2[1],mxp_in2[2],0.0, mxp_in3[0],mxp_in3[1],mxp_in3[2]0.0, mxp_in4[0],mxp_in4[1],mxp_in4[2],1.0);
+}
+
+
+export float4x4 mx_creatematrix_vector4_matrix44(
+ float4 mxp_in1 = float4(1.0, 0.0, 0.0, 0.0),
+ float4 mxp_in2 = float4(0.0, 1.0, 0.0, 0.0),
+ float4 mxp_in3 = float4(0.0, 0.0, 1.0, 0.0)
+ float4 mxp_in4 = float4(0.0, 0.0, 0.0, 1.0)
+)
+ [[
+ anno::description("Node Group: math")
+ ]]
+{
+ return float4x4(mxp_in1[0],mxp_in1[1],mxp_in1[2],mxp_in1[3],mxp_in2[0],mxp_in2[1],mxp_in2[2],mxp_in2[3],mxp_in3[0],mxp_in3[1],mxp_in3[2],mxp_in3[3],mxp_in4[0],mxp_in4[1],mxp_in4[2],mxp_in4[3]);
+}
+
// Nodedef: ND_extract_color3 is represented by a nodegraph: NG_extract_color3
// Nodedef: ND_extract_color4 is represented by a nodegraph: NG_extract_color4
// Nodedef: ND_extract_vector2 is represented by a nodegraph: NG_extract_vector2
diff --git a/source/MaterialXGenMsl/MslResourceBindingContext.cpp b/source/MaterialXGenMsl/MslResourceBindingContext.cpp
index 7b61f41854..5d6cbab6f9 100644
--- a/source/MaterialXGenMsl/MslResourceBindingContext.cpp
+++ b/source/MaterialXGenMsl/MslResourceBindingContext.cpp
@@ -32,7 +32,7 @@ void MslResourceBindingContext::emitDirectives(GenContext&, ShaderStage&)
void MslResourceBindingContext::emitResourceBindings(GenContext& context, const VariableBlock& uniforms, ShaderStage& stage)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
// First, emit all value uniforms in a block with single layout binding
bool hasValueUniforms = false;
@@ -69,7 +69,7 @@ void MslResourceBindingContext::emitStructuredResourceBindings(GenContext& conte
ShaderStage& stage, const std::string& structInstanceName,
const std::string& arraySuffix)
{
- ShaderGenerator& generator = context.getShaderGenerator();
+ const ShaderGenerator& generator = context.getShaderGenerator();
const size_t baseAlignment = 16;
// Values are adjusted based on
diff --git a/source/MaterialXGenMsl/MslShaderGenerator.cpp b/source/MaterialXGenMsl/MslShaderGenerator.cpp
index ea3fb7112d..e07c0fc6ad 100644
--- a/source/MaterialXGenMsl/MslShaderGenerator.cpp
+++ b/source/MaterialXGenMsl/MslShaderGenerator.cpp
@@ -6,14 +6,8 @@
#include
#include
-#include
-#include
-#include
-#include
#include
#include
-#include
-#include
#include
#include
#include
@@ -32,6 +26,13 @@
#include
#include
#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
#include
#include
#include
@@ -168,13 +169,13 @@ MslShaderGenerator::MslShaderGenerator() :
registerImplementation(elementNames, CombineNode::create);
//
- registerImplementation("IM_position_vector3_" + MslShaderGenerator::TARGET, PositionNodeMsl::create);
+ registerImplementation("IM_position_vector3_" + MslShaderGenerator::TARGET, HwPositionNode::create);
//
- registerImplementation("IM_normal_vector3_" + MslShaderGenerator::TARGET, NormalNodeMsl::create);
+ registerImplementation("IM_normal_vector3_" + MslShaderGenerator::TARGET, HwNormalNode::create);
//
- registerImplementation("IM_tangent_vector3_" + MslShaderGenerator::TARGET, TangentNodeMsl::create);
+ registerImplementation("IM_tangent_vector3_" + MslShaderGenerator::TARGET, HwTangentNode::create);
//
- registerImplementation("IM_bitangent_vector3_" + MslShaderGenerator::TARGET, BitangentNodeMsl::create);
+ registerImplementation("IM_bitangent_vector3_" + MslShaderGenerator::TARGET, HwBitangentNode::create);
//
registerImplementation("IM_texcoord_vector2_" + MslShaderGenerator::TARGET, HwTexCoordNode::create);
registerImplementation("IM_texcoord_vector3_" + MslShaderGenerator::TARGET, HwTexCoordNode::create);
@@ -197,9 +198,11 @@ MslShaderGenerator::MslShaderGenerator() :
registerImplementation("IM_geompropvalue_string_" + MslShaderGenerator::TARGET, GeomPropValueNodeMslAsUniform::create);
//
- registerImplementation("IM_frame_float_" + MslShaderGenerator::TARGET, FrameNodeMsl::create);
+ registerImplementation("IM_frame_float_" + MslShaderGenerator::TARGET, HwFrameNode::create);
//
- registerImplementation("IM_time_float_" + MslShaderGenerator::TARGET, TimeNodeMsl::create);
+ registerImplementation("IM_time_float_" + MslShaderGenerator::TARGET, HwTimeNode::create);
+ //
+ registerImplementation("IM_viewdirection_vector3_" + MslShaderGenerator::TARGET, HwViewDirectionNode::create);
//
registerImplementation("IM_surface_" + MslShaderGenerator::TARGET, SurfaceNodeMsl::create);
@@ -1018,7 +1021,7 @@ void MslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& co
emitLightData(context, stage);
}
}
-
+
bool needsLightBuffer = lighting && context.getOptions().hwMaxActiveLightSources > 0;
emitMathMatrixScalarMathOperators(context, stage);
@@ -1055,7 +1058,14 @@ void MslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& co
// Emit directional albedo table code.
if (context.getOptions().hwWriteAlbedoTable)
{
- emitLibraryInclude("pbrlib/genglsl/lib/mx_table.glsl", context, stage);
+ emitLibraryInclude("pbrlib/genglsl/lib/mx_generate_albedo_table.glsl", context, stage);
+ emitLineBreak(stage);
+ }
+
+ // Emit environment prefiltering code
+ if (context.getOptions().hwWriteEnvPrefilter)
+ {
+ emitLibraryInclude("pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl", context, stage);
emitLineBreak(stage);
}
@@ -1104,6 +1114,10 @@ void MslShaderGenerator::emitPixelStage(const ShaderGraph& graph, GenContext& co
{
emitLine(outputSocket->getVariable() + " = float4(mx_generate_dir_albedo_table(), 1.0)", stage);
}
+ else if (context.getOptions().hwWriteEnvPrefilter)
+ {
+ emitLine(outputSocket->getVariable() + " = float4(mx_generate_prefilter_env(), 1.0)", stage);
+ }
else
{
// Add all function calls.
@@ -1401,31 +1415,9 @@ ShaderNodeImplPtr MslShaderGenerator::getImplementation(const NodeDef& nodedef,
return impl;
}
-const string MslImplementation::SPACE = "space";
-const string MslImplementation::INDEX = "index";
-const string MslImplementation::GEOMPROP = "geomprop";
-
-namespace
-{
-
-// List name of inputs that are not to be editable and
-// published as shader uniforms in MSL.
-const std::set IMMUTABLE_INPUTS =
-{
- // Geometric node inputs are immutable since a shader needs regeneration if they change.
- "index", "space", "attrname"
-};
-
-} // namespace
-
const string& MslImplementation::getTarget() const
{
return MslShaderGenerator::TARGET;
}
-bool MslImplementation::isEditable(const ShaderInput& input) const
-{
- return IMMUTABLE_INPUTS.count(input.getName()) == 0;
-}
-
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenMsl/MslShaderGenerator.h b/source/MaterialXGenMsl/MslShaderGenerator.h
index 21817db735..e9f2981045 100644
--- a/source/MaterialXGenMsl/MslShaderGenerator.h
+++ b/source/MaterialXGenMsl/MslShaderGenerator.h
@@ -115,30 +115,13 @@ class MX_GENMSL_API MslShaderGenerator : public HwShaderGenerator
};
/// Base class for common MSL node implementations
-class MX_GENMSL_API MslImplementation : public ShaderNodeImpl
+class MX_GENMSL_API MslImplementation : public HwImplementation
{
public:
const string& getTarget() const override;
- bool isEditable(const ShaderInput& input) const override;
-
protected:
MslImplementation() { }
-
- // Integer identifiers for coordinate spaces.
- // The order must match the order given for
- // the space enum string in stdlib.
- enum Space
- {
- MODEL_SPACE = 0,
- OBJECT_SPACE = 1,
- WORLD_SPACE = 2
- };
-
- /// Internal string constants
- static const string SPACE;
- static const string INDEX;
- static const string GEOMPROP;
};
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenMsl/Nodes/BitangentNodeMsl.h b/source/MaterialXGenMsl/Nodes/BitangentNodeMsl.h
deleted file mode 100644
index 7239bb36d4..0000000000
--- a/source/MaterialXGenMsl/Nodes/BitangentNodeMsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_BITANGENTNODEMSL_H
-#define MATERIALX_BITANGENTNODEMSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Bitangent node implementation for MSL
-class MX_GENMSL_API BitangentNodeMsl : public MslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenMsl/Nodes/NormalNodeMsl.cpp b/source/MaterialXGenMsl/Nodes/NormalNodeMsl.cpp
deleted file mode 100644
index 6250290960..0000000000
--- a/source/MaterialXGenMsl/Nodes/NormalNodeMsl.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr NormalNodeMsl::create()
-{
- return std::make_shared();
-}
-
-void NormalNodeMsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
-{
- ShaderStage& vs = shader.getStage(Stage::VERTEX);
- ShaderStage& ps = shader.getStage(Stage::PIXEL);
-
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_NORMAL, vs);
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
- if (space == WORLD_SPACE)
- {
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::MATRIX44, HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX, vs);
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_NORMAL_WORLD, vs, ps);
- }
- else
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_NORMAL_OBJECT, vs, ps);
- }
-}
-
-void NormalNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- const MslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
-
- DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
- {
- VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- if (space == WORLD_SPACE)
- {
- ShaderPort* normal = vertexData[HW::T_NORMAL_WORLD];
- if (!normal->isEmitted())
- {
- normal->setEmitted();
- shadergen.emitLine(prefix + normal->getVariable() + " = normalize((" + HW::T_WORLD_INVERSE_TRANSPOSE_MATRIX + " * float4(" + HW::T_IN_NORMAL + ", 0.0)).xyz)", stage);
- }
- }
- else
- {
- ShaderPort* normal = vertexData[HW::T_NORMAL_OBJECT];
- if (!normal->isEmitted())
- {
- normal->setEmitted();
- shadergen.emitLine(prefix + normal->getVariable() + " = " + HW::T_IN_NORMAL, stage);
- }
- }
- }
-
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- if (space == WORLD_SPACE)
- {
- const ShaderPort* normal = vertexData[HW::T_NORMAL_WORLD];
- shadergen.emitString(" = normalize(" + prefix + normal->getVariable() + ")", stage);
- }
- else
- {
- const ShaderPort* normal = vertexData[HW::T_NORMAL_OBJECT];
- shadergen.emitString(" = normalize(" + prefix + normal->getVariable() + ")", stage);
- }
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenMsl/Nodes/NormalNodeMsl.h b/source/MaterialXGenMsl/Nodes/NormalNodeMsl.h
deleted file mode 100644
index 7248613a74..0000000000
--- a/source/MaterialXGenMsl/Nodes/NormalNodeMsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_NORMALNODEMSL_H
-#define MATERIALX_NORMALNODEMSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Normal node implementation for MSL
-class MX_GENMSL_API NormalNodeMsl : public MslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenMsl/Nodes/PositionNodeMsl.h b/source/MaterialXGenMsl/Nodes/PositionNodeMsl.h
deleted file mode 100644
index 1dada988be..0000000000
--- a/source/MaterialXGenMsl/Nodes/PositionNodeMsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_POSITIONNODEMSL_H
-#define MATERIALX_POSITIONNODEMSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Position node implementation for MSL
-class MX_GENMSL_API PositionNodeMsl : public MslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenMsl/Nodes/SurfaceNodeMsl.cpp b/source/MaterialXGenMsl/Nodes/SurfaceNodeMsl.cpp
index c7fb7745b7..bd0cd91fb1 100644
--- a/source/MaterialXGenMsl/Nodes/SurfaceNodeMsl.cpp
+++ b/source/MaterialXGenMsl/Nodes/SurfaceNodeMsl.cpp
@@ -45,8 +45,8 @@ void SurfaceNodeMsl::createVariables(const ShaderNode&, GenContext& context, Sha
{
// TODO:
// The surface shader needs position, normal, view position and light sources. We should solve this by adding some
- // dependency mechanism so this implementation can be set to depend on the PositionNodeMsl, NormalNodeMsl
- // ViewDirectionNodeMsl and LightNodeMsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
+ // dependency mechanism so this implementation can be set to depend on the HwPositionNode, HwNormalNode
+ // HwViewDirectionNode and LightNodeMsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
// is needed.
//
ShaderStage& vs = shader.getStage(Stage::VERTEX);
diff --git a/source/MaterialXGenMsl/Nodes/SurfaceShaderNodeMsl.cpp b/source/MaterialXGenMsl/Nodes/SurfaceShaderNodeMsl.cpp
index a579c46f1b..a09796a557 100644
--- a/source/MaterialXGenMsl/Nodes/SurfaceShaderNodeMsl.cpp
+++ b/source/MaterialXGenMsl/Nodes/SurfaceShaderNodeMsl.cpp
@@ -24,8 +24,8 @@ void SurfaceShaderNodeMsl::createVariables(const ShaderNode&, GenContext& contex
{
// TODO:
// The surface shader needs position, view position and light sources. We should solve this by adding some
- // dependency mechanism so this implementation can be set to depend on the PositionNodeMsl,
- // ViewDirectionNodeMsl and LightNodeMsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
+ // dependency mechanism so this implementation can be set to depend on the HwPositionNode,
+ // HwViewDirectionNode and LightNodeMsl nodes instead? This is where the MaterialX attribute "internalgeomprops"
// is needed.
//
ShaderStage& vs = shader.getStage(Stage::VERTEX);
diff --git a/source/MaterialXGenMsl/Nodes/TangentNodeMsl.cpp b/source/MaterialXGenMsl/Nodes/TangentNodeMsl.cpp
deleted file mode 100644
index 5e557e4e30..0000000000
--- a/source/MaterialXGenMsl/Nodes/TangentNodeMsl.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#include
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-ShaderNodeImplPtr TangentNodeMsl::create()
-{
- return std::make_shared();
-}
-
-void TangentNodeMsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
-{
- ShaderStage& vs = shader.getStage(Stage::VERTEX);
- ShaderStage& ps = shader.getStage(Stage::PIXEL);
-
- addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_TANGENT, vs);
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
- if (space == WORLD_SPACE)
- {
- addStageUniform(HW::PRIVATE_UNIFORMS, Type::MATRIX44, HW::T_WORLD_MATRIX, vs);
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_TANGENT_WORLD, vs, ps);
- }
- else
- {
- addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_TANGENT_OBJECT, vs, ps);
- }
-}
-
-void TangentNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
-{
- const MslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
-
- const ShaderInput* spaceInput = node.getInput(SPACE);
- const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
-
- DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
- {
- VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- if (space == WORLD_SPACE)
- {
- ShaderPort* tangent = vertexData[HW::T_TANGENT_WORLD];
- if (!tangent->isEmitted())
- {
- tangent->setEmitted();
- shadergen.emitLine(prefix + tangent->getVariable() + " = normalize((" + HW::T_WORLD_MATRIX + " * float4(" + HW::T_IN_TANGENT + ", 0.0)).xyz)", stage);
- }
- }
- else
- {
- ShaderPort* tangent = vertexData[HW::T_TANGENT_OBJECT];
- if (!tangent->isEmitted())
- {
- tangent->setEmitted();
- shadergen.emitLine(prefix + tangent->getVariable() + " = " + HW::T_IN_TANGENT, stage);
- }
- }
- }
-
- DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
- {
- VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
- const string prefix = shadergen.getVertexDataPrefix(vertexData);
- shadergen.emitLineBegin(stage);
- shadergen.emitOutput(node.getOutput(), true, false, context, stage);
- if (space == WORLD_SPACE)
- {
- const ShaderPort* tangent = vertexData[HW::T_TANGENT_WORLD];
- shadergen.emitString(" = normalize(" + prefix + tangent->getVariable() + ")", stage);
- }
- else
- {
- const ShaderPort* tangent = vertexData[HW::T_TANGENT_OBJECT];
- shadergen.emitString(" = normalize(" + prefix + tangent->getVariable() + ")", stage);
- }
- shadergen.emitLineEnd(stage);
- }
-}
-
-MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenMsl/Nodes/TangentNodeMsl.h b/source/MaterialXGenMsl/Nodes/TangentNodeMsl.h
deleted file mode 100644
index 42e2c7ef7c..0000000000
--- a/source/MaterialXGenMsl/Nodes/TangentNodeMsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_TANGENTNODEMSL_H
-#define MATERIALX_TANGENTNODEMSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Tangent node implementation for MSL
-class MX_GENMSL_API TangentNodeMsl : public MslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenMsl/Nodes/TimeNodeMsl.h b/source/MaterialXGenMsl/Nodes/TimeNodeMsl.h
deleted file mode 100644
index 07c505a082..0000000000
--- a/source/MaterialXGenMsl/Nodes/TimeNodeMsl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright Contributors to the MaterialX Project
-// SPDX-License-Identifier: Apache-2.0
-//
-
-#ifndef MATERIALX_TIMENODEMSL_H
-#define MATERIALX_TIMENODEMSL_H
-
-#include
-
-MATERIALX_NAMESPACE_BEGIN
-
-/// Time node implementation for MSL
-class MX_GENMSL_API TimeNodeMsl : public MslImplementation
-{
- public:
- static ShaderNodeImplPtr create();
-
- void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
-
- void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
-};
-
-MATERIALX_NAMESPACE_END
-
-#endif
diff --git a/source/MaterialXGenOsl/OslShaderGenerator.cpp b/source/MaterialXGenOsl/OslShaderGenerator.cpp
index fbb2bb29be..0ef647246a 100644
--- a/source/MaterialXGenOsl/OslShaderGenerator.cpp
+++ b/source/MaterialXGenOsl/OslShaderGenerator.cpp
@@ -536,7 +536,7 @@ void OslShaderGenerator::emitShaderInputs(const VariableBlock& inputs, ShaderSta
// which is a struct containing a file string and a colorspace string.
// For the published shader interface we here split this into two separate inputs,
// which gives a nicer shader interface with widget metadata on each input.
-
+
ValuePtr value = input->getValue();
const string valueStr = value ? value->getValueString() : EMPTY_STRING;
@@ -651,7 +651,7 @@ void OslShaderGenerator::emitMetadata(const ShaderPort* port, ShaderStage& stage
{
emitLineEnd(stage, false);
emitScopeBegin(stage, Syntax::DOUBLE_SQUARE_BRACKETS);
- for (auto line : metadataLines)
+ for (const auto& line : metadataLines)
{
emitLine(line, stage, false);
}
diff --git a/source/MaterialXGenShader/GenOptions.h b/source/MaterialXGenShader/GenOptions.h
index 34a1efde0b..6af73d62a8 100644
--- a/source/MaterialXGenShader/GenOptions.h
+++ b/source/MaterialXGenShader/GenOptions.h
@@ -90,6 +90,7 @@ class MX_GENSHADER_API GenOptions
hwMaxActiveLightSources(3),
hwNormalizeUdimTexCoords(false),
hwWriteAlbedoTable(false),
+ hwWriteEnvPrefilter(false),
hwImplicitBitangents(true),
emitColorTransforms(true)
{
@@ -174,6 +175,10 @@ class MX_GENSHADER_API GenOptions
/// Defaults to false.
bool hwWriteAlbedoTable;
+ /// Enables the generation of a prefiltered environment map.
+ /// Defaults to false.
+ bool hwWriteEnvPrefilter;
+
/// Calculate fallback bitangents from existing normals and tangents
/// inside the bitangent node.
bool hwImplicitBitangents;
diff --git a/source/MaterialXGenShader/HwShaderGenerator.cpp b/source/MaterialXGenShader/HwShaderGenerator.cpp
index 568c666478..d0ca836416 100644
--- a/source/MaterialXGenShader/HwShaderGenerator.cpp
+++ b/source/MaterialXGenShader/HwShaderGenerator.cpp
@@ -12,6 +12,24 @@
MATERIALX_NAMESPACE_BEGIN
+const string HwImplementation::SPACE = "space";
+const string HwImplementation::INDEX = "index";
+const string HwImplementation::GEOMPROP = "geomprop";
+
+namespace
+{
+
+// When node inputs with these names are modified, we assume the
+// associated HW shader must be recompiled.
+const StringSet IMMUTABLE_INPUTS =
+{
+ "index",
+ "space",
+ "attrname"
+};
+
+} // anonymous namespace
+
namespace HW
{
@@ -59,6 +77,7 @@ const string T_ENV_RADIANCE = "$envRadiance";
const string T_ENV_RADIANCE_MIPS = "$envRadianceMips";
const string T_ENV_RADIANCE_SAMPLES = "$envRadianceSamples";
const string T_ENV_IRRADIANCE = "$envIrradiance";
+const string T_ENV_PREFILTER_MIP = "$envPrefilterMip";
const string T_REFRACTION_TWO_SIDED = "$refractionTwoSided";
const string T_ALBEDO_TABLE = "$albedoTable";
const string T_ALBEDO_TABLE_SIZE = "$albedoTableSize";
@@ -113,6 +132,7 @@ const string ENV_RADIANCE = "u_envRadiance";
const string ENV_RADIANCE_MIPS = "u_envRadianceMips";
const string ENV_RADIANCE_SAMPLES = "u_envRadianceSamples";
const string ENV_IRRADIANCE = "u_envIrradiance";
+const string ENV_PREFILTER_MIP = "u_envPrefilterMip";
const string REFRACTION_TWO_SIDED = "u_refractionTwoSided";
const string ALBEDO_TABLE = "u_albedoTable";
const string ALBEDO_TABLE_SIZE = "u_albedoTableSize";
@@ -222,6 +242,7 @@ HwShaderGenerator::HwShaderGenerator(SyntaxPtr syntax) :
_tokenSubstitutions[HW::T_AMB_OCC_GAIN] = HW::AMB_OCC_GAIN;
_tokenSubstitutions[HW::T_VERTEX_DATA_INSTANCE] = HW::VERTEX_DATA_INSTANCE;
_tokenSubstitutions[HW::T_LIGHT_DATA_INSTANCE] = HW::LIGHT_DATA_INSTANCE;
+ _tokenSubstitutions[HW::T_ENV_PREFILTER_MIP] = HW::ENV_PREFILTER_MIP;
// Setup closure contexts for defining closure functions
//
@@ -260,9 +281,9 @@ ShaderPtr HwShaderGenerator::createShader(const string& name, ElementPtr element
if (geomprop)
{
// A default geomprop was assigned to this graph input.
- // For all internal connections to this input, break the connection
+ // For all internal connections to this input, break the connection
// and assign a geomprop node that generates this data.
- // Note: If a geomprop node exists already it is reused,
+ // Note: If a geomprop node exists already it is reused,
// so only a single node per geometry type is created.
ShaderInputVec connections = socket->getConnections();
for (auto connection : connections)
@@ -359,6 +380,16 @@ ShaderPtr HwShaderGenerator::createShader(const string& name, ElementPtr element
psPrivateUniforms->add(Type::INTEGER, HW::T_ALBEDO_TABLE_SIZE, Value::createValue(64));
}
+ // Add uniforms for environment prefiltering.
+ if (context.getOptions().hwWriteEnvPrefilter)
+ {
+ psPrivateUniforms->add(Type::FILENAME, HW::T_ENV_RADIANCE);
+ psPrivateUniforms->add(Type::INTEGER, HW::T_ENV_PREFILTER_MIP, Value::createValue(1));
+ const Matrix44 yRotationPI = Matrix44::createScale(Vector3(-1, 1, -1));
+ psPrivateUniforms->add(Type::MATRIX44, HW::T_ENV_MATRIX, Value::createValue(yRotationPI));
+ psPrivateUniforms->add(Type::INTEGER, HW::T_ENV_RADIANCE_MIPS, Value::createValue(1));
+ }
+
// Create uniforms for the published graph interface
for (ShaderGraphInputSocket* inputSocket : graph->getInputSockets())
{
@@ -606,4 +637,9 @@ void HwShaderGenerator::addStageLightingUniforms(GenContext& context, ShaderStag
}
}
+bool HwImplementation::isEditable(const ShaderInput& input) const
+{
+ return IMMUTABLE_INPUTS.count(input.getName()) == 0;
+}
+
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenShader/HwShaderGenerator.h b/source/MaterialXGenShader/HwShaderGenerator.h
index bba572c631..f93a8983ca 100644
--- a/source/MaterialXGenShader/HwShaderGenerator.h
+++ b/source/MaterialXGenShader/HwShaderGenerator.h
@@ -126,6 +126,7 @@ extern MX_GENSHADER_API const string T_ENV_RADIANCE;
extern MX_GENSHADER_API const string T_ENV_RADIANCE_MIPS;
extern MX_GENSHADER_API const string T_ENV_RADIANCE_SAMPLES;
extern MX_GENSHADER_API const string T_ENV_IRRADIANCE;
+extern MX_GENSHADER_API const string T_ENV_PREFILTER_MIP;
extern MX_GENSHADER_API const string T_REFRACTION_TWO_SIDED;
extern MX_GENSHADER_API const string T_ALBEDO_TABLE;
extern MX_GENSHADER_API const string T_ALBEDO_TABLE_SIZE;
@@ -182,6 +183,7 @@ extern MX_GENSHADER_API const string ENV_RADIANCE;
extern MX_GENSHADER_API const string ENV_RADIANCE_MIPS;
extern MX_GENSHADER_API const string ENV_RADIANCE_SAMPLES;
extern MX_GENSHADER_API const string ENV_IRRADIANCE;
+extern MX_GENSHADER_API const string ENV_PREFILTER_MIP;
extern MX_GENSHADER_API const string REFRACTION_TWO_SIDED;
extern MX_GENSHADER_API const string ALBEDO_TABLE;
extern MX_GENSHADER_API const string ALBEDO_TABLE_SIZE;
@@ -338,6 +340,31 @@ class MX_GENSHADER_API HwShaderGenerator : public ShaderGenerator
mutable ClosureContext _defEmission;
};
+/// @class HwShaderGenerator
+/// Base class for HW node implementations.
+class MX_GENSHADER_API HwImplementation : public ShaderNodeImpl
+{
+ public:
+ bool isEditable(const ShaderInput& input) const override;
+
+ protected:
+ HwImplementation() { }
+
+ // Integer identifiers for coordinate spaces.
+ // The order must match the order given for the space enum string in stdlib.
+ enum Space
+ {
+ MODEL_SPACE = 0,
+ OBJECT_SPACE = 1,
+ WORLD_SPACE = 2
+ };
+
+ /// Internal string constants
+ static const string SPACE;
+ static const string INDEX;
+ static const string GEOMPROP;
+};
+
/// @class HwResourceBindingContext
/// Class representing a context for resource binding for hardware resources.
class MX_GENSHADER_API HwResourceBindingContext : public GenUserData
diff --git a/source/MaterialXGenMsl/Nodes/BitangentNodeMsl.cpp b/source/MaterialXGenShader/Nodes/HwBitangentNode.cpp
similarity index 91%
rename from source/MaterialXGenMsl/Nodes/BitangentNodeMsl.cpp
rename to source/MaterialXGenShader/Nodes/HwBitangentNode.cpp
index 97ca079d35..83c43a3398 100644
--- a/source/MaterialXGenMsl/Nodes/BitangentNodeMsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwBitangentNode.cpp
@@ -3,18 +3,18 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr BitangentNodeMsl::create()
+ShaderNodeImplPtr HwBitangentNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void BitangentNodeMsl::createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const
+void HwBitangentNode::createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const
{
const GenOptions& options = context.getOptions();
@@ -51,9 +51,9 @@ void BitangentNodeMsl::createVariables(const ShaderNode& node, GenContext& conte
}
}
-void BitangentNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwBitangentNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
- const MslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
+ const HwShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
const GenOptions& options = context.getOptions();
const ShaderInput* spaceInput = node.getInput(SPACE);
diff --git a/source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.h b/source/MaterialXGenShader/Nodes/HwBitangentNode.h
similarity index 63%
rename from source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.h
rename to source/MaterialXGenShader/Nodes/HwBitangentNode.h
index acb4d5085d..a8bfa0bf11 100644
--- a/source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.h
+++ b/source/MaterialXGenShader/Nodes/HwBitangentNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_NORMALNODEGLSL_H
-#define MATERIALX_NORMALNODEGLSL_H
+#ifndef MATERIALX_HWBITANGENTNODE_H
+#define MATERIALX_HWBITANGENTNODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Normal node implementation for GLSL
-class MX_GENGLSL_API NormalNodeGlsl : public GlslImplementation
+/// Bitangent node implementation for hardware languages
+class MX_GENSHADER_API HwBitangentNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenMsl/Nodes/FrameNodeMsl.cpp b/source/MaterialXGenShader/Nodes/HwFrameNode.cpp
similarity index 67%
rename from source/MaterialXGenMsl/Nodes/FrameNodeMsl.cpp
rename to source/MaterialXGenShader/Nodes/HwFrameNode.cpp
index faac05027a..cd6a3319a8 100644
--- a/source/MaterialXGenMsl/Nodes/FrameNodeMsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwFrameNode.cpp
@@ -3,24 +3,24 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr FrameNodeMsl::create()
+ShaderNodeImplPtr HwFrameNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void FrameNodeMsl::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
+void HwFrameNode::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
{
ShaderStage& ps = shader.getStage(Stage::PIXEL);
addStageUniform(HW::PRIVATE_UNIFORMS, Type::FLOAT, HW::T_FRAME, ps);
}
-void FrameNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwFrameNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
{
diff --git a/source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.h b/source/MaterialXGenShader/Nodes/HwFrameNode.h
similarity index 65%
rename from source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.h
rename to source/MaterialXGenShader/Nodes/HwFrameNode.h
index 90a5b3aaad..4487a6a0b9 100644
--- a/source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.h
+++ b/source/MaterialXGenShader/Nodes/HwFrameNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_TANGENTNODEGLSL_H
-#define MATERIALX_TANGENTNODEGLSL_H
+#ifndef MATERIALX_HWFRAMENODE_H
+#define MATERIALX_HWFRAMENODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Tangent node implementation for GLSL
-class MX_GENGLSL_API TangentNodeGlsl : public GlslImplementation
+/// Frame node implementation for hardware languages
+class MX_GENSHADER_API HwFrameNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.cpp b/source/MaterialXGenShader/Nodes/HwNormalNode.cpp
similarity index 85%
rename from source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.cpp
rename to source/MaterialXGenShader/Nodes/HwNormalNode.cpp
index d9e27b87df..01234dcb46 100644
--- a/source/MaterialXGenGlsl/Nodes/NormalNodeGlsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwNormalNode.cpp
@@ -3,18 +3,18 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr NormalNodeGlsl::create()
+ShaderNodeImplPtr HwNormalNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void NormalNodeGlsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
+void HwNormalNode::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
{
ShaderStage& vs = shader.getStage(Stage::VERTEX);
ShaderStage& ps = shader.getStage(Stage::PIXEL);
@@ -34,9 +34,9 @@ void NormalNodeGlsl::createVariables(const ShaderNode& node, GenContext&, Shader
}
}
-void NormalNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwNormalNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
- const GlslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
+ const HwShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
const ShaderInput* spaceInput = node.getInput(SPACE);
const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
diff --git a/source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.h b/source/MaterialXGenShader/Nodes/HwNormalNode.h
similarity index 64%
rename from source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.h
rename to source/MaterialXGenShader/Nodes/HwNormalNode.h
index 95dddbce8e..fb19050600 100644
--- a/source/MaterialXGenGlsl/Nodes/PositionNodeGlsl.h
+++ b/source/MaterialXGenShader/Nodes/HwNormalNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_POSITIONNODEGLSL_H
-#define MATERIALX_POSITIONNODEGLSL_H
+#ifndef MATERIALX_HWNORMALNODE_H
+#define MATERIALX_HWNORMALNODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Position node implementation for GLSL
-class MX_GENGLSL_API PositionNodeGlsl : public GlslImplementation
+/// Normal node implementation for hardware languages
+class MX_GENSHADER_API HwNormalNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenMsl/Nodes/PositionNodeMsl.cpp b/source/MaterialXGenShader/Nodes/HwPositionNode.cpp
similarity index 84%
rename from source/MaterialXGenMsl/Nodes/PositionNodeMsl.cpp
rename to source/MaterialXGenShader/Nodes/HwPositionNode.cpp
index 6f45f4364b..df7c11f4e6 100644
--- a/source/MaterialXGenMsl/Nodes/PositionNodeMsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwPositionNode.cpp
@@ -3,18 +3,18 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr PositionNodeMsl::create()
+ShaderNodeImplPtr HwPositionNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void PositionNodeMsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
+void HwPositionNode::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
{
ShaderStage vs = shader.getStage(Stage::VERTEX);
ShaderStage ps = shader.getStage(Stage::PIXEL);
@@ -33,9 +33,9 @@ void PositionNodeMsl::createVariables(const ShaderNode& node, GenContext&, Shade
}
}
-void PositionNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwPositionNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
- const MslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
+ const HwShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
const ShaderInput* spaceInput = node.getInput(SPACE);
const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
diff --git a/source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.h b/source/MaterialXGenShader/Nodes/HwPositionNode.h
similarity index 63%
rename from source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.h
rename to source/MaterialXGenShader/Nodes/HwPositionNode.h
index f3a5197eae..ae2ce5c3f5 100644
--- a/source/MaterialXGenGlsl/Nodes/FrameNodeGlsl.h
+++ b/source/MaterialXGenShader/Nodes/HwPositionNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_FRAMENODEGLSL_H
-#define MATERIALX_FRAMENODEGLSL_H
+#ifndef MATERIALX_HWPOSITIONNODE_H
+#define MATERIALX_HWPOSITIONNODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Frame node implementation for GLSL
-class MX_GENGLSL_API FrameNodeGlsl : public GlslImplementation
+/// Position node implementation for hardware languages
+class MX_GENSHADER_API HwPositionNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.cpp b/source/MaterialXGenShader/Nodes/HwTangentNode.cpp
similarity index 85%
rename from source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.cpp
rename to source/MaterialXGenShader/Nodes/HwTangentNode.cpp
index daffaf0e2c..6e80537932 100644
--- a/source/MaterialXGenGlsl/Nodes/TangentNodeGlsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwTangentNode.cpp
@@ -3,18 +3,18 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr TangentNodeGlsl::create()
+ShaderNodeImplPtr HwTangentNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void TangentNodeGlsl::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
+void HwTangentNode::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
{
ShaderStage& vs = shader.getStage(Stage::VERTEX);
ShaderStage& ps = shader.getStage(Stage::PIXEL);
@@ -34,9 +34,9 @@ void TangentNodeGlsl::createVariables(const ShaderNode& node, GenContext&, Shade
}
}
-void TangentNodeGlsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwTangentNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
- const GlslShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
+ const HwShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
const ShaderInput* spaceInput = node.getInput(SPACE);
const int space = spaceInput ? spaceInput->getValue()->asA() : OBJECT_SPACE;
diff --git a/source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.h b/source/MaterialXGenShader/Nodes/HwTangentNode.h
similarity index 64%
rename from source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.h
rename to source/MaterialXGenShader/Nodes/HwTangentNode.h
index 905b2808e0..b36d7f3c56 100644
--- a/source/MaterialXGenGlsl/Nodes/BitangentNodeGlsl.h
+++ b/source/MaterialXGenShader/Nodes/HwTangentNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_BITANGENTNODEGLSL_H
-#define MATERIALX_BITANGENTNODEGLSL_H
+#ifndef MATERIALX_HWTANGENTNODE_H
+#define MATERIALX_HWTANGENTNODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Bitangent node implementation for GLSL
-class MX_GENGLSL_API BitangentNodeGlsl : public GlslImplementation
+/// Tangent node implementation for hardware languages
+class MX_GENSHADER_API HwTangentNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenMsl/Nodes/TimeNodeMsl.cpp b/source/MaterialXGenShader/Nodes/HwTimeNode.cpp
similarity index 72%
rename from source/MaterialXGenMsl/Nodes/TimeNodeMsl.cpp
rename to source/MaterialXGenShader/Nodes/HwTimeNode.cpp
index 0c54861b40..8f802a0764 100644
--- a/source/MaterialXGenMsl/Nodes/TimeNodeMsl.cpp
+++ b/source/MaterialXGenShader/Nodes/HwTimeNode.cpp
@@ -3,24 +3,24 @@
// SPDX-License-Identifier: Apache-2.0
//
-#include
+#include
#include
MATERIALX_NAMESPACE_BEGIN
-ShaderNodeImplPtr TimeNodeMsl::create()
+ShaderNodeImplPtr HwTimeNode::create()
{
- return std::make_shared();
+ return std::make_shared();
}
-void TimeNodeMsl::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
+void HwTimeNode::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
{
ShaderStage& ps = shader.getStage(Stage::PIXEL);
addStageUniform(HW::PRIVATE_UNIFORMS, Type::FLOAT, HW::T_FRAME, ps);
}
-void TimeNodeMsl::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+void HwTimeNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
{
DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
{
diff --git a/source/MaterialXGenMsl/Nodes/FrameNodeMsl.h b/source/MaterialXGenShader/Nodes/HwTimeNode.h
similarity index 65%
rename from source/MaterialXGenMsl/Nodes/FrameNodeMsl.h
rename to source/MaterialXGenShader/Nodes/HwTimeNode.h
index 4ad554102b..e5e1a2fcd4 100644
--- a/source/MaterialXGenMsl/Nodes/FrameNodeMsl.h
+++ b/source/MaterialXGenShader/Nodes/HwTimeNode.h
@@ -3,15 +3,15 @@
// SPDX-License-Identifier: Apache-2.0
//
-#ifndef MATERIALX_FRAMENODEMSL_H
-#define MATERIALX_FRAMENODEMSL_H
+#ifndef MATERIALX_HWTIMENODE_H
+#define MATERIALX_HWTIMENODE_H
-#include
+#include
MATERIALX_NAMESPACE_BEGIN
-/// Frame node implementation for MSL
-class MX_GENMSL_API FrameNodeMsl : public MslImplementation
+/// Time node implementation for hardware languages
+class MX_GENSHADER_API HwTimeNode : public HwImplementation
{
public:
static ShaderNodeImplPtr create();
diff --git a/source/MaterialXGenShader/Nodes/HwTransformNode.cpp b/source/MaterialXGenShader/Nodes/HwTransformNode.cpp
index 018924855d..76394309af 100644
--- a/source/MaterialXGenShader/Nodes/HwTransformNode.cpp
+++ b/source/MaterialXGenShader/Nodes/HwTransformNode.cpp
@@ -17,7 +17,7 @@ const string HwTransformNode::WORLD = "world";
void HwTransformNode::createVariables(const ShaderNode& node, GenContext&, Shader& shader) const
{
- const string toSpace = getToSpace(node);
+ const string toSpace = getToSpace(node);
const string fromSpace = getFromSpace(node);
const string& matrix = getMatrix(fromSpace, toSpace);
if (!matrix.empty())
diff --git a/source/MaterialXGenShader/Nodes/HwViewDirectionNode.cpp b/source/MaterialXGenShader/Nodes/HwViewDirectionNode.cpp
new file mode 100644
index 0000000000..819ac93029
--- /dev/null
+++ b/source/MaterialXGenShader/Nodes/HwViewDirectionNode.cpp
@@ -0,0 +1,55 @@
+//
+// Copyright Contributors to the MaterialX Project
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#include
+
+#include
+
+MATERIALX_NAMESPACE_BEGIN
+
+ShaderNodeImplPtr HwViewDirectionNode::create()
+{
+ return std::make_shared();
+}
+
+void HwViewDirectionNode::createVariables(const ShaderNode&, GenContext&, Shader& shader) const
+{
+ ShaderStage& vs = shader.getStage(Stage::VERTEX);
+ ShaderStage& ps = shader.getStage(Stage::PIXEL);
+
+ addStageInput(HW::VERTEX_INPUTS, Type::VECTOR3, HW::T_IN_POSITION, vs);
+ addStageConnector(HW::VERTEX_DATA, Type::VECTOR3, HW::T_POSITION_WORLD, vs, ps);
+ addStageUniform(HW::PRIVATE_UNIFORMS, Type::VECTOR3, HW::T_VIEW_POSITION, ps);
+}
+
+void HwViewDirectionNode::emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const
+{
+ const HwShaderGenerator& shadergen = static_cast(context.getShaderGenerator());
+
+ DEFINE_SHADER_STAGE(stage, Stage::VERTEX)
+ {
+ VariableBlock& vertexData = stage.getOutputBlock(HW::VERTEX_DATA);
+ const string prefix = shadergen.getVertexDataPrefix(vertexData);
+ ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
+ if (!position->isEmitted())
+ {
+ position->setEmitted();
+ shadergen.emitLine(prefix + position->getVariable() + " = hPositionWorld.xyz", stage);
+ }
+ }
+
+ DEFINE_SHADER_STAGE(stage, Stage::PIXEL)
+ {
+ VariableBlock& vertexData = stage.getInputBlock(HW::VERTEX_DATA);
+ const string prefix = shadergen.getVertexDataPrefix(vertexData);
+ ShaderPort* position = vertexData[HW::T_POSITION_WORLD];
+ shadergen.emitLineBegin(stage);
+ shadergen.emitOutput(node.getOutput(), true, false, context, stage);
+ shadergen.emitString(" = normalize(" + prefix + position->getVariable() + " - " + HW::T_VIEW_POSITION + ")", stage);
+ shadergen.emitLineEnd(stage);
+ }
+}
+
+MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXGenShader/Nodes/HwViewDirectionNode.h b/source/MaterialXGenShader/Nodes/HwViewDirectionNode.h
new file mode 100644
index 0000000000..143d89d437
--- /dev/null
+++ b/source/MaterialXGenShader/Nodes/HwViewDirectionNode.h
@@ -0,0 +1,26 @@
+//
+// Copyright Contributors to the MaterialX Project
+// SPDX-License-Identifier: Apache-2.0
+//
+
+#ifndef MATERIALX_HWVIEWDIRECTIONNODE_H
+#define MATERIALX_HWVIEWDIRECTIONNODE_H
+
+#include
+
+MATERIALX_NAMESPACE_BEGIN
+
+/// ViewDirection node implementation for hardware languages
+class MX_GENSHADER_API HwViewDirectionNode : public HwImplementation
+{
+ public:
+ static ShaderNodeImplPtr create();
+
+ void createVariables(const ShaderNode& node, GenContext& context, Shader& shader) const override;
+
+ void emitFunctionCall(const ShaderNode& node, GenContext& context, ShaderStage& stage) const override;
+};
+
+MATERIALX_NAMESPACE_END
+
+#endif
diff --git a/source/MaterialXGenShader/ShaderGenerator.cpp b/source/MaterialXGenShader/ShaderGenerator.cpp
index 177201a9e3..d5f51aed1c 100644
--- a/source/MaterialXGenShader/ShaderGenerator.cpp
+++ b/source/MaterialXGenShader/ShaderGenerator.cpp
@@ -270,7 +270,7 @@ void ShaderGenerator::registerImplementation(const string& name, CreatorFunction
void ShaderGenerator::registerImplementation(const StringVec& nameVec, CreatorFunction creator)
{
- for(const string& name : nameVec)
+ for (const string& name : nameVec)
{
_implFactory.registerClass(name, creator);
}
diff --git a/source/MaterialXGenShader/ShaderGenerator.h b/source/MaterialXGenShader/ShaderGenerator.h
index 8e7f9855de..fa60a4d63e 100644
--- a/source/MaterialXGenShader/ShaderGenerator.h
+++ b/source/MaterialXGenShader/ShaderGenerator.h
@@ -151,7 +151,7 @@ class MX_GENSHADER_API ShaderGenerator
/// Register a shader node implementation for a given implementation element name
void registerImplementation(const string& name, CreatorFunction creator);
-
+
/// Register a shader node implementation for a given set of implementation element names
void registerImplementation(const StringVec& nameVec, CreatorFunction creator);
diff --git a/source/MaterialXGenShader/ShaderNode.cpp b/source/MaterialXGenShader/ShaderNode.cpp
index 3e393178f1..9ef5b0789a 100644
--- a/source/MaterialXGenShader/ShaderNode.cpp
+++ b/source/MaterialXGenShader/ShaderNode.cpp
@@ -290,7 +290,7 @@ ShaderNodePtr ShaderNode::create(const ShaderGraph* parent, const string& name,
else if (nodeDef.getNodeString() == CONSTANT)
{
newNode->_classification = Classification::TEXTURE | Classification::CONSTANT;
- }
+ }
else if (nodeDef.getNodeString() == DOT)
{
newNode->_classification = Classification::TEXTURE | Classification::DOT;
diff --git a/source/MaterialXGenShader/ShaderStage.cpp b/source/MaterialXGenShader/ShaderStage.cpp
index b5387bcb94..d304c22dd2 100644
--- a/source/MaterialXGenShader/ShaderStage.cpp
+++ b/source/MaterialXGenShader/ShaderStage.cpp
@@ -82,8 +82,8 @@ ShaderPort* VariableBlock::add(const TypeDesc* type, const string& name, ValuePt
else if (type != it->second->getType())
{
throw ExceptionShaderGenError("Trying to add shader port '" + name + "' with type '" +
- type->getName() + "', but existing shader port with type '" +
- it->second->getType()->getName() + "' was found");
+ type->getName() + "', but existing shader port with type '" +
+ it->second->getType()->getName() + "' was found");
}
return it->second.get();
}
diff --git a/source/MaterialXGraphEditor/CMakeLists.txt b/source/MaterialXGraphEditor/CMakeLists.txt
index 1785540bd8..f5f22be2c5 100644
--- a/source/MaterialXGraphEditor/CMakeLists.txt
+++ b/source/MaterialXGraphEditor/CMakeLists.txt
@@ -9,7 +9,7 @@ if (NOT IS_DIRECTORY "${DEAR_IMGUI_PREFIX}/backends")
endif()
if(MSVC)
- add_compile_options(-wd4100)
+ add_compile_options(-wd4100 -wd4152 -wd4201 -wd4244 -wd4456)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wno-unused -Wno-deprecated -Wno-comment -Wno-unused-variable)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
diff --git a/source/MaterialXGraphEditor/FileDialog.h b/source/MaterialXGraphEditor/FileDialog.h
index 49b905f28c..4b6c042ef8 100644
--- a/source/MaterialXGraphEditor/FileDialog.h
+++ b/source/MaterialXGraphEditor/FileDialog.h
@@ -16,9 +16,9 @@ class FileDialog
public:
enum Flags
{
- SelectDirectory = 1 << 0, // select directory instead of regular file
- EnterNewFilename = 1 << 1, // allow user to enter new filename when selecting regular file
- NoTitleBar = 1 << 2, // hide window title bar
+ SelectDirectory = 1 << 0, // select directory instead of regular file
+ EnterNewFilename = 1 << 1, // allow user to enter new filename when selecting regular file
+ NoTitleBar = 1 << 2, // hide window title bar
};
public:
diff --git a/source/MaterialXGraphEditor/Graph.cpp b/source/MaterialXGraphEditor/Graph.cpp
index 88ee10a4c1..181ea9e591 100644
--- a/source/MaterialXGraphEditor/Graph.cpp
+++ b/source/MaterialXGraphEditor/Graph.cpp
@@ -200,7 +200,7 @@ void Graph::loadStandardLibraries()
}
}
-mx::DocumentPtr Graph::loadDocument(mx::FilePath filename)
+mx::DocumentPtr Graph::loadDocument(const mx::FilePath& filename)
{
mx::FilePathVec libraryFolders = { "libraries" };
_libraryFolders = libraryFolders;
@@ -240,7 +240,7 @@ mx::DocumentPtr Graph::loadDocument(mx::FilePath filename)
std::cerr << "*** Validation warnings for " << filename.asString() << " ***" << std::endl;
std::cerr << message << std::endl;
}
-
+
// Cache the currently loaded file
_materialFilename = filename;
}
@@ -430,14 +430,8 @@ int Graph::findLinkPosition(int id)
bool Graph::checkPosition(UiNodePtr node)
{
- if (node->getMxElement() != nullptr)
- {
- if (node->getMxElement()->getAttribute("xpos") != "")
- {
- return true;
- }
- }
- return false;
+ return node->getMxElement() &&
+ !node->getMxElement()->getAttribute("xpos").empty();
}
// Calculate the total vertical space the node level takes up
@@ -710,23 +704,6 @@ void Graph::setPinColor()
_pinColor.insert(std::make_pair("stringarray", ImColor(120, 180, 100)));
}
-void Graph::selectMaterial(UiNodePtr uiNode)
-{
- // Find renderable element that corresponds with material UiNode
- std::vector elems = mx::findRenderableElements(_graphDoc);
- mx::TypedElementPtr typedElem = nullptr;
- for (mx::TypedElementPtr elem : elems)
- {
- mx::TypedElementPtr renderableElem = elem;
- mx::NodePtr node = elem->asA();
- if (node == uiNode->getNode())
- {
- typedElem = elem;
- }
- }
- _renderer->setMaterial(typedElem);
-}
-
void Graph::setRenderMaterial(UiNodePtr node)
{
// For now only surface shaders and materials are considered renderable.
@@ -1248,6 +1225,7 @@ void Graph::createNodeUIList(mx::DocumentPtr doc)
auto nodeDefs = doc->getNodeDefs();
std::unordered_map> groupToNodeDef;
+ std::vector groupList = std::vector(NODE_GROUP_ORDER.begin(), NODE_GROUP_ORDER.end());
for (const auto& nodeDef : nodeDefs)
{
@@ -1257,6 +1235,12 @@ void Graph::createNodeUIList(mx::DocumentPtr doc)
group = NODE_GROUP_ORDER.back();
}
+ // If the group is not in the groupList already (seeded by NODE_GROUP_ORDER) then add it.
+ if (std::find(groupList.begin(), groupList.end(), group) == groupList.end())
+ {
+ groupList.emplace_back(group);
+ }
+
if (groupToNodeDef.find(group) == groupToNodeDef.end())
{
groupToNodeDef[group] = std::vector();
@@ -1264,7 +1248,7 @@ void Graph::createNodeUIList(mx::DocumentPtr doc)
groupToNodeDef[group].push_back(nodeDef);
}
- for (const auto& group : NODE_GROUP_ORDER)
+ for (const auto& group : groupList)
{
auto it = groupToNodeDef.find(group);
if (it != groupToNodeDef.end())
@@ -2021,7 +2005,7 @@ UiPinPtr Graph::getPin(ed::PinId pinId)
return nullPin;
}
-void Graph::drawPinIcon(std::string type, bool connected, int alpha)
+void Graph::drawPinIcon(const std::string& type, bool connected, int alpha)
{
ax::Drawing::IconType iconType = ax::Drawing::IconType::Flow;
ImColor color = ImColor(0, 0, 0, 255);
@@ -2098,50 +2082,6 @@ bool Graph::readOnly()
return _currGraphElem->getActiveSourceUri() != _graphDoc->getActiveSourceUri();
}
-mx::InputPtr Graph::findInput(mx::InputPtr nodeInput, const std::string& name)
-{
- if (_isNodeGraph)
- {
- for (UiNodePtr node : _graphNodes)
- {
- if (node->getNode())
- {
- for (mx::InputPtr input : node->getNode()->getActiveInputs())
- {
- if (input->getInterfaceInput())
- {
- if (input->getInterfaceInput() == nodeInput)
- {
- return input;
- }
- }
- }
- }
- }
- }
- else
- {
- if (_currUiNode->getNodeGraph())
- {
- for (mx::NodePtr node : _currUiNode->getNodeGraph()->getNodes())
- {
- for (mx::InputPtr input : node->getActiveInputs())
- {
- if (input->getInterfaceInput())
- {
-
- if (input->getInterfaceName() == name)
- {
- return input;
- }
- }
- }
- }
- }
- }
- return nullptr;
-}
-
void Graph::drawOutputPins(UiNodePtr node, const std::string& longestInputLabel)
{
std::string longestLabel = longestInputLabel;
@@ -2547,7 +2487,7 @@ void Graph::addLink(ed::PinId startPinId, ed::PinId endPinId)
return;
}
- // Perform type check
+ // Perform type check
bool typesMatch = (outputPin->_type == inputPin->_type);
if (!typesMatch)
{
@@ -2620,7 +2560,6 @@ void Graph::addLink(ed::PinId startPinId, ed::PinId endPinId)
break;
}
}
-
}
// Since we accepted new link, lets add one to our list of links.
@@ -3093,7 +3032,7 @@ void Graph::loadGraphFromFile(bool prompt)
_fileDialog.open();
}
else
- {
+ {
_graphDoc = loadDocument(_materialFilename);
// Rebuild the UI
@@ -3104,7 +3043,7 @@ void Graph::loadGraphFromFile(bool prompt)
_renderer->setDocument(_graphDoc);
_renderer->updateMaterials(nullptr);
- }
+ }
}
void Graph::saveGraphToFile()
@@ -3241,7 +3180,7 @@ void Graph::graphButtons()
// Create two windows using splitter
float paneWidth = (leftPaneWidth - 2.0f);
-
+
float aspectRatio = _renderer->getPixelRatio();
ImVec2 screenSize = ImVec2(paneWidth, paneWidth / aspectRatio);
@@ -3249,14 +3188,14 @@ void Graph::graphButtons()
ImVec2 tempWindowPos = ImGui::GetCursorPos();
bool cursorInRenderView = mousePos.x > tempWindowPos.x && mousePos.x < (tempWindowPos.x + screenSize.x) &&
mousePos.y > tempWindowPos.y && mousePos.y < (tempWindowPos.y + screenSize.y);
-
+
ImGuiWindowFlags windowFlags = 0;
if (cursorInRenderView)
{
windowFlags |= ImGuiWindowFlags_NoScrollWithMouse;
}
-
+
ImGui::BeginChild("Selection", ImVec2(paneWidth, 0), false, windowFlags);
ImVec2 windowPos = ImGui::GetWindowPos();
@@ -3306,16 +3245,16 @@ void Graph::propertyEditor()
std::string name = _currUiNode->getNode()->getParent()->createValidChildName(temp);
std::vector downstreamNodes = _currUiNode->getOutputConnections();
- for (UiNodePtr nodes : downstreamNodes)
+ for (UiNodePtr uiNode : downstreamNodes)
{
- if (nodes->getInput() == nullptr)
+ if (!uiNode->getInput() && uiNode->getNode())
{
- for (mx::InputPtr input : nodes->getNode()->getActiveInputs())
+ for (mx::InputPtr input : uiNode->getNode()->getActiveInputs())
{
if (input->getConnectedNode() == _currUiNode->getNode())
{
_currUiNode->getNode()->setName(name);
- nodes->getNode()->setConnectedNode(input->getName(), _currUiNode->getNode());
+ uiNode->getNode()->setConnectedNode(input->getName(), _currUiNode->getNode());
}
}
}
@@ -3330,13 +3269,13 @@ void Graph::propertyEditor()
{
std::string name = _currUiNode->getInput()->getParent()->createValidChildName(temp);
std::vector downstreamNodes = _currUiNode->getOutputConnections();
- for (UiNodePtr nodes : downstreamNodes)
+ for (UiNodePtr uiNode : downstreamNodes)
{
- if (nodes->getInput() == nullptr)
+ if (uiNode->getInput() == nullptr)
{
- if (nodes->getNode())
+ if (uiNode->getNode())
{
- for (mx::InputPtr input : nodes->getNode()->getActiveInputs())
+ for (mx::InputPtr input : uiNode->getNode()->getActiveInputs())
{
if (input->getInterfaceInput() == _currUiNode->getInput())
{
@@ -3349,7 +3288,7 @@ void Graph::propertyEditor()
}
else
{
- nodes->getOutput()->setConnectedNode(_currUiNode->getNode());
+ uiNode->getOutput()->setConnectedNode(_currUiNode->getNode());
}
}
}
@@ -3668,7 +3607,7 @@ void Graph::addNodePopup(bool cursor)
// Filter extra nodes - includes inputs, outputs, groups, and node graphs
const std::string NODEGRAPH_ENTRY = "Node Graph";
- // Filter nodedefs and add to menu if matches filter
+ // Filter nodedefs and add to menu if matches filter
for (auto node : _nodesToAdd)
{
// Filter out list of nodes
@@ -3726,12 +3665,10 @@ void Graph::addNodePopup(bool cursor)
}
}
-
ImGui::EndMenu();
}
}
}
- cursor = false;
ImGui::EndPopup();
open_AddPopup = false;
}
@@ -3773,7 +3710,6 @@ void Graph::searchNodePopup(bool cursor)
}
}
}
- cursor = false;
ImGui::EndPopup();
}
}
@@ -3894,7 +3830,6 @@ void Graph::handleRenderViewInputs()
{
_renderer->setScrollEvent(scrollAmt);
}
-
}
void Graph::drawGraph(ImVec2 mousePos)
@@ -4345,19 +4280,6 @@ int Graph::findNode(int nodeId)
return -1;
}
-std::vector Graph::findLinkId(int id)
-{
- std::vector ids;
- for (const Link& link : _currLinks)
- {
- if (link._startAttr == id || link._endAttr == id)
- {
- ids.push_back(link.id);
- }
- }
- return ids;
-}
-
bool Graph::edgeExists(UiEdge newEdge)
{
if (_currEdge.size() > 0)
diff --git a/source/MaterialXGraphEditor/Graph.h b/source/MaterialXGraphEditor/Graph.h
index 821ecf71fd..965ec519b7 100644
--- a/source/MaterialXGraphEditor/Graph.h
+++ b/source/MaterialXGraphEditor/Graph.h
@@ -66,7 +66,7 @@ class Graph
int viewWidth,
int viewHeight);
- mx::DocumentPtr loadDocument(mx::FilePath filename);
+ mx::DocumentPtr loadDocument(const mx::FilePath& filename);
void drawGraph(ImVec2 mousePos);
RenderViewPtr getRenderer()
@@ -106,9 +106,6 @@ class Graph
// Find link position in current links vector from link id
int findLinkPosition(int id);
- // Find link from attribute id
- std::vector findLinkId(int attrId);
-
// Check if link exists in the current link vector
bool linkExists(Link newLink);
@@ -139,7 +136,7 @@ class Graph
void setPinColor();
// Based on the pin icon function in the ImGui Node Editor blueprints-example.cpp
- void drawPinIcon(std::string type, bool connected, int alpha);
+ void drawPinIcon(const std::string& type, bool connected, int alpha);
UiPinPtr getPin(ed::PinId id);
void drawInputPin(UiPinPtr pin);
@@ -189,7 +186,6 @@ class Graph
// Add input pointer to node based on input pin
void addNodeInput(UiNodePtr node, mx::InputPtr& input);
- mx::InputPtr findInput(mx::InputPtr input, const std::string& name);
void upNodeGraph();
// Set the value of the selected node constants in the node property editor
@@ -222,7 +218,6 @@ class Graph
void shaderPopup();
void updateMaterials(mx::InputPtr input = nullptr, mx::ValuePtr value = nullptr);
- void selectMaterial(UiNodePtr node);
// Allow for camera manipulation of render view window
void handleRenderViewInputs();
diff --git a/source/MaterialXGraphEditor/RenderView.cpp b/source/MaterialXGraphEditor/RenderView.cpp
index d2967e6b85..3c2e01dff9 100644
--- a/source/MaterialXGraphEditor/RenderView.cpp
+++ b/source/MaterialXGraphEditor/RenderView.cpp
@@ -299,7 +299,7 @@ void RenderView::loadMesh(const mx::FilePath& filename)
_cameraTarget = mx::Vector3();
initCamera();
-
+
if (_shadowMap)
{
_imageHandler->releaseRenderResources(_shadowMap);
@@ -848,7 +848,7 @@ void RenderView::initCamera()
{
_viewCamera->setViewportSize(mx::Vector2((float) _viewWidth, (float) _viewHeight));
- if ( _geometryHandler->getMeshes().empty())
+ if (_geometryHandler->getMeshes().empty())
{
return;
}
diff --git a/source/MaterialXGraphEditor/UiNode.h b/source/MaterialXGraphEditor/UiNode.h
index cf7aa41e28..06d0281676 100644
--- a/source/MaterialXGraphEditor/UiNode.h
+++ b/source/MaterialXGraphEditor/UiNode.h
@@ -101,7 +101,7 @@ class UiPin
{
if (_connections[i]->_pinId == pin->_pinId)
{
- _connections.erase(_connections.begin()+i);
+ _connections.erase(_connections.begin() + i);
}
}
for (size_t i = 0; i < pin->_connections.size(); i++)
diff --git a/source/MaterialXRender/Camera.cpp b/source/MaterialXRender/Camera.cpp
index 6464246e3a..7b9579376c 100644
--- a/source/MaterialXRender/Camera.cpp
+++ b/source/MaterialXRender/Camera.cpp
@@ -23,8 +23,8 @@ Matrix44 Camera::createViewMatrix(const Vector3& eye,
}
Matrix44 Camera::createPerspectiveMatrixZP(float left, float right,
- float bottom, float top,
- float nearP, float farP)
+ float bottom, float top,
+ float nearP, float farP)
{
return Matrix44(
(2.0f * nearP) / (right - left), 0.0f, (right + left) / (right - left), 0.0f,
@@ -34,8 +34,8 @@ Matrix44 Camera::createPerspectiveMatrixZP(float left, float right,
}
Matrix44 Camera::createOrthographicMatrixZP(float left, float right,
- float bottom, float top,
- float nearP, float farP)
+ float bottom, float top,
+ float nearP, float farP)
{
return Matrix44(
2.0f / (right - left), 0.0f, 0.0f, 0.0f,
diff --git a/source/MaterialXRender/Camera.h b/source/MaterialXRender/Camera.h
index a20c0f0e70..3135904b5a 100644
--- a/source/MaterialXRender/Camera.h
+++ b/source/MaterialXRender/Camera.h
@@ -163,17 +163,17 @@ class MX_RENDER_API Camera
static Matrix44 createOrthographicMatrix(float left, float right,
float bottom, float top,
float nearP, float farP);
-
+
/// Create a perpective projection matrix given a set of clip planes with [0,1] projected Z.
static Matrix44 createPerspectiveMatrixZP(float left, float right,
- float bottom, float top,
- float nearP, float farP);
+ float bottom, float top,
+ float nearP, float farP);
/// Create an orthographic projection matrix given a set of clip planes with [0,1] projected Z.
static Matrix44 createOrthographicMatrixZP(float left, float right,
- float bottom, float top,
- float nearP, float farP);
-
+ float bottom, float top,
+ float nearP, float farP);
+
/// Apply a perspective transform to the given 3D point, performing a
/// homogeneous divide on the transformed result.
static Vector3 transformPointPerspective(const Matrix44& m, const Vector3& v)
@@ -185,7 +185,7 @@ class MX_RENDER_API Camera
/// @}
protected:
- // Transform matrices
+ // Transform matrices
Matrix44 _worldMatrix;
Matrix44 _viewMatrix;
Matrix44 _projectionMatrix;
diff --git a/source/MaterialXRender/CgltfLoader.cpp b/source/MaterialXRender/CgltfLoader.cpp
index 1c8ec598a6..fcc8831732 100644
--- a/source/MaterialXRender/CgltfLoader.cpp
+++ b/source/MaterialXRender/CgltfLoader.cpp
@@ -59,7 +59,7 @@ void computeMeshMatrices(GLTFMeshMatrixList& meshMatrices, cgltf_node* cnode)
}
// Iterate over all children. Note that the existence of a mesh
- // does not imply that this is a leaf node so traversal should
+ // does not imply that this is a leaf node so traversal should
// continue even when a mesh is encountered.
for (cgltf_size i = 0; i < cnode->children_count; i++)
{
@@ -76,7 +76,7 @@ using GLTFMeshPathList = std::unordered_map;
void computeMeshPaths(GLTFMeshPathList& meshPaths, cgltf_node* cnode, FilePath path, size_t nodeCount, size_t meshCount)
{
string cnodeName = cnode->name ? string(cnode->name) : DEFAULT_NODE_PREFIX + std::to_string(nodeCount++);
- path = path / ( createValidName(cnodeName) + "/" );
+ path = path / (createValidName(cnodeName) + "/");
cgltf_mesh* cmesh = cnode->mesh;
if (cmesh)
@@ -92,7 +92,7 @@ void computeMeshPaths(GLTFMeshPathList& meshPaths, cgltf_node* cnode, FilePath p
}
// Iterate over all children. Note that the existence of a mesh
- // does not imply that this is a leaf node so traversal should
+ // does not imply that this is a leaf node so traversal should
// continue even when a mesh is encountered.
for (cgltf_size i = 0; i < cnode->children_count; i++)
{
@@ -220,11 +220,11 @@ bool CgltfLoader::load(const FilePath& filePath, MeshList& meshList, bool texcoo
}
// Iterate through all parent transform
- for (size_t mtx=0; mtx < positionMatrices.size(); mtx++)
+ for (size_t mtx = 0; mtx < positionMatrices.size(); mtx++)
{
const Matrix44& positionMatrix = positionMatrices[mtx];
const Matrix44 normalMatrix = positionMatrix.getInverse().getTranspose();
-
+
for (cgltf_size primitiveIndex = 0; primitiveIndex < cmesh->primitives_count; ++primitiveIndex)
{
cgltf_primitive* primitive = &cmesh->primitives[primitiveIndex];
@@ -347,8 +347,7 @@ bool CgltfLoader::load(const FilePath& filePath, MeshList& meshList, bool texcoo
else
{
if (_debugLevel > 0)
- std::cout << "Unknown stream type: " << std::to_string(attribute->type)
- << std::endl;
+ std::cout << "Unknown stream type: " << std::to_string(attribute->type) << std::endl;
}
// Fill in stream
diff --git a/source/MaterialXRender/CgltfLoader.h b/source/MaterialXRender/CgltfLoader.h
index 4f4a7145ba..fb63cb6102 100644
--- a/source/MaterialXRender/CgltfLoader.h
+++ b/source/MaterialXRender/CgltfLoader.h
@@ -6,7 +6,7 @@
#ifndef MATERIALX_CGLTFLOADER_H
#define MATERIALX_CGLTFLOADER_H
-/// @file
+/// @file
/// GLTF format loader using the Cgltf library
#include
@@ -32,7 +32,7 @@ class MX_RENDER_API CgltfLoader : public GeometryLoader
static CgltfLoaderPtr create() { return std::make_shared(); }
/// Load geometry from file path
- bool load(const FilePath& filePath, MeshList& meshList, bool texcoordVerticalFlip=false) override;
+ bool load(const FilePath& filePath, MeshList& meshList, bool texcoordVerticalFlip = false) override;
private:
unsigned int _debugLevel;
diff --git a/source/MaterialXRender/GeometryHandler.cpp b/source/MaterialXRender/GeometryHandler.cpp
index e2c974a767..dfea0b2ceb 100644
--- a/source/MaterialXRender/GeometryHandler.cpp
+++ b/source/MaterialXRender/GeometryHandler.cpp
@@ -89,7 +89,7 @@ bool GeometryHandler::loadGeometry(const FilePath& filePath, bool texcoordVertic
bool loaded = false;
- std::pair range;
+ std::pair range;
string extension = filePath.getExtension();
range = _geometryLoaders.equal_range(extension);
GeometryLoaderMap::iterator first = --range.second;
@@ -140,19 +140,17 @@ MeshPtr GeometryHandler::createQuadMesh(const Vector2& uvMin, const Vector2& uvM
quadTexCoords->setStride(MeshStream::STRIDE_2D);
if (!flipTexCoordsHorizontally)
{
- quadTexCoords->getData().assign({
- uvMax[0], uvMax[1],
- uvMax[0], uvMin[1],
- uvMin[0], uvMin[1],
- uvMin[0], uvMax[1] });
+ quadTexCoords->getData().assign({ uvMax[0], uvMax[1],
+ uvMax[0], uvMin[1],
+ uvMin[0], uvMin[1],
+ uvMin[0], uvMax[1] });
}
else
{
- quadTexCoords->getData().assign({
- uvMax[0], uvMin[1],
- uvMax[0], uvMax[1],
- uvMin[0], uvMax[1],
- uvMin[0], uvMin[1] });
+ quadTexCoords->getData().assign({ uvMax[0], uvMin[1],
+ uvMax[0], uvMax[1],
+ uvMin[0], uvMax[1],
+ uvMin[0], uvMin[1] });
}
MeshPartitionPtr quadIndices = MeshPartition::create();
quadIndices->getIndices().assign({ 0, 1, 3, 1, 2, 3 });
@@ -161,7 +159,7 @@ MeshPtr GeometryHandler::createQuadMesh(const Vector2& uvMin, const Vector2& uvM
quadMesh->addStream(quadPositions);
quadMesh->addStream(quadTexCoords);
quadMesh->addPartition(quadIndices);
-
+
return quadMesh;
}
diff --git a/source/MaterialXRender/GeometryHandler.h b/source/MaterialXRender/GeometryHandler.h
index 0022487602..5dfc561e0e 100644
--- a/source/MaterialXRender/GeometryHandler.h
+++ b/source/MaterialXRender/GeometryHandler.h
@@ -121,7 +121,7 @@ class MX_RENDER_API GeometryHandler
static MeshPtr createQuadMesh(const Vector2& uvMin = Vector2(0.0f, 0.0f),
const Vector2& uvMax = Vector2(1.0f, 1.0f),
bool flipTexCoordsHorizontally = false);
-
+
protected:
// Recompute bounds for all stored geometry
void computeBounds();
diff --git a/source/MaterialXRender/Harmonics.cpp b/source/MaterialXRender/Harmonics.cpp
index daf6a59d10..3d5c9d0a1d 100644
--- a/source/MaterialXRender/Harmonics.cpp
+++ b/source/MaterialXRender/Harmonics.cpp
@@ -9,7 +9,8 @@
MATERIALX_NAMESPACE_BEGIN
-namespace {
+namespace
+{
const double PI = std::acos(-1.0);
diff --git a/source/MaterialXRender/Harmonics.h b/source/MaterialXRender/Harmonics.h
index 10d5f81e49..f51991361a 100644
--- a/source/MaterialXRender/Harmonics.h
+++ b/source/MaterialXRender/Harmonics.h
@@ -27,7 +27,8 @@ template class ShCoeffs
public:
ShCoeffs() = default;
- explicit ShCoeffs(const std::array& arr) : _arr(arr) { }
+ explicit ShCoeffs(const std::array& arr) :
+ _arr(arr) { }
/// @name Comparison Operators
/// @{
diff --git a/source/MaterialXRender/ImageHandler.cpp b/source/MaterialXRender/ImageHandler.cpp
index d54a18fedd..b148bf63d9 100644
--- a/source/MaterialXRender/ImageHandler.cpp
+++ b/source/MaterialXRender/ImageHandler.cpp
@@ -165,7 +165,7 @@ void ImageHandler::unbindImages()
}
}
-bool ImageHandler::createRenderResources(ImagePtr, bool)
+bool ImageHandler::createRenderResources(ImagePtr, bool, bool)
{
return false;
}
@@ -306,12 +306,11 @@ void ImageSamplingProperties::setProperties(const string& fileNameUniform,
bool ImageSamplingProperties::operator==(const ImageSamplingProperties& r) const
{
- return
- (enableMipmaps == r.enableMipmaps &&
- uaddressMode == r.uaddressMode &&
- vaddressMode == r.vaddressMode &&
- filterType == r.filterType &&
- defaultColor == r.defaultColor) ;
+ return (enableMipmaps == r.enableMipmaps &&
+ uaddressMode == r.uaddressMode &&
+ vaddressMode == r.vaddressMode &&
+ filterType == r.filterType &&
+ defaultColor == r.defaultColor);
}
MATERIALX_NAMESPACE_END
diff --git a/source/MaterialXRender/ImageHandler.h b/source/MaterialXRender/ImageHandler.h
index fafc021857..e5d2082f8d 100644
--- a/source/MaterialXRender/ImageHandler.h
+++ b/source/MaterialXRender/ImageHandler.h
@@ -35,7 +35,7 @@ using ImageHandlerPtr = std::shared_ptr;
using ImageLoaderPtr = std::shared_ptr;
/// Map from strings to vectors of image loaders
-using ImageLoaderMap = std::unordered_map< string, std::vector >;
+using ImageLoaderMap = std::unordered_map>;
/// @class ImageSamplingProperties
/// Interface to describe sampling properties for images.
@@ -48,16 +48,16 @@ class MX_RENDER_API ImageSamplingProperties
/// @param uniformBlock Block containing sampler uniforms
void setProperties(const string& fileNameUniform,
const VariableBlock& uniformBlock);
-
+
bool operator==(const ImageSamplingProperties& r) const;
/// Address mode options. Matches enumerations allowed for image address
/// modes, except UNSPECIFIED which indicates no explicit mode was defined.
enum class AddressMode : int
- {
+ {
UNSPECIFIED = -1,
CONSTANT = 0,
- CLAMP = 1,
+ CLAMP = 1,
PERIODIC = 2,
MIRROR = 3
};
@@ -230,7 +230,7 @@ class MX_RENDER_API ImageHandler
}
/// Create rendering resources for the given image.
- virtual bool createRenderResources(ImagePtr image, bool generateMipMaps);
+ virtual bool createRenderResources(ImagePtr image, bool generateMipMaps, bool useAsRenderTarget = false);
/// Release rendering resources for the given image, or for all cached images
/// if no image pointer is specified.
diff --git a/source/MaterialXRender/LightHandler.cpp b/source/MaterialXRender/LightHandler.cpp
index cc96d979c7..c7d9311005 100644
--- a/source/MaterialXRender/LightHandler.cpp
+++ b/source/MaterialXRender/LightHandler.cpp
@@ -51,7 +51,7 @@ void LightHandler::findLights(DocumentPtr doc, vector& lights)
void LightHandler::registerLights(DocumentPtr doc, const vector& lights, GenContext& context)
{
- // Clear context light user data which is set when bindLightShader()
+ // Clear context light user data which is set when bindLightShader()
// is called. This is necessary in case the light types have already been
// registered.
HwShaderGenerator::unbindLightShaders(context);
@@ -71,7 +71,7 @@ void LightHandler::registerLights(DocumentPtr doc, const vector& lights
}
// Make sure max light count is large enough
- const unsigned int lightCount = (unsigned int)lights.size();
+ const unsigned int lightCount = (unsigned int) lights.size();
if (lightCount > context.getOptions().hwMaxActiveLightSources)
{
context.getOptions().hwMaxActiveLightSources = lightCount;
diff --git a/source/MaterialXRender/LightHandler.h b/source/MaterialXRender/LightHandler.h
index 666edd34a1..a080c72081 100644
--- a/source/MaterialXRender/LightHandler.h
+++ b/source/MaterialXRender/LightHandler.h
@@ -37,6 +37,7 @@ class MX_RENDER_API LightHandler
_lightTransform(Matrix44::IDENTITY),
_directLighting(true),
_indirectLighting(true),
+ _usePrefilteredMap(false),
_envSampleCount(DEFAULT_ENV_SAMPLE_COUNT),
_refractionTwoSided(false)
{
@@ -48,7 +49,7 @@ class MX_RENDER_API LightHandler
/// @name Global State
/// @{
-
+
/// Set the light transform.
void setLightTransform(const Matrix44& mat)
{
@@ -101,6 +102,30 @@ class MX_RENDER_API LightHandler
return _envRadianceMap;
}
+ /// Set the environment radiance map for the prefiltered environment lighting model.
+ void setEnvPrefilteredMap(ImagePtr map)
+ {
+ _envPrefilteredMap = map;
+ }
+
+ /// Return the environment radiance map for the prefiltered environment lighting model.
+ ImagePtr getEnvPrefilteredMap() const
+ {
+ return _envPrefilteredMap;
+ }
+
+ /// Set whether to use the prefiltered environment lighting model.
+ void setUsePrefilteredMap(bool val)
+ {
+ _usePrefilteredMap = val;
+ }
+
+ /// Return whether to use the prefiltered environment lighting model.
+ bool getUsePrefilteredMap()
+ {
+ return _usePrefilteredMap;
+ }
+
/// Set the environment irradiance map
void setEnvIrradianceMap(ImagePtr map)
{
@@ -216,8 +241,10 @@ class MX_RENDER_API LightHandler
Matrix44 _lightTransform;
bool _directLighting;
bool _indirectLighting;
+ bool _usePrefilteredMap;
ImagePtr _envRadianceMap;
+ ImagePtr _envPrefilteredMap;
ImagePtr _envIrradianceMap;
int _envSampleCount;
diff --git a/source/MaterialXRender/Mesh.cpp b/source/MaterialXRender/Mesh.cpp
index 110829cd21..bfa7dedd13 100644
--- a/source/MaterialXRender/Mesh.cpp
+++ b/source/MaterialXRender/Mesh.cpp
@@ -18,7 +18,8 @@ const string MeshStream::BITANGENT_ATTRIBUTE("bitangent");
const string MeshStream::COLOR_ATTRIBUTE("color");
const string MeshStream::GEOMETRY_PROPERTY_ATTRIBUTE("geomprop");
-namespace {
+namespace
+{
const float MAX_FLOAT = std::numeric_limits::max();
const size_t FACE_VERTEX_COUNT = 3;
@@ -266,7 +267,7 @@ void Mesh::splitByUdims()
// MeshStream methods
//
-void MeshStream::transform(const Matrix44 &matrix)
+void MeshStream::transform(const Matrix44& matrix)
{
unsigned int stride = getStride();
size_t numElements = _data.size() / getStride();
@@ -274,17 +275,17 @@ void MeshStream::transform(const Matrix44 &matrix)
getType() == MeshStream::TEXCOORD_ATTRIBUTE ||
getType() == MeshStream::GEOMETRY_PROPERTY_ATTRIBUTE)
{
- for (size_t i=0; i
diff --git a/source/MaterialXRender/OiioImageLoader.h b/source/MaterialXRender/OiioImageLoader.h
index 6619c85bb2..38781dad9e 100644
--- a/source/MaterialXRender/OiioImageLoader.h
+++ b/source/MaterialXRender/OiioImageLoader.h
@@ -7,7 +7,7 @@
#define MATERIALX_OIIOIMAGELOADER_H
/// @file
-/// Image loader wrapper using OpenImageIO
+/// Image loader wrapper using OpenImageIO
#include
@@ -21,7 +21,7 @@ using OiioImageLoaderPtr = std::shared_ptr;
class MX_RENDER_API OiioImageLoader : public ImageLoader
{
public:
- OiioImageLoader()
+ OiioImageLoader()
{
// Set all extensions supported by OpenImageIO
_extensions.insert(BMP_EXTENSION);
@@ -40,7 +40,7 @@ class MX_RENDER_API OiioImageLoader : public ImageLoader
_extensions.insert(TXT_EXTENSION);
_extensions.insert(TXR_EXTENSION);
}
- virtual ~OiioImageLoader() { }
+ virtual ~OiioImageLoader() { }
/// Create a new OpenImageIO image loader
static OiioImageLoaderPtr create() { return std::make_shared(); }
diff --git a/source/MaterialXRender/ShaderMaterial.cpp b/source/MaterialXRender/ShaderMaterial.cpp
index d51efa54af..c61c6d3c04 100644
--- a/source/MaterialXRender/ShaderMaterial.cpp
+++ b/source/MaterialXRender/ShaderMaterial.cpp
@@ -8,8 +8,8 @@
MATERIALX_NAMESPACE_BEGIN
-ShaderMaterial::ShaderMaterial() : _hasTransparency(false) {}
-ShaderMaterial::~ShaderMaterial() {}
+ShaderMaterial::ShaderMaterial() : _hasTransparency(false) { }
+ShaderMaterial::~ShaderMaterial() { }
void ShaderMaterial::setDocument(DocumentPtr doc)
{
@@ -62,9 +62,9 @@ bool ShaderMaterial::hasTransparency() const
}
bool ShaderMaterial::generateEnvironmentShader(GenContext& context,
- const FilePath& filename,
- DocumentPtr stdLib,
- const FilePath& imagePath)
+ const FilePath& filename,
+ DocumentPtr stdLib,
+ const FilePath& imagePath)
{
// Read in the environment nodegraph.
DocumentPtr doc = createDocument();
@@ -73,7 +73,7 @@ bool ShaderMaterial::generateEnvironmentShader(GenContext& context,
readFromXmlFile(envDoc, filename);
doc->importLibrary(envDoc);
- NodeGraphPtr envGraph = doc->getNodeGraph("environmentDraw");
+ NodeGraphPtr envGraph = doc->getNodeGraph("envMap");
if (!envGraph)
{
return false;
diff --git a/source/MaterialXRender/ShaderMaterial.h b/source/MaterialXRender/ShaderMaterial.h
index cf500463e4..f29b6f763c 100644
--- a/source/MaterialXRender/ShaderMaterial.h
+++ b/source/MaterialXRender/ShaderMaterial.h
@@ -74,7 +74,7 @@ class MX_RENDER_API ShaderMaterial
/// Generate a shader from our currently stored element and
/// the given generator context.
virtual bool generateShader(GenContext& context) = 0;
-
+
/// Copies shader and API specific generated program from ShaderMaterial to this one.
virtual void copyShader(MaterialPtr ShaderMaterial) = 0;
@@ -86,7 +86,7 @@ class MX_RENDER_API ShaderMaterial
const FilePath& filename,
DocumentPtr stdLib,
const FilePath& imagePath);
-
+
/// Return the underlying hardware shader.
ShaderPtr getShader() const;
diff --git a/source/MaterialXRender/ShaderRenderer.h b/source/MaterialXRender/ShaderRenderer.h
index c1cfbecfa0..829a0252c1 100644
--- a/source/MaterialXRender/ShaderRenderer.h
+++ b/source/MaterialXRender/ShaderRenderer.h
@@ -34,7 +34,7 @@ class MX_RENDER_API ShaderRenderer
enum class MatrixConvention
{
OpenGL = 0,
- Metal = 1
+ Metal = 1
};
/// A map with name and source code for each shader stage.
using StageMap = StringMap;
@@ -133,7 +133,7 @@ class MX_RENDER_API ShaderRenderer
protected:
ShaderRenderer(unsigned int width, unsigned int height, Image::BaseType baseType,
- MatrixConvention matrixConvention = MatrixConvention::OpenGL);
+ MatrixConvention matrixConvention = MatrixConvention::OpenGL);
protected:
unsigned int _width;
@@ -167,7 +167,7 @@ class MX_RENDER_API ExceptionRenderError : public Exception
{
}
- ExceptionRenderError& operator=(const ExceptionRenderError& e)
+ ExceptionRenderError& operator=(const ExceptionRenderError& e)
{
Exception::operator=(e);
_errorLog = e._errorLog;
diff --git a/source/MaterialXRender/StbImageLoader.cpp b/source/MaterialXRender/StbImageLoader.cpp
index d8747b75ad..b367bf741c 100644
--- a/source/MaterialXRender/StbImageLoader.cpp
+++ b/source/MaterialXRender/StbImageLoader.cpp
@@ -7,9 +7,9 @@
#if defined(_MSC_VER)
#pragma warning(push)
- #pragma warning(disable: 4100)
- #pragma warning(disable: 4505)
- #pragma warning(disable: 4996)
+ #pragma warning(disable : 4100)
+ #pragma warning(disable : 4505)
+ #pragma warning(disable : 4996)
#endif
#define STB_IMAGE_IMPLEMENTATION
@@ -96,7 +96,7 @@ ImagePtr StbImageLoader::loadImage(const FilePath& filePath)
int height = 0;
int channelCount = 0;
Image::BaseType baseType = Image::BaseType::UINT8;
- void *buffer = nullptr;
+ void* buffer = nullptr;
// Select standard or float reader based on file extension.
string extension = filePath.getExtension();
diff --git a/source/MaterialXRender/StbImageLoader.h b/source/MaterialXRender/StbImageLoader.h
index dabbb8ca9e..f9d91fbcc7 100644
--- a/source/MaterialXRender/StbImageLoader.h
+++ b/source/MaterialXRender/StbImageLoader.h
@@ -34,7 +34,7 @@ class MX_RENDER_API StbImageLoader : public ImageLoader
_extensions.insert(PSD_EXTENSION);
_extensions.insert(TGA_EXTENSION);
}
- virtual ~StbImageLoader() { }
+ virtual ~StbImageLoader() { }
/// Create a new stb image loader
static StbImageLoaderPtr create() { return std::make_shared(); }
diff --git a/source/MaterialXRender/TextureBaker.h b/source/MaterialXRender/TextureBaker.h
index 54b1016451..656bb63c1d 100644
--- a/source/MaterialXRender/TextureBaker.h
+++ b/source/MaterialXRender/TextureBaker.h
@@ -27,7 +27,7 @@ using BakedDocumentVec = std::vector>;
/// A helper class for baking procedural material content to textures.
/// TODO: Add support for graphs containing geometric nodes such as position
/// and normal.
-template
+template
class TextureBaker : public Renderer
{
public:
@@ -112,7 +112,7 @@ class TextureBaker : public Renderer
/// Set the name of the baked graph element.
void setBakedGraphName(const string& name)
{
- _bakedGraphName= name;
+ _bakedGraphName = name;
}
/// Return the name of the baked graph element.
@@ -218,13 +218,13 @@ class TextureBaker : public Renderer
void optimizeBakedTextures(NodePtr shader);
/// Bake material to document in memory and write baked textures to disk.
- DocumentPtr bakeMaterialToDoc(DocumentPtr doc, const FileSearchPath& searchPath, const string& materialPath,
+ DocumentPtr bakeMaterialToDoc(DocumentPtr doc, const FileSearchPath& searchPath, const string& materialPath,
const StringVec& udimSet, std::string& documentName);
/// Bake materials in the given document and write them to disk. If multiple documents are written,
/// then the given output filename will be used as a template.
void bakeAllMaterials(DocumentPtr doc, const FileSearchPath& searchPath, const FilePath& outputFileName);
-
+
/// Set whether to write a separate document per material when calling bakeAllMaterials.
/// By default separate documents are written.
void writeDocumentPerMaterial(bool value)
@@ -295,7 +295,7 @@ class TextureBaker : public Renderer
StringMap _bakedInputMap;
std::unordered_map _worldSpaceNodes;
-
+
bool _flipSavedImage;
bool _writeDocumentPerMaterial;
diff --git a/source/MaterialXRender/TextureBaker.inl b/source/MaterialXRender/TextureBaker.inl
index bcc9401210..65759ed998 100644
--- a/source/MaterialXRender/TextureBaker.inl
+++ b/source/MaterialXRender/TextureBaker.inl
@@ -13,7 +13,8 @@
MATERIALX_NAMESPACE_BEGIN
-namespace {
+namespace
+{
const string SRGB_TEXTURE = "srgb_texture";
const string LIN_REC709 = "lin_rec709";
@@ -23,7 +24,7 @@ const string DEFAULT_UDIM_PREFIX = "_";
} // anonymous namespace
-template
+template
string TextureBaker::getValueStringFromColor(const Color4& color, const string& type)
{
if (type == "color4" || type == "vector4")
@@ -45,7 +46,7 @@ string TextureBaker::getValueStringFromColor(const Color4&
return EMPTY_STRING;
}
-template
+template
TextureBaker::TextureBaker(unsigned int width, unsigned int height, Image::BaseType baseType, bool flipSavedImage) :
Renderer(width, height, baseType),
_distanceUnit("meter"),
@@ -97,7 +98,7 @@ TextureBaker::TextureBaker(unsigned int width, unsigned int
_frameCaptureImage->createResourceBuffer();
}
-template
+template
size_t TextureBaker::findVarInTemplate(const string& filename, const string& var, size_t start)
{
size_t i = filename.find(var, start);
@@ -112,17 +113,15 @@ size_t TextureBaker::findVarInTemplate(const string& filena
return i;
}
-template
+template
FilePath TextureBaker::generateTextureFilename(const StringMap& filenameTemplateMap)
{
string bakedImageName = _textureFilenameTemplate;
for (auto& pair : filenameTemplateMap)
{
- string replacement = (_texTemplateOverrides.count(pair.first)) ?
- _texTemplateOverrides[pair.first] : pair.second;
- replacement = (filenameTemplateMap.at("$UDIM").empty() && pair.first == "$UDIMPREFIX") ?
- EMPTY_STRING : replacement;
+ string replacement = (_texTemplateOverrides.count(pair.first)) ? _texTemplateOverrides[pair.first] : pair.second;
+ replacement = (filenameTemplateMap.at("$UDIM").empty() && pair.first == "$UDIMPREFIX") ? EMPTY_STRING : replacement;
for (size_t i = 0; (i = findVarInTemplate(bakedImageName, pair.first, i)) != string::npos; i++)
{
@@ -140,7 +139,7 @@ FilePath TextureBaker::generateTextureFilename(const String
return _outputImagePath / bakedImageName;
}
-template
+template
StringMap TextureBaker::initializeFileTemplateMap(InputPtr input, NodePtr shader, const string& udim)
{
FilePath assetPath = FilePath(shader->getActiveSourceUri());
@@ -156,7 +155,7 @@ StringMap TextureBaker::initializeFileTemplateMap(InputPtr
return filenameTemplateMap;
}
-template
+template
bool TextureBaker::writeBakedImage(const BakedImage& baked, ImagePtr image)
{
if (!Renderer::_imageHandler->saveImage(baked.filename, image, _flipSavedImage))
@@ -176,11 +175,11 @@ bool TextureBaker::writeBakedImage(const BakedImage& baked,
return true;
}
-template
+template
void TextureBaker::bakeShaderInputs(NodePtr material, NodePtr shader, GenContext& context, const string& udim)
{
_material = material;
-
+
if (!shader)
{
return;
@@ -216,16 +215,16 @@ void TextureBaker::bakeShaderInputs(NodePtr material, NodeP
Renderer::_imageHandler->clearImageCache();
}
-template
+template
void TextureBaker::bakeGraphOutput(OutputPtr output, GenContext& context, const StringMap& filenameTemplateMap)
{
if (!output)
{
return;
}
-
+
bool encodeSrgb = _colorSpace == SRGB_TEXTURE &&
- (output->getType() == "color3" || output->getType() == "color4");
+ (output->getType() == "color3" || output->getType() == "color4");
Renderer::getFramebuffer()->setEncodeSrgb(encodeSrgb);
ShaderPtr shader = _generator->generate("BakingShader", output, context);
@@ -258,7 +257,7 @@ void TextureBaker::bakeGraphOutput(OutputPtr output, GenCon
}
}
-template
+template
void TextureBaker::optimizeBakedTextures(NodePtr shader)
{
if (!shader)
@@ -320,7 +319,7 @@ void TextureBaker::optimizeBakedTextures(NodePtr shader)
}
}
-template
+template
DocumentPtr TextureBaker::generateNewDocumentFromShader(NodePtr shader, const StringVec& udimSet)
{
if (!shader)
@@ -359,7 +358,7 @@ DocumentPtr TextureBaker::generateNewDocumentFromShader(Nod
// Optionally create a material node, connecting it to the new shader node.
if (_material)
{
- string materialName = (_texTemplateOverrides.count("$MATERIAL"))? _texTemplateOverrides["$MATERIAL"] : _material->getName();
+ string materialName = (_texTemplateOverrides.count("$MATERIAL")) ? _texTemplateOverrides["$MATERIAL"] : _material->getName();
NodePtr bakedMaterial = _bakedTextureDoc->addNode(_material->getCategory(), materialName + BAKED_POSTFIX, _material->getType());
for (auto sourceMaterialInput : _material->getInputs())
{
@@ -483,9 +482,9 @@ DocumentPtr TextureBaker::generateNewDocumentFromShader(Nod
return _bakedTextureDoc;
}
-template
+template
DocumentPtr TextureBaker::bakeMaterialToDoc(DocumentPtr doc, const FileSearchPath& searchPath, const string& materialPath,
- const StringVec& udimSet, string& documentName)
+ const StringVec& udimSet, string& documentName)
{
if (_outputStream)
{
@@ -551,7 +550,7 @@ DocumentPtr TextureBaker::bakeMaterialToDoc(DocumentPtr doc
return generateNewDocumentFromShader(shaderNode, udimSet);
}
-template
+template
void TextureBaker::bakeAllMaterials(DocumentPtr doc, const FileSearchPath& searchPath, const FilePath& outputFilename)
{
if (_outputImagePath.isEmpty())
@@ -593,31 +592,31 @@ void TextureBaker::bakeAllMaterials(DocumentPtr doc, const
if (_writeDocumentPerMaterial)
{
- // Write documents in memory to disk.
- size_t bakeCount = bakedDocuments.size();
- for (size_t i = 0; i < bakeCount; i++)
- {
- if (bakedDocuments[i].second)
+ // Write documents in memory to disk.
+ size_t bakeCount = bakedDocuments.size();
+ for (size_t i = 0; i < bakeCount; i++)
{
- FilePath writeFilename = outputFilename;
-
- // Add additional filename decorations if there are multiple documents.
- if (bakedDocuments.size() > 1)
+ if (bakedDocuments[i].second)
{
- const string extension = writeFilename.getExtension();
- writeFilename.removeExtension();
- string filenameSeparator = writeFilename.isDirectory()? EMPTY_STRING : "_";
- writeFilename = FilePath(writeFilename.asString() + filenameSeparator + bakedDocuments[i].first + "." + extension);
- }
+ FilePath writeFilename = outputFilename;
- writeToXmlFile(bakedDocuments[i].second, writeFilename);
- if (_outputStream)
- {
- *_outputStream << "Wrote baked document: " << writeFilename.asString() << std::endl;
+ // Add additional filename decorations if there are multiple documents.
+ if (bakedDocuments.size() > 1)
+ {
+ const string extension = writeFilename.getExtension();
+ writeFilename.removeExtension();
+ string filenameSeparator = writeFilename.isDirectory() ? EMPTY_STRING : "_";
+ writeFilename = FilePath(writeFilename.asString() + filenameSeparator + bakedDocuments[i].first + "." + extension);
+ }
+
+ writeToXmlFile(bakedDocuments[i].second, writeFilename);
+ if (_outputStream)
+ {
+ *_outputStream << "Wrote baked document: " << writeFilename.asString() << std::endl;
+ }
}
}
}
-}
else if (_bakedTextureDoc)
{
writeToXmlFile(_bakedTextureDoc, outputFilename);
@@ -628,7 +627,7 @@ void TextureBaker::bakeAllMaterials(DocumentPtr doc, const
}
}
-template
+template
void TextureBaker::setupUnitSystem(DocumentPtr unitDefinitions)
{
UnitTypeDefPtr distanceTypeDef = unitDefinitions ? unitDefinitions->getUnitTypeDef("distance") : nullptr;
diff --git a/source/MaterialXRender/TinyObjLoader.cpp b/source/MaterialXRender/TinyObjLoader.cpp
index 324a1df3e7..b01af1ebf9 100644
--- a/source/MaterialXRender/TinyObjLoader.cpp
+++ b/source/MaterialXRender/TinyObjLoader.cpp
@@ -23,7 +23,8 @@
MATERIALX_NAMESPACE_BEGIN
-namespace {
+namespace
+{
const float MAX_FLOAT = std::numeric_limits::max();
const size_t FACE_VERTEX_COUNT = 3;
@@ -32,9 +33,10 @@ class VertexVector : public VectorN