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 为止,对选定纹理上某像素的所有修改记录。
触发方式
- 在主视图中右键单击拾取目标像素(或使用键盘方向键微调选择位置)。
- 在 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 场景。