Skip to content

Commit 426ec67

Browse files
committed
feat: scene renderer testing
1 parent b69941d commit 426ec67

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

fission/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"bench:baseline": "vitest bench --mode test --project chromium --outputJson src/bench/baseline.json",
1717
"bench:chrome": "vitest bench --mode test --project chromium",
1818
"bench:firefox": "vitest bench --mode test --project firefox",
19-
"bench:ci": "vitest bench --mode test --project chromium --compare src/bench/baseline.json",
19+
"bench:check": "vitest bench --mode test --project chromium --compare src/bench/baseline.json",
2020
"build": "tsc && vite build",
2121
"build:prod": "tsc && vite build --base=/fission/ --outDir dist/prod",
2222
"build:dev": "tsc && vite build --base=/fission-closed/ --outDir dist/dev",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { server } from "@vitest/browser/context"
2+
import { bench, describe } from "vitest"
3+
import MirabufInstance from "@/mirabuf/MirabufInstance"
4+
import MirabufParser from "@/mirabuf/MirabufParser"
5+
import type { mirabuf } from "@/proto/mirabuf"
6+
import SceneRenderer from "@/systems/scene/SceneRenderer"
7+
import World from "@/systems/World"
8+
import { getMiraAssembly } from "@/test/GetAssets"
9+
10+
const STANDARD_FRAME_DELTA = 1 / 60
11+
12+
const [dozer, multiJoint, field2023] = (await Promise.all([
13+
getMiraAssembly("DOZER"),
14+
getMiraAssembly("MULTI_JOINT"),
15+
getMiraAssembly(2023),
16+
])) as [mirabuf.Assembly, mirabuf.Assembly, mirabuf.Assembly]
17+
18+
World.initWorld()
19+
20+
function makeRenderer(assemblies: mirabuf.Assembly[]): SceneRenderer {
21+
const renderer = new SceneRenderer()
22+
for (const assembly of assemblies) {
23+
const instance = new MirabufInstance(new MirabufParser(assembly))
24+
instance.addToScene(renderer.scene)
25+
}
26+
renderer.updateCanvasSize()
27+
return renderer
28+
}
29+
30+
const emptyRenderer = makeRenderer([])
31+
const oneRobotRenderer = makeRenderer([dozer])
32+
const robotAndFieldRenderer = makeRenderer([dozer, field2023])
33+
const twoRobotsAndFieldRenderer = makeRenderer([dozer, multiJoint, field2023])
34+
35+
// Skip on firefox: WebGL is unreliable in the firefox instance under GitHub Actions
36+
// (same guard as MirabufRealLoad.test.ts).
37+
describe.skipIf(server.browser === "firefox")("SceneRenderer — full frame render", () => {
38+
bench("render — empty scene (ground + skybox)", () => {
39+
emptyRenderer.update(STANDARD_FRAME_DELTA)
40+
})
41+
42+
bench("render — 1 robot (Dozer)", () => {
43+
oneRobotRenderer.update(STANDARD_FRAME_DELTA)
44+
})
45+
46+
bench("render — 1 robot + field (2023)", () => {
47+
robotAndFieldRenderer.update(STANDARD_FRAME_DELTA)
48+
})
49+
50+
bench("render — 2 robots + field (2023)", () => {
51+
twoRobotsAndFieldRenderer.update(STANDARD_FRAME_DELTA)
52+
})
53+
})

0 commit comments

Comments
 (0)