Skip to content

Commit 3600e07

Browse files
committed
Separate non-WebGL specific stuff out to common renderer code.
1 parent a702472 commit 3600e07

29 files changed

+127
-127
lines changed

src/mapviewer/MapViewer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { Camera, CameraView, ProjectionType } from "../renderer/Camera";
2121
import { InputManager } from "../util/InputManager";
2222
import { MapManager } from "../renderer/MapManager";
2323
import { MapViewerRenderer } from "./MapViewerRenderer";
24-
import { MapViewerRendererType, createRenderer } from "./MapViewerRenderers";
24+
import { RendererType, createRenderer } from "../renderer/Renderers";
2525
import { NpcSpawn } from "../data/npc/NpcSpawn";
2626
import { ObjSpawn } from "../data/obj/ObjSpawn";
2727
import { RenderDataWorkerPool } from "../worker/RenderDataWorkerPool";
@@ -95,7 +95,7 @@ export class MapViewer {
9595
readonly objSpawns: ObjSpawn[],
9696
public npcSpawns: NpcSpawn[],
9797
readonly mapImageCache: Cache,
98-
rendererType: MapViewerRendererType,
98+
rendererType: RendererType,
9999
cache: LoadedCache,
100100
) {
101101
this.renderer = createRenderer(rendererType, this);

src/mapviewer/MapViewerApp.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { isIos, isWallpaperEngine } from "../util/DeviceUtil";
1010
import { fetchCacheList, loadCacheFiles } from "../util/Caches";
1111
import { MapViewer } from "./MapViewer";
1212
import { MapViewerContainer } from "./MapViewerContainer";
13-
import { getAvailableRenderers } from "./MapViewerRenderers";
13+
import { getAvailableRenderers } from "../renderer/Renderers";
1414
import { fetchNpcSpawns, getNpcSpawnsUrl } from "../data/npc/NpcSpawn";
1515
import { fetchObjSpawns } from "../data/obj/ObjSpawn";
1616
import { renderDataLoaderSerializer } from "../worker/RenderDataLoader";

src/mapviewer/MapViewerControls.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import { CameraView, ProjectionType } from "../renderer/Camera";
1111
import { MapViewer } from "./MapViewer";
1212
import { MapViewerRenderer } from "./MapViewerRenderer";
1313
import {
14-
MapViewerRendererType,
14+
RendererType,
1515
createRenderer,
1616
getAvailableRenderers,
1717
getRendererName,
18-
} from "./MapViewerRenderers";
18+
} from "../renderer/Renderers";
1919
import { fetchNpcSpawns, getNpcSpawnsUrl } from "../data/npc/NpcSpawn";
2020
import FileSaver from "file-saver";
2121

@@ -196,7 +196,7 @@ export const MapViewerControls = memo(
196196
};
197197
}, [mapViewer, cameraPoints, animationDuration, isCameraRunning]);
198198

199-
const rendererOptions: Record<string, MapViewerRendererType> = {};
199+
const rendererOptions: Record<string, RendererType> = {};
200200
for (let v of getAvailableRenderers()) {
201201
rendererOptions[getRendererName(v)] = v;
202202
}
@@ -322,7 +322,7 @@ export const MapViewerControls = memo(
322322
Renderer: {
323323
value: renderer.type,
324324
options: rendererOptions,
325-
onChange: (v: MapViewerRendererType) => {
325+
onChange: (v: RendererType) => {
326326
if (renderer.type !== v) {
327327
const renderer = createRenderer(v, mapViewer);
328328
mapViewer.setRenderer(renderer);

src/mapviewer/MapViewerRenderer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import { SceneBuilder } from "../rs/scene/SceneBuilder";
55
import { clamp } from "../util/MathUtil";
66
import { MapManager, MapSquare } from "../renderer/MapManager";
77
import { MapViewer } from "./MapViewer";
8-
import { MapViewerRendererType } from "./MapViewerRenderers";
8+
import { RendererType } from "../renderer/Renderers";
99

1010
export abstract class MapViewerRenderer<T extends MapSquare = MapSquare> extends Renderer {
11-
abstract type: MapViewerRendererType;
11+
abstract type: RendererType;
1212

1313
mapManager: MapManager<T>;
1414

src/mapviewer/MapViewerRenderers.ts

Lines changed: 0 additions & 47 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/renderer/Renderers.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { MapViewer } from "../mapviewer/MapViewer";
2+
import { MapViewerRenderer } from "../mapviewer/MapViewerRenderer";
3+
import { WebGLRenderer } from "./webgl/WebGLRenderer";
4+
import { WebGPURenderer } from "./webgpu/WebGPURenderer";
5+
6+
export type RendererType = "webgl" | "webgpu";
7+
export const WEBGL: RendererType = "webgl";
8+
export const WEBGPU: RendererType = "webgpu";
9+
10+
export function getRendererName(type: RendererType): string {
11+
switch (type) {
12+
case WEBGL:
13+
return "WebGL";
14+
case WEBGPU:
15+
return "WebGPU";
16+
default:
17+
throw new Error("Unknown renderer type");
18+
}
19+
}
20+
21+
export function createRenderer(
22+
type: RendererType,
23+
mapViewer: MapViewer,
24+
): MapViewerRenderer {
25+
switch (type) {
26+
case WEBGL:
27+
return new WebGLRenderer(mapViewer);
28+
case WEBGPU:
29+
return new WebGPURenderer(mapViewer);
30+
default:
31+
throw new Error("Unknown renderer type");
32+
}
33+
}
34+
35+
export function getAvailableRenderers(): RendererType[] {
36+
const renderers: RendererType[] = [];
37+
38+
if (WebGLRenderer.isSupported()) {
39+
renderers.push(WEBGL);
40+
}
41+
42+
if (WebGPURenderer.isSupported()) {
43+
renderers.push(WEBGPU);
44+
}
45+
46+
return renderers;
47+
}

0 commit comments

Comments
 (0)