Texture Viewer 纹理查看器

Texture Viewer 是 RenderDoc 中使用最频繁、最直观的窗口,用于显示任意纹理在当前事件(event)时刻的内容,并提供多种调整和检查手段。


Texture Viewer 界面布局

Texture Viewer 由以下几个主要区域组成:

主视图(Main Texture Display)

主视图占据窗口最大面积,以标签页(tab)形式组织。第一个标签页始终存在,跟随当前 pipeline state 中选定的纹理槽位(如输入纹理或颜色/深度输出)。可以额外打开锁定标签页(Locked Tab),固定显示某一具体资源。

  • 鼠标滚轮:缩放纹理。
  • 按住左键拖拽:在放大状态下平移图像。
  • 右键单击或按住右键拖拽:拾取当前像素,状态栏将显示该像素的精确数值。

信息状态栏(Information Status Bar)

位于主视图下方,显示当前纹理的基本元数据:

  • 纹理名称(如无则自动生成)
  • 尺寸:宽、高、深度及数组大小
  • Mip 层级总数
  • MSAA 采样数与质量(如适用)
  • 格式,例如 RGBA8_UNORM

状态栏右侧还会实时显示鼠标悬停像素的颜色色块与坐标,以及已拾取像素的数值。

缩略图列表(Thumbnail Strips)

Thumbnail Strip 面板展示 pipeline 各阶段绑定资源的缩略图,默认停靠在同一位置以标签页形式叠放,也可并排显示。

  • 当前主视图跟随的槽位以红色高亮边框标出。
  • 每个缩略图显示槽位编号和纹理名称。
  • 左键单击某个缩略图即切换主视图跟随该槽位。
  • 右键菜单提供:打开锁定标签页、跳转到 Resource Inspector、查看该纹理的所有使用记录(只读输入与可写输出)。

控制面板(Toolbar)

工具栏位于顶部,包含:通道选择器、Mip/Slice 选择、可见范围控制、缩放控制、保存纹理、打开纹理列表、Goto Location、Render Overlay 等功能控件。

Pixel Context 面板

默认停靠在 Texture Viewer 右下角(缩略图列表旁)。每当拾取一个像素,该面板会以最大缩放比例渲染所选像素周围的小区域,辅助做精细像素调整。


查看 Render Target 与纹理资源

通过 Pipeline 槽位查看

默认标签页跟随 pipeline state 中当前选中的槽位。切换到不同的 event 时,若该槽位绑定的纹理发生变化,主视图会自动更新。

通过纹理列表查看

工具栏上的”Open Texture List”按钮(图标为页面+堆叠样式)会在 Texture Viewer 侧边打开一个可过滤的纹理列表,列出 capture 中的所有纹理。

  • 可通过自定义字符串过滤,也可按 Render Target 或普通纹理的创建标志过滤。
  • 在列表中单击某条纹理,即在 Texture Viewer 中为该纹理打开一个新的锁定标签页。

锁定标签页(Locked Tab)

默认标签页会随事件切换而改变所显示的纹理。若需要固定跟踪某一纹理(即使该纹理变为未绑定状态,或在输入与输出之间切换),可以开启锁定标签页:

  • 在纹理列表中单击纹理条目,打开对应的锁定标签页。
  • 在 Pipeline State Viewer 中打开纹理,也会创建锁定标签页。
  • 在缩略图上右键单击当前绑定的纹理,同样可以打开锁定标签页。

锁定标签页不受 pipeline state 或当前 event 影响,始终显示该纹理的内容。


通道切换(RGBA 分量、深度、模板缓冲)

工具栏的 Channels Selector 用于切换纹理的显示模式:

RGBA 模式

默认模式,仅显示 RGB 通道(Alpha 强制为完全不透明)。各通道可单独开关:

  • 关闭的 RGB 通道在输出中强制显示为黑色。
  • 开启 Alpha 通道后,背景切换为纯色或棋盘格图案,以直观展示半透明区域。
  • 单独显示某一通道时,图像以灰度(而非彩色)形式渲染该通道。
  • 右键单击 R/G/B/A 按钮:若该通道当前已单独选中,则恢复显示所有通道;否则单独选中该通道。此操作方便在 RGB 与 Alpha 之间快速切换。

如果纹理为 YUV 格式,通道选择器会显示为 YUVA,允许分别选择亮度(Luminance)和色度(Chrominance)通道。

RGBM 模式

RGB 值乘以指定倍数再乘以 Alpha 值,用于还原以 Alpha 通道为缩放因子的 HDR 编码(常见于将 HDR 值打包进 8-bit RGBA 图像的方案)。

YUVA Decode 模式

使用 Rec. 709 转换值进行全范围 YUVA 到 RGBA 的解码转换。

深度与模板缓冲

对于深度纹理,深度值和模板值会分开显示:深度值以浮点精度显示,模板值(以及其他整型格式纹理)以整数显示。

Custom 模式

选择自定义 shader 对纹理进行预处理后再显示,适用于特殊编码格式的可视化。


Mip Level 与 Array Layer 选择

