Skip to content

Commit db60740

Browse files
IECoreUSD::ShaderAlgo : Use new expandSplines / collapseSplines
1 parent 3686760 commit db60740

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

contrib/IECoreUSD/src/IECoreUSD/ShaderAlgo.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,6 @@ IECore::InternedString readShaderNetworkWalk( const pxr::SdfPath &anchorPath, co
187187

188188
readAdditionalLightParameters( usdShader.GetPrim(), parameters );
189189

190-
parametersData = boost::const_pointer_cast< IECore::CompoundData >( IECoreScene::ShaderNetworkAlgo::collapseSplineParameters( parametersData ) );
191-
192190
IECoreScene::ShaderPtr newShader = new IECoreScene::Shader( shaderName, shaderType, parametersData );
193191
pxr::VtValue metadataValue;
194192
if( usdShader.GetPrim().GetMetadata( g_adapterLabelToken, &metadataValue ) && metadataValue.Get<bool>() )
@@ -224,6 +222,7 @@ IECoreScene::ShaderNetwork::Parameter readShaderNetworkWalk( const pxr::SdfPath
224222
pxr::UsdShadeOutput IECoreUSD::ShaderAlgo::writeShaderNetwork( const IECoreScene::ShaderNetwork *shaderNetwork, pxr::UsdPrim shaderContainer )
225223
{
226224
IECoreScene::ShaderNetworkPtr shaderNetworkWithAdapters = shaderNetwork->copy();
225+
IECoreScene::ShaderNetworkAlgo::expandSplines( shaderNetworkWithAdapters.get() );
227226
IECoreScene::ShaderNetworkAlgo::addComponentConnectionAdapters( shaderNetworkWithAdapters.get() );
228227

229228
IECoreScene::ShaderNetwork::Parameter networkOutput = shaderNetworkWithAdapters->getOutput();
@@ -258,11 +257,7 @@ pxr::UsdShadeOutput IECoreUSD::ShaderAlgo::writeShaderNetwork( const IECoreScene
258257
}
259258
usdShader.SetShaderId( pxr::TfToken( typePrefix + shader.second->getName() ) );
260259

261-
262-
IECore::ConstCompoundDataPtr expandedParameters = IECoreScene::ShaderNetworkAlgo::expandSplineParameters(
263-
shader.second->parametersData()
264-
);
265-
for( const auto &p : expandedParameters->readable() )
260+
for( const auto &p : shader.second->parametersData()->readable() )
266261
{
267262
pxr::UsdShadeInput input = usdShader.CreateInput(
268263
toUSDParameterName( p.first ),
@@ -355,6 +350,7 @@ IECoreScene::ShaderNetworkPtr IECoreUSD::ShaderAlgo::readShaderNetwork( const px
355350
result->setOutput( outputHandle );
356351

357352
IECoreScene::ShaderNetworkAlgo::removeComponentConnectionAdapters( result.get() );
353+
IECoreScene::ShaderNetworkAlgo::collapseSplines( result.get() );
358354

359355
return result;
360356
}

contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2632,6 +2632,12 @@ def testShaders( self ) :
26322632
dest.parameters["a"] = IECore.Color3fData( imath.Color3f( 0.0 ) )
26332633
dest.parameters["b"] = IECore.Color3fData( imath.Color3f( 0.0 ) )
26342634
dest.parameters["c"] = IECore.FloatData( 0.0 )
2635+
dest.parameters["sf"] = IECore.SplineffData( IECore.Splineff( IECore.CubicBasisf.catmullRom(),
2636+
( ( 0, 1 ), ( 10, 2 ), ( 20, 0 ), ( 30, 1 ) )
2637+
) )
2638+
dest.parameters["sc"] = IECore.SplinefColor3fData( IECore.SplinefColor3f( IECore.CubicBasisf.linear(),
2639+
( ( 0, imath.Color3f(1) ), ( 10, imath.Color3f(2) ), ( 20, imath.Color3f(0) ) )
2640+
) )
26352641

26362642
componentConnectionNetwork = IECoreScene.ShaderNetwork()
26372643
componentConnectionNetwork.addShader( "source1", add1 )
@@ -2664,6 +2670,24 @@ def testShaders( self ) :
26642670
) )
26652671
componentConnectionNetwork.setOutput( IECoreScene.ShaderNetwork.Parameter( "dest", "" ) )
26662672

2673+
# Float to spline element connection
2674+
componentConnectionNetwork.addConnection( IECoreScene.ShaderNetwork.Connection(
2675+
IECoreScene.ShaderNetwork.Parameter( "source1", "out" ),
2676+
IECoreScene.ShaderNetwork.Parameter( "dest", "sf[3].y" )
2677+
) )
2678+
2679+
# Color to spline element connection
2680+
componentConnectionNetwork.addConnection( IECoreScene.ShaderNetwork.Connection(
2681+
IECoreScene.ShaderNetwork.Parameter( "source3", "out" ),
2682+
IECoreScene.ShaderNetwork.Parameter( "dest", "sc[2].y" )
2683+
) )
2684+
2685+
# Float to spline element component connection
2686+
componentConnectionNetwork.addConnection( IECoreScene.ShaderNetwork.Connection(
2687+
IECoreScene.ShaderNetwork.Parameter( "source1", "out" ),
2688+
IECoreScene.ShaderNetwork.Parameter( "dest", "sc[0].y.g" )
2689+
) )
2690+
26672691
# If we manually create the shaders that are used as adapters for component connections,
26682692
# they should not be automatically removed on import. ( This is implemented using
26692693
# a label for automatically created adapters, stored as blindData in Cortex that is

0 commit comments

Comments
 (0)