Skip to content

Commit 21eaf50

Browse files
ShaderNetworkAlgo : Remove functions deprecated in 10.4.7.0
1 parent 5d1bedc commit 21eaf50

File tree

6 files changed

+26
-189
lines changed

6 files changed

+26
-189
lines changed

Changes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
10.x.x.x (relative to 10.6.x.x)
22
========
33

4+
Breaking Changes
5+
----------------
46

7+
- IECoreScene::ShaderNetworkAlgo : Removed deprecated functions componentConnectionAdapterLabel, convertOSLComponentConnections, collapseSplineParameters, expandSplineParameters.
58

69
10.6.x.x (relative to 10.6.1.0)
710
========

contrib/IECoreUSD/src/IECoreUSD/ShaderAlgo.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,12 @@ namespace
6565
{
6666

6767
const pxr::TfToken g_blindDataToken( "cortex:blindData" );
68-
pxr::TfToken g_legacyAdapterLabelToken( IECoreScene::ShaderNetworkAlgo::componentConnectionAdapterLabel().string() );
68+
69+
// Hardcoded to match an old name used by Cortex when writing USD with OSL version earlier than 1.10 (
70+
// ie. a pre-2021 version of gafferDependencies ). We no longer expose this in the API, but I'm not sure
71+
// if we're ready to drop support for loading these old files.
72+
IECore::InternedString g_legacyAdapterLabelString( "cortex_autoAdapter" );
73+
pxr::TfToken g_legacyAdapterLabelToken( g_legacyAdapterLabelString.string() );
6974

7075
std::pair<pxr::TfToken, std::string> shaderIdAndType( const pxr::UsdShadeConnectableAPI &connectable )
7176
{
@@ -267,7 +272,7 @@ IECore::InternedString readShaderNetworkWalk( const pxr::SdfPath &anchorPath, co
267272
pxr::VtValue metadataValue;
268273
if( usdShader.GetPrim().GetMetadata( g_legacyAdapterLabelToken, &metadataValue ) && metadataValue.Get<bool>() )
269274
{
270-
newShader->blindData()->writable()[ IECoreScene::ShaderNetworkAlgo::componentConnectionAdapterLabel() ] = new IECore::BoolData( true );
275+
newShader->blindData()->writable()[ g_legacyAdapterLabelString ] = new IECore::BoolData( true );
271276
}
272277

273278
shaderNetwork.addShader( handle, std::move( newShader ) );

include/IECoreScene/ShaderNetworkAlgo.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,6 @@ IECORESCENE_API void registerJoinAdapter( const std::string &destinationShaderTy
9595
/// Removes an adapter registration.
9696
IECORESCENE_API void deregisterJoinAdapter( const std::string &destinationShaderType, IECore::TypeId destinationParameterType );
9797

98-
/// \deprecated
99-
IECORESCENE_API const IECore::InternedString &componentConnectionAdapterLabel();
100-
10198
/// Converts various aspects of how shaders are stored to be ready to pass directly to OSL.
10299
/// The `oslVersion` argument is used to determine how conversion is performed, and should be passed a
103100
/// value of `OSL_VERSION`. Conversions include:
@@ -113,15 +110,6 @@ IECORESCENE_API const IECore::InternedString &componentConnectionAdapterLabel();
113110
/// using an adapter shader.
114111
IECORESCENE_API void convertToOSLConventions( ShaderNetwork *network, int oslVersion );
115112

116-
/// Finds connections involving the individual components of point/color parameters, and converts them
117-
/// for use with OSL. The `oslVersion` argument is used to determine how conversion is performed,
118-
/// and should be passed a value of `OSL_VERSION`. For OSL prior to 1.10, intermediate shaders are
119-
/// inserted to emulate connections between components. For later versions, no new shaders are inserted, but
120-
/// components are renamed from our `.x, .y, .z` suffixes to OSL's `[0], [1], [2]` suffixes.
121-
/// \deprecated: Use convertToOSLConventions instead
122-
IECORESCENE_API void convertOSLComponentConnections( ShaderNetwork *network );
123-
IECORESCENE_API void convertOSLComponentConnections( ShaderNetwork *network, int oslVersion );
124-
125113
/// Converts from the legacy ObjectVector format previously used to represent shader networks.
126114
IECORESCENE_API ShaderNetworkPtr convertObjectVector( const IECore::ObjectVector *network );
127115

@@ -147,16 +135,6 @@ IECORESCENE_API void collapseSplines( ShaderNetwork *network, std::string target
147135
/// If `targetPrefix` is given, only translates connections to shaders with a type starting with this string
148136
IECORESCENE_API void expandSplines( ShaderNetwork *network, std::string targetPrefix = "" );
149137

150-
151-
/// \deprecated: Use collapseSplines on the whole network, which can handle input connections, and supports
152-
/// different spline conventions for different renderers' shader libraries
153-
IECORESCENE_API IECore::ConstCompoundDataPtr collapseSplineParameters( const IECore::ConstCompoundDataPtr& parametersData );
154-
155-
/// \deprecated: Use expandSplines on the whole network, which can handle input connections, and supports
156-
/// different spline conventions for different renderers' shader libraries
157-
IECORESCENE_API IECore::ConstCompoundDataPtr expandSplineParameters( const IECore::ConstCompoundDataPtr& parametersData );
158-
159-
160138
} // namespace ShaderNetworkAlgo
161139

162140
} // namespace IECoreScene

src/IECoreScene/ShaderNetworkAlgo.cpp

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,12 @@ const bool g_defaultAdapterRegistrations = [] () {
269269
return true;
270270
} ();
271271

272+
const InternedString &componentConnectionAdapterLabel()
273+
{
274+
static InternedString ret( "cortex_autoAdapter" );
275+
return ret;
276+
}
277+
272278
bool isSplitAdapter( const Shader *shader, InternedString &component, InternedString &inParameter, InternedString &outParameter )
273279
{
274280
if( auto *d = shader->blindData()->member<InternedStringData>( g_splitAdapterComponent ) )
@@ -283,7 +289,7 @@ bool isSplitAdapter( const Shader *shader, InternedString &component, InternedSt
283289
}
284290
return true;
285291
}
286-
else if( auto *b = shader->blindData()->member<BoolData>( ShaderNetworkAlgo::componentConnectionAdapterLabel() ) )
292+
else if( auto *b = shader->blindData()->member<BoolData>( componentConnectionAdapterLabel() ) )
287293
{
288294
// Legacy format.
289295
if( b->readable() && shader->getName() == "MaterialX/mx_swizzle_color_float" )
@@ -313,7 +319,7 @@ bool isJoinAdapter( const Shader *shader, std::array<InternedString, 4> &inParam
313319
return true;
314320
}
315321
}
316-
else if( auto *b = shader->blindData()->member<BoolData>( ShaderNetworkAlgo::componentConnectionAdapterLabel() ) )
322+
else if( auto *b = shader->blindData()->member<BoolData>( componentConnectionAdapterLabel() ) )
317323
{
318324
// Legacy format.
319325
if( b->readable() && shader->getName() == "MaterialX/mx_pack_color" )
@@ -590,12 +596,6 @@ void ShaderNetworkAlgo::deregisterJoinAdapter( const std::string &destinationSha
590596
joinAdapters()[destinationShaderType].erase( destinationParameterType );
591597
}
592598

593-
const InternedString &ShaderNetworkAlgo::componentConnectionAdapterLabel()
594-
{
595-
static InternedString ret( "cortex_autoAdapter" );
596-
return ret;
597-
}
598-
599599
//////////////////////////////////////////////////////////////////////////
600600
// OSL Utilities
601601
//////////////////////////////////////////////////////////////////////////
@@ -624,20 +624,13 @@ ShaderNetwork::Parameter convertComponentSuffix( const ShaderNetwork::Parameter
624624
);
625625
}
626626

627-
} // namespace
628-
629-
void ShaderNetworkAlgo::convertOSLComponentConnections( ShaderNetwork *network )
630-
{
631-
convertOSLComponentConnections( network, 10900 /* OSL 1.9 */ );
632-
}
633-
634-
void ShaderNetworkAlgo::convertOSLComponentConnections( ShaderNetwork *network, int oslVersion )
627+
void convertOSLComponentConnections( ShaderNetwork *network, int oslVersion )
635628
{
636629
if( oslVersion < 11000 )
637630
{
638631
// OSL doesn't support component-level connections,
639632
// so we emulate them by inserting conversion shaders for OSL nodes.
640-
addComponentConnectionAdapters( network, "osl:" );
633+
ShaderNetworkAlgo::addComponentConnectionAdapters( network, "osl:" );
641634
return;
642635
}
643636

@@ -681,6 +674,9 @@ void ShaderNetworkAlgo::convertOSLComponentConnections( ShaderNetwork *network,
681674
}
682675
}
683676

677+
} // namespace
678+
679+
684680
void ShaderNetworkAlgo::convertToOSLConventions( ShaderNetwork *network, int oslVersion )
685681
{
686682
expandSplines( network, "osl:" );
@@ -1434,41 +1430,3 @@ void ShaderNetworkAlgo::expandSplines( ShaderNetwork *network, std::string targe
14341430

14351431
}
14361432
}
1437-
1438-
IECore::ConstCompoundDataPtr ShaderNetworkAlgo::collapseSplineParameters( const IECore::ConstCompoundDataPtr &parametersData )
1439-
{
1440-
return collapseSplineParametersInternal( parametersData, "" );
1441-
}
1442-
1443-
IECore::ConstCompoundDataPtr ShaderNetworkAlgo::expandSplineParameters( const IECore::ConstCompoundDataPtr &parametersData )
1444-
{
1445-
const CompoundDataMap &parameters( parametersData->readable() );
1446-
1447-
CompoundDataPtr newParametersData;
1448-
CompoundDataMap *newParameters = nullptr;
1449-
1450-
for( const auto &i : parameters )
1451-
{
1452-
if( const SplinefColor3fData *colorSpline = runTimeCast<const SplinefColor3fData>( i.second.get() ) )
1453-
{
1454-
ensureParametersCopy( parameters, newParametersData, newParameters );
1455-
newParameters->erase( i.first );
1456-
expandSpline( i.first, colorSpline->readable(), *newParameters, "" );
1457-
}
1458-
else if( const SplineffData *floatSpline = runTimeCast<const SplineffData>( i.second.get() ) )
1459-
{
1460-
ensureParametersCopy( parameters, newParametersData, newParameters );
1461-
newParameters->erase( i.first );
1462-
expandSpline( i.first, floatSpline->readable(), *newParameters, "" );
1463-
}
1464-
}
1465-
1466-
if( newParametersData )
1467-
{
1468-
return newParametersData;
1469-
}
1470-
else
1471-
{
1472-
return parametersData;
1473-
}
1474-
}

src/IECoreScene/bindings/ShaderNetworkAlgoBinding.cpp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,26 +65,6 @@ void registerJoinAdapterWrapper( const std::string &destinationShaderType, IECor
6565
ShaderNetworkAlgo::registerJoinAdapter( destinationShaderType, destinationParameterType, adapter, inParameters, outParameter );
6666
}
6767

68-
void convertOSLComponentConnectionsWrapper( ShaderNetwork *network, int oslVersion )
69-
{
70-
ShaderNetworkAlgo::convertOSLComponentConnections( network, oslVersion );
71-
}
72-
73-
CompoundDataPtr collapseSplineParametersWrapper( CompoundDataPtr parameters )
74-
{
75-
return boost::const_pointer_cast< CompoundData >( ShaderNetworkAlgo::collapseSplineParameters( parameters ) );
76-
}
77-
78-
CompoundDataPtr expandSplineParametersWrapper( CompoundDataPtr parameters )
79-
{
80-
return boost::const_pointer_cast< CompoundData >( ShaderNetworkAlgo::expandSplineParameters( parameters ) );
81-
}
82-
83-
std::string componentConnectionAdapterLabelWrapper()
84-
{
85-
return ShaderNetworkAlgo::componentConnectionAdapterLabel().string();
86-
}
87-
8868
} // namespace
8969

