a visualisation/analysis system is already available.
The usability of Anvil depends on the number of sys-
tems provided out of the box, plugins shared by other
users and on the ease of extensibility. The traditional
approach may be more straightforward to set up but
Anvil provides a much richer debugging experience.
7 CONCLUSION
In this paper we have presented Anvil, a visual de-
bugging tool for PBR. Anvil is different from other
debuggers in that it is not tightly coupled to any API
or hardware. Due to its flexibility, it can be used in
other fields such as pedagogy where it would allow
students to grasp fundamentals, especially in the areas
related to stochastic rendering. For instance, teachers
could visualise the propagation of light as it happens,
allowing the students a deeper understanding of the
subject.
Overall, results suggest Anvil complements ex-
isting tools. While current debuggers help to find
low-level issues, Anvil analyses and visualises higher-
level primitives through components called atoms
and molecules. Through its design, Anvil achieves
seamless integration with the user’s application, en-
abling interactive debugging at the cost of mapping
molecules and atoms.
7.1 Limitations
Currently, there are only a small number of visualisers
and analysis tools that have been implemented. Thus,
new users will most likely need to implement their
own tools in Anvil. However, this problem is expected
to diminish with adoption. One other issue is that the
reflection component in Anvil is currently limited to
read-only access to the user data. This limits visualis-
ers/systems as these components are not able to mod-
ify data on the fly. While this can be bypassed using
events, it is not ideal as this requires the user to patch
the code and add modifications for every write that is
needed. One other problem stems from the fact that
if Anvil and the user both depend on the same library,
there can be interference. For instance, if both a visu-
aliser and the user application uses ImGui, and both
depend on ImGui’s dynamic library, the state needs to
be guarded carefully.
7.2 Future Work
The reflection component needs to be relaxed so that
it allows writing back to the user data. This would
allow a more comprehensive debugging experience.
Additionally, specialised macros and helper functions
to ease transfer of GPU to host data need to be de-
veloped. This would entail implementing function-
ality for OpenGL, DirectX, etc. Finally, since the
most time-consuming aspect in Anvil is the mapping
of data to molecules and atoms, a possible improve-
ment could be to provide a tool that facilitates/infers
these mappings. Since atoms and molecules are regis-
tered with Anvil, this tool would be able to understand
the required structure and given a user structure, au-
tomatically generate mappings.
ACKNOWLEDGEMENTS
This work was supported by the Notarial Archives of
Malta.
REFERENCES
Bilas, S. (2002). A data-driven game object system. In
Game Developers Conference Proceedings.
Eden, A. H. and Mens, T. (2006). Measuring software flex-
ibility. IEE Proceedings-Software, 153(3):113–125.
Gribble, C., Fisher, J., Eby, D., Quigley, E., and Ludwig, G.
(2012). Ray tracing visualization toolkit. In Proceed-
ings of the ACM SIGGRAPH Symposium on Interac-
tive 3D Graphics and Games, pages 71–78.
Hou, Q., Zhou, K., and Guo, B. (2009). Debugging gpu
stream programs through automatic dataflow record-
ing and visualization. In ACM SIGGRAPH Asia 2009
papers, pages 1–11.
Kajiya, J. T. (1986). The rendering equation. In Computer
Graphics, pages 143–150.
Lafortune, E. P. and Willems, Y. D. (1993). Bi-directional
path tracing. In PROCEEDINGS OF THIRD INTER-
NATIONAL CONFERENCE ON COMPUTATIONAL
GRAPHICS AND VISUALIZATION TECHNIQUES
(COMPUGRAPHICS ’93, pages 145–153.
Martin, A. (2007). Entity systems are the
future of mmog development. http://t-
machine.org/index.php/2007/09/03/entity-systems-
are-the-future-of-mmog-development-part-1.
Podila, S. and Zhu, Y. (2016). A visualization tool for 3d
graphics program comprehension and debugging. In
2016 IEEE Working Conference on Software Visual-
ization (VISSOFT), pages 111–115. IEEE.
Sharif, A. and Lee, H.-H. S. (2008). Total recall: a de-
bugging framework for gpus. In Proceedings of the
23rd ACM SIGGRAPH/EUROGRAPHICS symposium
on Graphics hardware, pages 13–20.
Szyperski, C. (1996). Independently extensible systems-
software engineering potential and challenges. Aus-
tralian Computer Science Communications, 18:203–
212.
Van Dyk, B., Lutteroth, C., Weber, G., and W
¨
unsche, B.
(2013). Using opengl state history for graphics de-
bugging. V
´
aclav Skala-UNION Agency.
Anvil: A Tool for Visual Debugging of Rendering Pipelines
203