Files
renderdoc/docs/python_api/examples/renderdoc/iter_actions.rst
T
baldurk d0accc409b Rename 'name' member of ActionDescription to 'customName'
* This is a deliberate break of compatibility since the field is now often
  empty, for non-markers. This means code will get a more explicit error when
  the name is being referenced, so it can be updated to fetch the name it needs
  as needed.
2021-07-01 15:15:05 +01:00

162 lines
6.5 KiB
ReStructuredText

Iterate Action tree
===================
In this example we will show how to iterate over actions.
The actions returned from :py:meth:`~renderdoc.ReplayController.GetRootActions` are actions or marker regions at the root level - with no parent marker region. There are multiple ways to iterate through the list of actions.
The first way illustrated in this sample is to walk the tree using :py:attr:`~renderdoc.ActionDescription.children`, which contains the list of child actions at any point in the tree. There is also :py:attr:`~renderdoc.ActionDescription.parent` which points to the parent action.
The second is to use :py:attr:`~renderdoc.ActionDescription.previous` and :py:attr:`~renderdoc.ActionDescription.next`, which point to the previous and next action respectively in a linear fashion, regardless of nesting depth.
In the example we use this iteration to determine the number of passes, using the action flags to denote the start of each pass by a starting clear call.
Example Source
--------------
.. only:: html and not htmlhelp
:download:`Download the example script <iter_actions.py>`.
.. literalinclude:: iter_actions.py
Sample output:
.. sourcecode:: text
1: Scene
2: ID3D11DeviceContext::ClearRenderTargetView()
3: ID3D11DeviceContext::ClearDepthStencilView()
9: ID3D11DeviceContext::ClearRenderTargetView()
10: ID3D11DeviceContext::ClearRenderTargetView()
11: ID3D11DeviceContext::ClearDepthStencilView()
13: GBuffer
25: Floor
28: ID3D11DeviceContext::DrawIndexed()
29: empty label
30: ID3DUserDefinedAnnotation::EndEvent()
40: Base
43: ID3D11DeviceContext::DrawIndexed()
53: Center sphere
56: ID3D11DeviceContext::DrawIndexed()
66: Cone
69: ID3D11DeviceContext::DrawIndexed()
79: Cone
82: ID3D11DeviceContext::DrawIndexed()
92: Cone
95: ID3D11DeviceContext::DrawIndexed()
105: Cone
108: ID3D11DeviceContext::DrawIndexed()
118: Cone
121: ID3D11DeviceContext::DrawIndexed()
131: Cone
134: ID3D11DeviceContext::DrawIndexed()
144: Cone
147: ID3D11DeviceContext::DrawIndexed()
157: Cone
160: ID3D11DeviceContext::DrawIndexed()
170: Cone
173: ID3D11DeviceContext::DrawIndexed()
183: Cone
186: ID3D11DeviceContext::DrawIndexed()
196: Sphere
199: ID3D11DeviceContext::DrawIndexed()
209: Sphere
212: ID3D11DeviceContext::DrawIndexed()
222: Sphere
225: ID3D11DeviceContext::DrawIndexed()
235: Sphere
238: ID3D11DeviceContext::DrawIndexed()
248: Sphere
251: ID3D11DeviceContext::DrawIndexed()
261: Sphere
264: ID3D11DeviceContext::DrawIndexed()
274: Sphere
277: ID3D11DeviceContext::DrawIndexed()
287: Sphere
290: ID3D11DeviceContext::DrawIndexed()
300: Sphere
303: ID3D11DeviceContext::DrawIndexed()
313: Sphere
316: ID3D11DeviceContext::DrawIndexed()
317: ID3DUserDefinedAnnotation::EndEvent()
319: ID3D11DeviceContext::ClearDepthStencilView()
321: Shadowmap
330: Floor
333: ID3D11DeviceContext::DrawIndexed()
334: empty label
335: ID3DUserDefinedAnnotation::EndEvent()
342: Base
345: ID3D11DeviceContext::DrawIndexed()
352: Center sphere
355: ID3D11DeviceContext::DrawIndexed()
362: Cone
365: ID3D11DeviceContext::DrawIndexed()
372: Cone
375: ID3D11DeviceContext::DrawIndexed()
382: Cone
385: ID3D11DeviceContext::DrawIndexed()
392: Cone
395: ID3D11DeviceContext::DrawIndexed()
402: Cone
405: ID3D11DeviceContext::DrawIndexed()
412: Cone
415: ID3D11DeviceContext::DrawIndexed()
422: Cone
425: ID3D11DeviceContext::DrawIndexed()
432: Cone
435: ID3D11DeviceContext::DrawIndexed()
442: Cone
445: ID3D11DeviceContext::DrawIndexed()
452: Cone
455: ID3D11DeviceContext::DrawIndexed()
462: Sphere
465: ID3D11DeviceContext::DrawIndexed()
472: Sphere
475: ID3D11DeviceContext::DrawIndexed()
482: Sphere
485: ID3D11DeviceContext::DrawIndexed()
492: Sphere
495: ID3D11DeviceContext::DrawIndexed()
502: Sphere
505: ID3D11DeviceContext::DrawIndexed()
512: Sphere
515: ID3D11DeviceContext::DrawIndexed()
522: Sphere
525: ID3D11DeviceContext::DrawIndexed()
532: Sphere
535: ID3D11DeviceContext::DrawIndexed()
542: Sphere
545: ID3D11DeviceContext::DrawIndexed()
552: Sphere
555: ID3D11DeviceContext::DrawIndexed()
556: ID3DUserDefinedAnnotation::EndEvent()
558: ID3D11DeviceContext::ClearRenderTargetView()
559: ID3D11DeviceContext::ClearDepthStencilView()
561: Lighting
563: ID3D11DeviceContext::ClearRenderTargetView()
564: ID3D11DeviceContext::ClearRenderTargetView()
566: Point light
580: ID3D11DeviceContext::DrawIndexed()
581: Sun light
597: ID3D11DeviceContext::DrawIndexed()
600: Cube light
614: ID3D11DeviceContext::DrawIndexed()
615: ID3DUserDefinedAnnotation::EndEvent()
617: ID3D11DeviceContext::ClearRenderTargetView()
618: ID3D11DeviceContext::ClearDepthStencilView()
620: Shading
630: ID3D11DeviceContext::Draw()
645: ID3D11DeviceContext::DrawIndexed()
652: ID3DUserDefinedAnnotation::EndEvent()
653: ID3DUserDefinedAnnotation::EndEvent()
654: Present(ResourceId::47)
Pass #0 starts with 2: ID3D11DeviceContext::ClearRenderTargetView()
Pass #0 contained 23 actions
Pass #1 starts with 319: ID3D11DeviceContext::ClearDepthStencilView()
Pass #1 contained 23 actions
Pass #2 starts with 558: ID3D11DeviceContext::ClearRenderTargetView()
Pass #2 contained 3 actions
Pass #3 starts with 617: ID3D11DeviceContext::ClearRenderTargetView()
Pass #3 contained 3 actions