3D Application Debugging

 

Student: André Liu
Supervisor: António Ramires

Abstract

It is rare for a bugless program to exist, this includes 3D applications with their respective shaders. In particular shaders are harder to debug than common applications, since they are loaded to the GPU and executed in thousands of smaller threads simultaneously. It is not easy to obtain variables values, the application state and it is hard to detect what causes errors. That’s why it is necessary to study and develop debugging environments for these applications.

OpenGL in particular has many open source debuggers. A study about the features and usability of Bugle, Apitrace, GLIntercept, glslDevil and VOGL is documented, hopefully helping the reader to select the best tool for his needs. An analysis of the inner workings of each of these tools was also performed. Furthermore, the appendices allow the reader to use this document as a user manual.

Being a debugger for an API that is constantly evolving is not an easy task, hence, the issue of upgradeability is highly relevant. This study examines how each tool copes with OpenGL’s evolution, in particular how each tool deals with new extensions and OpenGL versions.

Also a study on commercial debuggers from known companies such as AMD and NVIDIA was performed. While it is expected that these debuggers are more capable in general than their open source counterparts, this potential can only be fully explored in the respective graphics hardware. On the downside it is not possible to alter these debuggers and integrate them in another application.

The goal of this section is not only to analyse the potential of these proprietary tools, but also to understand the real value of the open source debuggers.

Nau 3D engine, developed at Universidade do Minho, is an engine which renders projects written with xml. Being capable of combining rasterization (OpenGL) and ray-tracing (NVIDIA’s Optix) in multipass projects, it is a complex application that greatly benefits from having as much debugging features as possible.

Adding debugger features could help immensely all who work with the engine, helping both the engine developers to discover bugs in the source code, and the engine users to find bugs in their own projects.

With the knowledge gathered by studying OpenGL debuggers, several debugging features were implemented in Nau 3D engine. Some of these features are configurable, and maintaining the spirit of the original project, this configuration is also written in XML.

Thesis download (PDF)

 Posted by at 12:49 am