@@ -57,74 +57,71 @@ _UpdatePrimvars(HdPrimvarsSchema primvars)
5757
5858 // boolean attributes that migrated from string to int
5959 // XXX array loop
60- if (HdPrimvarSchema primvar =
61- primvars.GetPrimvar (_tokens->riAttributesDiceRasterOrient )) {
62- if (HdStringDataSourceHandle strDs =
63- HdStringDataSource::Cast (primvar.GetPrimvarValue ())) {
64- std::string strVal = strDs->GetTypedValue (0 .0f );
65- bool boolVal = (strVal == " Yes" );
66- // Overlay boolean value
67- primvarsEditor.Overlay (
68- HdDataSourceLocator (
69- _tokens->riAttributesDiceRasterOrient ),
70- HdPrimvarSchema::Builder ()
71- .SetPrimvarValue (
72- HdRetainedTypedSampledDataSource<bool >::New (boolVal))
73- .Build ());
74- }
60+ HdPrimvarSchema primvar =
61+ primvars.GetPrimvar (_tokens->riAttributesDiceRasterOrient );
62+ if (HdStringDataSourceHandle strDs =
63+ HdStringDataSource::Cast (primvar.GetPrimvarValue ())) {
64+ std::string strVal = strDs->GetTypedValue (0 .0f );
65+ bool boolVal = (strVal == " Yes" );
66+ // Overlay boolean value
67+ primvarsEditor.Overlay (
68+ HdDataSourceLocator (
69+ _tokens->riAttributesDiceRasterOrient ),
70+ HdPrimvarSchema::Builder ()
71+ .SetPrimvarValue (
72+ HdRetainedTypedSampledDataSource<bool >::New (boolVal))
73+ .Build ());
7574 }
7675
7776 // shade:shadingrate -> dice:micropolygonlength
78- if (HdPrimvarSchema shadingRate =
79- primvars.GetPrimvar (_tokens->riAttributesShadeShadingRate )) {
80- if (primvars.GetPrimvar (_tokens->riAttributesDiceMicropolyonLength )) {
81- // If micropolygonlength is already set, leave as-is.
82- } else {
83- // Convert shadingrate to micropolygonlength
84- if (HdFloatArrayDataSourceHandle rateDs =
85- HdFloatArrayDataSource::Cast (shadingRate.GetPrimvarValue ())) {
86- VtArray<float > rateVal = rateDs->GetTypedValue (0 .0f );
87- if (rateVal.size () == 2 ) {
88- // Use 1st component only
89- float shadingRate_0 = rateVal[0 ];
90- // micropolygonlength = sqrt(shadingRate[0])
91- float micropolygonLength = sqrt (shadingRate_0);
92- primvarsEditor.Overlay (
93- HdDataSourceLocator (
94- _tokens->riAttributesDiceMicropolyonLength ),
95- HdPrimvarSchema::Builder ()
96- .SetPrimvarValue (
97- HdRetainedTypedSampledDataSource<float >::New (
98- micropolygonLength))
99- .SetInterpolation (
100- HdPrimvarSchema::BuildInterpolationDataSource (
101- HdPrimvarSchemaTokens->constant ))
102- .Build ());
103- }
77+ HdPrimvarSchema shadingRate =
78+ primvars.GetPrimvar (_tokens->riAttributesShadeShadingRate );
79+ if (primvars.GetPrimvar (_tokens->riAttributesDiceMicropolyonLength )) {
80+ // If micropolygonlength is already set, leave as-is.
81+ } else {
82+ // Convert shadingrate to micropolygonlength
83+ if (HdFloatArrayDataSourceHandle rateDs =
84+ HdFloatArrayDataSource::Cast (shadingRate.GetPrimvarValue ())) {
85+ VtArray<float > rateVal = rateDs->GetTypedValue (0 .0f );
86+ if (rateVal.size () == 2 ) {
87+ // Use 1st component only
88+ float shadingRate_0 = rateVal[0 ];
89+ // micropolygonlength = sqrt(shadingRate[0])
90+ float micropolygonLength = sqrt (shadingRate_0);
91+ primvarsEditor.Overlay (
92+ HdDataSourceLocator (
93+ _tokens->riAttributesDiceMicropolyonLength ),
94+ HdPrimvarSchema::Builder ()
95+ .SetPrimvarValue (
96+ HdRetainedTypedSampledDataSource<float >::New (
97+ micropolygonLength))
98+ .SetInterpolation (
99+ HdPrimvarSchema::BuildInterpolationDataSource (
100+ HdPrimvarSchemaTokens->constant ))
101+ .Build ());
104102 }
105103 }
106104 // Erase shadingrate
107105 primvarsEditor.Set (
108106 HdDataSourceLocator (_tokens->riAttributesShadeShadingRate ),
109107 HdBlockDataSource::New ());
110108 }
111-
109+
112110 // trace:displacements:
113111 // Values above 1 are deprecated, and are now equivalent to 1.
114- if (HdPrimvarSchema traceDisplacements =
115- primvars.GetPrimvar (_tokens->riAttributesTraceDisplacements )) {
116- if (HdIntDataSourceHandle intDs =
117- HdIntDataSource::Cast (traceDisplacements.GetPrimvarValue ())) {
118- if (intDs->GetTypedValue (0 ) > 1 ) {
119- // Overlay a new value of 1
120- primvarsEditor.Overlay (
121- HdDataSourceLocator (
122- _tokens->riAttributesTraceDisplacements ),
123- HdPrimvarSchema::Builder ()
124- .SetPrimvarValue (
125- HdRetainedTypedSampledDataSource<int >::New (1 ))
126- .Build ());
127- }
112+ HdPrimvarSchema traceDisplacements =
113+ primvars.GetPrimvar (_tokens->riAttributesTraceDisplacements );
114+ if (HdIntDataSourceHandle intDs =
115+ HdIntDataSource::Cast (traceDisplacements.GetPrimvarValue ())) {
116+ if (intDs->GetTypedValue (0 ) > 1 ) {
117+ // Overlay a new value of 1
118+ primvarsEditor.Overlay (
119+ HdDataSourceLocator (
120+ _tokens->riAttributesTraceDisplacements ),
121+ HdPrimvarSchema::Builder ()
122+ .SetPrimvarValue (
123+ HdRetainedTypedSampledDataSource<int >::New (1 ))
124+ .Build ());
128125 }
129126 }
130127
@@ -141,11 +138,7 @@ class HdPrman_UpdateObjectSettings_DataSource
141138 TfTokenVector
142139 GetNames () override
143140 {
144- TfTokenVector result;
145- if (_inputPrimDs) {
146- result = _inputPrimDs->GetNames ();
147- }
148- return result;
141+ return _inputPrimDs->GetNames ();
149142 }
150143
151144 HdDataSourceBaseHandle
@@ -157,11 +150,7 @@ class HdPrman_UpdateObjectSettings_DataSource
157150 return _UpdatePrimvars (primvars);
158151 }
159152 }
160- if (_inputPrimDs) {
161- return _inputPrimDs->Get (name);
162- }
163-
164- return nullptr ;
153+ return _inputPrimDs->Get (name);
165154 }
166155
167156protected:
@@ -187,55 +176,59 @@ HdPrman_UpdateObjectSettingsSceneIndex::New(
187176}
188177
189178HdPrman_UpdateObjectSettingsSceneIndex::HdPrman_UpdateObjectSettingsSceneIndex (
190- const HdSceneIndexBaseRefPtr &inputSceneIndex)
179+ const HdSceneIndexBaseRefPtr &inputSceneIndex)
191180: HdSingleInputFilteringSceneIndexBase(inputSceneIndex)
192181{ }
193182
194183HdSceneIndexPrim
195184HdPrman_UpdateObjectSettingsSceneIndex::GetPrim (
196- const SdfPath &primPath) const
185+ const SdfPath &primPath) const
197186{
198187 const HdSceneIndexPrim prim = _GetInputSceneIndex ()->GetPrim (primPath);
199- return {
200- prim.primType ,
201- HdPrman_UpdateObjectSettings_DataSource::New (prim.dataSource )
202- };
188+
189+ if (prim.dataSource ) {
190+ return {
191+ prim.primType ,
192+ HdPrman_UpdateObjectSettings_DataSource::New (prim.dataSource )
193+ };
194+ }
195+ return prim;
203196}
204197
205198SdfPathVector
206199HdPrman_UpdateObjectSettingsSceneIndex::GetChildPrimPaths (
207- const SdfPath &primPath) const
200+ const SdfPath &primPath) const
208201{
209202 return _GetInputSceneIndex ()->GetChildPrimPaths (primPath);
210203}
211204
212205void
213206HdPrman_UpdateObjectSettingsSceneIndex::_PrimsAdded (
214- const HdSceneIndexBase &sender,
215- const HdSceneIndexObserver::AddedPrimEntries &entries)
207+ const HdSceneIndexBase &sender,
208+ const HdSceneIndexObserver::AddedPrimEntries &entries)
216209{
217210 _SendPrimsAdded (entries);
218211}
219212
220213void
221214HdPrman_UpdateObjectSettingsSceneIndex::_PrimsRemoved (
222- const HdSceneIndexBase &sender,
223- const HdSceneIndexObserver::RemovedPrimEntries &entries)
215+ const HdSceneIndexBase &sender,
216+ const HdSceneIndexObserver::RemovedPrimEntries &entries)
224217{
225218 _SendPrimsRemoved (entries);
226219}
227220
228221void
229222HdPrman_UpdateObjectSettingsSceneIndex::_PrimsDirtied (
230- const HdSceneIndexBase &sender,
231- const HdSceneIndexObserver::DirtiedPrimEntries &entries)
223+ const HdSceneIndexBase &sender,
224+ const HdSceneIndexObserver::DirtiedPrimEntries &entries)
232225{
233226 // XXX transfer primvar dirtiness
234227 _SendPrimsDirtied (entries);
235228}
236229
237- HdPrman_UpdateObjectSettingsSceneIndex::~HdPrman_UpdateObjectSettingsSceneIndex ()
238- = default ;
230+ HdPrman_UpdateObjectSettingsSceneIndex::
231+ ~HdPrman_UpdateObjectSettingsSceneIndex () = default ;
239232
240233PXR_NAMESPACE_CLOSE_SCOPE
241234
0 commit comments