9070
void IECoreSceneModule::bindShaderNetworkAlgo()
@@ -101,13 +81,9 @@ void IECoreSceneModule::bindShaderNetworkAlgo()
10181
def( "deregisterSplitAdapter", &ShaderNetworkAlgo::deregisterSplitAdapter, ( arg( "destinationShaderType" ), arg( "component" ) ) );
10282
def( "registerJoinAdapter", &registerJoinAdapterWrapper, ( arg( "destinationShaderType" ), arg( "destinationParameterType" ), arg( "adapter" ), arg( "inParameters" ), arg( "outParameter" ) ) );
10383
def( "deregisterJoinAdapter", &ShaderNetworkAlgo::deregisterJoinAdapter, ( arg( "destinationShaderType" ), arg( "destinationParameterType" ) ) );
104-
def( "componentConnectionAdapterLabel", &componentConnectionAdapterLabelWrapper );
10584
def( "convertToOSLConventions", &ShaderNetworkAlgo::convertToOSLConventions );
106-
def( "convertOSLComponentConnections", &convertOSLComponentConnectionsWrapper, ( arg( "network" ), arg( "oslVersion" ) = 10900 ) );
10785
def( "convertObjectVector", &ShaderNetworkAlgo::convertObjectVector );
10886
def( "collapseSplines", &ShaderNetworkAlgo::collapseSplines, ( arg( "network" ), arg( "targetPrefix" ) = "" ) );
10987
def( "expandSplines", &ShaderNetworkAlgo::expandSplines, ( arg( "network" ), arg( "targetPrefix" ) = "" ) );
110-
def( "collapseSplineParameters", &collapseSplineParametersWrapper );
111-
def( "expandSplineParameters", &expandSplineParametersWrapper );
11288

