first commit
This commit is contained in:
88
README.md
Normal file
88
README.md
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# Visualize
|
||||||
|
|
||||||
|
`Visualize` is a real-time graph viewer for instrumenting your programs.
|
||||||
|
|
||||||
|
You run a graphical app (`visualize.exe`), then your own program connects through a small C/C++ header-only API and streams plot data into shared memory. The viewer reads that memory and draws graphs live.
|
||||||
|
|
||||||
|
Demo video: `visualize_plot_zooms.mp4`
|
||||||
|
|
||||||
|
## What this project is for
|
||||||
|
|
||||||
|
- Quickly inspect runtime stats from external programs.
|
||||||
|
- Plot continuously changing values (frame time, latency, memory, counters, custom metrics).
|
||||||
|
- Organize data as `plot -> series -> points`.
|
||||||
|
- Visualize without building a full UI in your own app.
|
||||||
|
|
||||||
|
## Data Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
A[Your Program] -->|VIS_* API calls| B[Shared Memory Buffer\n32 MB]
|
||||||
|
B --> C[Visualize Viewer App]
|
||||||
|
C --> D[Plot Canvas Renderer]
|
||||||
|
D --> E[Line / Scatter / Histogram / Bar Graphs]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Core concept
|
||||||
|
|
||||||
|
The integration API is defined in `src/visualize/visualize.h`.
|
||||||
|
|
||||||
|
- Shared memory transport (`VIS_CreateSharedMemory`, `VIS_Connect`)
|
||||||
|
- Plot/series selection (`VIS_Plot`, `VIS_Series`)
|
||||||
|
- Data writes (`VIS_Point`, `VIS_Value`, `VIS_NamedValue`, `VIS_NamedPoint`)
|
||||||
|
- Labels and metadata (`VIS_Title`, `VIS_XLabel`, `VIS_YLabel`, `VIS_SeriesName`)
|
||||||
|
- Synchronization/commands (`VIS_Clear`, command ring buffer)
|
||||||
|
|
||||||
|
Internally, data is written as lightweight nodes into a single mapped buffer and then copied by the viewer into frame-local structures for safe rendering.
|
||||||
|
|
||||||
|
## Supported graph types
|
||||||
|
|
||||||
|
| Plot kind | Purpose |
|
||||||
|
|---|---|
|
||||||
|
| Line | Time-series and trend lines |
|
||||||
|
| Scatter | Point clouds / sampled observations |
|
||||||
|
| Histogram | Distribution of values |
|
||||||
|
| Bar | Named categorical values |
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
Before building, open the **x64 Visual Studio Command Prompt** and run commands from there. This ensures `cl.exe` (MSVC) is available on your `PATH`.
|
||||||
|
|
||||||
|
### 1) Build and run the viewer (Windows/MSVC)
|
||||||
|
|
||||||
|
From repository root:
|
||||||
|
|
||||||
|
```bat
|
||||||
|
build.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
This produces `build/visualize.exe`.
|
||||||
|
|
||||||
|
### 2) Send data from your program
|
||||||
|
|
||||||
|
Minimal example:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include "src/visualize/visualize.h"
|
||||||
|
|
||||||
|
void send_metrics() {
|
||||||
|
VIS_Plot(0);
|
||||||
|
VIS_Title("Application Timing");
|
||||||
|
VIS_XLabel("Frame");
|
||||||
|
VIS_YLabel("Milliseconds");
|
||||||
|
|
||||||
|
VIS_Series(0);
|
||||||
|
VIS_SeriesName("Update");
|
||||||
|
VIS_Point(1.0, 0.42);
|
||||||
|
|
||||||
|
VIS_Series(1);
|
||||||
|
VIS_SeriesName("Render");
|
||||||
|
VIS_Point(1.0, 0.31);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
- Start the viewer first so shared memory exists.
|
||||||
|
- API uses a fixed named shared-memory region (`VIS_BUFFER_NAME`).
|
||||||
|
- Buffer size is `32 MB` (`VIS_BUFFER_SIZE`).
|
||||||
Reference in New Issue
Block a user