Habilidad CLI de RenderDoc
Análisis headless de capturas de cuadros GPU de RenderDoc (archivos .rdc) desde la línea de comandos.
Capacidades
- Inspección de captura: metadatos, secciones, miniaturas, conversión de formato
- Árbol de acciones: listar/buscar/filtrar llamadas de dibujo, clears, dispatches, marcadores
- Operaciones con texturas: listar, inspeccionar, exportar (PNG/JPG/DDS/HDR/EXR), selección de píxeles
- Estado del pipeline: estado completo de shaders/RT/viewport en cualquier evento
- Análisis de shaders: exportar shader en forma legible (HLSL/GLSL/disasm), lectura de constant buffers
- Inspección de recursos: enumeración de buffers/texturas, lectura de datos en crudo
- Datos de malla: decodificación de entrada/salida del vertex shader
- Contadores GPU: enumerar y obtener contadores de rendimiento del hardware
Grupos de Comandos
capture
cli-anything-renderdoc -c frame.rdc capture info # Metadatos + secciones
cli-anything-renderdoc -c frame.rdc capture thumb -o t.png # Extraer miniatura
cli-anything-renderdoc -c frame.rdc capture convert -o out.rdc --format rdc
actions
cli-anything-renderdoc -c frame.rdc actions list # Todas las acciones
cli-anything-renderdoc -c frame.rdc actions list --draws-only # Solo llamadas de dibujo
cli-anything-renderdoc -c frame.rdc actions summary # Conteos por tipo
cli-anything-renderdoc -c frame.rdc actions find "Shadow" # Buscar por nombre
cli-anything-renderdoc -c frame.rdc actions get 42 # Acción individual
textures
cli-anything-renderdoc -c frame.rdc textures list
cli-anything-renderdoc -c frame.rdc textures get <id>
cli-anything-renderdoc -c frame.rdc textures save <id> -o out.png --format png
cli-anything-renderdoc -c frame.rdc textures save-outputs 42 -o ./renders/
cli-anything-renderdoc -c frame.rdc textures pick <id> 100 200
pipeline
cli-anything-renderdoc -c frame.rdc pipeline state 42
# Exportar shader en forma legible
# Shaders de texto (GLSL/HLSL) → guardados directamente
# Shaders binarios (DXBC/SPIR-V) → fuente incrustada (HLSL/GLSL) o desensamblado
cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Fragment
cli-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
# Comparar el estado del pipeline entre dos eventos
# Salida por defecto: mismo directorio que el archivo de captura; usa -o para sobrescribir
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc
cli-anything-renderdoc -c frame.rdc pipeline diff 100 200 # misma captura
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc -o result.json
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc --no-compact
resources
cli-anything-renderdoc -c frame.rdc resources list
cli-anything-renderdoc -c frame.rdc resources buffers
cli-anything-renderdoc -c frame.rdc resources read-buffer <id> --format float32
mesh
cli-anything-renderdoc -c frame.rdc mesh inputs 42 --max-vertices 10
cli-anything-renderdoc -c frame.rdc mesh outputs 42
counters
cli-anything-renderdoc -c frame.rdc counters list
cli-anything-renderdoc -c frame.rdc counters fetch --ids 1,2,3
Paquetes de Vista Previa
El soporte de vista previa de RenderDoc está pensado para inspección fiel de capturas, no para vista previa creativa en vivo.
# Listar recetas de vista previa
cli-anything-renderdoc -c frame.rdc --json preview recipes
# Capturar un paquete de vista previa para la captura activa o un evento específico
cli-anything-renderdoc -c frame.rdc --json preview capture --recipe quick --event-id 42
# Capturar un paquete de vista previa de diferencias para dos eventos o capturas
cli-anything-renderdoc -c frame.rdc --json preview diff 100 200
cli-anything-renderdoc -c a.rdc --json preview diff 100 200 --capture-b b.rdc
# Obtener el último paquete existente para la captura
cli-anything-renderdoc -c frame.rdc --json preview latest --recipe quick
Contenido típico de un paquete de vista previa:
- miniatura de la captura
- imágenes de objetivo de salida
pipeline_state.jsonaction_summary.json
Los paquetes de diferencias incluyen adicionalmente:
- Miniaturas A/B
- Imágenes de objetivo de salida A/B
pipeline_diff.json
RenderDoc actualmente no expone sesiones de vista previa en vivo. En su lugar, cada paquete de captura/diferencias se agrega a un trajectory.json estable a nivel de receta.
Comandos de visualización:
cli-hub previews inspect /path/to/bundle
cli-hub previews html /path/to/bundle -o page.html
cli-hub previews open /path/to/bundle
Modo JSON
Todos los comandos admiten --json para salida legible por máquina:
cli-anything-renderdoc -c frame.rdc --json actions summary
Variables de Entorno
| Variable | Descripción |
|---|---|
RENDERDOC_CAPTURE | Ruta por defecto del archivo de captura |
PYTHONPATH | Debe incluir la ruta de RenderDoc |
Notas de Uso para Agentes
- Usa
pipeline shader-exportpara extraer shaders — para shaders binarios (DXBC/SPIR-V) exporta automáticamente la fuente HLSL/GLSL incrustada o recurre al desensamblado; para shaders de texto (GLSL/HLSL) guarda directamente la fuente original - Formatos de shader según la API de captura:
- D3D11 → binario DXBC, exportado como fuente HLSL incrustada (
.hlsl) o ensamblador de bytecode (.dxbc.asm) - OpenGL/GLES → fuente de texto GLSL (
.glsl), ya legible - Vulkan → binario SPIR-V, exportado como fuente GLSL incrustada (
.glsl) o ensamblador SPIR-V (.spv.asm)
- D3D11 → binario DXBC, exportado como fuente HLSL incrustada (
- Usa
pipeline diffpara comparar dos eventos — escribe un archivo JSON e imprime solo la ruta; usa-bpara una segunda captura - Especifica siempre
--jsonpara consumo programático - Usa
actions summaryprimero para entender la complejidad de la captura - Usa
actions list --draws-onlypara centrarte en el renderizado real - Usa
preview captureopreview diffcuando el agente necesite un paquete de inspección portátil y fiel en lugar de solo llamadas de reproducción en crudo - Lee
_trajectory_pathdel JSON de vista previa si necesitas un historial persistente de captura/diferencias - Usa
cli-hub previews ...solo para inspeccionar/abrir paquetes ya generados - El estado del pipeline requiere un ID de evento de la lista de acciones
- El guardado de texturas admite: png, jpg, bmp, tga, hdr, exr, dds
- Los datos de buffer se pueden decodificar como hex, float32, uint32 o bytes en crudo