Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4b9bb50
Update Houdini 21.0.680 paths and Boost 1.82 for macOS build
rolledhand May 11, 2026
e43cc0b
docs: add Houdini 21.0.680 macOS compatibility notes
rolledhand May 11, 2026
cc25a18
Houdini 21.0.671 setup + hdMoonray int64 conversion linkage (clean)
rolledhand May 11, 2026
1a299f5
Document Houdini 21 macOS compatibility status
rolledhand May 11, 2026
9ee53f2
Houdini 21 macOS: apply build compatibility updates
rolledhand May 11, 2026
aefd23b
Houdini 20.5: wire macOS Solaris integration branches
rolledhand May 31, 2026
0f44716
Update MoonRay Houdini/Solaris submodule pins
rolledhand May 31, 2026
0586891
Update MoonRay geometry settings submodule pins
rolledhand May 31, 2026
9220cf6
Update MoonRay light translation submodule pins
rolledhand Jun 1, 2026
b5e6f9e
Update MoonRay light shaping submodule pins
rolledhand Jun 1, 2026
be43cbe
Checkpoint working MoonRay SpotLight override pins
rolledhand Jun 1, 2026
35bcc3c
Update hdMoonray light lifecycle pin
rolledhand Jun 1, 2026
b7e4bba
Update hdMoonray unit scale notes pin
rolledhand Jun 1, 2026
5a4e897
Checkpoint MoonRay Render Settings LOP pin
rolledhand Jun 2, 2026
37b15c7
Checkpoint MoonRay Render Settings LOP pin v2
rolledhand Jun 2, 2026
bdcf90c
Checkpoint MoonRay Render Settings LOP and USD Render ROP pin
rolledhand Jun 2, 2026
0bd156a
Update MoonRay render settings LOP pin
rolledhand Jun 6, 2026
51be9cf
Update hdMoonray documentation workflow pin
rolledhand Jun 6, 2026
73b84c7
Update MoonRay camera controls pins
rolledhand Jun 6, 2026
7d241b1
Add native MoonRay light filter support
rolledhand Jun 7, 2026
68275f7
Pin hdMoonray light filter integration updates
rolledhand Jun 7, 2026
390d425
Pin hdMoonray light filter lifecycle cleanup
rolledhand Jun 13, 2026
c87d39e
Pin Render Settings evidence-gated updates
rolledhand Jun 13, 2026
63570f0
macOS: repair Houdini MoonRay runtime setup
rolledhand Jun 13, 2026
2e0e09b
Pin hdMoonray OCIO working-space conversion
rolledhand Jun 14, 2026
f374a65
Pin DCC USD Render ROP output path fix
rolledhand Jun 14, 2026
9b35b25
Pin DCC sampling UI state fix
rolledhand Jun 14, 2026
672329d
Pin native AOV Apple Silicon repair
rolledhand Jun 14, 2026
0d8d2da
Update MoonRay DCC native AOV UI pin
rolledhand Jun 14, 2026
df238d3
Update MoonRay DCC material AOV UI pin
rolledhand Jun 14, 2026
d169571
Update MoonRay DCC time-dependency fixes
rolledhand Jun 15, 2026
63298dc
Harden MoonRay setup Python path discovery
rolledhand Jun 20, 2026
297217e
Update MoonRay Houdini integration pins
rolledhand Jun 20, 2026
55e5e6b
Update MoonRay OCIO integration pins
rolledhand Jun 22, 2026
202fbaf
Update H20.5 documentation pins
rolledhand Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,32 @@ add_subdirectory(moonray)
add_subdirectory(rats)
add_subdirectory(scripts)

