Fix render pacing and profiler readback

Amp-Thread-ID: https://ampcode.com/threads/T-01a01380-b478-77d0-84a0-102880a5c5ae
Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
This commit is contained in:
Amp
2026-08-20 15:42:31 +00:00
co-authored by heaust
parent abfa428464
commit 481d105f19
8 changed files with 100 additions and 99 deletions
+1 -1
View File
@@ -292,7 +292,7 @@ onUnmounted(() => {
<span>{{ adapterInfo || profile.adapter }}</span>
<span>
{{ profile.canvas.width }}×{{ profile.canvas.height }} ·
{{ profile.wallMilliseconds.toFixed(2) }} ms wall
{{ profile.readbackMilliseconds.toFixed(2) }} ms readback latency
</span>
</div>
<p v-if="profilerSupported === false">
+1 -1
View File
@@ -402,7 +402,7 @@ for (let y = 0; y < 64; y++) {
}
}
const scene = new Scene(canvas, { fps: 1000, hdr: true });
const scene = new Scene(canvas, { hdr: true });
await scene.ready;
log("Benchmark core ready; preparing geometry…");
const camera = new ArcRotateCamera(scene, {
+1 -1
View File
@@ -56,7 +56,7 @@ await core.setProfiler(false);
stop();
```
`new YawnCore(canvas, { debug: true })` enables the same timestamp-query mode at startup. Timings describe physical GPU passes and actual compiled draw counts; compatible indexed draws over consecutive instances collapse into one command. The sidebar also reports canvas size and wall-clock completion time.
`new YawnCore(canvas, { debug: true })` enables the same timestamp-query mode at startup. Samples are read back asynchronously, so profiling does not serialize the GPU queue. Timings describe physical GPU passes and actual compiled draw counts; compatible indexed draws over consecutive instances collapse into one command. The sidebar also reports canvas size and wall-clock readback latency.
The saved **Forward benchmark** playground renders 138 logical objects and 4.5 million triangles. Add `&grid=32` to lower geometry density or `&overdraw=1` to stack the objects while diagnosing depth and fragment cost.
+1 -1
View File
@@ -24,7 +24,7 @@ const scene = new Scene(canvas, { hdr: true, fps: 60 });
await scene.ready;
```
`Scene` initializes conventional SOA rows and loads one clustered-forward HDR render graph. The core itself still starts with only its eight-float `info` row.
Omit `fps` to render as fast as the browser and GPU allow. `Scene` initializes conventional SOA rows and loads one clustered-forward HDR render graph. The core itself still starts with only its eight-float `info` row.
## 3. Add a triangle