mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
241 lines
17 KiB
XML
241 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<topic id="86b8bce7-b7cd-4b10-aa61-706463d14fe0" revisionNumber="1">
|
|
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<introduction>
|
|
<para>
|
|
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. You might also
|
|
be interested in the <link xlink:href="632271c3-3d72-4360-b4a0-dc570fcd541e" />.
|
|
</para>
|
|
<para>
|
|
Currently RenderDoc supports D3D11, OpenGL, and Vulkan on Windows and Linux, although the UI only
|
|
runs on Windows currently. API support for other APIs such as D3D12 is planned. A Qt UI
|
|
will be written to fully support Linux and in future OS X, but currently this is just at
|
|
the drawing board stage.
|
|
</para>
|
|
<para>
|
|
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 a texture in a log. 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.
|
|
</para>
|
|
</introduction>
|
|
<section address="D3D11Features">
|
|
<title>Current Windows+D3D11 Feature set</title>
|
|
<content>
|
|
<para>
|
|
<list class="bullet">
|
|
<listItem><para>Support for D3D11 and D3D11.1, Windows Vista and above.</para></listItem>
|
|
<listItem><para>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.</para></listItem>
|
|
<listItem><para>Optional network support. The main use case is capture & replay on
|
|
the same machine, but you can also attach over the network, and replay on a remote host.</para></listItem>
|
|
<listItem><para>Multiple frame capture with ability to open side-by-side to compare.</para></listItem>
|
|
<listItem><para>Event browsing, with standard perfmarker style tree.</para></listItem>
|
|
<listItem><para>Full D3D11 Pipeline display.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Resources bound to the pipeline are trimmed to what is actually in use,
|
|
e.g. if a shader only references SRV slot 0, only SRV slot 0 will be displayed, even if
|
|
something is bound to slot 1.</para></listItem>
|
|
<listItem><para>Where available D3D11 debug names are displayed, along with reflection
|
|
data with the shader to clarify usage.</para></listItem>
|
|
<listItem><para>Structured buffers have their total element count displayed, and UAVs
|
|
also show the current structure count.</para></listItem>
|
|
<listItem><para>Export of the pipeline to HTML file.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>Shader source display (where possible - i.e. debug info available).</para></listItem>
|
|
<listItem><para>Timeline bar of the scene hierarchy.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Displays scene left-to-right in time, event hierarchy top-to-bottom.</para></listItem>
|
|
<listItem><para><legacyItalic>Not</legacyItalic> scaled based on time of each drawcall</para></listItem>
|
|
<listItem><para>Individual draw events are shown as dots when the tree is full expanded.</para></listItem>
|
|
<listItem><para>The currently selected resource in the texture viewer is highlighted below
|
|
individual drawcalls visible that use it - e.g. purple for 'used for write', green for 'used for read'</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>For each drawcall, 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.</para></listItem>
|
|
<listItem><para>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.</para></listItem>
|
|
<listItem><para>'Raw' buffer inspection, e.g. for UAVs, VBs or other buffers. Custom format can be set with
|
|
HLSL-lite syntax.</para></listItem>
|
|
<listItem><para>Buffer export to CSV or raw binary blob and texture saving to DDS.</para></listItem>
|
|
<listItem><para>Texture/render target viewer.</para>
|
|
<list class="bullet">
|
|
<listItem><para>List of textures/RTs in the frame, and filtering system.</para></listItem>
|
|
<listItem><para>Standard visualisation controls - zoom/fit to window, mip/face/slice selection.</para></listItem>
|
|
<listItem><para>RGBA channels or depth/stencil selection as appropriate for the type of resource.</para></listItem>
|
|
<listItem><para>Flexible 'range' selection tool, to set custom black/white points (default to 0 and 1).</para></listItem>
|
|
<listItem><para>Currently set RT/textures thumbnail strip - updates as you move through the frame. Follows the
|
|
currently selected pipeline slot as it changes, rather than remaining on the given texture.</para></listItem>
|
|
<listItem><para>Tabbed view for locking a view of a particular resource over time.</para></listItem>
|
|
<listItem><para>Pixel value picking.</para></listItem>
|
|
<listItem><para>Save (in theory) any type of texture and format to various formats, dds as well as regular png/jpg.</para></listItem>
|
|
<listItem><para>Several debug overlays for render targets - Wireframe, Depth pass/fail, Stencil pass/fail,
|
|
Clipping (below black/above white points), NaN/-ve/INF highlight, quad overdraw.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>Pixel history view.</para></listItem>
|
|
<listItem><para>Custom visualisation shader support - e.g. decode custom packed formats or gbuffers.</para></listItem>
|
|
<listItem><para>Vertex, Pixel and Compute shader debugging.</para></listItem>
|
|
<listItem><para>Hot shader editing and replacement.</para></listItem>
|
|
<listItem><para>Auto-range fitting to min/max values in texture data, and histogram display.</para></listItem>
|
|
<listItem><para>Simple per-drawcall timings.</para></listItem>
|
|
<listItem><para>Python scripting console, giving access to some of the RenderDoc internals and core
|
|
data structures.</para></listItem>
|
|
</list>
|
|
</para>
|
|
<para>
|
|
Most of these should be intuitive if you've used a graphics debugger before.
|
|
</para>
|
|
</content>
|
|
</section>
|
|
<section address="GLFeatures">
|
|
<title>Current OpenGL Feature set</title>
|
|
<content>
|
|
<para>Most features are present and supported for both D3D11 and OpenGL, but some are
|
|
still in development. Feature parity is an important goal, but for now we list them
|
|
separately just to be clear.</para>
|
|
<para>
|
|
<list class="bullet">
|
|
<listItem><para>Support for OpenGL Core profile 3.2+ on Windows and Linux.</para></listItem>
|
|
<listItem><para>Optional network support. The main use case is capture & replay on
|
|
the same machine, but you can also attach over the network, and replay on a remote host.</para></listItem>
|
|
<listItem><para>Event browsing, with standard ARB extension based tree.</para></listItem>
|
|
<listItem><para>Full OpenGL Pipeline display.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Resources are shown on the stage that references them, so each shader stage
|
|
shows a list of the resources, image read/writes, uniform buffers etc that it uses.</para></listItem>
|
|
<listItem><para>Where available KHR_debug glObjectLabel names are displayed, along with reflection
|
|
data with the shader to clarify usage.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>Shader source display.</para></listItem>
|
|
<listItem><para>Timeline bar of the scene hierarchy.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Displays scene left-to-right in time, event hierarchy top-to-bottom.</para></listItem>
|
|
<listItem><para><legacyItalic>Not</legacyItalic> scaled based on time of each drawcall</para></listItem>
|
|
<listItem><para>Individual draw events are shown as dots when the tree is full expanded.</para></listItem>
|
|
<listItem><para>The currently selected resource in the texture viewer is highlighted below
|
|
individual drawcalls visible that use it - e.g. purple for 'used for write', green for 'used for read'</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>For each drawcall, 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.</para></listItem>
|
|
<listItem><para>Mesh buffer inspection and visualisation before/after vertex shader and at the end of the geometry
|
|
pipeline (after GS or TES, 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.</para></listItem>
|
|
<listItem><para>'Raw' buffer inspection, e.g. for SSBOs, VBs or other buffers. Custom format can be set with
|
|
GLSL-lite syntax.</para></listItem>
|
|
<listItem><para>Buffer export to CSV or raw binary blob and texture saving to DDS.</para></listItem>
|
|
<listItem><para>Texture/render target viewer.</para>
|
|
<list class="bullet">
|
|
<listItem><para>List of textures/RTs in the frame, and filtering system.</para></listItem>
|
|
<listItem><para>Standard visualisation controls - zoom/fit to window, mip/face/slice selection.</para></listItem>
|
|
<listItem><para>RGBA channels or depth/stencil selection as appropriate for the type of resource.</para></listItem>
|
|
<listItem><para>Flexible 'range' selection tool, to set custom black/white points (default to 0 and 1).</para></listItem>
|
|
<listItem><para>Currently set RT/textures thumbnail strip - updates as you move through the frame. Follows the
|
|
currently selected pipeline slot as it changes, rather than remaining on the given texture.</para></listItem>
|
|
<listItem><para>Tabbed view for locking a view of a particular resource over time.</para></listItem>
|
|
<listItem><para>Pixel value picking.</para></listItem>
|
|
<listItem><para>Save (in theory) any type of texture and format to various formats, dds as well as regular png/jpg.</para></listItem>
|
|
<listItem><para>Several debug overlays for render targets - Wireframe, Depth pass/fail, Stencil pass/fail,
|
|
Clipping (below black/above white points), NaN/-ve/INF highlight, quad overdraw.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>Custom visualisation shader support - e.g. decode custom packed formats or gbuffers.</para></listItem>
|
|
<listItem><para>Hot shader editing and replacement.</para></listItem>
|
|
<listItem><para>Auto-range fitting to min/max values in texture data, and histogram display.</para></listItem>
|
|
<listItem><para>Simple per-drawcall timings.</para></listItem>
|
|
<listItem><para>Python scripting console, giving access to some of the RenderDoc internals and core
|
|
data structures.</para></listItem>
|
|
</list>
|
|
</para>
|
|
<para>
|
|
Capturing on Linux is possible, although there is no native UI. The renderdoccmd
|
|
program allows capturing on the command line, as well as opening a 'preview'
|
|
window of the final frame of the framebuffer. For most work though, you have to transfer the
|
|
.rdc capture file (by default placed in /tmp) to windows and open it in the UI there - logs are
|
|
completely interchangeable between windows and linux.
|
|
</para>
|
|
</content>
|
|
</section>
|
|
<section address="VKFeatures">
|
|
<title>Current Vulkan Feature set</title>
|
|
<content>
|
|
<para>As Vulkan is still in early support, some features are not yet supported.
|
|
Feature parity is an important goal, but for now we list them
|
|
separately just to be clear.</para>
|
|
<para>
|
|
<list class="bullet">
|
|
<listItem><para>Support for Vulkan 1.0 on Windows and Linux.</para></listItem>
|
|
<listItem><para>Optional network support. The main use case is capture & replay on
|
|
the same machine, but you can also attach over the network, and replay on a remote host.</para></listItem>
|
|
<listItem><para>Event browsing, with debug marker extension based tree.</para></listItem>
|
|
<listItem><para>Full Vulkan Pipeline display.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Resources are shown on the stage that references them, so each shader stage
|
|
shows a list of the resources that it uses. Uniform buffers are separated out for clarity, but
|
|
all other resources are listed together along with their descriptor set and binding point.</para></listItem>
|
|
<listItem><para>Where available debug marker labelled names are displayed, along with reflection
|
|
data from the SPIR-V to clarify usage.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>SPIR-V disassembly display.</para></listItem>
|
|
<listItem><para>Timeline bar of the scene hierarchy.</para>
|
|
<list class="bullet">
|
|
<listItem><para>Displays scene left-to-right in time, event hierarchy top-to-bottom.</para></listItem>
|
|
<listItem><para><legacyItalic>Not</legacyItalic> scaled based on time of each drawcall</para></listItem>
|
|
<listItem><para>Individual draw events are shown as dots when the tree is full expanded.</para></listItem>
|
|
<listItem><para>The currently selected resource in the texture viewer is highlighted below
|
|
individual drawcalls visible that use it - e.g. purple for 'used for write', green for 'used for read'</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>For each drawcall, 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.</para></listItem>
|
|
<listItem><para>Mesh buffer inspection and visualisation before/after vertex shader. 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.</para></listItem>
|
|
<listItem><para>'Raw' buffer inspection, e.g. for SSBOs, VBs or other buffers. Custom format can be set with
|
|
HLSL or GLSL-lite syntax.</para></listItem>
|
|
<listItem><para>Buffer export to CSV or raw binary blob and texture saving to DDS.</para></listItem>
|
|
<listItem><para>Texture/render target viewer.</para>
|
|
<list class="bullet">
|
|
<listItem><para>List of textures/RTs in the frame, and filtering system.</para></listItem>
|
|
<listItem><para>Standard visualisation controls - zoom/fit to window, mip/face/slice selection.</para></listItem>
|
|
<listItem><para>RGBA channels or depth/stencil selection as appropriate for the type of resource.</para></listItem>
|
|
<listItem><para>Flexible 'range' selection tool, to set custom black/white points (default to 0 and 1).</para></listItem>
|
|
<listItem><para>Currently set RT/textures thumbnail strip - updates as you move through the frame. Follows the
|
|
currently selected pipeline slot as it changes, rather than remaining on the given texture.</para></listItem>
|
|
<listItem><para>Tabbed view for locking a view of a particular resource over time.</para></listItem>
|
|
<listItem><para>Pixel value picking.</para></listItem>
|
|
<listItem><para>Save (in theory) any type of texture and format to various formats, dds as well as regular png/jpg.</para></listItem>
|
|
<listItem><para>Several debug overlays for render targets - Wireframe, Depth pass/fail, Stencil pass/fail,
|
|
Clipping (below black/above white points), NaN/-ve/INF highlight, quad overdraw.</para></listItem>
|
|
</list>
|
|
</listItem>
|
|
<listItem><para>Auto-range fitting to min/max values in texture data, and histogram display.</para></listItem>
|
|
<listItem><para>Simple per-drawcall timings.</para></listItem>
|
|
<listItem><para>Python scripting console, giving access to some of the RenderDoc internals and core
|
|
data structures.</para></listItem>
|
|
</list>
|
|
</para>
|
|
<para>
|
|
Capturing on Linux is possible, although there is no native UI. The renderdoccmd
|
|
program allows capturing on the command line, as well as opening a 'preview'
|
|
window of the final frame of the framebuffer.
|
|
</para>
|
|
</content>
|
|
</section>
|
|
<relatedTopics>
|
|
<link xlink:href="632271c3-3d72-4360-b4a0-dc570fcd541e" />
|
|
</relatedTopics>
|
|
</developerConceptualDocument>
|
|
</topic>
|