11389
}

test/IECoreScene/ShaderNetworkAlgoTest.py

Lines changed: 3 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -116,45 +116,6 @@ def testRemoveUnusedShaders( self ) :
116116

117117
def testConvertColorComponentOutputConnection( self ) :
118118

119-
# OSL < 1.10
120-
121-
n = IECoreScene.ShaderNetwork(
122-
shaders = {
123-
"texture" : IECoreScene.Shader( "noise", "osl:shader" ),
124-
"surface" : IECoreScene.Shader( "plastic", "osl:surface" ),
125-
},
126-
connections = [
127-
( ( "texture", "out.r" ), ( "surface", "Kd" ) ),
128-
( ( "texture", "out.g" ), ( "surface", "Ks" ) ),
129-
( ( "texture", "out.g" ), ( "surface", "Kt" ) ),
130-
],
131-
output = "surface"
132-
)
133-
134-
self.assertEqual( len( n ), 2 )
135-
136-
IECoreScene.ShaderNetworkAlgo.convertOSLComponentConnections( n )
137-
self.assertEqual( len( n ), 4 )
138-
139-
self.assertEqual( len( n.inputConnections( "surface" ) ), 3 )
140-
self.assertEqual( len( n.inputConnections( "texture" ) ), 0 )
141-
142-
kdInput = n.input( ( "surface", "Kd" ) )
143-
self.assertEqual( kdInput.name, "out" )
144-
self.assertEqual( n.getShader( kdInput.shader ).type, "osl:shader" )
145-
self.assertEqual( n.getShader( kdInput.shader ).name, "MaterialX/mx_swizzle_color_float" )
146-
self.assertEqual( n.getShader( kdInput.shader ).parameters["channels"].value, "r" )
147-
148-
ksInput = n.input( ( "surface", "Ks" ) )
149-
self.assertEqual( ksInput.name, "out" )
150-
self.assertEqual( n.getShader( ksInput.shader ).type, "osl:shader" )
151-
self.assertEqual( n.getShader( ksInput.shader ).name, "MaterialX/mx_swizzle_color_float" )
152-
self.assertEqual( n.getShader( ksInput.shader ).parameters["channels"].value, "g" )
153-
154-
self.assertEqual( n.input( ( "surface", "Kt" ) ), ksInput )
155-
156-
# OSL > 1.10
157-
158119
n = IECoreScene.ShaderNetwork(
159120
shaders = {
160121
"texture" : IECoreScene.Shader( "noise", "osl:shader" ),
@@ -170,7 +131,7 @@ def testConvertColorComponentOutputConnection( self ) :
170131

171132
self.assertEqual( len( n ), 2 )
172133

173-
IECoreScene.ShaderNetworkAlgo.convertOSLComponentConnections( n, 11000 )
134+
IECoreScene.ShaderNetworkAlgo.convertToOSLConventions( n, 11000 )
174135
self.assertEqual( len( n ), 2 )
175136

176137
self.assertEqual( len( n.inputConnections( "surface" ) ), 3 )
@@ -182,8 +143,6 @@ def testConvertColorComponentOutputConnection( self ) :
182143

183144
def testConvertColorComponentInputConnection( self ) :
184145

185-
# OSL < 1.10
186-
187146
n = IECoreScene.ShaderNetwork(
188147
shaders = {
189148
"texture1" : IECoreScene.Shader( "floatNoise", "osl:shader" ),
@@ -202,49 +161,7 @@ def testConvertColorComponentInputConnection( self ) :
202161

203162
self.assertEqual( len( n ), 3 )
204163

205-
IECoreScene.ShaderNetworkAlgo.convertOSLComponentConnections( n )
206-
self.assertEqual( len( n ), 4 )
207-
208-
self.assertFalse( n.input( ( "surface", "Cs.r" ) ) )
209-
self.assertFalse( n.input( ( "surface", "Cs.g" ) ) )
210-
self.assertFalse( n.input( ( "surface", "Cs.b" ) ) )
211-
212-
csInput = n.input( ( "surface", "Cs" ) )
213-
self.assertEqual( csInput.name, "out" )
214-
215-
packShader = n.getShader( csInput.shader )
216-
self.assertEqual( packShader.name, "MaterialX/mx_pack_color" )
217-
self.assertEqual( packShader.type, "osl:shader" )
218-
219-
self.assertEqual( packShader.parameters["in1"], IECore.FloatData( 0.2 ) )
220-
self.assertEqual( packShader.parameters["in2"], IECore.FloatData( 0.3 ) )
221-
self.assertEqual( packShader.parameters["in3"], IECore.FloatData( 0.4 ) )
222-
223-
self.assertEqual( n.input( ( csInput.shader, "in1" ) ), ( "texture1", "out" ) )
224-
self.assertEqual( n.input( ( csInput.shader, "in2" ) ), ( "", "" ) )
225-
self.assertEqual( n.input( ( csInput.shader, "in3" ) ), ( "texture2", "out" ) )
226-
227-
# OSL > 1.10
228-
229-
n = IECoreScene.ShaderNetwork(
230-
shaders = {
231-
"texture1" : IECoreScene.Shader( "floatNoise", "osl:shader" ),
232-
"texture2" : IECoreScene.Shader( "floatNoise", "osl:shader" ),
233-
"surface" : IECoreScene.Shader(
234-
"plastic", "osl:surface",
235-
parameters = { "Cs" : imath.Color3f( 0.2, 0.3, 0.4 ) }
236-
)
237-
},
238-
connections = [
239-
( ( "texture1", "out" ), ( "surface", "Cs.r" ) ),
240-
( ( "texture2", "out" ), ( "surface", "Cs.b" ) ),
241-
],
242-
output = "surface"
243-
)
244-
245-
self.assertEqual( len( n ), 3 )
246-
247-
IECoreScene.ShaderNetworkAlgo.convertOSLComponentConnections( n, 11000 )
164+
IECoreScene.ShaderNetworkAlgo.convertToOSLConventions( n, 11000 )
248165
self.assertEqual( len( n ), 3 )
249166

250167
self.assertEqual( n.input( ( "surface", "Cs[0]" ) ), ( "texture1", "out" ) )
@@ -268,7 +185,7 @@ def testArnoldComponentConnectionsNotConverted( self ) :
268185
)
269186

270187
n2 = n.copy()
271-
IECoreScene.ShaderNetworkAlgo.convertOSLComponentConnections( n2 )
188+
IECoreScene.ShaderNetworkAlgo.convertToOSLConventions( n2, 11000 )
272189
self.assertEqual( n, n2 )
273190

274191
def testAddRemoveComponentConnectionAdapters( self ) :

0 commit comments

Comments
 (0)