if(IsDarwinPlatform)
install(CODE [[
set(_omr_codesign_root "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}")
execute_process(
COMMAND /bin/bash -c "
set -e
root=\"$1\"
command -v codesign >/dev/null 2>&1 || exit 0
for dir in \"$root/bin\" \"$root/lib\" \"$root/plugin\"; do
[ -d \"$dir\" ] || continue
find \"$dir\" -type f \\( -perm -111 -o -name '*.dylib' -o -name '*.so' \\) -print0
done | while IFS= read -r -d '' file; do
if /usr/bin/file \"$file\" | /usr/bin/grep -q 'Mach-O'; then
/usr/bin/codesign --force --sign - \"$file\"
fi
done
"
_ "${_omr_codesign_root}"
RESULT_VARIABLE _omr_codesign_result
)
if(NOT _omr_codesign_result EQUAL 0)
message(FATAL_ERROR "macOS ad-hoc codesign of installed OpenMoonRay runtime failed")
endif()
]])
endif()

if(GLD STREQUAL "$ENV{STUDIO}")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/SDKScript
DESTINATION .
Expand All @@ -90,4 +116,3 @@ if(GLD STREQUAL "$ENV{STUDIO}")
GROUP_READ GROUP_WRITE
WORLD_READ)
endif()

20 changes: 11 additions & 9 deletions CMakeMacOSPresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
"name": "macos-environment",
"hidden": true,
"environment": {
"DEPS_ROOT" : "${sourceParentDir}/installs",
"BUILD_DIR" : "${sourceParentDir}/build",
"DEPS_ROOT" : "/Applications/MoonRay/installs",
"BUILD_DIR" : "/Applications/MoonRay/build",
"Boost_ROOT" : "$env{DEPS_ROOT}",
"TBB_ROOT": "$env{DEPS_ROOT}",
"Libuuid_ROOT" : "$env{DEPS_ROOT}",
"CppUnit_ROOT" : "$env{DEPS_ROOT}",
"ISPC" : "$env{DEPS_ROOT}/bin/ispc",
Expand All @@ -22,7 +23,7 @@
"PXR_INCLUDE_DIRS" : "$env{DEPS_ROOT}/include",
"Random123_ROOT" : "$env{DEPS_ROOT}",
"ZLIB_ROOT" : "$env{DEPS_ROOT}",
"OIIO_PYTHON" : "$env{DEPS_ROOT}/lib/python3.9/site-packages"
"OIIO_PYTHON" : "$env{DEPS_ROOT}/lib/python3.11/site-packages"
},
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{DEPS_ROOT}"
Expand All @@ -33,16 +34,17 @@
"hidden": true,
"inherits": "macos-environment",
"environment": {
"PREFIX_PXR" : "${sourceParentDir}/building/macOS/pxr-houdini",
"HOUDINI_INSTALL_DIR" : "/Applications/Houdini/Houdini20.0.751",
"PREFIX_PXR" : "/Applications/MoonRay/building/macOS/pxr-houdini",
"HOUDINI_INSTALL_DIR" : "/Applications/Houdini/Houdini20.5.684",
"PXR_LIB_PREFIX" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries",
"PXR_INCLUDE_PREFIX" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Resources/toolkit/include",
"PXR_DEPS_PREFIX" : "$env{DEPS_ROOT}",
"PXR_BOOST_PYTHON_LIB" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries/libhboost_python39-mt-a64.dylib"
"PXR_BOOST_PYTHON_LIB" : "$env{HOUDINI_INSTALL_DIR}/Frameworks/Houdini.framework/Versions/Current/Libraries/libhboost_python311.dylib"
},
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{DEPS_ROOT};$env{PREFIX_PXR}",
"MOONRAY_USE_HOUDINI": "TRUE"
"MOONRAY_USE_HOUDINI": "TRUE",
"BOOST_PYTHON_COMPONENT_NAME": "python311"
}
},
{
Expand All @@ -52,7 +54,7 @@
"binaryDir": "$env{BUILD_DIR}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_INSTALL_PREFIX": "${sourceParentDir}/installs/openmoonray"
"CMAKE_INSTALL_PREFIX": "/Applications/MoonRay/installs/openmoonray"
},
"generator": "Xcode"
},
Expand All @@ -63,7 +65,7 @@
"binaryDir": "$env{BUILD_DIR}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_INSTALL_PREFIX": "${sourceParentDir}/installs/openmoonray"
"CMAKE_INSTALL_PREFIX": "/Applications/MoonRay/installs/openmoonray"
},
"generator": "Xcode"
}
Expand Down
3 changes: 1 addition & 2 deletions building/Rocky9/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ set(CHAIN embree)

ExternalProject_Add(OpenColorIO
GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/OpenColorIO
GIT_TAG d1ef24cbf8021f642e42f45f50c2cd4cc77141ce # v2.2.1
GIT_TAG b35fb73b8674176098d3084deaa9da3d111d72d1 # v2.3.0
INSTALL_DIR ${InstallRoot}
CMAKE_ARGS
-DOCIO_BUILD_APPS=OFF
Expand Down Expand Up @@ -205,4 +205,3 @@ ExternalProject_Add(OptiXHeaders
DEPENDS ${CHAIN}
)
set(CHAIN OptiXHeaders)

33 changes: 21 additions & 12 deletions building/macOS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,17 @@ set(THIS_DIR ${CMAKE_CURRENT_SOURCE_DIR})

# User configurable settings
set(InstallRoot ${rootSrcDir}/../../../../installs CACHE FILEPATH "Install root for dependencies")
set(PythonVer 3.9.6 CACHE STRING "Python version (n.m), e.g. 3.6")
set(PythonVer 3.11 CACHE STRING "Python version (n.m), e.g. 3.6")
set(PythonRoot /usr CACHE FILEPATH "Location of Python install")
if(DEFINED ENV{HOUDINI_INSTALL_DIR})
set(_defaultHoudiniInstallDir "$ENV{HOUDINI_INSTALL_DIR}")
elseif(DEFINED ENV{HFS})
file(REAL_PATH "$ENV{HFS}/../../../../.." _defaultHoudiniInstallDir)
else()
set(_defaultHoudiniInstallDir "/Applications/Houdini/Houdini20.5.684")
endif()
set(HOUDINI_INSTALL_DIR "${_defaultHoudiniInstallDir}" CACHE PATH "Houdini install root")
set(HoudiniPythonRoot "${HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/${PythonVer}")

ExternalProject_Add(Blosc
GIT_REPOSITORY https://github.com/Blosc/c-blosc
Expand All @@ -39,11 +48,11 @@ ExternalProject_Add(Blosc
set(CHAIN Blosc)

ExternalProject_Add(Boost
URL https://sourceforge.net/projects/boost/files/boost/1.78.0/boost_1_78_0.tar.gz
URL https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.gz
UPDATE_COMMAND ./bootstrap.sh --prefix=${InstallRoot} --with-toolset=clang linkflags="-arch ${BOOST_ARCH}"
CONFIGURE_COMMAND ""
PATCH_COMMAND patch -p3 -N < ${THIS_DIR}/Boost.patch
BUILD_COMMAND ./b2 install ${JOBS_ARG} --user-config=${THIS_DIR}/user-config.jam --with_python variant=release link=shared threading=multi define=BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT=0
PATCH_COMMAND patch -p3 -N < ${THIS_DIR}/Boost.patch || true
BUILD_COMMAND ./b2 install ${JOBS_ARG} --user-config=${THIS_DIR}/user-config.jam --with-python python=${PythonVer} variant=release link=shared threading=multi architecture=arm address-model=64 define=BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT=0
BUILD_IN_SOURCE 1
INSTALL_COMMAND ""
DEPENDS ${CHAIN}
Expand Down Expand Up @@ -146,9 +155,10 @@ ExternalProject_Add(OpenVDB
set(CHAIN OpenVDB)

ExternalProject_Add(Log4CPlus
GIT_REPOSITORY https://github.com/log4cplus/log4cplus
GIT_TAG REL_2_0_5
URL https://github.com/log4cplus/log4cplus/releases/download/REL_2_0_5/log4cplus-2.0.5.tar.xz
PATCH_COMMAND patch -p1 -N < ${THIS_DIR}/log4plus-limit-threads.patch || true
COMMAND find . -name "Makefile.in" -exec touch {} +
COMMAND touch aclocal.m4 configure config.h.in
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ./configure --prefix ${InstallRoot}
BUILD_COMMAND make
Expand Down Expand Up @@ -215,7 +225,7 @@ set(CHAIN embree)

ExternalProject_Add(OpenColorIO
GIT_REPOSITORY https://github.com/AcademySoftwareFoundation/OpenColorIO
GIT_TAG 056b7b0cb0d087961e9dba75104820e44faf52a1 # v2.0.2
GIT_TAG b35fb73b8674176098d3084deaa9da3d111d72d1 # v2.3.0
BUILD_COMMAND make ${JOBS_ARG}
CMAKE_ARGS
-DCMAKE_PREFIX_PATH:PATH=${InstallRoot}
Expand Down Expand Up @@ -332,11 +342,11 @@ if(NOT NO_USD)
-DPXR_ENABLE_PYTHON_SUPPORT=ON
-DPXR_USE_PYTHON_3=ON
-DPXR_USE_DEBUG_PYTHON=OFF
-DPYTHON_EXECUTABLE=/usr/bin/python3
-DPYTHON_LIBRARY=/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/libpython3.9.dylib
-DPYTHON_INCLUDE_DIR=/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers
-DPYTHON_EXECUTABLE=${HoudiniPythonRoot}/bin/python${PythonVer}
-DPYTHON_LIBRARY=${HoudiniPythonRoot}/lib/libpython${PythonVer}.dylib
-DPYTHON_INCLUDE_DIR=${HoudiniPythonRoot}/include/python${PythonVer}
-DPYTHON_VERSION_MAJOR=3
-DPYTHON_VERSION_MINOR=9
-DPYTHON_VERSION_MINOR=11
-DTBB_USE_DEBUG_BUILD=OFF
-DPXR_BUILD_TESTS=OFF
-DPXR_BUILD_EXAMPLES=OFF
Expand Down Expand Up @@ -421,4 +431,3 @@ ExternalProject_Add(GLFW
DEPENDS ${CHAIN}
)
set(CHAIN GLFW)

6 changes: 3 additions & 3 deletions building/macOS/pxr-houdini/pxrConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Modified to use the version of USD with headers in $env{PXR_INCLUDE_PREFIX}
# and libs in $env{PXR_LIB_PREFIX}, with dependencies installed to $env{PXR_DEPS_PREFIX}
# $env{PXR_BOOST_PYTHON_LIB} must be set to the location of the boost_python so used by USD
# (Houdini names it libhboost_python39...)
# (Houdini names it libhboost_python311...)

# Defines the following variables:
# PXR_MAJOR_VERSION - Major version number.
Expand All @@ -17,9 +17,9 @@
get_filename_component(PXR_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

set(PXR_MAJOR_VERSION "0")
set(PXR_MINOR_VERSION "22")
set(PXR_MINOR_VERSION "25")
set(PXR_PATCH_VERSION "5")
set(PXR_VERSION "2205")
set(PXR_VERSION "2505")

include("${PXR_CMAKE_DIR}/pxrTargets.cmake")
set(libs "arch;tf;gf;js;trace;work;plug;vt;ar;kind;sdf;ndr;sdr;pcp;usd;usdGeom;usdVol;usdMedia;usdShade;usdLux;usdRender;usdHydra;usdRi;usdSkel;usdUI;usdUtils;usdPhysics;garch;hf;hio;cameraUtil;pxOsd;glf;hgi;hgiGL;hgiInterop;hd;hdSt;hdx;usdImaging;usdImagingGL;usdRiImaging;usdSkelImaging;usdVolImaging;usdAppUtils;usdviewq")
Expand Down
6 changes: 3 additions & 3 deletions building/macOS/pxr-houdini/pxrTargets-release.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -421,12 +421,12 @@ list(APPEND _IMPORT_CHECK_FILES_FOR_usdImagingGL "${_LIB_PREFIX}/libpxr_usdImagi
# Import target "usdRiImaging" for configuration "Release"
set_property(TARGET usdRiImaging APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(usdRiImaging PROPERTIES
IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_usdRiImaging.dylib"
IMPORTED_SONAME_RELEASE "libpxr_usdRiImaging.dylib"
IMPORTED_LOCATION_RELEASE "${_LIB_PREFIX}/libpxr_usdRiPxrImaging.dylib"
IMPORTED_SONAME_RELEASE "libpxr_usdRiPxrImaging.dylib"
)

list(APPEND _IMPORT_CHECK_TARGETS usdRiImaging )
list(APPEND _IMPORT_CHECK_FILES_FOR_usdRiImaging "${_LIB_PREFIX}/libpxr_usdRiImaging.dylib" )
list(APPEND _IMPORT_CHECK_FILES_FOR_usdRiImaging "${_LIB_PREFIX}/libpxr_usdRiPxrImaging.dylib" )

# Import target "usdSkelImaging" for configuration "Release"
set_property(TARGET usdSkelImaging APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
Expand Down
6 changes: 3 additions & 3 deletions building/macOS/pxr-houdini/pxrTargets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Modified to use the version of USD with headers in $env{PXR_INCLUDE_PREFIX}
# and libs in $env{PXR_LIB_PREFIX}, with dependencies installed to $env{PXR_DEPS_PREFIX}
# $env{PXR_BOOST_PYTHON_LIB} must be set to the location of the boost_python so used by USD
# (Houdini names it libhboost_python39...)
# (Houdini names it libhboost_python311...)

if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.6)
message(FATAL_ERROR "CMake >= 2.6.0 required")
Expand All @@ -17,8 +17,8 @@ cmake_policy(VERSION 2.6...3.21)
# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)

SET(HPYTHONLIB $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib)
SET(HPYTHONINC $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.9/include/python3.9)
SET(HPYTHONLIB $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.11/lib/libpython3.11.dylib)
SET(HPYTHONINC $ENV{HOUDINI_INSTALL_DIR}/Frameworks/Python.framework/Versions/3.11/include/python3.11)

# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_targetsDefined)
Expand Down
8 changes: 4 additions & 4 deletions building/macOS/user-config.jam
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using python : 3.9
: "/usr/bin/python3"
: "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers"
: "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib"
using python : 3.11
: "/Applications/Houdini/Houdini20.5.684/Frameworks/Houdini.framework/Versions/Current/Resources/bin/hython"
: "/Applications/Houdini/Houdini20.5.684/Frameworks/Python.framework/Versions/3.11/include/python3.11"
: "/Applications/Houdini/Houdini20.5.684/Frameworks/Python.framework/Versions/3.11/lib"
;
using clang : : : <compileflags>-"arch arm64" <linkflags>"-arch arm64" ;
42 changes: 42 additions & 0 deletions docs/Houdini21_macOS_PR_notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# PR Notes: Houdini 21 macOS Compatibility

## Reviewer Summary
Adds macOS/Houdini 21 compatibility updates required to build and install OpenMoonRay against Houdini 21 using Houdini-provided USD/PXR and Python 3.11. This includes Boost 1.82 alignment, dependency fetch/build fixes, Houdini USD library naming compatibility, and source-driven Houdini plugin payload installation. This branch validates build/install/selectability in Solaris, but does not resolve native DWA material authoring/render behavior in Houdini 21.

## Scope
- Build/dependency/install compatibility for Houdini 21 on macOS.
- No intended look/scene/rendering behavior change claim.
- No claim that native DWA Solaris authoring is fixed.

## Validated vs Not Resolved
| Area | Status | Notes |
|---|---|---|
| Dependency build | Validated | Build path completes with current compatibility adjustments. |
| Main configure/build | Validated | Houdini-target integration build path succeeds. |
| Install | Validated | Install path completes and plugin payload is install-driven. |
| Solaris renderer selectability | Validated | MoonRay selectable in Solaris viewport. |
| Native DWA material influence in Material Library / mtlx subnet | Not resolved | Native DWA nodes do not reliably drive visible render changes in simple test. |
| Light live-update behavior (`spread` example) | Not resolved | Manual IPR update required in observed tests. |
| Dome light with texture | Not resolved | Not working in current tested branch state. |

## Temporary Dependency Note
This branch may temporarily depend on a `moonray_dcc_plugins` fork/branch for Houdini 21 Python 3.11 payload alignment.
Current local kickoff pointer:
- branch: `houdini21-py311-kickoff`
- base commit: `eda4e57` (before additional fork commits)

Current intent for that fork is minimal:
- install-driven `python3.11libs` payload support
- required Houdini plugin payload continuity (`otls`, `soho`, `toolbar`, integration files)
- no broad OTL/authoring semantic rewrite

This fork kickoff is not fully stable as a native DWA workflow fix. Native DWA material behavior remains unresolved.

## Runtime Observation Captured During Simple DWA Test
- `{dispatcherExit} Message Dispatcher [libcomputation_progmcrt.dylib] : exiting : reason is 'socket was disconnected'`
- `{clientSocketError} SocketPeer::receive: Bad file descriptor`
- `signal ... 15`

## Reviewer Guidance
- Evaluate this PR primarily as compatibility/build/install integration work.
- Treat native DWA Solaris authoring/runtime issues as follow-up work outside this PR closure.
78 changes: 78 additions & 0 deletions docs/Houdini21_macOS_changes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Houdini 21 macOS Compatibility Changes

## Summary
Adds macOS/Houdini 21 compatibility updates required to build and install OpenMoonRay against Houdini 21 using Houdini-provided USD/PXR and Python 3.11. This includes Boost 1.82 alignment, dependency fetch/build fixes, Houdini USD library naming compatibility, and source-driven Houdini plugin payload installation. This branch validates build/install/selectability in Solaris, but does not resolve native DWA material authoring/render behavior in Houdini 21.

Compatibility and integration improved in this branch. Native DWA authoring/runtime behavior in Solaris remains unresolved.

## Tested Environment
- macOS Tahoe
- Xcode 26.0.1 class toolchain flow
- Houdini 21 series validation target:
- `21.0.680` (original PR target)
- `21.0.671` (current local validation path)

## Build/Dependency Changes
- Boost dependency alignment moved to `1.82.0`.
- Boost patch command made tolerant of already-applied state (`patch ... || true`).
- `log4cplus` dependency fetch moved from git tag checkout to release tarball:
- `https://github.com/log4cplus/log4cplus/releases/download/REL_2_0_5/log4cplus-2.0.5.tar.xz`
- `log4cplus` reproducible build workaround added before configure:
- `touch Makefile.in`
- `touch aclocal.m4 configure config.h.in`

These are build reproducibility fixes, not renderer/material behavior fixes.

## Python 3.11 Alignment
- Houdini 21 Python 3.11 include/lib/executable alignment was applied for USD/PXR integration in this branch.
- `building/macOS/user-config.jam` was moved from Python 3.9 config to Python 3.11 config for this compatibility track.
- Current pathing is validated for local Houdini 21 installs and should be parameterized before upstream hardening.

## Houdini USD/PXR Pathing
- Houdini USD integration uses Houdini-provided PXR paths and library resolution.
- Compatibility mapping included:
- `libpxr_usdRiImaging.dylib` -> `libpxr_usdRiPxrImaging.dylib`
- PXR metadata compatibility updates for Houdini 21 USD packaging were applied in `pxr-houdini` CMake metadata.

## Install Payload Changes
Source-driven install path includes Houdini plugin payload required for this branch validation:
- `otls`
- `soho`
- `python3.11libs`
- `toolbar` (where present in plugin payload layout)
- integration files under Houdini plugin tree

Manual post-install copying is not the intended validation path for this branch.

## Validation Results
- Dependency build: pass
- Main configure/build: pass
- Install: pass
- MoonRay renderer selectable in Solaris viewport: pass

## DWA Material Test Status
Status: unresolved in current build.

Observed behavior in Solaris Material Library / mtlx subnet:
- Native DWA nodes are visible/creatable, but do not reliably drive visible render changes in the simple test.
- Control path through `mtlxstandard_surface` can influence render, but this is not a native DWA workflow fix.

Observed runtime/disconnect signal during simple DWA tests:
- `{dispatcherExit} Message Dispatcher [libcomputation_progmcrt.dylib] : exiting : reason is 'socket was disconnected'`
- `{clientSocketError} SocketPeer::receive: Bad file descriptor`
- `signal ... 15`

## Known Unresolved Issues
- Native DWA material authoring/render influence in Solaris remains unresolved for this branch.
- Some light parameter edits (for example `spread`) require manual IPR refresh and do not always live-update automatically.
- Dome light textured workflow is currently not working in this tested branch state.

## Notes For Reviewers
- This branch should be reviewed as a Houdini 21 macOS build/install compatibility update.
- Do not treat native DWA node visibility/selectability as evidence that native DWA material workflow is fixed.
- No claim is made that MaterialX/native DWA Solaris authoring is production-ready in this branch.

## Future Cleanup / Upstreaming Notes
- Parameterize local Houdini/Python paths before upstream merge hardening.
- Keep compatibility/build fixes separated from shader authoring/runtime behavior work.
- Track native DWA Solaris authoring/runtime closure as a follow-up effort.
2 changes: 1 addition & 1 deletion moonray/hydra/hdMoonray
Submodule hdMoonray updated 78 files
+35 −2 CMakeLists.txt
+2 −2 cmake/HdMoonrayCompileOptions.cmake
+21 −0 cmd/hd_cmd/hd_render/CMakeLists.txt
+9 −1 cmd/hd_cmd/hd_render/FreeCamera.cc
+3 −1 cmd/hd_cmd/hd_render/FreeCamera.h
+17 −3 cmd/hd_cmd/hd_render/RenderOptions.cc
+5 −1 cmd/hd_cmd/hd_render/RenderOptions.h
+247 −15 cmd/hd_cmd/hd_render/hd_render.cc
+21 −0 cmd/hd_cmd/hd_usd2rdl/CMakeLists.txt
+9 −1 cmd/hd_cmd/hd_usd2rdl/FreeCamera.cc
+3 −1 cmd/hd_cmd/hd_usd2rdl/FreeCamera.h
+17 −3 cmd/hd_cmd/hd_usd2rdl/RenderOptions.cc
+5 −1 cmd/hd_cmd/hd_usd2rdl/RenderOptions.h
+247 −16 cmd/hd_cmd/hd_usd2rdl/hd_usd2rdl.cc
+589 −0 docs/hdMoonray_aov_audit.md
+341 −0 docs/hdMoonray_development_guide.md
+399 −0 docs/hdMoonray_development_patterns_from_features.md
+331 −0 docs/hdMoonray_feature_implementation_pattern.md
+101 −0 docs/hdMoonray_stable_vs_wip_matrix.md
+427 −0 docs/hdMoonray_validation_workflow.md
+150 −0 docs/houdini20_5_camera_framing_contract.md
+264 −0 docs/houdini20_5_hdMoonrayAdapters_compat.md
+290 −0 docs/houdini20_5_ocio_colormanagement.md
+374 −0 docs/houdini20_5_render_contract_final.md
+91 −0 docs/houdini20_5_render_contract_final_dirty_stack.md
+421 −0 docs/houdini20_5_renderprep_signal9_displacement_reduction.md
+343 −0 docs/houdini20_5_sceneindex_dirty_stack_audit.md
+145 −0 docs/houdini20_5_sceneindex_render_product_contract.md
+142 −0 docs/houdini20_5_solaris_ipr_warning_path.md
+273 −0 docs/houdini20_5_usd_hydra_render_contract.md
+164 −0 docs/units-and-scale-notes.md
+31 −0 lib/hydramoonray/CMakeLists.txt
+145 −4 lib/hydramoonray/Camera.cc
+436 −0 lib/hydramoonray/ColorManagement.cc
+42 −0 lib/hydramoonray/ColorManagement.h
+141 −36 lib/hydramoonray/Light.cc
+5 −5 lib/hydramoonray/Light.h
+229 −15 lib/hydramoonray/LightFilter.cc
+89 −2 lib/hydramoonray/Material.cc
+36 −11 lib/hydramoonray/Mesh.cc
+108 −0 lib/hydramoonray/PrimTypeUtils.cc
+22 −0 lib/hydramoonray/PrimTypeUtils.h
+198 −101 lib/hydramoonray/Primvars.cc
+53 −1 lib/hydramoonray/RenderBuffer.cc
+334 −19 lib/hydramoonray/RenderDelegate.cc
+27 −3 lib/hydramoonray/RenderDelegate.h
+114 −3 lib/hydramoonray/RenderPass.cc
+1 −1 lib/hydramoonray/RenderPass.h
+128 −0 lib/hydramoonray/RenderSettings.cc
+2 −0 lib/hydramoonray/RenderSettings.h
+2 −1 lib/hydramoonray/Renderer.h
+301 −26 lib/hydramoonray/ValueConverter.cc
+7 −3 lib/hydramoonray/ValueConverter.h
+10 −10 package.py
+27 −0 plugin/adapters/CMakeLists.txt
+26 −0 plugin/adapters/MoonrayLightFilterAdapter.cc
+10 −0 plugin/adapters/MoonrayLightFilterAdapter.h
+543 −0 plugin/adapters/compat/houdini20_5_usd24_xcode26/pxr/usd/sdf/childrenProxy.h
+180 −21 plugin/hd_moonray/ArrasRenderer.cc
+7 −0 plugin/hd_moonray/ArrasRenderer.h
+16 −2 plugin/houdini/UsdRenderers.json
+2 −2 testSuite/README.md
+79 −0 testSuite/aov/render_var_source_metadata/scene.usd
+17 −0 testSuite/aov/render_var_source_metadata/test.xml
+48 −0 testSuite/geometry/moonray_geometry_settings/README.md
+146 −0 testSuite/geometry/moonray_geometry_settings/geometry_settings.usda
+247 −0 testSuite/light/adapter_runtime/README.md
+116 −0 testSuite/light/adapter_runtime/moonray_h20_adapter_fixture.usda
+31 −0 testSuite/light/env_schema_v1/scene.usd
+17 −0 testSuite/light/env_schema_v1/test.xml
+5 −0 testSuite/runtime/h20_isolation/assets/dome_texture.ppm
+73 −0 testSuite/runtime/h20_isolation/bare_sphere_no_material.usda
+84 −0 testSuite/runtime/h20_isolation/bare_sphere_simple_material.usda
+77 −0 testSuite/runtime/h20_isolation/dome_constant_no_texture.usda
+78 −0 testSuite/runtime/h20_isolation/dome_texture.usda
+83 −0 testSuite/runtime/h20_isolation/dwa_material_no_dome.usda
+141 −0 testSuite/runtime/h20_isolation/generate_houdini_domelight_lop_fixture.py
+181 −0 testSuite/runtime/h20_isolation/generate_moonray_material_builder_fixture.py
Loading