mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 09:30:44 +00:00
359 lines
21 KiB
XML
359 lines
21 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<topic id="2c540574-0b81-4a40-8119-ba0283fddf41" revisionNumber="1">
|
|
<developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<introduction>
|
|
<autoOutline />
|
|
<para>The texture viewer is likely the most intuitive window in RenderDoc and commonly
|
|
the most regularly used. It displays the contents of any texture in its current state
|
|
at the given event, as well as providing controls to adjust and inspect it in different
|
|
ways.</para>
|
|
</introduction>
|
|
<section address="overview">
|
|
<title>Overview</title>
|
|
<content>
|
|
<para>The texture viewer consists of a couple of different sections, which will be
|
|
outlined here.</para>
|
|
<para>Several specific techniques or features used within the texture viewer have their
|
|
own separate pages that go into more detail. You might find more useful information there
|
|
if they cover what you are looking for:
|
|
<link xlink:href="32C47E20-0FA2-4F52-B33A-4440EBCCBCE4" />,
|
|
<link xlink:href="F1C1E449-55ED-46FE-BBFD-11D1A0511501" />,
|
|
<link xlink:href="a00964a1-733f-4288-a79e-c28238bc6018" />
|
|
</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Texture Viewer">A labelled diagram showing the different parts of the texture viewer.</caption>
|
|
<image xlink:href="LabelledTexViewer"/>
|
|
</mediaLink>
|
|
</content>
|
|
</section>
|
|
<section address="main">
|
|
<title>Main Texture Display</title>
|
|
<content>
|
|
<para>The main texture display takes up the largest portion of the window, and is simply a container for the
|
|
textures to display.</para>
|
|
<para>It is a tabbed control and although one tab is always present showing the currently followed texture
|
|
bound to the pipeline, other locked tabs can be opened up showing a single resource. More details are available
|
|
on the page <link xlink:href="32C47E20-0FA2-4F52-B33A-4440EBCCBCE4" />.</para>
|
|
<para>The mouse wheel can be used to zoom in and out of the texture. When zoomed in, holding the left mouse
|
|
button and dragging will pan the image from side to side.</para>
|
|
<para>While over the image the status bar will show the current pixel that the mouse
|
|
is over. Clicking or holding the right mouse button will pick this pixel and show its information in the status
|
|
bar. More information is available on the page <link xlink:href="F1C1E449-55ED-46FE-BBFD-11D1A0511501" />.</para>
|
|
</content>
|
|
</section>
|
|
<section address="status">
|
|
<title>Information Status Bar</title>
|
|
<content>
|
|
<para>The status bar below the main texture display contains information on the currently visible texture.</para>
|
|
|
|
<list class="bullet">
|
|
<listItem><para>The name (if available - if not a default name will be used).</para></listItem>
|
|
<listItem><para>Dimensions - Width, height, depth and array size as applicable.</para></listItem>
|
|
<listItem><para>Mip Count.</para></listItem>
|
|
<listItem><para>MSAA sample count and quality, if applicable.</para></listItem>
|
|
<listItem><para>Format - e.g. RGB8. The exact phrasing of this will vary by API.</para></listItem>
|
|
</list>
|
|
|
|
<para>After this information there are a few displays that are pixel-based. The pixel that is under the cursor
|
|
is displayed as a colour swatch, followed by its co-ordinates. Then any
|
|
<link xlink:href="F1C1E449-55ED-46FE-BBFD-11D1A0511501">picked pixel</link> is displayed afterwards with its
|
|
numeric value displayed.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Picked Pixels">Detailed information about the current pixel.</caption>
|
|
<image xlink:href="RMBStatus"/>
|
|
</mediaLink>
|
|
|
|
</content>
|
|
</section>
|
|
<section address="thumbs">
|
|
<title>Thumbnail Strips</title>
|
|
<content>
|
|
<para>There are several thumbnail strip panels available, by default they are docked in the same
|
|
location such that they are tabbed together, but they can be displayed side by side.</para>
|
|
<para>These strips display thumbnails of the resources bound to their respective parts of the
|
|
pipeline, to give some context and allow quick preview without having to switch the main
|
|
display between these textures.</para>
|
|
<para>The texture that the following tab is currently displaying is highlighted in red, and
|
|
each thumbnail shows both the slot number and the name of the texture bound at that point.
|
|
To follow a given slot simply left click on it.
|
|
If the currently followed texture slot is empty (i.e. it was following a texture and then
|
|
that slot was unbound) it will show up simply named "Unbound" and with no name or slot number.</para>
|
|
<para>Each thumbnail has a context menu available via right click. This menu allows you to open
|
|
a locked tab (<link xlink:href="32C47E20-0FA2-4F52-B33A-4440EBCCBCE4">More information</link>),
|
|
as well as containing a list of all the uses of this texture - as read-only resource and writable
|
|
output. This is similar to the resource display strip on the <link xlink:href="745E3EB5-EB29-4010-BBAB-B11282F4380C" />.
|
|
Clicking on any of these entries will jump to the first of the events in the event range listed.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Thumbnail Menu">Thumbnail context menu with several options.</caption>
|
|
<image xlink:href="OpenLockedTab"/>
|
|
</mediaLink>
|
|
<para>There are also two general options - show disabled and show empty. These behave the same as the
|
|
options in the <link xlink:href="A44E2304-6C11-451D-89C4-0A7397F5D1C6" /> window - temporarily overriding
|
|
the default behaviour in RenderDoc to only show texture slots that are referenced in the shader.</para>
|
|
</content>
|
|
</section>
|
|
<section address="context">
|
|
<title>Pixel Context Display</title>
|
|
<content>
|
|
<para>The Pixel context display is a small panel by default in the bottom right of the texture viewer.</para>
|
|
<para>Whenever a pixel is picked small area of the texture around it is rendered at maximum zoom to this
|
|
panel. This gives you some context for the pixels nearby to the one you're picking and allows fine refinement
|
|
without needing to zoom in and lose your place in the overall image.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Pixel context">Pixel context displaying the surrounds of the picked pixel.</caption>
|
|
<image xlink:href="PixelContext"/>
|
|
</mediaLink>
|
|
<para>From here, once you have selected a pixel, you can also launch the
|
|
<link xlink:href="8a7568ca-6b2c-4873-b8eb-d1ad2aff9629">pixel debugger</link> if you have
|
|
the drawcall that yo uwant to debug selected. You can also launch the
|
|
<link xlink:href="F1C1E449-55ED-46FE-BBFD-11D1A0511501">pixel history</link> view which shows all
|
|
modifications that have happened to the texture since the start of the frame to the currently selected
|
|
event.</para>
|
|
</content>
|
|
</section>
|
|
<section address="range">
|
|
<title>Visible Range Control</title>
|
|
<content>
|
|
<para>The visible range or range adaption control is very useful in easing display and inspection of
|
|
images with a very narrow range of values, and is necessary for viewing any HDR images as it can be
|
|
used to map a larger range down to LDR for display.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Range control">The range control narrowing the visible range mapped to [0,1] on output.</caption>
|
|
<image xlink:href="RangeControl"/>
|
|
</mediaLink>
|
|
<para>The primary controls are the black point and white point. These are shown in two text boxes at
|
|
either side of the main range control. These are the current absolute black and white values - these values
|
|
in the input texture are mapped to 0 and 1 respectively on output.</para>
|
|
<para>The range control itself has a black point and a white point that can be adjusted simply by clicking and
|
|
dragging. These allow finer and more interactive adjustments. These handle only allow you to adjust the extremes
|
|
within the range defined by the absolute black and white points in the text box.</para>
|
|
<para>There are four other buttons available for control of the range:</para>
|
|
|
|
|
|
<list class="bullet">
|
|
<listItem><para><mediaLinkInline><image xlink:href="zoom"/></mediaLinkInline> <ui>Zoom in</ui> -
|
|
This button will zoom the extreme values in to whichever fine values have been selected by the draggable handles.</para>
|
|
<para>This is primarily useful when starting from some large range and using the handles to drag down to a more reasonable
|
|
range, you can click zoom to then reduce the range down to just the one selected, so you can again get fine control.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Before">The range control before zooming.</caption>
|
|
<image xlink:href="BeforeRangeZoom"/>
|
|
</mediaLink>
|
|
<mediaLink>
|
|
<caption placement="after" lead="After">The range control after zooming.</caption>
|
|
<image xlink:href="AfterRangeZoom"/>
|
|
</mediaLink>
|
|
</listItem>
|
|
<listItem><para><mediaLinkInline><image xlink:href="wand"/></mediaLinkInline> <ui>Autofit</ui> -
|
|
This button automatically fits the range control to the min and max values in any visible channels in the texture.
|
|
Oftentimes this is a good starting point for a range, although with some extreme textures it may adjust badly.</para>
|
|
<para>Right clicking on this button will cause it to always auto-fit until you disable this. ie. when you move
|
|
to another event or another texture, the range will be auto-fit again. This is useful if jumping between events
|
|
or textures where the visible ranges are very different.</para></listItem>
|
|
<listItem><para><mediaLinkInline><image xlink:href="UndoArrow"/></mediaLinkInline> <ui>Reset</ui> -
|
|
Simply resets the range back to the default of [0, 1] - useful for resetting after changing to a new texture where the
|
|
range settings aren't applicable.</para></listItem>
|
|
<listItem><para><mediaLinkInline><image xlink:href="chart_curve"/></mediaLinkInline> <ui>Histogram</ui> -
|
|
This is a toggle switch. When enabled it will change the thin bar of the range control into a thicker bar
|
|
that contains a range-value histogram, showing the distribution of values.</para>
|
|
<para>The histogram is based on the straight numerical mean of all visible channels, and will update as the
|
|
white and black points move.</para>
|
|
<mediaLink>
|
|
<caption placement="after" lead="Values Histogram">A histogram showing the range distribution of values in the image.</caption>
|
|
<image xlink:href="RangeHistogram"/>
|
|
</mediaLink></listItem>
|
|
</list>
|
|
|
|
</content>
|
|
</section>
|
|
<section address="toolbar">
|
|
<title>Toolbar</title>
|
|
<content>
|
|
<para>The toolbar contains most of the tools for selecting which mip, slice, face of
|
|
a texture to view as well as how to display it and if any transformations or overlays
|
|
should be applied.</para>
|
|
|
|
<alert class="note">
|
|
<para>The visible range/range adaption control is detailed in the section above and will not be covered here.</para>
|
|
</alert>
|
|
|
|
<table>
|
|
<tableHeader>
|
|
<row>
|
|
<entry><para>Control</para></entry>
|
|
<entry><para>Explanation</para></entry>
|
|
</row>
|
|
</tableHeader>
|
|
<row>
|
|
<entry>
|
|
<para><mediaLinkInline><image xlink:href="RGBAChannels"/></mediaLinkInline> Channels selector</para>
|
|
<para><mediaLinkInline><image xlink:href="RGBMChannels"/></mediaLinkInline> RGBM mode</para>
|
|
<para>
|
|
<mediaLinkInline><image xlink:href="CustomDisplay"/></mediaLinkInline>
|
|
<mediaLinkInline><image xlink:href="add"/></mediaLinkInline>
|
|
<mediaLinkInline><image xlink:href="page_white_edit"/></mediaLinkInline>
|
|
<mediaLinkInline><image xlink:href="delete"/></mediaLinkInline>
|
|
<link xlink:href="a00964a1-733f-4288-a79e-c28238bc6018">Custom Shader</link></para>
|
|
</entry>
|
|
<entry><para>This selector switches between displaying standard RGBA channels, RGBM encoding with a custom
|
|
multiplier and using a custom visualiser shader.</para>
|
|
<para>When in <ui>RGBA</ui> mode, by default only the RGB channels are displayed and alpha is forced to fully opaque.
|
|
Each of the channels can be toggled off independently and any combination can be used. Any RGB channel which
|
|
is disabled is forced to fully black in the output. When Alpha is enabled, the background will be rendered
|
|
with a solid colour or checkerboard pattern to indicate semi-transparent areas.</para>
|
|
<para>Also note that when a single channel is displayed solo, the image is rendered as grayscale in that channel
|
|
rather than displaying a monochromatic coloured image.</para>
|
|
|
|
<alert class="tip">
|
|
<para>Right clicking on one of the channel buttons in the texture viewer
|
|
(R, G, B, A) will either select only that channel, or if it's already the only one
|
|
selected it will select all of the others. This is useful e.g. to toggle between viewing
|
|
RGB and alpha, or for looking at individual channels in a packed texture or render target.</para>
|
|
</alert>
|
|
|
|
<para>When <ui>RGBM</ui> is selected, the RGB value will be multiplied by the specified multiplier and then by
|
|
the alpha value. This is a common encoding used to pack a larger range into an 8-bit RGB image.</para>
|
|
<para>With <ui>Custom</ui> selected a dropdown will be populated with any .hlsl files in the
|
|
<codeInline>%APPDATA%\renderdoc</codeInline> folder. When choosing a custom shader the raw image will be
|
|
passed through this shader before being displayed with the usual controls on the main display.</para>
|
|
<para>You can create a new custom shader with the <mediaLinkInline><image xlink:href="add"/></mediaLinkInline> button,
|
|
edit a shader with the <mediaLinkInline><image xlink:href="page_white_edit"/></mediaLinkInline> button,
|
|
and delete an one with the <mediaLinkInline><image xlink:href="delete"/></mediaLinkInline> button.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>γ
|
|
Gamma display of Linear data
|
|
</para>
|
|
</entry>
|
|
<entry><para>A proper explanation of this is available in the
|
|
<link xlink:href="b97b19f8-2b97-4dca-8a7a-ed7026eb43fe" />. In short, linear data is 'overcorrected' to
|
|
look as expected, but this behaviour can be overridden</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para><mediaLinkInline><image xlink:href="color_wheel"/></mediaLinkInline>
|
|
<mediaLinkInline><image xlink:href="crosshatch"/></mediaLinkInline>
|
|
Alpha Background
|
|
</para>
|
|
</entry>
|
|
<entry><para>When displaying a texture with alpha channel, the background of the main display changes to make
|
|
the semi-transparent sections more obvious. With these two controls you can either choose a checkerboard pattern
|
|
<mediaLinkInline><image xlink:href="crosshatch"/></mediaLinkInline> or open a colour picker to choose a solid
|
|
colour <mediaLinkInline><image xlink:href="color_wheel"/></mediaLinkInline>.</para>
|
|
<para>The currently enabled mode will be highlighted.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Subresource selection <mediaLinkInline><image xlink:href="SubresourceSelect"/></mediaLinkInline></para>
|
|
</entry>
|
|
<entry><para>The main display of the texture viewer can only display at most a single 2D image at once.</para>
|
|
<para>For textures with mip-maps this control allows you to select the mip level to display - the overall size
|
|
of the image will remain the same but will be point sampled from the given mip level.</para>
|
|
<para>For 3D textures and 2D arrays you can select the slice to display here from the drop-down, and for cubemaps
|
|
you can select the face. For cubemap arrays these two controls are combined to show a list of the faces for the first
|
|
cubemap, then the second, etc.</para>
|
|
<para>For Multisampled textures, this will allow you to select either a single sample to view across the image,
|
|
or to see a default-resolved image.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para><mediaLinkInline><image xlink:href="save"/></mediaLinkInline> Save Texture</para>
|
|
</entry>
|
|
<entry><para>This allows you to save the currently visible texture. Several formats are supported and options are
|
|
available for mapping down complex formats (such as multisampled or 3D textures) to formats that don't support them
|
|
such as .png or .jpg.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para><mediaLinkInline><image xlink:href="page_white_link"/></mediaLinkInline> Open Texture List</para>
|
|
</entry>
|
|
<entry><para>This button opens the texture list of all textures present in the capture. More details can
|
|
be seen in <link xlink:href="32C47E20-0FA2-4F52-B33A-4440EBCCBCE4" /></para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Zoom controls <mediaLinkInline><image xlink:href="ZoomControls"/></mediaLinkInline></para>
|
|
</entry>
|
|
<entry><para>The zoom controls are fairly self explanatory - a pre-existing zoom value can be chosen
|
|
from the drop down or a custom value (clamped to the minimum and maximum zoom) can be entered as a
|
|
percentage.</para>
|
|
<para>To automatically fit the texture to the space available in the window, regardless of its
|
|
dimensions, you can click the <mediaLinkInline><image xlink:href="fit_window"/></mediaLinkInline> Fit
|
|
button.</para>
|
|
|
|
<alert class="note">
|
|
<para>As noted above, the mouse scroll wheel in the main display also changes the zoom level.</para>
|
|
</alert>
|
|
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para><mediaLinkInline><image xlink:href="flip_y"/></mediaLinkInline> Flip Y</para>
|
|
</entry>
|
|
<entry><para>This button toggles flipping the co-ordinate system in Y - y=0 is at the bottom of the window
|
|
instead of at the top.</para>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<para>Render Overlay <mediaLinkInline><image xlink:href="OverlaySelect"/></mediaLinkInline></para>
|
|
</entry>
|
|
<entry><para>This is a powerful tool for quickly diagnosing issues and can be very useful for locating
|
|
what you're looking for. Several overlays are available that can be rendered over any texture, although
|
|
most of them are only meaningful for currently bound render targets.</para>
|
|
|
|
<list class="bullet">
|
|
<listItem><para><command>Highlight Drawcall</command> will do pretty much as it says. It darkens everything except
|
|
the current drawcall which is highlighted in flat colour. This makes whatever is being drawn stand out and can be useful
|
|
for seeing where the current object is on screen, especially if rapidly browsing through the frame.</para></listItem>
|
|
<listItem><para><command>Wireframe Mesh</command> will render a wireframe mesh of the current drawcall
|
|
over the top of the image.</para></listItem>
|
|
<listItem><para><command>Depth Test</command> will render an overlay over the drawcall, with red sections covering
|
|
any part of the drawcall that never passed the depth test, and green sections covering areas that did pass the
|
|
depth test. Note that if the drawcall overdraws itself then as long as at least one pass over a pixel passes the depth test
|
|
then that pixel will be green.</para></listItem>
|
|
<listItem><para><command>Stencil Test</command> performs similarly to the depth test, but for the stencil test.</para></listItem>
|
|
<listItem><para><command>Viewport/Scissor</command> shows a coloured overlay on the image that corresponds to the viewport
|
|
and scissor regions.</para></listItem>
|
|
<listItem><para><command>NaN/Inf/-ve display</command> will render the image in grayscale (using the typical luminance
|
|
calculation - <codeInline>dot(col.xyz, float3(0.2126, 0.7152, 0.0722)).xxx</codeInline>) with red pixels highlighting any
|
|
NaNs found, green pixels highlighting any infinities, and blue pixels for any negative values. Note that in any case
|
|
where only one or some channels in a multi-channel texture pass, that pixel will still be highlighted (so
|
|
<codeInline>{0.5, -1.0, 0.0}</codeInline> would highlight blue).</para></listItem>
|
|
<listItem><para><command>Clipping</command> will simply highlight in red any values that are below the current
|
|
black point (as defined by the range control - see above), and in green any values above the white point. This can
|
|
be useful in identifying invalid ranges if the range control is adjusted correctly, or in combination with a custom
|
|
shader visualiser.</para></listItem>
|
|
<listItem><para><command>Quad Overdraw (Pass)</command> will show a visualisation of the level of 2x2 quad overdraw
|
|
in the 'pass' - defined as all the drawcalls up to current with the same set of render targets.</para></listItem>
|
|
<listItem><para><command>Quad Overdraw (Draw)</command> will show a similar visualisation to the above option, but
|
|
limited only to the current drawcall.</para></listItem>
|
|
</list>
|
|
|
|
<alert class="note">
|
|
<para>These overlays are all rendered after most image controls are applied. For this reason the range control,
|
|
channel controls and custom shaders do not affect the overlays.</para>
|
|
</alert>
|
|
|
|
</entry>
|
|
</row>
|
|
</table>
|
|
|
|
</content>
|
|
</section>
|
|
<relatedTopics>
|
|
<link xlink:href="32C47E20-0FA2-4F52-B33A-4440EBCCBCE4" />
|
|
<link xlink:href="F1C1E449-55ED-46FE-BBFD-11D1A0511501" />
|
|
<link xlink:href="a00964a1-733f-4288-a79e-c28238bc6018" />
|
|
</relatedTopics>
|
|
</developerConceptualDocument>
|
|
</topic>
|