Skip to content

Commit

Permalink
Merge fix-7.2.5 to master (#1858)
Browse files Browse the repository at this point in the history
* Update tests after arnold changes on curves (#1766)

(cherry picked from commit 2fcc262)

* Fix the incorrect orientation of the PointInstancer instances in the render delegate (#1777)

* add test for #1776

* Initialize the rotation matrix with the quad directly

* update changelog for #1776

* Fix changelog for 7.2.5 release (#1788)

* More changelog fixes

* handle vertex interpolated uvs on bspline curves (#1792)

* FIx the error "Cannot load _htoa_pygeo library required for volume rendering in Solaris" (#1811)

* Improve material network creation times by caching the nodes returned by Arnold (#1813)

* Improve material network creation by caching the nodes returned by arnold

* optimize further by first checking if the shader is an arnold shader

* move shader node entry and osl code cache in the render delegate and use lock/mutex

* cache materialx nodes only

* Fix build with older versions of arnold (#1820)

* fix build with older versions of arnold

* fix compatibility with older versions of arnold

* convert AtString to string

* allow materialx for versions > 7.1.4

* fix ifdef versions for materialx

* compatibility with older arnold versions

* update changelog for fix-7.2.5.0 (#1827)

* Fix crash happening in maya aiStandin when scrolling the timeline (#1830)

* make the UsdArnoldReaderRegistry non static

* register readers before reading

* Convert the ArnoldProceduralCustom transform matrix to Arnold in the procedural code (#1832)

* read the matrix in the ArnoldProceduralCustom procedural reader

* update test_0739 reference image

* rename unrelease to fix-7.2.5 to follow master convention (#1843)

* Update tests after core changes in fix-7.2.5 (#1849)

* Changed HtoAConvertPrimVdbToArnold symbol lookup from pythonX.Xlibs/_htoa_pygeo lookup to scripts/bin/htoa_geo.dll (#1850)

* update fix-7.2.5 changelog for 7.2.5.2 (#1856)

* update fix-7.2.5 changelog for 7.2.5.2

* correct version

* Fix merge conflict

* Temporarily remove test_0202 from the hydra group

* Fix slowness in the render delegate due to scene update when the camera moves (#1855)

* fix the test of the camera type

* update changelog

* merge and fix changelog

* Remove legacy code

* Fixing changelog

* Fix indentation

---------

Co-authored-by: cpichard <cpichard@users.noreply.github.com>
Co-authored-by: Tom Minor <5022079+TomMinor@users.noreply.github.com>
  • Loading branch information
3 people committed Feb 15, 2024
1 parent 2454acb commit 04409d3
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 21 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,15 @@
## [fix-7.2.5]

### Bug fixes
- [usd#1854](https://github.com/Autodesk/arnold-usd/issues/1854) - Fix unnecessary updating of the scene in the render delegate when the camera is moving. This improves the interactivity in Solaris.

## [7.2.5.2]

### Bug fixes
- [usd#1808](https://github.com/Autodesk/arnold-usd/issues/1808) - Fix the error "Cannot load _htoa_pygeo library required for volume rendering in Solaris" in Houdini 19.5+.
- [usd#1812](https://github.com/Autodesk/arnold-usd/issues/1812) - Improve Material network creation by caching the node entries and the osl code.
- [usd#1781](https://github.com/Autodesk/arnold-usd/issues/1781) - Fix a crash happening in a aiStandin usd when scrolling the timeline in maya.
- [usd#1753](https://github.com/Autodesk/arnold-usd/issues/1753) - Fix a problem with yeti where the transforms of the ArnolProceduralCustom were not taken into account in kick (procedural).

## [7.2.5.1] - 2024-01-18

Expand Down
4 changes: 2 additions & 2 deletions libs/render_delegate/camera.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ void HdArnoldCamera::Sync(HdSceneDelegate* sceneDelegate, HdRenderParam* renderP

// Check if the user changed the projection type
if (isPersp) {
if (AtString(AiNodeEntryGetTypeName(AiNodeGetNodeEntry(_camera))) != str::persp_camera) {
if (!AiNodeIs(_camera, str::persp_camera)) {
// the name might be the same ??
AtNode *newCamera = _delegate->CreateArnoldNode(str::persp_camera, AtString(GetId().GetText()));
SetCamera(newCamera);
Expand All @@ -281,7 +281,7 @@ void HdArnoldCamera::Sync(HdSceneDelegate* sceneDelegate, HdRenderParam* renderP
const auto fov = static_cast<float>(GfRadiansToDegrees(atan(1.0 / projMatrix[0][0]) * 2.0));
AiNodeSetFlt(_camera, str::fov, fov);
} else if (isOrtho) {
if (AtString(AiNodeEntryGetTypeName(AiNodeGetNodeEntry(_camera))) != str::ortho_camera) {
if (!AiNodeIs(_camera, str::ortho_camera)) {
AtNode *newCamera = _delegate->CreateArnoldNode(str::ortho_camera, AtString(GetId().GetText()));
SetCamera(newCamera);
AiNodeSetStr(newCamera, str::name, AtString(GetId().GetText()));
Expand Down
8 changes: 7 additions & 1 deletion libs/render_delegate/render_delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,13 @@ class HdArnoldRenderDelegate final : public HdRenderDelegate {

void ProcessConnections();

#if ARNOLD_VERSION_NUM > 70203
const AtNodeEntry * GetMtlxCachedNodeEntry (const std::string &nodeEntryKey, const AtString &nodeType, AtParamValueMap *params);
#endif
#if ARNOLD_VERSION_NUM >= 70104
AtString GetCachedOslCode (const std::string &oslCacheKey, const AtString &nodeType, AtParamValueMap *params);
#endif

std::vector<AtNode*> _nodes;

void RegisterMeshLight(AtNode *meshLight) {
Expand Down Expand Up @@ -766,7 +773,6 @@ class HdArnoldRenderDelegate final : public HdRenderDelegate {
bool _renderDelegateOwnsUniverse;

std::unordered_map<std::string, AtNode *> _nodeNames;

};

PXR_NAMESPACE_CLOSE_SCOPE
33 changes: 16 additions & 17 deletions libs/render_delegate/volume.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,43 +119,42 @@ struct HtoAFnSet {
/// installed in a path containing `;` or `&`.
constexpr auto convertVdbName = "HtoAConvertPrimVdbToArnold";
const auto HOUDINI_PATH = ArchGetEnv("HOUDINI_PATH");
auto searchForPygeo = [&](const std::string& path) -> bool {
auto searchForLibHtoaGeo = [&](const std::string& path) -> bool {
if (path == "&") {
return false;
}
std::string dsoPath;
void* htoaPygeo = nullptr;
#ifdef ARCH_OS_WINDOWS
std::string ext = ".dll";
#if defined(ARCH_OS_WINDOWS)
constexpr const char* htoaGeoDso = "htoa_geo.dll";
#elif defined(ARCH_OS_LINUX)
constexpr const char* htoaGeoDso = "libhtoa_geo.so";
#elif defined(ARCH_OS_OSX)
constexpr const char* htoaGeoDso = "libhtoa_geo.dylib";
#else
std::string ext = ".so";
TF_WARN("Error loading %s - unsupported architecture", convertVdbName);
return false;
#endif
// TODO: we need to find a solution that doesn't require to add the future python version of houdini
std::array<std::string, 4> pythonVersions = {"2.7", "3.7", "3.9", "3.10"};
for (const auto &pyVer : pythonVersions) {
dsoPath = path + ARCH_PATH_SEP + "python" + pyVer + "libs" + ARCH_PATH_SEP + "_htoa_pygeo" + ext;
htoaPygeo = ArchLibraryOpen(dsoPath, ARCH_LIBRARY_NOW);
if (htoaPygeo) break;
}
if (!htoaPygeo) {

const std::string dsoPath = path + ARCH_PATH_SEP + "scripts" ARCH_PATH_SEP + "bin" + ARCH_PATH_SEP + htoaGeoDso;
void* htoaGeo = ArchLibraryOpen(dsoPath, ARCH_LIBRARY_NOW);
if (!htoaGeo) {
return false;
}
convertPrimVdbToArnold = reinterpret_cast<HtoAConvertPrimVdbToArnold>(GETSYM(htoaPygeo, convertVdbName));
convertPrimVdbToArnold = reinterpret_cast<HtoAConvertPrimVdbToArnold>(GETSYM(htoaGeo, convertVdbName));
if (convertPrimVdbToArnold == nullptr) {
TF_WARN("Error loading %s from %s", convertVdbName, dsoPath.c_str());
}
return true;
};
const auto houdiniPaths = TfStringSplit(HOUDINI_PATH, ARCH_PATH_LIST_SEP);
for (const auto& houdiniPath : houdiniPaths) {
if (searchForPygeo(houdiniPath)) {
if (searchForLibHtoaGeo(houdiniPath)) {
return;
}
#ifndef ARCH_OS_WINDOWS
if (TfStringContains(houdiniPath, ";")) {
const auto subPaths = TfStringSplit(houdiniPath, ";");
for (const auto& subPath : subPaths) {
if (searchForPygeo(subPath)) {
if (searchForLibHtoaGeo(subPath)) {
return;
}
}
Expand Down
1 change: 1 addition & 0 deletions libs/translator/reader/read_geometry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1662,6 +1662,7 @@ AtNode* UsdArnoldReadProceduralCustom::Read(const UsdPrim &prim, UsdArnoldReader
std::string nodeType = VtValueGetString(value);
AtNode *node = context.CreateArnoldNode(nodeType.c_str(), prim.GetPath().GetText());

ReadMatrix(prim, node, time, context);
ReadPrimvars(prim, node, time, context);
ReadMaterialBinding(prim, node, context, false); // don't assign the default shader
ReadArnoldParameters(prim, context, node, time, "arnold");
Expand Down
4 changes: 3 additions & 1 deletion testsuite/groups
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ darwin:
# SPECIAL TEST GROUPS #
#######################
# Tests that can be run in hydra mode
hydra: test_0000 test_0001 test_0002 test_0003 test_0004 test_0005 test_0006 test_0007 test_0008 test_0009 test_0010 test_0011 test_0012 test_0014 test_0016 test_0017 test_0018 test_0019 test_0020 test_0021 test_0022 test_0023 test_0024 test_0025 test_0026 test_0027 test_0028 test_0029 test_0030 test_0031 test_0032 test_0033 test_0034 test_0038 test_0041 test_0046 test_0048 test_0049 test_0055 test_0057 test_0112 test_0130 test_0132 test_0133 test_0135 test_0139 test_0140 test_0141 test_0142 test_0143 test_0144 test_0145 test_0148 test_0149 test_0150 test_0151 test_0158 test_0159 test_0161 test_0162 test_0163 test_0164 test_0165 test_0166 test_0168 test_0169 test_0170 test_0171 test_0172 test_0173 test_0174 test_0175 test_0177 test_0178 test_0180 test_0183 test_0184 test_0186 test_0187 test_0188 test_0189 test_0191 test_0194 test_0195 test_0196 test_0197 test_0198 test_0200 test_0201 test_0204 test_0205 test_0206 test_0207 test_0215 test_0216 test_0217 test_0219 test_0220 test_0221 test_0222 test_0223 test_0225 test_0227 test_0228 test_0229 test_0230 test_0299 test_0232 test_0233 test_0234 test_0238 test_0239 test_0240 test_0242 test_0243 test_0244 test_0245 test_0316 test_0739 test_1181 test_1204 test_1209 test_1225 test_1245 test_1262 test_1294 test_1309 test_1311 test_1313 test_1333 test_1334 test_1346 test_1416 test_1420 test_1426 test_1427.3 test_1430 test_1433 test_1435 test_1438 test_1457 test_1486 test_1499 test_1524 test_1525 test_1530 test_1535 test_1538 test_1546 test_1550 test_1567 test_1588 test_1590 test_1593 test_1607 test_1613 test_1625 test_1632 test_1635 test_1654 test_1657 test_1678 test_1705 test_1718 test_1726 test_1730 test_1735 test_1769 test_1772 test_14028

hydra: test_0000 test_0001 test_0002 test_0003 test_0004 test_0005 test_0006 test_0007 test_0008 test_0009 test_0010 test_0011 test_0012 test_0014 test_0016 test_0017 test_0018 test_0019 test_0020 test_0021 test_0022 test_0023 test_0024 test_0025 test_0026 test_0027 test_0028 test_0029 test_0030 test_0031 test_0032 test_0033 test_0034 test_0038 test_0041 test_0046 test_0048 test_0049 test_0055 test_0057 test_0112 test_0130 test_0132 test_0133 test_0135 test_0139 test_0140 test_0141 test_0142 test_0143 test_0144 test_0145 test_0148 test_0149 test_0150 test_0151 test_0158 test_0159 test_0161 test_0162 test_0163 test_0164 test_0165 test_0166 test_0168 test_0169 test_0170 test_0171 test_0172 test_0173 test_0174 test_0175 test_0177 test_0178 test_0180 test_0183 test_0184 test_0186 test_0187 test_0188 test_0189 test_0191 test_0194 test_0195 test_0196 test_0197 test_0198 test_0200 test_0201 test_0204 test_0205 test_0206 test_0207 test_0215 test_0216 test_0217 test_0219 test_0220 test_0221 test_0222 test_0223 test_0225 test_0227 test_0228 test_0229 test_0230 test_0232 test_0233 test_0234 test_0238 test_0239 test_0240 test_0242 test_0243 test_0244 test_0245 test_0299 test_0316 test_0739 test_1181 test_1204 test_1209 test_1225 test_1245 test_1262 test_1294 test_1309 test_1311 test_1313 test_1333 test_1334 test_1346 test_1416 test_1420 test_1426 test_1427.3 test_1430 test_1433 test_1435 test_1438 test_1457 test_1486 test_1499 test_1524 test_1525 test_1530 test_1535 test_1538 test_1546 test_1550 test_1567 test_1588 test_1590 test_1593 test_1607 test_1613 test_1625 test_1632 test_1635 test_1654 test_1657 test_1678 test_1705 test_1718 test_1726 test_1730 test_1735 test_1769 test_1772 test_14028


# Tests in this group will never be executed (you can use it to temporarily disable some tests and/or groups)
ignore:
Expand Down
2 changes: 2 additions & 0 deletions testsuite/test_0739/data/scene.usda
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ def ArnoldProceduralCustom "myinstancer"
string arnold:node_entry = "instancer"
uint[] arnold:node_idxs = [0, 0, 1, 1, 2,2]
string[] arnold:nodes = ["/cube", "/sphere", "/cone"]
matrix4d xformOp:transform:transform1 = ( (1.2, 0, 0, 0), (0, 1.2, 0, 0), (0, 0, 1.2, 0), (0, 0, 0, 1) )
uniform token[] xformOpOrder = ["xformOp:transform:transform1"]
}


Expand Down
Binary file modified testsuite/test_0739/ref/reference.tif
Binary file not shown.

0 comments on commit 04409d3

Please sign in to comment.