rdc-cli
BANANASJIM/rdc-cliСкриптуемый CLI для работы с .rdc-файлами RenderDoc: превращает захваты кадров в Unix-потоки текста, совместимые с grep, jq и AI-агентами. Подходит для отладки графики, CI-пайплайнов и автоматизации.
Установка
git clone https://github.com/BANANASJIM/rdc-cli.gitREADME
_____ _____ _____
| __ \| __ \ / ____|
| |__) | | | | |
| _ /| | | | |
| | \ \| |__| | |____
|_| \_\_____/ \_____| cli
Превращает RenderDoc-захваты в Unix-потоки текста. rdc-cli не заменяет RenderDoc — он делает содержимое .rdc-файлов доступным для grep, awk, sort, diff, jq и AI-агентов.
rdc open scene.rdc
rdc draws | grep Shadow | sort -t$'\t' -k3 -rn | head -5 # топ-5 теневых draw-вызовов по числу треугольников
rdc shader 142 ps | grep shadowMap # поиск сэмплирования теней в PS
rdc cat /draws/142/shader/ps/constants # просмотр привязанных констант
rdc diff before.rdc after.rdc --draws | grep '~' # что изменилось между двумя кадрами?
rdc closeУстановка
PyPI — Linux (рекомендуется)
uv tool install rdc-cli # или: pipx install rdc-cli
rdc setup-renderdoc # сборка Python-модуля renderdoc из исходников
rdc doctor # проверка работоспособностиPyPI — Windows (требуется git, uv, Visual Studio Build Tools)
uv tool install rdc-cli # или: pipx install rdc-cli
rdc setup-renderdoc # сборка Python-модуля renderdoc из исходников
rdc doctor # проверка работоспособностиPyPI — macOS (только Split-клиент)
uv tool install rdc-cli # или: pipx install rdc-cli
rdc doctorAUR (Arch Linux — renderdoc собирается автоматически, дополнительная настройка не нужна)
yay -S rdc-cli-git # рекомендуется: отслеживает последний master
# или
yay -S rdc-cli # стабильная: отслеживает теговые релизыИз исходников
git clone https://github.com/BANANASJIM/rdc-cli.git
cd rdc-cli
pixi install && pixi run sync
pixi run install # редактируемая установка + автодополнение в shell
pixi run setup-renderdoc # сборка renderdoc (pixi устанавливает тулчейн на macOS)Матрица поддержки платформ
| Платформа | Локальный захват/воспроизведение | Split-клиент | Удалённый захват |
|---|---|---|---|
| Linux | ✅ | ✅ | ✅ |
| macOS | ❌ (пока не поддерживается) | ✅ (рекомендуется) | — |
| Windows | ✅ | ✅ | ✅ |
| Android | — | — | ✅ захват + удалённое воспроизведение |
Начальная настройка RenderDoc
После установки rdc-cli соберите Python-модуль renderdoc:
rdc setup-renderdoc
При сборке из исходников используйте обёртку pixi: pixi run setup-renderdoc
Быстрый старт
Исследование захвата как файловой системы:
rdc ls / # верхний уровень: draws, passes, resources, shaders, ...
rdc ls /draws/142 # что внутри этого draw-вызова?
rdc cat /draws/142/pipeline/blend # состояние цветового блендинга
rdc tree /passes --depth 2 # структура проходов с первого взглядаОтладка шейдеров — без GUI:
rdc shader 142 ps # дизассемблирование пиксельного шейдера
rdc shader 142 ps --constants # текущие значения константного буфера
rdc debug pixel 142 400 300 --trace # пошаговая трассировка выполнения PS
rdc search "shadowMap" # поиск по всем шейдерам кадраЭкспорт и скриптинг:
rdc texture 5 -o albedo.png # экспорт текстуры
rdc rt 142 -o render.png # экспорт рендер-таргета
rdc buffer 88 -o verts.bin # экспорт сырого буфера
rdc snapshot 142 -o ./snap/ # пайплайн + шейдеры + рендер-таргеты
rdc draws --json | jq '.[] | select(.triangles > 10000)' # фильтрация через jqПроверки в CI:
rdc open frame.rdc
rdc assert-pixel 142 400 300 --expect "0.5 0.0 0.0 1.0" --tolerance 0.01
rdc assert-state 142 topology --expect TriangleList
rdc assert-image golden.png actual.png --threshold 0.001
rdc assert-clean --min-severity HIGH
rdc closeСравнение двух кадров:
rdc diff before.rdc after.rdc --shortstat # сводка: draws ±N, resources ±N
rdc diff before.rdc after.rdc --draws # изменения по каждому draw-вызову
rdc diff before.rdc after.rdc --framebuffer # попиксельное сравнение изображенийУдалённое воспроизведение и Split-режим
rdc-cli поддерживает три режима развёртывания:
| Режим | Демон запускается на | Доступ к GPU | Нужен renderdoc на клиенте? |
|---|---|---|---|
| Local | клиент | локальный GPU | да |
Proxy (--proxy) | клиент | удалённый сервер renderdoccmd | да |
Split (--listen/--connect) | сервер | GPU на стороне сервера | нет |
# Proxy: локальный демон, удалённый GPU (требуется renderdoccmd на удалённой машине)
rdc open frame.rdc --proxy gpu-server:39920
# Split-сервер: привязка к конкретному интерфейсу LAN
rdc open frame.rdc --listen 192.168.1.10:54321
# Split-клиент: подключение с любой машины (renderdoc не нужен)
rdc open --connect replay-host:54321 --token TOKEN
rdc draws # все команды работают прозрачно
rdc closeSplit-режим рекомендуется для кросс-платформенного использования. Все команды работают прозрачно независимо от режима.
Захват на Android и удалённое воспроизведение
rdc setup-renderdoc --android # загрузка APK RenderDoc для Android
rdc android setup # установка и запуск сервера захвата на устройстве
rdc android capture com.example.app # захват кадра из приложения
rdc android pull ./frames/ # загрузка .rdc-файлов на хост
rdc open frames/frame_001.rdc # воспроизведение локально или через SplitИнтеграция с Claude
rdc-cli разработан как инструмент для AI-агентов. Claude может управлять им напрямую через MCP или системный shell.
Быстрый старт с Claude Desktop
Добавьте в конфигурацию Claude Desktop:
{
"mcpServers": {
"rdc": {
"command": "rdc",
"args": ["mcp"]
}
}
}Затем в Claude Desktop:
Открой scene.rdc и найди пять самых дорогих draw-вызовов по числу треугольников.
Claude выполнит:
rdc open scene.rdc
rdc draws --json
# ... анализ и ответ
rdc closeИспользование через shell-инструмент
Если Claude имеет доступ к bash/shell, rdc-cli работает напрямую:
Пользователь: Проанализируй frame.rdc и найди все draw-вызовы с более чем 50 000 треугольников.
Claude: Выполняю анализ...
[запускает: rdc open frame.rdc && rdc draws --json | jq '[.[] | select(.triangles > 50000)]']
Возможности для AI-агентов
- Машиночитаемый вывод: все команды поддерживают
--json - Детерминированные проверки:
rdc assert-*возвращает коды выхода для принятия решений агентом - Сессионная модель:
rdc open/rdc closeуправляет состоянием между вызовами инструментов - Обход GUI: полный доступ к данным кадра без графического интерфейса
- Поддержка CI: работает в headless-окружениях
Примеры запросов для Claude
"Сравни before.rdc и after.rdc — что изменилось в теневых проходах?"
"Найди все пиксельные шейдеры, использующие более 3 сэмплеров текстур."
"Экспортируй рендер-таргет из draw-вызова 142 и опиши, что на нём изображено."
"Запусти регрессионные проверки для frame.rdc по golden-образцам."
Справочник команд
Управление сессией
| Команда | Описание |
|---|---|
rdc open <file> | Открыть .rdc-файл (запускает фоновый демон) |
rdc close | Закрыть текущую сессию |
rdc status | Показать информацию о текущей сессии |
rdc doctor | Проверить установку и зависимости |
Навигация по файловой системе
| Команда | Описание |
|---|---|
rdc ls [path] | Список узлов по пути |
rdc cat <path> | Вывод содержимого узла |
rdc tree [path] | Рекурсивный просмотр дерева |
Анализ кадра
| Команда | Описание |
|---|---|
rdc draws | Список всех draw-вызовов |
rdc passes | Список рендер-проходов |
rdc resources | Список ресурсов кадра |
rdc shader <draw> <stage> | Дизассемблирование шейдера |
rdc search <pattern> | Поиск по всем шейдерам |
Отладка
| Команда | Описание |
|---|---|
rdc debug pixel <draw> <x> <y> | Трассировка выполнения пиксельного шейдера |
rdc debug vertex <draw> <idx> | Трассировка выполнения вершинного шейдера |
Экспорт
| Команда | Описание |
|---|---|
rdc texture <id> -o <file> | Экспорт текстуры |
rdc rt <draw> -o <file> | Экспорт рендер-таргета |
rdc buffer <id> -o <file> | Экспорт буфера |
rdc snapshot <draw> -o <dir> | Полный снимок состояния пайплайна |
Проверки
| Команда | Описание |
|---|---|
rdc assert-pixel <draw> <x> <y> | Проверка значения пикселя |
rdc assert-state <draw> <key> | Проверка состояния пайплайна |
rdc assert-image <golden> <actual> | Сравнение изображений |
rdc assert-clean | Проверка на отсутствие ошибок API |
Сравнение
| Команда | Описание |
|---|---|
rdc diff <a.rdc> <b.rdc> | Сравнение двух захватов |
Удалённое управление
| Команда | Описание |
|---|---|
rdc open <file> --proxy <host:port> | Подключение через удалённый renderdoccmd |
rdc open <file> --listen <addr:port> | Запуск Split-сервера |
rdc open --connect <host:port> | Подключение к Split-серверу |
Разработка
git clone https://github.com/BANANASJIM/rdc-cli.git
cd rdc-cli
pixi install
pixi run sync # установка зависимостей
pixi run test # запуск тестов
pixi run lint # проверка кода
pixi run docs # сборка документацииЛицензия
MIT — подробности в файле LICENSE.