工具栏上的 Subresource Selection 控件负责选择当前要显示的子资源,主视图每次只能显示一个 2D 子资源:

  • Mip Level:对含 mip-map 的纹理,可从下拉列表选择要查看的 mip 层级。图像整体尺寸保持不变,内容从所选 mip 层级点采样。
  • Array Layer / Slice:对 3D 纹理和 2D 数组纹理,可从下拉列表选择要显示的切片(slice)。
  • Cubemap Face:对 Cubemap 纹理,可选择要显示的面(face)。对于 Cubemap Array,则将两者合并为一个列表,依次列出第一个 Cubemap 的所有面,再列出第二个,以此类推。
  • MSAA Sample:对多重采样纹理,可选择查看单个采样样本,或查看默认解析(resolve)后的图像。

上述选择默认以每纹理状态保存:切换到其他纹理时会重置为默认值,切换回来时恢复上次的选择。


范围/曝光调整与色调映射

Visible Range Control(可见范围控制)

可见范围控制(Range Adaption Control)对于值域很窄的纹理检查或 HDR 图像查看非常有用,能将较大的值域映射到 [0, 1] 范围内显示。

控件主要参数:

  • Black Point(黑点)White Point(白点):控件两侧的文本框,分别对应输入纹理中映射到输出 0 和 1 的绝对值。
  • 可拖拽手柄:在黑/白点范围内进行更精细的交互调整。

附加功能按钮:

  • Zoom In(放大范围):将极值范围收窄至当前手柄所选范围,方便从大范围逐步精确到目标范围后再次微调。
  • Autofit(自动适配):自动将范围控制适配到当前可见通道的最小/最大值。右键单击此按钮可开启”跟随自动适配”模式,切换 event 或纹理时始终自动适配。
  • Reset(重置):将范围恢复为默认的 [0, 1]。
  • Histogram(直方图):切换开关,开启后将范围控制条扩展为显示值域直方图,展示像素值的分布情况。直方图基于所有可见通道的数值均值,随黑白点移动实时更新。

Gamma 显示

工具栏中的 gamma 控制按钮(标记为 γ):对线性数据进行”过校正”以符合预期的显示效果,可切换关闭以查看原始线性值。


Pixel History(像素历史)功能使用

Pixel History 功能展示从帧起始到当前选中 event 为止,对选定纹理上某像素的所有修改记录。

触发方式

  1. 在主视图中右键单击拾取目标像素(或使用键盘方向键微调选择位置)。
  2. 在 Pixel Context 面板中单击”History”按钮,打开像素历史视图。

视图说明

每个有修改的 draw event 显示为一行,以颜色区分结果:

  • 绿色:该 event 有 fragment 通过了所有 pipeline 测试(即产生了写入)。
  • 红色:该 event 的 fragment 未通过某项测试(被丢弃)。
  • 浅灰色:Shader 可写资源的任意写入,无法确定是否实际产生写入。

展开每个 event 可以查看是否有多个 fragment,以及每个 fragment 的 shader 输出值。

右键单击某个 event 中的 fragment 或 primitive,可以直接在该 event 处针对选定像素启动 Shader Debugger。


Pixel 调试(追踪单像素的绘制历史)

精确拾取像素

在 Texture Viewer 主视图悬停时,状态栏实时显示当前像素坐标及颜色色块。

  • 单击右键:拾取当前悬停像素,其数值保持显示不变,鼠标移动不影响结果。
  • 按住右键拖拽:实时更新拾取位置,方便微调。
  • 键盘方向键:每次移动一个像素,结合 Pixel Context 面板的放大视图进行精细调整。
  • Ctrl-G / Goto Location:在弹出框输入精确坐标直接跳转到目标像素。

对于深度纹理,深度值和模板值分开展示;模板值及其他整型纹理显示为整数。

选择正确的子资源

像素拾取的值始终是精确的原始值,不受当前通道选择或范围控制的影响。拾取前需先在 Subresource Selection 中选好正确的 mip 层级、数组层或 Cubemap 面。

启动 Pixel Debugger

在 Pixel Context 面板中选定像素后,如果当前 API 支持 Shader 调试,面板下方的”Debug”按钮会激活。单击后进入 Shader Debugger,以逐指令方式追踪绘制该像素的 fragment shader 执行过程。

更多 Shader 调试细节参见 Shader Debugger 相关文档。

Render Overlay 辅助分析

工具栏提供多种覆盖层(Overlay)辅助调试像素相关问题,常用选项:

  • Highlight Drawcall:高亮当前 draw call 覆盖区域,其余区域变暗,便于定位目标绘制。
  • Depth Test:红色区域为未通过深度测试的 fragment,绿色区域为通过的 fragment。
  • Stencil Test:类似深度测试覆盖层,针对模板测试。
  • NaN/Inf/-ve display:以灰度图为底,红色标注 NaN,绿色标注无穷大,蓝色标注负值,用于排查数值异常。
  • Clipping:红色标注低于当前黑点的值,绿色标注高于白点的值,配合范围控制识别超范围数据。
  • Clear before Pass / Clear before Draw:清除当前 pass 或当前 draw 之前的目标,使该 draw 的贡献更易观察,尤其适用于 blending 场景。