Cli Anything Renderdoc

by hkuds34f519533bc1No license51K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 2 weeks ago

CLI harness for RenderDoc graphics debugger capture analysis

Instructions onlySoftware Development
AI-generated overview

Command-line harness for inspecting RenderDoc GPU frame captures, including actions, textures, shaders and pipeline state.

What it does
This skill documents a CLI tool that performs headless analysis of RenderDoc .rdc GPU frame captures. It inspects capture metadata and thumbnails, lists and searches the action tree, exports textures and shaders, reads pipeline state and constant buffers, enumerates resources and mesh data, and fetches GPU hardware counters. It also produces JSON output and portable preview bundles containing thumbnails, output-target images and pipeline/action summaries.
When to use it
Use it when you need to examine a RenderDoc capture without the GUI, for example to find draw calls, export a texture or shader, compare pipeline state between two events, or gather GPU counter data. It is suited to automated or agent-driven graphics debugging workflows that consume JSON output or preview bundles.
Requirements
Requires the RenderDoc Python bindings from a RenderDoc installation, click>=8.0 and prompt-toolkit>=3.0, installed via pip install cli-anything-renderdoc. PYTHONPATH must include the RenderDoc path, and RENDERDOC_CAPTURE can set a default capture file. It ships no scripts; it is instructions only.

RenderDoc CLI Skill

Headless command-line analysis of RenderDoc GPU frame captures (.rdc files).

Capabilities

  • Capture inspection: metadata, sections, thumbnails, format conversion
  • Action tree: list/search/filter draw calls, clears, dispatches, markers
  • Texture operations: list, inspect, export (PNG/JPG/DDS/HDR/EXR), pixel picking
  • Pipeline state: full shader/RT/viewport state at any event
  • Shader analysis: export shader in human-readable form (HLSL/GLSL/disasm), constant buffer readback
  • Resource inspection: buffer/texture enumeration, raw data reading
  • Mesh data: vertex shader input/output decoding
  • GPU counters: enumerate and fetch hardware performance counters

Command Groups

capture

bash
cli-anything-renderdoc -c frame.rdc capture info          # Metadata + sectionscli-anything-renderdoc -c frame.rdc capture thumb -o t.png # Extract thumbnailcli-anything-renderdoc -c frame.rdc capture convert -o out.rdc --format rdc

actions

bash
cli-anything-renderdoc -c frame.rdc actions list           # All actionscli-anything-renderdoc -c frame.rdc actions list --draws-only  # Draw calls onlycli-anything-renderdoc -c frame.rdc actions summary        # Counts by typecli-anything-renderdoc -c frame.rdc actions find "Shadow"  # Search by namecli-anything-renderdoc -c frame.rdc actions get 42         # Single action

textures

bash
cli-anything-renderdoc -c frame.rdc textures listcli-anything-renderdoc -c frame.rdc textures get <id>cli-anything-renderdoc -c frame.rdc textures save <id> -o out.png --format pngcli-anything-renderdoc -c frame.rdc textures save-outputs 42 -o ./renders/cli-anything-renderdoc -c frame.rdc textures pick <id> 100 200

pipeline

bash
cli-anything-renderdoc -c frame.rdc pipeline state 42
# Export shader in human-readable form# Text shaders (GLSL/HLSL) → saved directly# Binary shaders (DXBC/SPIR-V) → embedded source (HLSL/GLSL) or disassemblycli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Fragmentcli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Vertex -o ./shaders/
cli-anything-renderdoc -c frame.rdc pipeline cbuffer 42 --stage Vertex --index 0
# Compare pipeline state between two events# Default output: same directory as the capture file  ;  use -o to overridecli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdccli-anything-renderdoc -c frame.rdc pipeline diff 100 200              # same capturecli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc -o result.jsoncli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc --no-compact

resources

bash
cli-anything-renderdoc -c frame.rdc resources listcli-anything-renderdoc -c frame.rdc resources bufferscli-anything-renderdoc -c frame.rdc resources read-buffer <id> --format float32

mesh

bash
cli-anything-renderdoc -c frame.rdc mesh inputs 42 --max-vertices 10cli-anything-renderdoc -c frame.rdc mesh outputs 42

counters

bash
cli-anything-renderdoc -c frame.rdc counters listcli-anything-renderdoc -c frame.rdc counters fetch --ids 1,2,3

Preview Bundles

RenderDoc preview support is for truthful capture inspection rather than live creative preview.

bash
# List preview recipescli-anything-renderdoc -c frame.rdc --json preview recipes
# Capture a preview bundle for the active capture or a specific eventcli-anything-renderdoc -c frame.rdc --json preview capture --recipe quick --event-id 42
# Capture a diff preview bundle for two events or capturescli-anything-renderdoc -c frame.rdc --json preview diff 100 200cli-anything-renderdoc -c a.rdc --json preview diff 100 200 --capture-b b.rdc
# Return the latest existing bundle for the capturecli-anything-renderdoc -c frame.rdc --json preview latest --recipe quick

Typical preview bundle contents:

  • capture thumbnail
  • output-target images
  • pipeline_state.json
  • action_summary.json

Diff bundles additionally include:

  • A/B thumbnails
  • A/B output-target images
  • pipeline_diff.json

RenderDoc does not currently expose live preview sessions. Instead, each capture/diff bundle appends to a stable recipe-level trajectory.json.

Viewer commands:

bash
cli-hub previews inspect /path/to/bundlecli-hub previews html /path/to/bundle -o page.htmlcli-hub previews open /path/to/bundle

JSON Mode

All commands support --json for machine-readable output:

bash
cli-anything-renderdoc -c frame.rdc --json actions summary

Environment Variables

VariableDescription
RENDERDOC_CAPTUREDefault capture file path
PYTHONPATHMust include RenderDoc path

Agent Usage Notes

  • Use pipeline shader-export to extract shaders — for binary shaders (DXBC/SPIR-V) it auto-exports embedded HLSL/GLSL source or falls back to disassembly; for text shaders (GLSL/HLSL) it saves the raw source directly
  • Shader formats by capture API:
    • D3D11 → DXBC binary, exported as embedded HLSL source (.hlsl) or bytecode asm (.dxbc.asm)
    • OpenGL/GLES → GLSL source text (.glsl), already human-readable
    • Vulkan → SPIR-V binary, exported as embedded GLSL source (.glsl) or SPIR-V asm (.spv.asm)
  • Use pipeline diff to compare two events — it writes a JSON file and prints only the path; use -b for a second capture
  • Always specify --json for programmatic consumption
  • Use actions summary first to understand capture complexity
  • Use actions list --draws-only to focus on actual rendering
  • Use preview capture or preview diff when the agent needs a portable, honest inspection bundle rather than raw replay calls alone
  • Read _trajectory_path from preview JSON if you need persistent capture/diff history
  • Use cli-hub previews ... only to inspect/open already-generated bundles
  • Pipeline state requires an event ID from the action list
  • Texture save supports: png, jpg, bmp, tga, hdr, exr, dds
  • Buffer data can be decoded as hex, float32, uint32, or raw bytes

Source and attribution

Source:hkuds/cli-anythinginskills/cli-anything-renderdocat commit34f5195

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal