Skip to content

RenderDoc

RenderDoc is a free and open-source software (FOSS) graphics debugger for Windows and Linux that enables quick and easy single-frame capture and detailed introspection of any graphics application. RenderDoc acts as a man-in-the-middle between the graphics application to be monitored and the graphics API it is using such as Vulkan, D3D11, OpenGL & OpenGL ES or D3D12.

The application works by monitoring access to the graphics API and storing returned data in memory. Data captured will typically include textures and 3D meshes. Active capturing of data commences at the the beginning of the next frame after the capture button is pressed. Once the frame completes the data is written to disk for visualisation, replay and analysis. Further details on how RenderDoc works can be found in the documentation: How RenderDoc works

Personal Experience

As a graphics debugging utility RenderDoc has wide application for computer game development and 3D graphics research where it provides much needed tools for introspection and debugging of real-time 3D applications suc as those built with the Unity and Unreal game engines.

I first became familiar with RenderDoc when tutorials were released in 2020 for capturing 3D models from Google Maps and importing them into Blender. This process provides a fascinating way to learn how Google Maps works, but is also problematic given that the data incorporated in Google Maps is subject to copyright. Hence the process cannot be used for commercial applications.

WARNING! Google Maps are subject to copyright and it is against Google's terms of service to export Google Maps data or create derivatives. See sections 3.2.1 and 3.2.2 of the Google Maps Platform terms of service: https://cloud.google.com/maps-platform/terms

Tools & Software Integrations

N/A

Resources

RenderDoc Documentation - Includes quickstart guide, information on different rendering engines, details of the built-in Python API and a 'How do I...?' section with specific guidance for particular tasks.

Notes and Troubleshooting

Enable Inject Into Process Menu Option

  • Newer versions of RenderDoc may not have the 'Inject Into Process' option enabled by default.
  • To enable the option navigate to Tools > Settings > General.
  • Check the Enable process injection option.
  • Restart RenderDoc.
  • You can now select File > Inject into process.

Source: RenderDoc - Inject into process - Turorial

Extract 3D Geometry from Google Maps with RenderDoc and Blender

WARNING! Google Maps are subject to copyright and it is against Google's terms of service to export Google Maps data or create derivatives. See sections 3.2.1 and 3.2.2 of the Google Maps Platform terms of service: https://cloud.google.com/maps-platform/terms

  1. Download and install RenderDoc v1.9.
  2. Start the RenderDoc application.
  3. Open a command line terminal.
  4. Enter the following command in the terminal to Set RenderDoc environment to ignore OpenGL ES:
set RENDERDOC_HOOK_EGL=0
  1. Run Google Chrome browser from the command line (adapt the path as required):
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-gpu-sandbox --gpu-startup-dialog

NOTE: If necessary the browser can be opened up with a specific URL and Port number as follows:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" http://localhost:8080/ --disable-gpu-sandbox --gpu-startup-dialog
  1. When Google Chrome opens find the popup labelled 'Google Chrome Gpu'.
  2. Take a note of the Gpu pid number but do NOT click 'OK' yet.
  3. Back in RenderDoc select File > Inject into process.
  4. Enter the Gpu pid number to filter by process.
  5. Click on the process.
  6. Open the 'Google Chrome Gpu' popup and click 'OK' to link the graphics API to RenderDoc.
  7. In RenderDoc click 'Inject'.
  8. In the Chrome browser you should see debug text in the top right if the link has been established.
  9. Navigate to Google Maps in Satellite view and select a location.
  10. Click the '3D' maps button.
  11. Zoom in to the area to be captured and pan the camera to load required geometry at highest available detail.
  12. Optionally click the '2D' maps button to frame the geometry to capture from above.
  13. Take a screen capture by clicking Trigger After Delay in RenderDoc, set with a value of 5 seconds or so, and then panning the map in Google Maps while the capture is taken.
  14. In RenderDoc right click on the capture and select 'save' to save the capture as an .rdc file.
  15. The rdc capture file can be imported into Blender using the MapsModelsImporter addon: https://github.com/eliemichel/MapsModelsImporter
  16. Multiple captures can be stiched together using the LilyCaptureMerger add-on: https://eliemichel.gumroad.com/l/KSvXuu
  17. The LilyTexturePacker add-on can then be used to pack all of the textures into a single texture atlas: https://gumroad.com/l/DFExj

Source: MapsModelsImporter