Skip to content

Commit

Permalink
Merge pull request #5975 from GafferHQ/arnoldImagerMetadataFix
Browse files Browse the repository at this point in the history
ArnoldShaderUI : Fix Imager metadata support for Arnold 7.3
  • Loading branch information
johnhaddon authored Jul 31, 2024
2 parents 9c929e0 + 0a4e5b0 commit 32cd2cf
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 2 deletions.
5 changes: 5 additions & 0 deletions Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ Improvements

- SetExpressions : Set Expressions containing only whitespace characters are now treated as empty rather than producing an error.

Fixes
-----

- Arnold : Fixed bug preventing UI metadata for Imagers from being loaded for Arnold 7.3.

1.4.10.0 (relative to 1.4.9.0)
========

Expand Down
2 changes: 1 addition & 1 deletion SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -972,7 +972,7 @@ if env["ARNOLD_ROOT"] :
shell = True
)

nodeDefRegex = re.compile( r"\s*([a-zA-Z0-9_]+)\s+(driver|color_manager|driver|filter|light|operator|options|override|shader|shape)" )
nodeDefRegex = re.compile( r"\s*([a-zA-Z0-9_]+)\s+(driver|color_manager|driver|filter|imager|light|operator|options|override|shader|shape)" )
nodes = set()
for line in kickOutput.split( "\n" ) :
m = nodeDefRegex.match( line )
Expand Down
7 changes: 6 additions & 1 deletion python/GafferArnoldUI/ArnoldShaderUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,9 +461,14 @@ def addActivator( activator ) :
if value is not None :
__metadata[paramPath][gafferKey] = value

if [ int( x ) for x in arnold.AiGetVersion()[:3] ] < [ 7, 3, 1 ] :
__AI_NODE_IMAGER = arnold.AI_NODE_DRIVER
else :
__AI_NODE_IMAGER = arnold.AI_NODE_IMAGER

with IECoreArnold.UniverseBlock( writable = False ) :

nodeIt = arnold.AiUniverseGetNodeEntryIterator( arnold.AI_NODE_SHADER | arnold.AI_NODE_LIGHT | arnold.AI_NODE_COLOR_MANAGER | arnold.AI_NODE_DRIVER )
nodeIt = arnold.AiUniverseGetNodeEntryIterator( arnold.AI_NODE_SHADER | arnold.AI_NODE_LIGHT | arnold.AI_NODE_COLOR_MANAGER | __AI_NODE_IMAGER )
while not arnold.AiNodeEntryIteratorFinished( nodeIt ) :

__translateNodeMetadata( arnold.AiNodeEntryIteratorGetNext( nodeIt ) )
Expand Down
25 changes: 25 additions & 0 deletions python/GafferArnoldUITest/ArnoldShaderUITest.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,31 @@ def testLightMetadata( self ) :
Gaffer.Metadata.value( light["parameters"]["format"], "presetNames" ),
)

def testImagerMetadata( self ) :

shader = GafferArnold.ArnoldShader()
shader.loadShader( "imager_white_balance" )

self.assertEqual(
Gaffer.Metadata.value( shader["parameters"]["mode"], "nodule:type" ),
""
)

self.assertEqual(
Gaffer.Metadata.value( shader["parameters"]["mode"], "plugValueWidget:type" ),
"GafferUI.PresetsPlugValueWidget"
)

self.assertEqual(
Gaffer.Metadata.value( shader["parameters"]["mode"], "presetNames" ),
IECore.StringVectorData( [ "illuminant", "temperature", "custom" ] ),
)

self.assertEqual(
Gaffer.Metadata.value( shader["parameters"]["mode"], "presetValues" ),
Gaffer.Metadata.value( shader["parameters"]["mode"], "presetNames" ),
)

def testUserDefaultMetadata( self ) :

cacheFilePath = self.temporaryDirectory() / "testShaderUserDefaults.scc"
Expand Down

0 comments on commit 32cd2cf

Please sign in to comment.