MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / getInputsRoIsFunctor

Method getInputsRoIsFunctor

Engine/ParallelRenderArgs.cpp:314–542  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312} // EffectInstance::treeRecurseFunctor
313
314StatusEnum
315EffectInstance::getInputsRoIsFunctor(bool useTransforms,
316 double time,
317 ViewIdx view,
318 unsigned originalMipMapLevel,
319 const NodePtr& node,
320 const NodePtr& /*callerNode*/,
321 const NodePtr& treeRoot,
322 const RectD& canonicalRenderWindow,
323 FrameRequestMap& requests)
324{
325 NodeFrameRequestPtr nodeRequest;
326 EffectInstancePtr effect = node->getEffectInstance();
327
328 assert(effect);
329
330 if (effect->supportsRenderScaleMaybe() == EffectInstance::eSupportsMaybe) {
331 /*
332 If this flag was not set already that means it probably failed all calls to getRegionOfDefinition.
333 We safely fail here
334 */
335 return eStatusFailed;
336 }
337 assert(effect->supportsRenderScaleMaybe() == EffectInstance::eSupportsNo ||
338 effect->supportsRenderScaleMaybe() == EffectInstance::eSupportsYes);
339 bool supportsRs = effect->supportsRenderScale();
340 unsigned int mappedLevel = supportsRs ? originalMipMapLevel : 0;
341 FrameRequestMap::iterator foundNode = requests.find(node);
342 if ( foundNode != requests.end() ) {
343 nodeRequest = foundNode->second;
344 } else {
345 ///Setup global data for the node for the whole frame render
346
347 NodeFrameRequestPtr tmp = std::make_shared<NodeFrameRequest>();
348 tmp->mappedScale.x = tmp->mappedScale.y = Image::getScaleFromMipMapLevel(mappedLevel);
349 tmp->nodeHash = effect->getRenderHash();
350
351 std::pair<FrameRequestMap::iterator, bool> ret = requests.insert( std::make_pair(node, tmp) );
352 assert(ret.second);
353 nodeRequest = ret.first->second;
354 }
355 assert(nodeRequest);
356
357 ///Okay now we concentrate on this particular frame/view pair
358
359 FrameViewPair frameView;
360 frameView.time = time;
361 frameView.view = view;
362
363 FrameViewRequest* fvRequest = 0;
364 NodeFrameViewRequestData::iterator foundFrameView = nodeRequest->frames.find(frameView);
365 double par = effect->getAspectRatio(-1);
366 ViewInvarianceLevel viewInvariance = effect->isViewInvariant();
367
368
369 if ( foundFrameView != nodeRequest->frames.end() ) {
370 fvRequest = &foundFrameView->second;
371 } else {

Callers

nothing calls this directly

Calls 15

getEffectInstanceMethod · 0.80
supportsRenderScaleMethod · 0.80
getRenderHashMethod · 0.80
toPixelEnclosingMethod · 0.80
isIdentity_publicMethod · 0.80
ViewIdxClass · 0.70
findMethod · 0.45

Tested by

no test coverage detected