@quake2ts/engine 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.global.js +617 -0
- package/dist/browser/index.global.js.map +1 -0
- package/dist/cjs/index.cjs +17604 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/index.js +17373 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/assets/animation.d.ts +33 -0
- package/dist/types/assets/animation.d.ts.map +1 -0
- package/dist/types/assets/audio.d.ts +27 -0
- package/dist/types/assets/audio.d.ts.map +1 -0
- package/dist/types/assets/audio.worker.d.ts +2 -0
- package/dist/types/assets/audio.worker.d.ts.map +1 -0
- package/dist/types/assets/browserIngestion.d.ts +7 -0
- package/dist/types/assets/browserIngestion.d.ts.map +1 -0
- package/dist/types/assets/bsp.d.ts +197 -0
- package/dist/types/assets/bsp.d.ts.map +1 -0
- package/dist/types/assets/bsp.worker.d.ts +2 -0
- package/dist/types/assets/bsp.worker.d.ts.map +1 -0
- package/dist/types/assets/cache.d.ts +26 -0
- package/dist/types/assets/cache.d.ts.map +1 -0
- package/dist/types/assets/crossReference.d.ts +35 -0
- package/dist/types/assets/crossReference.d.ts.map +1 -0
- package/dist/types/assets/ent.d.ts +31 -0
- package/dist/types/assets/ent.d.ts.map +1 -0
- package/dist/types/assets/fileType.d.ts +18 -0
- package/dist/types/assets/fileType.d.ts.map +1 -0
- package/dist/types/assets/headlessLoader.d.ts +11 -0
- package/dist/types/assets/headlessLoader.d.ts.map +1 -0
- package/dist/types/assets/index.d.ts +30 -0
- package/dist/types/assets/index.d.ts.map +1 -0
- package/dist/types/assets/ingestion.d.ts +62 -0
- package/dist/types/assets/ingestion.d.ts.map +1 -0
- package/dist/types/assets/interactionGraph.d.ts +21 -0
- package/dist/types/assets/interactionGraph.d.ts.map +1 -0
- package/dist/types/assets/manager.d.ts +97 -0
- package/dist/types/assets/manager.d.ts.map +1 -0
- package/dist/types/assets/mapStatistics.d.ts +20 -0
- package/dist/types/assets/mapStatistics.d.ts.map +1 -0
- package/dist/types/assets/md2.d.ts +82 -0
- package/dist/types/assets/md2.d.ts.map +1 -0
- package/dist/types/assets/md3.d.ts +72 -0
- package/dist/types/assets/md3.d.ts.map +1 -0
- package/dist/types/assets/ogg.d.ts +12 -0
- package/dist/types/assets/ogg.d.ts.map +1 -0
- package/dist/types/assets/pak.d.ts +32 -0
- package/dist/types/assets/pak.d.ts.map +1 -0
- package/dist/types/assets/pakIndexStore.d.ts +19 -0
- package/dist/types/assets/pakIndexStore.d.ts.map +1 -0
- package/dist/types/assets/pakValidation.d.ts +28 -0
- package/dist/types/assets/pakValidation.d.ts.map +1 -0
- package/dist/types/assets/pakWriter.d.ts +27 -0
- package/dist/types/assets/pakWriter.d.ts.map +1 -0
- package/dist/types/assets/pcx.d.ts +13 -0
- package/dist/types/assets/pcx.d.ts.map +1 -0
- package/dist/types/assets/preview.d.ts +15 -0
- package/dist/types/assets/preview.d.ts.map +1 -0
- package/dist/types/assets/resourceTracker.d.ts +33 -0
- package/dist/types/assets/resourceTracker.d.ts.map +1 -0
- package/dist/types/assets/sprite.d.ts +23 -0
- package/dist/types/assets/sprite.d.ts.map +1 -0
- package/dist/types/assets/streamer.d.ts +17 -0
- package/dist/types/assets/streamer.d.ts.map +1 -0
- package/dist/types/assets/streamingPak.d.ts +28 -0
- package/dist/types/assets/streamingPak.d.ts.map +1 -0
- package/dist/types/assets/texture.d.ts +37 -0
- package/dist/types/assets/texture.d.ts.map +1 -0
- package/dist/types/assets/tga.d.ts +15 -0
- package/dist/types/assets/tga.d.ts.map +1 -0
- package/dist/types/assets/vfs.d.ts +57 -0
- package/dist/types/assets/vfs.d.ts.map +1 -0
- package/dist/types/assets/visibilityAnalyzer.d.ts +28 -0
- package/dist/types/assets/visibilityAnalyzer.d.ts.map +1 -0
- package/dist/types/assets/wal.d.ts +21 -0
- package/dist/types/assets/wal.d.ts.map +1 -0
- package/dist/types/assets/wav.d.ts +11 -0
- package/dist/types/assets/wav.d.ts.map +1 -0
- package/dist/types/audio/ambient.d.ts +22 -0
- package/dist/types/audio/ambient.d.ts.map +1 -0
- package/dist/types/audio/api.d.ts +37 -0
- package/dist/types/audio/api.d.ts.map +1 -0
- package/dist/types/audio/channels.d.ts +15 -0
- package/dist/types/audio/channels.d.ts.map +1 -0
- package/dist/types/audio/constants.d.ts +2 -0
- package/dist/types/audio/constants.d.ts.map +1 -0
- package/dist/types/audio/context.d.ts +79 -0
- package/dist/types/audio/context.d.ts.map +1 -0
- package/dist/types/audio/music.d.ts +49 -0
- package/dist/types/audio/music.d.ts.map +1 -0
- package/dist/types/audio/occlusion.d.ts +15 -0
- package/dist/types/audio/occlusion.d.ts.map +1 -0
- package/dist/types/audio/precache.d.ts +28 -0
- package/dist/types/audio/precache.d.ts.map +1 -0
- package/dist/types/audio/registry.d.ts +14 -0
- package/dist/types/audio/registry.d.ts.map +1 -0
- package/dist/types/audio/reverb.d.ts +17 -0
- package/dist/types/audio/reverb.d.ts.map +1 -0
- package/dist/types/audio/room.d.ts +5 -0
- package/dist/types/audio/room.d.ts.map +1 -0
- package/dist/types/audio/system.d.ts +112 -0
- package/dist/types/audio/system.d.ts.map +1 -0
- package/dist/types/cli/demoOptimizer.d.ts +10 -0
- package/dist/types/cli/demoOptimizer.d.ts.map +1 -0
- package/dist/types/commands.d.ts +27 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/configstrings.d.ts +36 -0
- package/dist/types/configstrings.d.ts.map +1 -0
- package/dist/types/cvars.d.ts +58 -0
- package/dist/types/cvars.d.ts.map +1 -0
- package/dist/types/demo/analysis.d.ts +83 -0
- package/dist/types/demo/analysis.d.ts.map +1 -0
- package/dist/types/demo/analyzer.d.ts +33 -0
- package/dist/types/demo/analyzer.d.ts.map +1 -0
- package/dist/types/demo/api.d.ts +40 -0
- package/dist/types/demo/api.d.ts.map +1 -0
- package/dist/types/demo/asyncParser.d.ts +15 -0
- package/dist/types/demo/asyncParser.d.ts.map +1 -0
- package/dist/types/demo/camera.d.ts +17 -0
- package/dist/types/demo/camera.d.ts.map +1 -0
- package/dist/types/demo/clipper.d.ts +34 -0
- package/dist/types/demo/clipper.d.ts.map +1 -0
- package/dist/types/demo/delta.d.ts +3 -0
- package/dist/types/demo/delta.d.ts.map +1 -0
- package/dist/types/demo/demo.worker.d.ts +126 -0
- package/dist/types/demo/demo.worker.d.ts.map +1 -0
- package/dist/types/demo/demoReader.d.ts +62 -0
- package/dist/types/demo/demoReader.d.ts.map +1 -0
- package/dist/types/demo/demoRecorder.d.ts +15 -0
- package/dist/types/demo/demoRecorder.d.ts.map +1 -0
- package/dist/types/demo/demoStream.d.ts +39 -0
- package/dist/types/demo/demoStream.d.ts.map +1 -0
- package/dist/types/demo/demoWriter.d.ts +8 -0
- package/dist/types/demo/demoWriter.d.ts.map +1 -0
- package/dist/types/demo/index.d.ts +6 -0
- package/dist/types/demo/index.d.ts.map +1 -0
- package/dist/types/demo/message.d.ts +178 -0
- package/dist/types/demo/message.d.ts.map +1 -0
- package/dist/types/demo/optimalClipFinder.d.ts +35 -0
- package/dist/types/demo/optimalClipFinder.d.ts.map +1 -0
- package/dist/types/demo/packager.d.ts +46 -0
- package/dist/types/demo/packager.d.ts.map +1 -0
- package/dist/types/demo/parser.d.ts +222 -0
- package/dist/types/demo/parser.d.ts.map +1 -0
- package/dist/types/demo/playback.d.ts +135 -0
- package/dist/types/demo/playback.d.ts.map +1 -0
- package/dist/types/demo/reader.d.ts +15 -0
- package/dist/types/demo/reader.d.ts.map +1 -0
- package/dist/types/demo/recorder.d.ts +14 -0
- package/dist/types/demo/recorder.d.ts.map +1 -0
- package/dist/types/demo/types.d.ts +37 -0
- package/dist/types/demo/types.d.ts.map +1 -0
- package/dist/types/demo/validator.d.ts +13 -0
- package/dist/types/demo/validator.d.ts.map +1 -0
- package/dist/types/demo/worldStateOptimizer.d.ts +13 -0
- package/dist/types/demo/worldStateOptimizer.d.ts.map +1 -0
- package/dist/types/demo/writer.d.ts +28 -0
- package/dist/types/demo/writer.d.ts.map +1 -0
- package/dist/types/editor/bsp-inspector.d.ts +39 -0
- package/dist/types/editor/bsp-inspector.d.ts.map +1 -0
- package/dist/types/editor/ent.d.ts +21 -0
- package/dist/types/editor/ent.d.ts.map +1 -0
- package/dist/types/host.d.ts +52 -0
- package/dist/types/host.d.ts.map +1 -0
- package/dist/types/index.d.ts +104 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/loop.d.ts +40 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/network/clientConnection.d.ts +139 -0
- package/dist/types/network/clientConnection.d.ts.map +1 -0
- package/dist/types/render/__mocks__/frame.d.ts +31 -0
- package/dist/types/render/__mocks__/frame.d.ts.map +1 -0
- package/dist/types/render/bloom.d.ts +19 -0
- package/dist/types/render/bloom.d.ts.map +1 -0
- package/dist/types/render/bsp/generator.d.ts +25 -0
- package/dist/types/render/bsp/generator.d.ts.map +1 -0
- package/dist/types/render/bsp/geometry.d.ts +37 -0
- package/dist/types/render/bsp/geometry.d.ts.map +1 -0
- package/dist/types/render/bsp/renderer.d.ts +12 -0
- package/dist/types/render/bsp/renderer.d.ts.map +1 -0
- package/dist/types/render/bsp/surface.d.ts +4 -0
- package/dist/types/render/bsp/surface.d.ts.map +1 -0
- package/dist/types/render/bsp.d.ts +66 -0
- package/dist/types/render/bsp.d.ts.map +1 -0
- package/dist/types/render/bspPipeline.d.ts +78 -0
- package/dist/types/render/bspPipeline.d.ts.map +1 -0
- package/dist/types/render/bspTraversal.d.ts +13 -0
- package/dist/types/render/bspTraversal.d.ts.map +1 -0
- package/dist/types/render/camera.d.ts +54 -0
- package/dist/types/render/camera.d.ts.map +1 -0
- package/dist/types/render/cameraController.d.ts +28 -0
- package/dist/types/render/cameraController.d.ts.map +1 -0
- package/dist/types/render/collisionVis.d.ts +54 -0
- package/dist/types/render/collisionVis.d.ts.map +1 -0
- package/dist/types/render/colors.d.ts +6 -0
- package/dist/types/render/colors.d.ts.map +1 -0
- package/dist/types/render/context.d.ts +36 -0
- package/dist/types/render/context.d.ts.map +1 -0
- package/dist/types/render/culling.d.ts +12 -0
- package/dist/types/render/culling.d.ts.map +1 -0
- package/dist/types/render/debug.d.ts +36 -0
- package/dist/types/render/debug.d.ts.map +1 -0
- package/dist/types/render/debugMode.d.ts +10 -0
- package/dist/types/render/debugMode.d.ts.map +1 -0
- package/dist/types/render/dlight.d.ts +43 -0
- package/dist/types/render/dlight.d.ts.map +1 -0
- package/dist/types/render/frame.d.ts +78 -0
- package/dist/types/render/frame.d.ts.map +1 -0
- package/dist/types/render/geometry.d.ts +2 -0
- package/dist/types/render/geometry.d.ts.map +1 -0
- package/dist/types/render/gizmo.d.ts +32 -0
- package/dist/types/render/gizmo.d.ts.map +1 -0
- package/dist/types/render/gpuProfiler.d.ts +59 -0
- package/dist/types/render/gpuProfiler.d.ts.map +1 -0
- package/dist/types/render/instancing.d.ts +12 -0
- package/dist/types/render/instancing.d.ts.map +1 -0
- package/dist/types/render/interface.d.ts +50 -0
- package/dist/types/render/interface.d.ts.map +1 -0
- package/dist/types/render/light.d.ts +10 -0
- package/dist/types/render/light.d.ts.map +1 -0
- package/dist/types/render/lightCulling.d.ts +17 -0
- package/dist/types/render/lightCulling.d.ts.map +1 -0
- package/dist/types/render/lightStyles.d.ts +10 -0
- package/dist/types/render/lightStyles.d.ts.map +1 -0
- package/dist/types/render/materialLoader.d.ts +5 -0
- package/dist/types/render/materialLoader.d.ts.map +1 -0
- package/dist/types/render/materials.d.ts +39 -0
- package/dist/types/render/materials.d.ts.map +1 -0
- package/dist/types/render/md2Pipeline.d.ts +74 -0
- package/dist/types/render/md2Pipeline.d.ts.map +1 -0
- package/dist/types/render/md3Pipeline.d.ts +94 -0
- package/dist/types/render/md3Pipeline.d.ts.map +1 -0
- package/dist/types/render/options.d.ts +9 -0
- package/dist/types/render/options.d.ts.map +1 -0
- package/dist/types/render/particleSystem.d.ts +125 -0
- package/dist/types/render/particleSystem.d.ts.map +1 -0
- package/dist/types/render/postprocessing/pipeline.d.ts +13 -0
- package/dist/types/render/postprocessing/pipeline.d.ts.map +1 -0
- package/dist/types/render/renderer.d.ts +8 -0
- package/dist/types/render/renderer.d.ts.map +1 -0
- package/dist/types/render/resources.d.ts +69 -0
- package/dist/types/render/resources.d.ts.map +1 -0
- package/dist/types/render/scene.d.ts +31 -0
- package/dist/types/render/scene.d.ts.map +1 -0
- package/dist/types/render/shaderProgram.d.ts +19 -0
- package/dist/types/render/shaderProgram.d.ts.map +1 -0
- package/dist/types/render/skybox.d.ts +28 -0
- package/dist/types/render/skybox.d.ts.map +1 -0
- package/dist/types/render/sprite.d.ts +21 -0
- package/dist/types/render/sprite.d.ts.map +1 -0
- package/dist/types/render/types.d.ts +29 -0
- package/dist/types/render/types.d.ts.map +1 -0
- package/dist/types/render/webgpu/constants.d.ts +29 -0
- package/dist/types/render/webgpu/constants.d.ts.map +1 -0
- package/dist/types/render/webgpu/context.d.ts +41 -0
- package/dist/types/render/webgpu/context.d.ts.map +1 -0
- package/dist/types/render/webgpu/frame.d.ts +58 -0
- package/dist/types/render/webgpu/frame.d.ts.map +1 -0
- package/dist/types/render/webgpu/headless.d.ts +9 -0
- package/dist/types/render/webgpu/headless.d.ts.map +1 -0
- package/dist/types/render/webgpu/pipelines/sprite.d.ts +31 -0
- package/dist/types/render/webgpu/pipelines/sprite.d.ts.map +1 -0
- package/dist/types/render/webgpu/renderer.d.ts +30 -0
- package/dist/types/render/webgpu/renderer.d.ts.map +1 -0
- package/dist/types/render/webgpu/resources.d.ts +240 -0
- package/dist/types/render/webgpu/resources.d.ts.map +1 -0
- package/dist/types/render/webgpu/shaders/mipmapShader.d.ts +2 -0
- package/dist/types/render/webgpu/shaders/mipmapShader.d.ts.map +1 -0
- package/dist/types/render/webgpu/shaders/spriteShader.d.ts +2 -0
- package/dist/types/render/webgpu/shaders/spriteShader.d.ts.map +1 -0
- package/dist/types/runtime.d.ts +19 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/stream/streamingBuffer.d.ts +102 -0
- package/dist/types/stream/streamingBuffer.d.ts.map +1 -0
- package/dist/types/tools/lightmapExport.d.ts +17 -0
- package/dist/types/tools/lightmapExport.d.ts.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
2
|
+
import { IndexBuffer, VertexArray, VertexBuffer } from './resources.js';
|
|
3
|
+
import { ShaderProgram } from './shaderProgram.js';
|
|
4
|
+
import { RandomGenerator } from '@quake2ts/shared';
|
|
5
|
+
export type ParticleBlendMode = 'alpha' | 'additive';
|
|
6
|
+
export interface ParticleSpawnOptions {
|
|
7
|
+
readonly position: Vec3;
|
|
8
|
+
readonly velocity?: Vec3;
|
|
9
|
+
readonly color?: readonly [number, number, number, number];
|
|
10
|
+
readonly size?: number;
|
|
11
|
+
readonly lifetime: number;
|
|
12
|
+
readonly gravity?: number;
|
|
13
|
+
readonly damping?: number;
|
|
14
|
+
readonly bounce?: number;
|
|
15
|
+
readonly blendMode?: ParticleBlendMode;
|
|
16
|
+
/**
|
|
17
|
+
* When true, fades alpha from 1 to 0 across the lifetime instead of remaining constant.
|
|
18
|
+
*/
|
|
19
|
+
readonly fade?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ParticleSimulationOptions {
|
|
22
|
+
readonly floorZ?: number;
|
|
23
|
+
}
|
|
24
|
+
interface ParticleMeshBatch {
|
|
25
|
+
readonly blendMode: ParticleBlendMode;
|
|
26
|
+
readonly start: number;
|
|
27
|
+
readonly count: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ParticleMesh {
|
|
30
|
+
readonly vertices: Float32Array;
|
|
31
|
+
readonly indices: Uint16Array;
|
|
32
|
+
readonly batches: readonly ParticleMeshBatch[];
|
|
33
|
+
}
|
|
34
|
+
export declare class ParticleSystem {
|
|
35
|
+
readonly maxParticles: number;
|
|
36
|
+
readonly rng: RandomGenerator;
|
|
37
|
+
private readonly alive;
|
|
38
|
+
private readonly positionX;
|
|
39
|
+
private readonly positionY;
|
|
40
|
+
private readonly positionZ;
|
|
41
|
+
private readonly velocityX;
|
|
42
|
+
private readonly velocityY;
|
|
43
|
+
private readonly velocityZ;
|
|
44
|
+
private readonly colorR;
|
|
45
|
+
private readonly colorG;
|
|
46
|
+
private readonly colorB;
|
|
47
|
+
private readonly colorA;
|
|
48
|
+
private readonly size;
|
|
49
|
+
private readonly lifetime;
|
|
50
|
+
private readonly remaining;
|
|
51
|
+
private readonly gravity;
|
|
52
|
+
private readonly damping;
|
|
53
|
+
private readonly bounce;
|
|
54
|
+
private readonly fade;
|
|
55
|
+
private readonly blendMode;
|
|
56
|
+
constructor(maxParticles: number, rng: RandomGenerator);
|
|
57
|
+
spawn(options: ParticleSpawnOptions): number | null;
|
|
58
|
+
update(dt: number, options?: ParticleSimulationOptions): void;
|
|
59
|
+
killAll(): void;
|
|
60
|
+
aliveCount(): number;
|
|
61
|
+
getState(index: number): {
|
|
62
|
+
readonly alive: boolean;
|
|
63
|
+
readonly position: Vec3;
|
|
64
|
+
readonly velocity: Vec3;
|
|
65
|
+
readonly remaining: number;
|
|
66
|
+
readonly color: readonly [number, number, number, number];
|
|
67
|
+
readonly size: number;
|
|
68
|
+
readonly blendMode: ParticleBlendMode;
|
|
69
|
+
};
|
|
70
|
+
buildMesh(viewRight: Vec3, viewUp: Vec3): ParticleMesh;
|
|
71
|
+
private findFreeSlot;
|
|
72
|
+
}
|
|
73
|
+
export declare const PARTICLE_VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nlayout(location = 0) in vec3 a_position;\nlayout(location = 1) in vec2 a_uv;\nlayout(location = 2) in vec4 a_color;\n\nuniform mat4 u_viewProjection;\n\nout vec2 v_uv;\nout vec4 v_color;\n\nvoid main() {\n v_uv = a_uv;\n v_color = a_color;\n gl_Position = u_viewProjection * vec4(a_position, 1.0);\n}";
|
|
74
|
+
export declare const PARTICLE_FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nin vec4 v_color;\n\nout vec4 o_color;\n\nvoid main() {\n float dist = distance(v_uv, vec2(0.5));\n float alpha = v_color.a * (1.0 - smoothstep(0.35, 0.5, dist));\n o_color = vec4(v_color.rgb, alpha);\n}";
|
|
75
|
+
export interface ParticleRenderOptions {
|
|
76
|
+
readonly viewProjection: Float32List;
|
|
77
|
+
readonly viewRight: Vec3;
|
|
78
|
+
readonly viewUp: Vec3;
|
|
79
|
+
}
|
|
80
|
+
export declare class ParticleRenderer {
|
|
81
|
+
readonly gl: WebGL2RenderingContext;
|
|
82
|
+
readonly program: ShaderProgram;
|
|
83
|
+
readonly system: ParticleSystem;
|
|
84
|
+
readonly vertexBuffer: VertexBuffer;
|
|
85
|
+
readonly indexBuffer: IndexBuffer;
|
|
86
|
+
readonly vertexArray: VertexArray;
|
|
87
|
+
private vertexCapacity;
|
|
88
|
+
private indexCapacity;
|
|
89
|
+
constructor(gl: WebGL2RenderingContext, system: ParticleSystem);
|
|
90
|
+
get shaderSize(): number;
|
|
91
|
+
render(options: ParticleRenderOptions): void;
|
|
92
|
+
dispose(): void;
|
|
93
|
+
}
|
|
94
|
+
export interface ParticleEffectContext {
|
|
95
|
+
readonly system: ParticleSystem;
|
|
96
|
+
readonly origin: Vec3;
|
|
97
|
+
readonly normal?: Vec3;
|
|
98
|
+
readonly direction?: Vec3;
|
|
99
|
+
}
|
|
100
|
+
export declare function spawnBulletImpact(context: ParticleEffectContext): void;
|
|
101
|
+
export declare function spawnExplosion(context: ParticleEffectContext): void;
|
|
102
|
+
export declare function spawnBlood(context: ParticleEffectContext): void;
|
|
103
|
+
export declare function spawnTeleportFlash(context: ParticleEffectContext): void;
|
|
104
|
+
export declare function spawnMuzzleFlash(context: ParticleEffectContext): void;
|
|
105
|
+
export declare function spawnTrail(context: ParticleEffectContext): void;
|
|
106
|
+
export declare function spawnSplash(context: ParticleEffectContext): void;
|
|
107
|
+
export declare function spawnSteam(context: ParticleEffectContext): void;
|
|
108
|
+
export interface RailTrailContext {
|
|
109
|
+
readonly system: ParticleSystem;
|
|
110
|
+
readonly start: Vec3;
|
|
111
|
+
readonly end: Vec3;
|
|
112
|
+
}
|
|
113
|
+
export declare function spawnRailTrail(context: RailTrailContext): void;
|
|
114
|
+
export interface SparksContext extends ParticleEffectContext {
|
|
115
|
+
readonly count?: number;
|
|
116
|
+
readonly color?: readonly [number, number, number, number];
|
|
117
|
+
}
|
|
118
|
+
export declare function spawnSparks(context: SparksContext): void;
|
|
119
|
+
export interface BlasterImpactContext extends ParticleEffectContext {
|
|
120
|
+
readonly color?: readonly [number, number, number, number];
|
|
121
|
+
}
|
|
122
|
+
export declare function spawnBlasterImpact(context: BlasterImpactContext): void;
|
|
123
|
+
export declare function spawnBfgExplosion(context: ParticleEffectContext): void;
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=particleSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleSystem.d.ts","sourceRoot":"","sources":["../../../src/render/particleSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ShaderProgram } from '../shaderProgram.js';
|
|
2
|
+
export declare class PostProcessPipeline {
|
|
3
|
+
readonly gl: WebGL2RenderingContext;
|
|
4
|
+
readonly program: ShaderProgram;
|
|
5
|
+
private vao;
|
|
6
|
+
private readonly uTime;
|
|
7
|
+
private readonly uStrength;
|
|
8
|
+
private readonly uTexture;
|
|
9
|
+
constructor(gl: WebGL2RenderingContext);
|
|
10
|
+
render(texture: WebGLTexture, time: number, strength?: number): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/render/postprocessing/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAyCpD,qBAAa,mBAAmB;IAC5B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,OAAO,CAAC,GAAG,CAAgC;IAE3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAE3C,EAAE,EAAE,sBAAsB;IAiCtC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY;IAelE,OAAO;CAKV"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Texture2D } from './resources.js';
|
|
2
|
+
import { IRenderer } from './interface.js';
|
|
3
|
+
export type Pic = Texture2D;
|
|
4
|
+
export interface Renderer extends IRenderer {
|
|
5
|
+
setAreaPortalState(portalNum: number, open: boolean): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const createRenderer: (gl: WebGL2RenderingContext) => Renderer;
|
|
8
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/render/renderer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkB3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC;AAM5B,MAAM,WAAW,QAAS,SAAQ,SAAS;IACvC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9D;AAiBD,eAAO,MAAM,cAAc,GACvB,IAAI,sBAAsB,KAC3B,QAy6BF,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export type BufferUsage = GLenum;
|
|
2
|
+
export interface VertexAttributeLayout {
|
|
3
|
+
readonly index: number;
|
|
4
|
+
readonly size: number;
|
|
5
|
+
readonly type: GLenum;
|
|
6
|
+
readonly normalized?: boolean;
|
|
7
|
+
readonly stride?: number;
|
|
8
|
+
readonly offset?: number;
|
|
9
|
+
readonly divisor?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class VertexBuffer {
|
|
12
|
+
readonly gl: WebGL2RenderingContext;
|
|
13
|
+
readonly buffer: WebGLBuffer;
|
|
14
|
+
readonly target: GLenum;
|
|
15
|
+
constructor(gl: WebGL2RenderingContext, usage?: BufferUsage, target?: GLenum);
|
|
16
|
+
bind(): void;
|
|
17
|
+
upload(data: BufferSource, usage?: BufferUsage): void;
|
|
18
|
+
update(data: BufferSource, offset?: number): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
}
|
|
21
|
+
export declare class IndexBuffer extends VertexBuffer {
|
|
22
|
+
constructor(gl: WebGL2RenderingContext, usage?: BufferUsage);
|
|
23
|
+
}
|
|
24
|
+
export declare class VertexArray {
|
|
25
|
+
readonly gl: WebGL2RenderingContext;
|
|
26
|
+
readonly vao: WebGLVertexArrayObject;
|
|
27
|
+
constructor(gl: WebGL2RenderingContext);
|
|
28
|
+
bind(): void;
|
|
29
|
+
configureAttributes(layouts: readonly VertexAttributeLayout[], buffer?: VertexBuffer): void;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
}
|
|
32
|
+
export interface TextureParameters {
|
|
33
|
+
readonly wrapS?: GLenum;
|
|
34
|
+
readonly wrapT?: GLenum;
|
|
35
|
+
readonly minFilter?: GLenum;
|
|
36
|
+
readonly magFilter?: GLenum;
|
|
37
|
+
}
|
|
38
|
+
export declare class Texture2D {
|
|
39
|
+
readonly gl: WebGL2RenderingContext;
|
|
40
|
+
readonly texture: WebGLTexture;
|
|
41
|
+
readonly target: GLenum;
|
|
42
|
+
width: number;
|
|
43
|
+
height: number;
|
|
44
|
+
constructor(gl: WebGL2RenderingContext, target?: GLenum);
|
|
45
|
+
bind(unit?: number): void;
|
|
46
|
+
setParameters(params: TextureParameters): void;
|
|
47
|
+
upload(width: number, height: number, data: TexImageSource | ArrayBufferView | null): void;
|
|
48
|
+
uploadImage(level: number, internalFormat: GLenum, width: number, height: number, border: number, format: GLenum, type: GLenum, data: TexImageSource | ArrayBufferView | null): void;
|
|
49
|
+
dispose(): void;
|
|
50
|
+
}
|
|
51
|
+
export declare class TextureCubeMap {
|
|
52
|
+
readonly gl: WebGL2RenderingContext;
|
|
53
|
+
readonly texture: WebGLTexture;
|
|
54
|
+
readonly target: GLenum;
|
|
55
|
+
constructor(gl: WebGL2RenderingContext);
|
|
56
|
+
bind(unit?: number): void;
|
|
57
|
+
setParameters(params: TextureParameters): void;
|
|
58
|
+
uploadFace(faceTarget: GLenum, level: number, internalFormat: GLenum, width: number, height: number, border: number, format: GLenum, type: GLenum, data: ArrayBufferView | null): void;
|
|
59
|
+
dispose(): void;
|
|
60
|
+
}
|
|
61
|
+
export declare class Framebuffer {
|
|
62
|
+
readonly gl: WebGL2RenderingContext;
|
|
63
|
+
readonly framebuffer: WebGLFramebuffer;
|
|
64
|
+
constructor(gl: WebGL2RenderingContext);
|
|
65
|
+
bind(target?: GLenum): void;
|
|
66
|
+
attachTexture2D(attachment: GLenum, texture: Texture2D, level?: number): void;
|
|
67
|
+
dispose(): void;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/render/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Md2Model } from '../assets/md2.js';
|
|
2
|
+
import { Md3Model } from '../assets/md3.js';
|
|
3
|
+
import { Md2FrameBlend } from './md2Pipeline.js';
|
|
4
|
+
import { Md3FrameBlend, Md3LightingOptions } from './md3Pipeline.js';
|
|
5
|
+
import { Mat4 } from '@quake2ts/shared';
|
|
6
|
+
export interface RenderableMd2 {
|
|
7
|
+
readonly type: 'md2';
|
|
8
|
+
readonly model: Md2Model;
|
|
9
|
+
readonly blend: Md2FrameBlend;
|
|
10
|
+
readonly transform: Mat4;
|
|
11
|
+
readonly skin?: string;
|
|
12
|
+
readonly ambientLight?: number;
|
|
13
|
+
readonly alpha?: number;
|
|
14
|
+
readonly id?: number;
|
|
15
|
+
readonly tint?: readonly [number, number, number, number];
|
|
16
|
+
readonly isViewModel?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RenderableMd3 {
|
|
19
|
+
readonly type: 'md3';
|
|
20
|
+
readonly model: Md3Model;
|
|
21
|
+
readonly blend: Md3FrameBlend;
|
|
22
|
+
readonly transform: Mat4;
|
|
23
|
+
readonly lighting?: Md3LightingOptions;
|
|
24
|
+
readonly skins?: Map<string, string>;
|
|
25
|
+
readonly alpha?: number;
|
|
26
|
+
readonly id?: number;
|
|
27
|
+
readonly tint?: readonly [number, number, number, number];
|
|
28
|
+
readonly isViewModel?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export type RenderableEntity = RenderableMd2 | RenderableMd3;
|
|
31
|
+
//# sourceMappingURL=scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/render/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ShaderSources {
|
|
2
|
+
readonly vertex: string;
|
|
3
|
+
readonly fragment: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class ShaderProgram {
|
|
6
|
+
readonly gl: WebGL2RenderingContext;
|
|
7
|
+
readonly program: WebGLProgram;
|
|
8
|
+
private readonly uniformLocations;
|
|
9
|
+
private readonly attributeLocations;
|
|
10
|
+
readonly sourceSize: number;
|
|
11
|
+
private constructor();
|
|
12
|
+
static create(gl: WebGL2RenderingContext, sources: ShaderSources, attributeLocations?: Record<string, number>): ShaderProgram;
|
|
13
|
+
use(): void;
|
|
14
|
+
getUniformLocation(name: string): WebGLUniformLocation | null;
|
|
15
|
+
getAttributeLocation(name: string): number;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function createProgramFromSources(gl: WebGL2RenderingContext, sources: ShaderSources, attributeLocations?: Record<string, number>): ShaderProgram;
|
|
19
|
+
//# sourceMappingURL=shaderProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaderProgram.d.ts","sourceRoot":"","sources":["../../../src/render/shaderProgram.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAmDD,qBAAa,aAAa;IACxB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkD;IACnF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO;IAMP,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,aAAa,EACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,aAAa;IAahB,GAAG,IAAI,IAAI;IAIX,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAS7D,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAS1C,OAAO,IAAI,IAAI;CAKhB;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,aAAa,EACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,aAAa,CAEf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ShaderProgram } from './shaderProgram.js';
|
|
2
|
+
import { TextureCubeMap, VertexArray, VertexBuffer } from './resources.js';
|
|
3
|
+
import type { ReadonlyMat4 } from 'gl-matrix';
|
|
4
|
+
export declare const SKYBOX_VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nlayout(location = 0) in vec3 a_position;\n\nuniform mat4 u_viewProjectionNoTranslation;\nuniform vec2 u_scroll;\n\nout vec3 v_direction;\n\nvoid main() {\n vec3 dir = normalize(a_position);\n dir.xy += u_scroll;\n v_direction = dir;\n gl_Position = u_viewProjectionNoTranslation * vec4(a_position, 1.0);\n}";
|
|
5
|
+
export declare const SKYBOX_FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nin vec3 v_direction;\nuniform samplerCube u_skybox;\n\nout vec4 o_color;\n\nvoid main() {\n o_color = texture(u_skybox, v_direction);\n}";
|
|
6
|
+
export interface SkyboxBindOptions {
|
|
7
|
+
readonly viewProjection: Float32List;
|
|
8
|
+
readonly scroll: readonly [number, number];
|
|
9
|
+
readonly textureUnit?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class SkyboxPipeline {
|
|
12
|
+
readonly gl: WebGL2RenderingContext;
|
|
13
|
+
readonly program: ShaderProgram;
|
|
14
|
+
readonly vao: VertexArray;
|
|
15
|
+
readonly vbo: VertexBuffer;
|
|
16
|
+
readonly cubemap: TextureCubeMap;
|
|
17
|
+
private readonly uniformViewProj;
|
|
18
|
+
private readonly uniformScroll;
|
|
19
|
+
private readonly uniformSampler;
|
|
20
|
+
constructor(gl: WebGL2RenderingContext);
|
|
21
|
+
get shaderSize(): number;
|
|
22
|
+
bind(options: SkyboxBindOptions): void;
|
|
23
|
+
draw(): void;
|
|
24
|
+
dispose(): void;
|
|
25
|
+
}
|
|
26
|
+
export declare function removeViewTranslation(viewMatrix: ReadonlyMat4 | Float32Array): Float32Array;
|
|
27
|
+
export declare function computeSkyScroll(timeSeconds: number, scrollSpeeds?: readonly [number, number]): [number, number];
|
|
28
|
+
//# sourceMappingURL=skybox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skybox.d.ts","sourceRoot":"","sources":["../../../src/render/skybox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAA8B,MAAM,gBAAgB,CAAC;AACvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA+C9C,eAAO,MAAM,oBAAoB,sWAe/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,yLAUjC,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;gBAEjD,EAAE,EAAE,sBAAsB;IA4BtC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAWtC,IAAI,IAAI,IAAI;IAIZ,OAAO,IAAI,IAAI;CAMhB;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,CAM3F;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAG9H"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ShaderProgram } from './shaderProgram.js';
|
|
2
|
+
import { VertexArray, VertexBuffer } from './resources.js';
|
|
3
|
+
export declare const SPRITE_VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nlayout(location = 0) in vec2 a_position;\nlayout(location = 1) in vec2 a_texCoord;\n\nuniform mat4 u_projection;\n\nout vec2 v_texCoord;\n\nvoid main() {\n v_texCoord = a_texCoord;\n gl_Position = u_projection * vec4(a_position, 0.0, 1.0);\n}";
|
|
4
|
+
export declare const SPRITE_FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nin vec2 v_texCoord;\n\nuniform sampler2D u_diffuseMap;\nuniform vec4 u_tint;\n\nout vec4 o_color;\n\nvoid main() {\n o_color = texture(u_diffuseMap, v_texCoord) * u_tint;\n}";
|
|
5
|
+
import { Texture2D } from './resources.js';
|
|
6
|
+
export declare class SpriteRenderer {
|
|
7
|
+
readonly gl: WebGL2RenderingContext;
|
|
8
|
+
readonly program: ShaderProgram;
|
|
9
|
+
readonly vao: VertexArray;
|
|
10
|
+
readonly vbo: VertexBuffer;
|
|
11
|
+
readonly whiteTexture: Texture2D;
|
|
12
|
+
private readonly uniformProjection;
|
|
13
|
+
private readonly uniformDiffuse;
|
|
14
|
+
private readonly uniformTint;
|
|
15
|
+
constructor(gl: WebGL2RenderingContext);
|
|
16
|
+
get shaderSize(): number;
|
|
17
|
+
begin(projection: Float32List): void;
|
|
18
|
+
draw(x: number, y: number, width: number, height: number, u1?: number, v1?: number, u2?: number, v2?: number, tint?: readonly [number, number, number, number]): void;
|
|
19
|
+
drawRect(x: number, y: number, width: number, height: number, color: readonly [number, number, number, number]): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sprite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/render/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,oSAa/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,8NAYjC,CAAC;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,qBAAa,cAAc;IACvB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE9C,EAAE,EAAE,sBAAsB;IA2BxC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEC,KAAK,CAAC,UAAU,EAAE,WAAW;IAK7B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,IAAI,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAgB;IAoBxJ,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAIjH"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare enum RenderMode {
|
|
2
|
+
WebGL = "webgl",
|
|
3
|
+
Headless = "headless"
|
|
4
|
+
}
|
|
5
|
+
export interface MapGeometry {
|
|
6
|
+
vertices: Float32Array;
|
|
7
|
+
indices: Uint32Array;
|
|
8
|
+
bounds: {
|
|
9
|
+
mins: [number, number, number];
|
|
10
|
+
maxs: [number, number, number];
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface TextureReference {
|
|
14
|
+
name: string;
|
|
15
|
+
flags: number;
|
|
16
|
+
}
|
|
17
|
+
export interface LightmapData {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
data: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
export interface MemoryUsage {
|
|
23
|
+
texturesBytes: number;
|
|
24
|
+
geometryBytes: number;
|
|
25
|
+
shadersBytes: number;
|
|
26
|
+
buffersBytes: number;
|
|
27
|
+
totalBytes: number;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/render/types.ts"],"names":[],"mappings":"AACA,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const GPUBufferUsage: {
|
|
2
|
+
readonly MAP_READ: 1;
|
|
3
|
+
readonly MAP_WRITE: 2;
|
|
4
|
+
readonly COPY_SRC: 4;
|
|
5
|
+
readonly COPY_DST: 8;
|
|
6
|
+
readonly INDEX: 16;
|
|
7
|
+
readonly VERTEX: 32;
|
|
8
|
+
readonly UNIFORM: 64;
|
|
9
|
+
readonly STORAGE: 128;
|
|
10
|
+
readonly INDIRECT: 256;
|
|
11
|
+
readonly QUERY_RESOLVE: 512;
|
|
12
|
+
};
|
|
13
|
+
export declare const GPUMapMode: {
|
|
14
|
+
readonly READ: 1;
|
|
15
|
+
readonly WRITE: 2;
|
|
16
|
+
};
|
|
17
|
+
export declare const GPUTextureUsage: {
|
|
18
|
+
readonly COPY_SRC: 1;
|
|
19
|
+
readonly COPY_DST: 2;
|
|
20
|
+
readonly TEXTURE_BINDING: 4;
|
|
21
|
+
readonly STORAGE_BINDING: 8;
|
|
22
|
+
readonly RENDER_ATTACHMENT: 16;
|
|
23
|
+
};
|
|
24
|
+
export declare const GPUShaderStage: {
|
|
25
|
+
readonly VERTEX: 1;
|
|
26
|
+
readonly FRAGMENT: 2;
|
|
27
|
+
readonly COMPUTE: 4;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/render/webgpu/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC;AAEX,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;CAIjB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface WebGPUContextOptions {
|
|
2
|
+
powerPreference?: 'low-power' | 'high-performance';
|
|
3
|
+
requiredFeatures?: GPUFeatureName[];
|
|
4
|
+
requiredLimits?: Record<string, number>;
|
|
5
|
+
}
|
|
6
|
+
export interface WebGPUContextState {
|
|
7
|
+
adapter: GPUAdapter;
|
|
8
|
+
device: GPUDevice;
|
|
9
|
+
context?: GPUCanvasContext;
|
|
10
|
+
format: GPUTextureFormat;
|
|
11
|
+
features: Set<GPUFeatureName>;
|
|
12
|
+
limits: GPUSupportedLimits;
|
|
13
|
+
isHeadless: boolean;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
}
|
|
17
|
+
export interface WebGPUCapabilities {
|
|
18
|
+
hasTimestampQuery: boolean;
|
|
19
|
+
hasDepthClipControl: boolean;
|
|
20
|
+
hasTextureCompressionBC: boolean;
|
|
21
|
+
hasTextureCompressionETC2: boolean;
|
|
22
|
+
hasTextureCompressionASTC: boolean;
|
|
23
|
+
maxTextureDimension2D: number;
|
|
24
|
+
maxBindGroups: number;
|
|
25
|
+
maxUniformBufferBindingSize: number;
|
|
26
|
+
maxStorageBufferBindingSize: number;
|
|
27
|
+
}
|
|
28
|
+
export type ContextLostHandler = (reason: GPUDeviceLostReason) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Creates and initializes a WebGPU context and device.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createWebGPUContext(canvas?: HTMLCanvasElement, options?: WebGPUContextOptions): Promise<WebGPUContextState>;
|
|
33
|
+
/**
|
|
34
|
+
* Queries capabilities of the created context/device.
|
|
35
|
+
*/
|
|
36
|
+
export declare function queryCapabilities(state: WebGPUContextState): WebGPUCapabilities;
|
|
37
|
+
/**
|
|
38
|
+
* Sets up handling for device loss.
|
|
39
|
+
*/
|
|
40
|
+
export declare function setupDeviceLossHandling(device: GPUDevice, onLost: ContextLostHandler): void;
|
|
41
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/render/webgpu/context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,CAAC;IACnD,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,yBAAyB,EAAE,OAAO,CAAC;IACnC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAEvE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA6E7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAc/E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAMN"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { SpriteRenderer } from './pipelines/sprite.js';
|
|
2
|
+
import { Camera } from '../camera.js';
|
|
3
|
+
import { WebGPUContextState } from './context.js';
|
|
4
|
+
export interface FrameRenderStats {
|
|
5
|
+
batches: number;
|
|
6
|
+
facesDrawn: number;
|
|
7
|
+
drawCalls: number;
|
|
8
|
+
skyDrawn: boolean;
|
|
9
|
+
viewModelDrawn: boolean;
|
|
10
|
+
fps: number;
|
|
11
|
+
vertexCount: number;
|
|
12
|
+
}
|
|
13
|
+
export type RenderMode = 'textured' | 'wireframe' | 'solid' | 'solid-faceted';
|
|
14
|
+
export interface RenderModeConfig {
|
|
15
|
+
readonly mode: RenderMode;
|
|
16
|
+
readonly applyToAll: boolean;
|
|
17
|
+
readonly color?: readonly [number, number, number, number];
|
|
18
|
+
readonly generateRandomColor?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface FrameRenderOptions {
|
|
21
|
+
readonly camera: Camera;
|
|
22
|
+
readonly timeSeconds?: number;
|
|
23
|
+
readonly deltaTime?: number;
|
|
24
|
+
readonly clearColor?: readonly [number, number, number, number];
|
|
25
|
+
readonly renderMode?: RenderModeConfig;
|
|
26
|
+
readonly underwaterWarp?: boolean;
|
|
27
|
+
readonly bloom?: boolean;
|
|
28
|
+
readonly bloomIntensity?: number;
|
|
29
|
+
readonly onDraw2D?: () => void;
|
|
30
|
+
}
|
|
31
|
+
export { WebGPUContextState };
|
|
32
|
+
export interface FrameContext {
|
|
33
|
+
device: GPUDevice;
|
|
34
|
+
commandEncoder: GPUCommandEncoder;
|
|
35
|
+
renderTarget: GPUTextureView;
|
|
36
|
+
depthTexture: GPUTextureView;
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
}
|
|
40
|
+
export declare class FrameRenderer {
|
|
41
|
+
private context;
|
|
42
|
+
private pipelines;
|
|
43
|
+
private depthTexture;
|
|
44
|
+
private copyTexture;
|
|
45
|
+
headlessTarget: GPUTexture | null;
|
|
46
|
+
private lastWidth;
|
|
47
|
+
private lastHeight;
|
|
48
|
+
private lastFrameTime;
|
|
49
|
+
constructor(context: WebGPUContextState, pipelines: {
|
|
50
|
+
sprite: SpriteRenderer;
|
|
51
|
+
});
|
|
52
|
+
private ensureDepthTexture;
|
|
53
|
+
private ensureCopyTexture;
|
|
54
|
+
ensureHeadlessTarget(width: number, height: number): GPUTextureView;
|
|
55
|
+
beginFrame(): FrameContext;
|
|
56
|
+
renderFrame(options: FrameRenderOptions): FrameRenderStats;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../../src/render/webgpu/frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,cAAc,EAAE,iBAAiB,CAAC;IAClC,YAAY,EAAE,cAAc,CAAC;IAC7B,YAAY,EAAE,cAAc,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IAWtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IAXnB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAA2B;IAEvC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IAEhD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAK;gBAGhB,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE;QACjB,MAAM,EAAE,cAAc,CAAC;KAExB;IAGH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,iBAAiB;IAmBlB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAoB1E,UAAU,IAAI,YAAY;IAyB1B,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB;CA0G3D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface HeadlessRenderTarget {
|
|
2
|
+
texture: GPUTexture;
|
|
3
|
+
view: GPUTextureView;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function createHeadlessRenderTarget(device: GPUDevice, width: number, height: number, format?: GPUTextureFormat): HeadlessRenderTarget;
|
|
8
|
+
export declare function captureRenderTarget(device: GPUDevice, texture: GPUTexture): Promise<Uint8ClampedArray>;
|
|
9
|
+
//# sourceMappingURL=headless.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../../src/render/webgpu/headless.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,gBAA+B,GACtC,oBAAoB,CAqBtB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Texture2D } from '../resources.js';
|
|
2
|
+
export declare class SpriteRenderer {
|
|
3
|
+
private device;
|
|
4
|
+
private format;
|
|
5
|
+
private pipelineTextured;
|
|
6
|
+
private pipelineSolid;
|
|
7
|
+
private vertexBuffer;
|
|
8
|
+
private indexBuffer;
|
|
9
|
+
private uniformBuffer;
|
|
10
|
+
private uniformBindGroup;
|
|
11
|
+
private textureBindGroupLayout;
|
|
12
|
+
private defaultSampler;
|
|
13
|
+
private projectionMatrix;
|
|
14
|
+
private vertexData;
|
|
15
|
+
private currentVertexCount;
|
|
16
|
+
private currentIndexCount;
|
|
17
|
+
private currentTexture;
|
|
18
|
+
private drawCommands;
|
|
19
|
+
private textureBindGroups;
|
|
20
|
+
constructor(device: GPUDevice, format: GPUTextureFormat);
|
|
21
|
+
setProjection(width: number, height: number): void;
|
|
22
|
+
begin(commandEncoder: GPUCommandEncoder, renderTarget: GPUTextureView): void;
|
|
23
|
+
private _activeEncoder;
|
|
24
|
+
private _activeRenderTarget;
|
|
25
|
+
drawTexturedQuad(x: number, y: number, w: number, h: number, texture: Texture2D, u1?: number, v1?: number, u2?: number, v2?: number, color?: [number, number, number, number]): void;
|
|
26
|
+
drawSolidRect(x: number, y: number, w: number, h: number, color: [number, number, number, number]): void;
|
|
27
|
+
flush(): void;
|
|
28
|
+
end(): void;
|
|
29
|
+
destroy(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sprite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgpu/pipelines/sprite.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAezB,qBAAa,cAAc;IAwBvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAxBhB,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,sBAAsB,CAA4C;IAC1E,OAAO,CAAC,cAAc,CAAU;IAEhC,OAAO,CAAC,gBAAgB,CAAe;IAGvC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,YAAY,CAA2B;IAE/C,OAAO,CAAC,iBAAiB,CAAmC;gBAGlD,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB;IA0JlC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAOlD,KAAK,CAAC,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,GAAG,IAAI;IAY5E,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,mBAAmB,CAA+B;IAE1D,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAC9D,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAC9B,KAAK,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAgB,GAAG,IAAI;IAuE9E,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAexG,KAAK,IAAI,IAAI;IA2Db,GAAG,IAAI,IAAI;IAMX,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FrameRenderer, FrameRenderOptions, FrameRenderStats } from './frame.js';
|
|
2
|
+
import { SpriteRenderer } from './pipelines/sprite.js';
|
|
3
|
+
import { WebGPUContextOptions, WebGPUContextState } from './context.js';
|
|
4
|
+
export interface WebGPURenderer {
|
|
5
|
+
readonly type: 'webgpu';
|
|
6
|
+
readonly device: GPUDevice;
|
|
7
|
+
renderFrame(options: FrameRenderOptions): FrameRenderStats;
|
|
8
|
+
resize(width: number, height: number): void;
|
|
9
|
+
destroy(): void;
|
|
10
|
+
readonly pipelines: {
|
|
11
|
+
readonly sprite: SpriteRenderer;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class WebGPURendererImpl implements WebGPURenderer {
|
|
15
|
+
private context;
|
|
16
|
+
private frameRenderer;
|
|
17
|
+
readonly pipelines: {
|
|
18
|
+
sprite: SpriteRenderer;
|
|
19
|
+
};
|
|
20
|
+
readonly type = "webgpu";
|
|
21
|
+
constructor(context: WebGPUContextState, frameRenderer: FrameRenderer, pipelines: {
|
|
22
|
+
sprite: SpriteRenderer;
|
|
23
|
+
});
|
|
24
|
+
get device(): GPUDevice;
|
|
25
|
+
renderFrame(options: FrameRenderOptions): FrameRenderStats;
|
|
26
|
+
resize(width: number, height: number): void;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
}
|
|
29
|
+
export declare function createWebGPURenderer(canvas?: HTMLCanvasElement, options?: WebGPUContextOptions): Promise<WebGPURenderer>;
|
|
30
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgpu/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAuB,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAK7F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAG3B,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,CAAC;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;IAGhB,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;KACjC,CAAC;CACH;AAED,qBAAa,kBAAmB,YAAW,cAAc;IAIrD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;aACL,SAAS,EAAE;QACvB,MAAM,EAAE,cAAc,CAAC;KAC1B;IAPH,QAAQ,CAAC,IAAI,YAAY;gBAGf,OAAO,EAAE,kBAAkB,EAC3B,aAAa,EAAE,aAAa,EACpB,SAAS,EAAE;QACvB,MAAM,EAAE,cAAc,CAAC;KAC1B;IAGH,IAAI,MAAM,IAAI,SAAS,CAEtB;IAED,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB;IAI1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY3C,OAAO,IAAI,IAAI;CAOhB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAwBzB"}
|