docs/getting_started/features.rst
This page documents the current feature set of RenderDoc. This gives an overview of what RenderDoc is capable of, and where it is in its development.
Currently RenderDoc supports Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES on Windows, Linux, Android, and Nintendo Switch :sup:TM. The UI runs in Qt and will work on any desktop platform.
RenderDoc can also double as an image viewer in a simplistic fashion, separate to its functionality as a debugger. Drag in or open any of a variety of image file formats and RenderDoc will display them as if they were the only texture in a capture. This way it can be used as a simple e.g. dds viewer, with support for all sorts of formats, encodings and things typical image viewers don't tend to handle like mips, cubemaps and arrays.
Trimming capture - capture file only contains data necessary for replaying the frame in question, not all textures & buffers ever created in the lifetime of the app.
Optional network support. The main way RenderDoc is used is capture & replay on the same machine, but you can also attach over the network, and replay on a remote host.
Multiple frame capture with ability to open side-by-side to compare.
Event browsing, with API standard tree of markers.
Full graphics pipeline state display.
Shader source display (where possible - i.e. debug info available) and otherwise disassembly where appropriate (when the API has a concept of a compiled binary representation).
Timeline bar of the scene hierarchy.
Flexible resource inspector.
For each action, a list of all API calls (state/resource setting) is available, with each call optionally having a complete callstack to locate where it came from in-app.
Mesh buffer inspection and visualisation before/after vertex shader and at the end of the geometry pipeline (after GS or DS, whichever is later). All views have arcball and flycam controls, Projected data is not limited to the 2D viewport, RenderDoc attempts to unproject to allow viewing in world-space.
More advanced mesh visualisation such as viewing other components as position (e.g. to render a mesh in UV space), and visual mesh picking from both input and output panes.
'Raw' buffer inspection for buffers. Custom format can be set with HLSL-lite or GLSL-lite syntax.
Buffer export to CSV or raw binary blob and texture saving to DDS.
Texture/render target viewer.
Custom visualisation shader support - e.g. decode custom packed formats or gbuffers.
Hot shader editing and replacement.
Pixel history support to determine the set of changes of a given pixel.
Auto-range fitting to min/max values in texture data, and histogram display.
Simple per-action timings and tabular view of GPU counter data.
Python scripting console with full documented API, giving complete access to RenderDoc internals, core data structures, and the Qt UI itself.
Import and Export of captures
.rdc file to another form that's easier for external tools to work with such as .xml..rdc after modification.Most of these should be intuitive if you've used a graphics debugger before.
VK_EXT_debug_utils or deprecated VK_EXT_debug_marker.Captures have a very limited amount of portability between machines. Many hardware-specific feature uses are baked into captures, and portability depends on how similar the capture and replay hardware are, whether these feature uses can map the same in both cases. Captures are however completely portable between different OSes with sufficiently comparable hardware.
KHR_debug object labels used for object naming.