RenderDoc for VS CodeInspect, analyze, and debug GPU captures — without leaving your editor. A native-backed RenderDoc frontend, reimagined for the modern editor workflow. OverviewRenderDoc for VS Code brings the full power of the RenderDoc graphics debugger into Visual Studio Code. Open any No context switching. No external viewers. Just your capture, your editor, and your agent. Highlights
ScreenshotsClick any screenshot to open it at full size. Capture OverviewOverview — frame thumbnail, API and driver metadata, and capture summary. Sidebar Views — Draw Calls, Resources, and selection context in the activity bar. Inspector ViewsPipeline State — inspect bound stages and per-draw graphics state. Pipeline Graph — render-flow visualization derived from the full event hierarchy. Pipeline Graph Detail — drill into pass groups, representative commands, and selected-event context. Shaders — source, disassembly, and shader-stage analysis in one place. Texture View — inspect render targets and sampled textures for the current draw. Texture Info — zoom into an individual texture with focused metadata. Mesh View — inspect vertex/index data and geometry layout at a selected event. Resource Inspector — browse textures, buffers, and shader resources across the capture. Overview — capture metadata, API and driver details, and frame summary. Mali Offline Compiler — choose a target Mali GPU profile and inspect static shader analysis output. Capture WorkflowLaunch Panel — configure the target executable, arguments, output path, and capture trigger. Capture Target View — switch between local and remote targets, attach, and trigger captures. AI and MCP WorkflowCopilot Chat — use MCP Connection Info — copy the local endpoint and client snippets for other MCP-capable tools. Quick Start
Usage Guide1 · Installing the ExtensionOption A — from VSIX (recommended):
Or: GitHub Releases publish a single Option B — from source: see Building from Source. 2 · Installing RenderDoc (runtime dependency)The extension loads RenderDoc's replay library ( If you are developing from source, or using a package without the bundled runtime, install RenderDoc locally. renderdoc.org/builds — any stable version v1.30 or newer.
If you are developing from source, also build the native helper in 3 · Opening a Capture
The activity bar shows three sidebar views: Capture Info, Draw Calls, and Resources. 4 · Inspector WorkflowClick any draw call in the Draw Calls tree to open the tabbed Inspector panel.
Navigation:
5 · GPU Timing Profiling
6 · Mali Offline Compiler Integration
7 · Copilot Chat (
|
| Tool | Description |
|---|---|
#openCapture |
Resolve the active or open .rdc in this VS Code window, or load a specific capture by filePath |
#selectionContext |
Current Inspector focus: selected EID, draw call, sidebar resource, replay status, and related context |
#captureInfo |
Capture metadata: API, driver, version, file sections, and capture summary |
#frameSummary |
High-level frame structure: top-level passes/markers, draw counts, and capture stats |
#analyzeFrame |
Holistic frame analysis with flagged issues and suggested next inspection steps |
Events and timings:
| Tool | Description |
|---|---|
#drawCalls |
Full draw call tree with marker hierarchy, filtering, and durationUs when timings are available |
#actionTimings |
Fetch GPU timings on demand, optionally filtered by event IDs or marker groups |
#eventDetails |
Full details for one EID, including richer pipeline context when replay is active |
#pipelineState |
Complete pipeline state at a given EID |
Shaders and resources:
| Tool | Description |
|---|---|
#shaderSource |
Raw GLSL/HLSL source for the bound shader stages at an EID |
#shaderInfo |
Higher-level shader analysis with bindings, samplers, and decoded constant buffers |
#resources |
Paginated list of textures, buffers, and shaders in the capture |
#resourceDetail |
Detailed information for a specific resource ID |
#textureInfo |
Texture metadata and identity lookup |
#textureData |
Texture pixel data sampled at a specific event/mip and returned as PNG data |
#bufferContents |
Raw bytes from a GPU buffer with offset/length paging |
Reverse lookups and source mapping:
| Tool | Description |
|---|---|
#findDrawsByShader |
Reverse-search draw calls by shader name or entry point |
#findDrawsByTexture |
Reverse-search draw calls by sampled texture name |
#findDrawsByResourceId |
Reverse-search draw calls by exact resource ID |
#projectImplementation |
Search the open workspace for likely shader/pass implementation files related to a capture event |
Default Copilot Skill
The workspace also ships a project-scoped skill at .github/skills/renderdoc-analysis for the default Copilot chat experience. That skill helps plain Copilot recognize RenderDoc-oriented prompts and route them through the existing renderdoc_* tools even when you do not explicitly address @renderdoc.
For Unity engineering workspaces, the project also ships .github/skills/renderdoc-unity-analysis. That skill reuses the same RenderDoc capture tools for timings, EIDs, shaders, and pipeline facts, then adds Unity-specific routing for URP, HDRP, SRP, RenderGraph, ScriptableRendererFeature, ScriptableRenderPass, and Unity-side pass/shader implementation lookup.
Responsibility split:
- Language model tools are the capability layer. They provide the real capture data: frame summaries, draw calls, timings, pipeline state, shader data, textures, buffers, and reverse lookups.
renderdoc-analysisskill is the workflow layer for default Copilot. It owns question-to-workflow routing, trigger phrases, and generic analysis guidance.renderdoc-unity-analysisskill is a Unity-specialized workflow layer. It reuses the same capture facts but interprets them in Unity render-pipeline terms and maps suspicious passes or shaders back to Unity project code..github/copilot-instructions.mdis the always-on workspace guidance layer for default Copilot in this repository. It reinforces that localrenderdoc_*tools are authoritative when they can answer the question.@renderdocparticipant prompt is the runtime policy layer. It keeps hard rules that must always apply in participant chats, such as resolving missing IDs from selection context, trusting timing data for cost ranking, and surfacing native bridge limitations.
Use @renderdoc when you want the strongest routing guarantees. Use default Copilot when you want the same capture tools to combine with broader repository reasoning.
8 · Exporting Resources
- Texture → PNG: right-click a texture in Resources → Export Texture (ASTC, HDR, sRGB handled automatically)
- Shader source: Inspector → Shaders tab → Copy button, or Open in Editor for a full VS Code buffer
9 · Troubleshooting
| Symptom | Fix |
|---|---|
| "Native bridge not available" / empty shaders | If you are running from source, build native/build/Release/renderdoc_bridge.exe. If you installed from VSIX and the helper is missing, run RenderDoc: Restore Native Bridge…. Replay also needs either a bundled .renderdoc-runtime or a local RenderDoc install. |
| Inspector stays blank after clicking a draw | Developer: Reload Window — auto-recreates the panel |
| Textures tab shows nothing | The draw has no sampled inputs/RTs, or pipeline is still loading |
| Mali Offline Compiler button missing | Set renderdoc.maliOfflineCompilerPath to the path of malioc.exe |
@renderdoc not available in Chat |
Ensure GitHub Copilot Chat is signed in and enabled |
GPU timings show N/A |
Click Fetch GPU Timings in the Draw Calls sidebar first |
| Capture recommends a remote replay host | Connect a compatible target, use RenderDoc: Try Local Replay, or set renderdoc.alwaysReplayLocally if you do not want the prompt |
Architecture
┌──────────────────────────────────────────────────────────────────────┐
│ VS Code Extension Host │
│ ┌──────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Sidebar │ │ Inspector │ │ Copilot Participant │ │
│ │ Views │ │ Webview │ │ + LM Tools (21×) │ │
│ └──────┬───────┘ └────────┬─────────┘ └──────────┬───────────┘ │
│ └────────────────────┼────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ RenderDocBridge │ ← TypeScript JSON-RPC │
│ └──────────┬──────────┘ │
└──────────────────────────────┼───────────────────────────────────────┘
│ stdin / stdout
▼
┌───────────────────────┐
│ renderdoc_bridge.exe │ ← C++ native bridge
│ (links to RenderDoc) │
└───────────┬───────────┘
│ IReplayController
▼
┌───────────────────────┐
│ renderdoc.dll runtime │
└───────────────────────┘
The native bridge maintains a long-lived replay session, caches pipeline state per EID, and streams results as JSON — shader disassembly, descriptor access, GPU timings, and texture readback all execute at native speed.
Project Layout
renderdoc-for-vscode/
├── src/
│ ├── extension.ts # Activation, command registration
│ ├── renderdocBridge.ts # Native bridge client (JSON-RPC over stdio)
│ ├── rdcParser.ts # Pure-TS .rdc header/section parser
│ ├── views/ # Sidebar tree providers + Inspector webview
│ │ ├── inspectorPanel.ts # Main Inspector panel (IPC, Mali analysis)
│ │ └── inspector/html.ts # Inspector HTML template generation
│ └── copilot/
│ ├── chatParticipant.ts # @renderdoc Copilot Chat handler
│ └── tools.ts # Language model tool implementations
├── native/
│ ├── include/ # RenderDoc public headers (vendored)
│ ├── 3rdparty/ # ASTC decoder, stb_image_write
│ ├── src/ # main.cpp, dll_loader.cpp, json.hpp
│ └── CMakeLists.txt
├── .renderdoc-runtime/ # Bundled RenderDoc runtime for packaged VSIX releases
├── media/inspector/ # Webview frontend (JS + CSS)
├── package.json
├── tsconfig.json
└── LICENSE
Building from Source
Prerequisites
- Node.js 18+ and npm
- CMake 3.20+ with a C++17 compiler (MSVC 2019+ / Clang 12+ / GCC 10+)
- RenderDoc installed locally (replay DLL required at runtime)
Build
# TypeScript extension
npm install
npm run compile
# C++ native bridge (Windows / MSVC)
cd native
cmake -B build -A x64
cmake --build build --config Release
The compiled renderdoc_bridge.exe is discovered automatically by the extension at runtime.
Run in Development
Press F5 in VS Code — launches an Extension Development Host with the extension loaded and the debugger attached.
Configuration
| Setting | Default | Description |
|---|---|---|
renderdoc.commandTimeout |
60000 |
Timeout in milliseconds for renderdoccmd operations such as thumbnail fallbacks |
renderdoc.alwaysReplayLocally |
false |
Skip the replay-host prompt and continue locally when a capture suggests remote replay |
renderdoc.maliOfflineCompilerPath |
(empty) | Path to malioc.exe for shader analysis |
renderdoc.mcpServer.enabled |
true |
Expose the optional local RenderDoc For VSCode MCP endpoint for other AI clients |
renderdoc.mcpServer.port |
38967 |
TCP port used by the local RenderDoc For VSCode MCP server |
Packaged VSIX installs auto-discover the bundled runtime and native bridge when they are present. Extra setup is typically only needed for source builds or optional Mali analysis.
Supported APIs
| API | Capture Load | Pipeline State | Shader Source | Texture Preview | GPU Timings |
|---|---|---|---|---|---|
| Vulkan | ✅ | ✅ | ✅ | ✅ | ✅ |
| D3D12 | ✅ | ✅ | ✅ | ✅ | ✅ |
| D3D11 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenGL | ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenGL ES | ✅ | ✅ | ✅ | ✅ | ✅ |
Contributing
Pull requests are welcome. For significant changes, open an issue first to discuss the design.
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Write conventional commit messages
- Open a PR targeting
main
License
Released under the MIT License.
RenderDoc is © Baldur Karlsson and contributors, licensed under the MIT License.
Built for graphics engineers who live in VS Code.















