From dd6b535521d4d8e5328f6a9ddecfc5e81e60c604 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 4 Jun 2024 18:59:45 +0200 Subject: [PATCH] Build: Add USD patch to fix issues with MaterialX EDF on Metal Ref #122575, #118455 Pull Request: https://projects.blender.org/blender/blender/pulls/122725 --- build_files/build_environment/cmake/usd.cmake | 9 ++-- .../patches/usd_metal_edf.diff | 46 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 build_files/build_environment/patches/usd_metal_edf.diff diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index ac5ef653d94..9fcb582a5b3 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -119,9 +119,12 @@ ExternalProject_Add(external_usd ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd.diff && - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_core_profile.diff + ${PATCH_CMD} -p 1 -d + ${BUILD_DIR}/usd/src/external_usd < + ${PATCH_DIR}/usd_core_profile.diff && + ${PATCH_CMD} -p 1 -d + ${BUILD_DIR}/usd/src/external_usd < + ${PATCH_DIR}/usd_metal_edf.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/usd diff --git a/build_files/build_environment/patches/usd_metal_edf.diff b/build_files/build_environment/patches/usd_metal_edf.diff new file mode 100644 index 00000000000..5acfa7c6e75 --- /dev/null +++ b/build_files/build_environment/patches/usd_metal_edf.diff @@ -0,0 +1,46 @@ +From 4f05a62018ee5134843f7cefed826585f13a509b Mon Sep 17 00:00:00 2001 +From: Dhruv Govil +Date: Mon, 3 Jun 2024 15:31:34 -0700 +Subject: [PATCH] Fix shader compile bug when using EDF in Storm + +Fixes +https://github.com/PixarAnimationStudios/OpenUSD/issues/3105 + +Thanks to Lee Kerley for the fix +--- + pxr/imaging/hdSt/materialXShaderGen.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/pxr/imaging/hdSt/materialXShaderGen.cpp b/pxr/imaging/hdSt/materialXShaderGen.cpp +index ca1806bf03..8b0e1a3a41 100644 +--- a/pxr/imaging/hdSt/materialXShaderGen.cpp ++++ b/pxr/imaging/hdSt/materialXShaderGen.cpp +@@ -692,7 +692,6 @@ HdStMaterialXShaderGen::_EmitConstantsUniformsAndTypeDefs( + mxContext.getOptions().hwDirectionalAlbedoMethod)), + mxStage, false); + Base::emitLineBreak(mxStage); +- Base::emitTypeDefinitions(mxContext, mxStage); + + // Add all constants and ensure that values are initialized + const mx::VariableBlock& constants = mxStage.getConstantBlock(); +@@ -945,6 +944,10 @@ HdStMaterialXShaderGenGlsl::_EmitMxFunctions( + mx::ShaderGenerator::emitLibraryInclude( + "stdlib/" + mx::GlslShaderGenerator::TARGET + + "/lib/mx_math.glsl", mxContext, mxStage); ++ ++ // Add type definitions ++ emitTypeDefinitions(mxContext, mxStage); ++ + _EmitConstantsUniformsAndTypeDefs( + mxContext, mxStage, _syntax->getConstantQualifier()); + +@@ -1106,6 +1109,9 @@ HdStMaterialXShaderGenMsl::_EmitGlslfxMetalShader( + addStageUniform(mx::HW::LIGHT_DATA, mx::Type::FLOAT, + "shadowOcclusion", mxStage); + ++ // Add type definitions ++ emitTypeDefinitions(mxContext, mxStage); ++ + // Add type definitions + emitConstantBufferDeclarations(mxContext, resourceBindingCtx, mxStage); +