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