def test_ShaderProperties(self): """ Test property correctness on the "TestShaderPropertiesNodeOSL" node. See shaderParserTestUtils TestShaderPropertiesNode method for detailed description of the test. """ URI = "TestShaderPropertiesNodeOSL.oso" sourceCode = "" metadata = {} blindData = "" discoveryResult = Ndr.NodeDiscoveryResult( "TestShaderPropertiesNodeOSL", # Identifier Ndr.Version(), # Version "TestShaderPropertiesNodeOSL", # Name "", # Family "oso", # Discovery type (extension) "OSL", # Source type URI, # URI URI, # Resolved URI sourceCode, # sourceCode metadata, # metadata blindData # blindData ) node = SdrOsl.OslParser().Parse(discoveryResult) assert node is not None utils.TestShaderPropertiesNode(node)
def test_ShaderProperties(self): """ Test property correctness on the "TestShaderPropertiesNodeUSD" node. See shaderParserTestUtils TestShaderPropertiesNode method for detailed description of the test. """ stage = Usd.Stage.Open('shaderDefs.usda') shaderDef = UsdShade.Shader.Get(stage, "/TestShaderPropertiesNodeUSD") discoveryResults = UsdShade.ShaderDefUtils.GetNodeDiscoveryResults( shaderDef, stage.GetRootLayer().realPath) self.assertEqual(len(discoveryResults), 1) discoveryResult = discoveryResults[0] node = UsdShade.ShaderDefParserPlugin().Parse(discoveryResult) assert node is not None self.assertEqual(os.path.basename(node.GetResolvedImplementationURI()), "TestShaderPropertiesNode.glslfx") self.assertEqual(os.path.basename(node.GetResolvedDefinitionURI()), "shaderDefs.usda") utils.TestShaderPropertiesNode(node)
def test_ShaderProperties(self): """ Test property correctness on the "TestShaderPropertiesNodeUSD" node. See shaderParserTestUtils TestShaderPropertiesNode method for detailed description of the test. """ stage = Usd.Stage.Open('shaderDefs.usda') shaderDef = UsdShade.Shader.Get(stage, "/TestShaderPropertiesNodeUSD") discoveryResults = UsdShade.ShaderDefUtils.GetNodeDiscoveryResults( shaderDef, stage.GetRootLayer().realPath) self.assertEqual(len(discoveryResults), 1) discoveryResult = discoveryResults[0] node = UsdShade.ShaderDefParserPlugin().Parse(discoveryResult) assert node is not None self.assertEqual(os.path.basename(node.GetResolvedImplementationURI()), "TestShaderPropertiesNode.glslfx") self.assertEqual(os.path.basename(node.GetResolvedDefinitionURI()), "shaderDefs.usda") # Test GetOptions on an attribute via allowdTokens and # sdrMetadata["options"] expectedOptionsList = [('token1', ''), ('token2', '')] self.assertEqual( node.GetInput("testAllowedTokens").GetOptions(), expectedOptionsList) self.assertEqual( node.GetInput("testMetadataOptions").GetOptions(), expectedOptionsList) # sdrMetadata options will win over explicitly specified allowedTokens # on the attr. attr = shaderDef.GetPrim(). \ GetAttribute('inputs:testAllowedTokenAndMetdataOptions') expectedMetdataOptions = "token3|token4" expectedAttrAllowedTokens = ["token1", "token2"] expectedOptionsList = [('token3', ''), ('token4', '')] self.assertEqual(node.GetInput("testAllowedTokenAndMetdataOptions"). \ GetMetadata()["options"], expectedMetdataOptions) self.assertEqual([t for t in attr.GetMetadata('allowedTokens')], expectedAttrAllowedTokens) self.assertEqual(node.GetInput("testAllowedTokenAndMetdataOptions"). \ GetOptions(), expectedOptionsList) # Test sdrUsdDefinitionType sdrMetadata and GetTypeAsSdfType actualBoolInput = node.GetInput('actualBool') attr = shaderDef.GetPrim(). \ GetAttribute('inputs:actualBool') self.assertEqual(attr.GetTypeName(), Sdf.ValueTypeNames.Bool) # Bool types are registered as Int via sdr, if no sdrUsdDefinitionType # provided self.assertEqual(actualBoolInput.GetTypeAsSdfType()[0], Sdf.ValueTypeNames.Bool) self.assertEqual(actualBoolInput.GetType(), Sdf.ValueTypeNames.Int) intButBoolInput = node.GetInput('intButBool') attr = shaderDef.GetPrim(). \ GetAttribute('inputs:intButBool') self.assertEqual(attr.GetTypeName(), Sdf.ValueTypeNames.Int) self.assertEqual(intButBoolInput.GetTypeAsSdfType()[0], Sdf.ValueTypeNames.Bool) self.assertEqual(intButBoolInput.GetType(), Sdf.ValueTypeNames.Int) utils.TestShaderPropertiesNode(node)