@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,43 @@
|
|
|
1
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
2
|
+
export interface DLight {
|
|
3
|
+
/** The unique ID of the entity that owns this light (optional). */
|
|
4
|
+
readonly key?: number;
|
|
5
|
+
/** World position of the light. */
|
|
6
|
+
readonly origin: Vec3;
|
|
7
|
+
/** RGB color of the light (0-1 range). */
|
|
8
|
+
readonly color: Vec3;
|
|
9
|
+
/** Intensity/Radius of the light. */
|
|
10
|
+
intensity: number;
|
|
11
|
+
/** Minimum lighting value to add (usually 0). */
|
|
12
|
+
readonly minLight?: number;
|
|
13
|
+
/** Time when the light should be removed (seconds). */
|
|
14
|
+
die: number;
|
|
15
|
+
/** Rate of change for intensity (units per second). Default 0. */
|
|
16
|
+
readonly radiusSpeed?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare const MAX_DLIGHTS = 32;
|
|
19
|
+
/**
|
|
20
|
+
* Manages a pool of dynamic lights.
|
|
21
|
+
*/
|
|
22
|
+
export declare class DynamicLightManager {
|
|
23
|
+
private lights;
|
|
24
|
+
/**
|
|
25
|
+
* Adds a dynamic light or updates an existing one with the same key.
|
|
26
|
+
*/
|
|
27
|
+
addLight(dlight: DLight, time: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Clears all lights (e.g., map change).
|
|
30
|
+
*/
|
|
31
|
+
clear(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Updates the list of active lights, removing expired ones and animating properties.
|
|
34
|
+
* @param time Current game time in seconds.
|
|
35
|
+
* @param dt Delta time in seconds.
|
|
36
|
+
*/
|
|
37
|
+
update(time: number, dt?: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the current list of active lights.
|
|
40
|
+
*/
|
|
41
|
+
getActiveLights(): readonly DLight[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=dlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlight.d.ts","sourceRoot":"","sources":["../../../src/render/dlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAEtB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAErB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAc5C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAE,MAAU,GAAG,IAAI;IAe1C;;OAEG;IACH,eAAe,IAAI,SAAS,MAAM,EAAE;CAGrC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { BspMap } from '../assets/bsp.js';
|
|
2
|
+
import { BspSurfacePipeline } from './bspPipeline.js';
|
|
3
|
+
import { gatherVisibleFaces } from './bspTraversal.js';
|
|
4
|
+
import { extractFrustumPlanes } from './culling.js';
|
|
5
|
+
import { Camera } from './camera.js';
|
|
6
|
+
import type { BspSurfaceGeometry, LightmapAtlas } from './bsp.js';
|
|
7
|
+
import { Texture2D } from './resources.js';
|
|
8
|
+
import type { MaterialManager } from './materials.js';
|
|
9
|
+
import { computeSkyScroll, removeViewTranslation, SkyboxPipeline } from './skybox.js';
|
|
10
|
+
import { DLight } from './dlight.js';
|
|
11
|
+
export { FrameRenderStats, FrameRenderOptions };
|
|
12
|
+
interface SkyRenderState {
|
|
13
|
+
readonly scrollSpeeds?: readonly [number, number];
|
|
14
|
+
readonly textureUnit?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ViewModelRenderState {
|
|
17
|
+
readonly fov?: number;
|
|
18
|
+
readonly depthRange?: readonly [number, number];
|
|
19
|
+
readonly draw: (viewProjection: Float32Array) => void;
|
|
20
|
+
}
|
|
21
|
+
interface FrameRenderStats {
|
|
22
|
+
batches: number;
|
|
23
|
+
facesDrawn: number;
|
|
24
|
+
drawCalls: number;
|
|
25
|
+
skyDrawn: boolean;
|
|
26
|
+
viewModelDrawn: boolean;
|
|
27
|
+
fps: number;
|
|
28
|
+
vertexCount: number;
|
|
29
|
+
}
|
|
30
|
+
export interface WorldRenderState {
|
|
31
|
+
readonly map: BspMap;
|
|
32
|
+
readonly surfaces: readonly BspSurfaceGeometry[];
|
|
33
|
+
readonly lightmaps?: readonly LightmapAtlas[];
|
|
34
|
+
readonly textures?: ReadonlyMap<string, Texture2D>;
|
|
35
|
+
readonly materials?: MaterialManager;
|
|
36
|
+
readonly lightStyles?: ReadonlyArray<number>;
|
|
37
|
+
}
|
|
38
|
+
export type RenderMode = 'textured' | 'wireframe' | 'solid' | 'solid-faceted';
|
|
39
|
+
export interface RenderModeConfig {
|
|
40
|
+
readonly mode: RenderMode;
|
|
41
|
+
readonly applyToAll: boolean;
|
|
42
|
+
readonly color?: readonly [number, number, number, number];
|
|
43
|
+
readonly generateRandomColor?: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface FrameRenderOptions {
|
|
46
|
+
readonly camera: Camera;
|
|
47
|
+
readonly world?: WorldRenderState;
|
|
48
|
+
readonly sky?: SkyRenderState;
|
|
49
|
+
readonly viewModel?: ViewModelRenderState;
|
|
50
|
+
readonly dlights?: readonly DLight[];
|
|
51
|
+
readonly timeSeconds?: number;
|
|
52
|
+
readonly deltaTime?: number;
|
|
53
|
+
readonly clearColor?: readonly [number, number, number, number];
|
|
54
|
+
readonly renderMode?: RenderModeConfig;
|
|
55
|
+
readonly disableLightmaps?: boolean;
|
|
56
|
+
readonly lightmapOnly?: boolean;
|
|
57
|
+
readonly brightness?: number;
|
|
58
|
+
readonly gamma?: number;
|
|
59
|
+
readonly fullbright?: boolean;
|
|
60
|
+
readonly ambient?: number;
|
|
61
|
+
readonly lightStyleOverrides?: Map<number, string>;
|
|
62
|
+
readonly waterTint?: readonly [number, number, number, number];
|
|
63
|
+
readonly underwaterWarp?: boolean;
|
|
64
|
+
readonly bloom?: boolean;
|
|
65
|
+
readonly bloomIntensity?: number;
|
|
66
|
+
readonly portalState?: ReadonlyArray<boolean>;
|
|
67
|
+
}
|
|
68
|
+
interface FrameRendererDependencies {
|
|
69
|
+
readonly gatherVisibleFaces: typeof gatherVisibleFaces;
|
|
70
|
+
readonly extractFrustumPlanes: typeof extractFrustumPlanes;
|
|
71
|
+
readonly computeSkyScroll: typeof computeSkyScroll;
|
|
72
|
+
readonly removeViewTranslation: typeof removeViewTranslation;
|
|
73
|
+
}
|
|
74
|
+
export interface FrameRenderer {
|
|
75
|
+
renderFrame(options: FrameRenderOptions): FrameRenderStats;
|
|
76
|
+
}
|
|
77
|
+
export declare const createFrameRenderer: (gl: WebGL2RenderingContext, bspPipeline: BspSurfacePipeline, skyboxPipeline: SkyboxPipeline, deps?: FrameRendererDependencies) => FrameRenderer;
|
|
78
|
+
//# sourceMappingURL=frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../src/render/frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/render/geometry.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAetG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DebugRenderer } from './debug.js';
|
|
2
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
3
|
+
export declare enum GizmoPart {
|
|
4
|
+
None = 0,
|
|
5
|
+
XAxis = 1,
|
|
6
|
+
YAxis = 2,
|
|
7
|
+
ZAxis = 3,
|
|
8
|
+
XRing = 4,
|
|
9
|
+
YRing = 5,
|
|
10
|
+
ZRing = 6
|
|
11
|
+
}
|
|
12
|
+
export interface Ray {
|
|
13
|
+
origin: Vec3;
|
|
14
|
+
direction: Vec3;
|
|
15
|
+
}
|
|
16
|
+
export declare class Gizmo {
|
|
17
|
+
private position;
|
|
18
|
+
private rotation;
|
|
19
|
+
private scale;
|
|
20
|
+
private readonly axisLength;
|
|
21
|
+
private readonly arrowLength;
|
|
22
|
+
private readonly arrowRadius;
|
|
23
|
+
private readonly ringRadius;
|
|
24
|
+
private readonly tubeRadius;
|
|
25
|
+
setPosition(pos: Vec3): void;
|
|
26
|
+
setRotation(rot: Vec3): void;
|
|
27
|
+
setScale(s: number): void;
|
|
28
|
+
private getRotationMatrix;
|
|
29
|
+
draw(renderer: DebugRenderer, activePart?: GizmoPart): void;
|
|
30
|
+
intersect(ray: Ray): GizmoPart | null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=gizmo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gizmo.d.ts","sourceRoot":"","sources":["../../../src/render/gizmo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,IAAI,EAAQ,MAAM,kBAAkB,CAAC;AAG9C,oBAAY,SAAS;IACjB,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;IACL,KAAK,IAAA;CACR;AAED,MAAM,WAAW,GAAG;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;CACnB;AAUD,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAAe;IAG5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAElC,WAAW,CAAC,GAAG,EAAE,IAAI;IAIrB,WAAW,CAAC,GAAG,EAAE,IAAI;IAIrB,QAAQ,CAAC,CAAC,EAAE,MAAM;IAIlB,OAAO,CAAC,iBAAiB;IAWzB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,GAAE,SAA0B;IA8EpE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI;CAsHxC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MemoryUsage } from './types.js';
|
|
2
|
+
export interface GpuTimerResult {
|
|
3
|
+
readonly timeElapsedNs: number;
|
|
4
|
+
}
|
|
5
|
+
export interface RenderStatistics {
|
|
6
|
+
readonly frameTimeMs: number;
|
|
7
|
+
readonly gpuTimeMs: number;
|
|
8
|
+
readonly cpuFrameTimeMs: number;
|
|
9
|
+
readonly drawCalls: number;
|
|
10
|
+
readonly triangles: number;
|
|
11
|
+
readonly vertices: number;
|
|
12
|
+
readonly textureBinds: number;
|
|
13
|
+
readonly shaderSwitches: number;
|
|
14
|
+
readonly visibleSurfaces: number;
|
|
15
|
+
readonly culledSurfaces: number;
|
|
16
|
+
readonly visibleEntities: number;
|
|
17
|
+
readonly culledEntities: number;
|
|
18
|
+
readonly memoryUsageMB: {
|
|
19
|
+
readonly textures: number;
|
|
20
|
+
readonly geometry: number;
|
|
21
|
+
readonly total: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface FrameStats {
|
|
25
|
+
drawCalls: number;
|
|
26
|
+
vertexCount: number;
|
|
27
|
+
batches: number;
|
|
28
|
+
shaderSwitches: number;
|
|
29
|
+
visibleSurfaces: number;
|
|
30
|
+
culledSurfaces: number;
|
|
31
|
+
visibleEntities: number;
|
|
32
|
+
culledEntities: number;
|
|
33
|
+
}
|
|
34
|
+
export declare class GpuProfiler {
|
|
35
|
+
private readonly ext;
|
|
36
|
+
private readonly gl;
|
|
37
|
+
private readonly activeQueries;
|
|
38
|
+
private readonly queryPool;
|
|
39
|
+
private currentQuery;
|
|
40
|
+
private lastGpuTimeMs;
|
|
41
|
+
private frameStartTime;
|
|
42
|
+
private lastCpuFrameTimeMs;
|
|
43
|
+
private textureMemoryBytes;
|
|
44
|
+
private bufferMemoryBytes;
|
|
45
|
+
private shaderMemoryBytes;
|
|
46
|
+
constructor(gl: WebGL2RenderingContext);
|
|
47
|
+
get available(): boolean;
|
|
48
|
+
getPerformanceReport(frameStats: FrameStats): RenderStatistics;
|
|
49
|
+
startFrame(): void;
|
|
50
|
+
endFrame(): void;
|
|
51
|
+
trackTextureMemory(bytes: number): void;
|
|
52
|
+
trackBufferMemory(bytes: number): void;
|
|
53
|
+
trackShaderMemory(bytes: number): void;
|
|
54
|
+
getMemoryUsage(): MemoryUsage;
|
|
55
|
+
private getQuery;
|
|
56
|
+
private pollQueries;
|
|
57
|
+
dispose(): void;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=gpuProfiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpuProfiler.d.ts","sourceRoot":"","sources":["../../../src/render/gpuProfiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,aAAa,CAAa;IAGlC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAGvC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,EAAE,EAAE,sBAAsB;IAMtC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAGD,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB;IAyB9D,UAAU,IAAI,IAAI;IAgBlB,QAAQ,IAAI,IAAI;IAYhB,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAIhC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAI/B,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAI/B,cAAc,IAAI,WAAW;IAgB7B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IA0BnB,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
2
|
+
export interface InstanceData {
|
|
3
|
+
position: Vec3;
|
|
4
|
+
rotation: Vec3;
|
|
5
|
+
scale?: Vec3;
|
|
6
|
+
frame?: number;
|
|
7
|
+
frame0?: number;
|
|
8
|
+
frame1?: number;
|
|
9
|
+
lerp?: number;
|
|
10
|
+
skin?: number;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=instancing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instancing.d.ts","sourceRoot":"","sources":["../../../src/render/instancing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIxC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,CAAC;IAGb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FrameRenderOptions } from './frame.js';
|
|
2
|
+
import { RenderableEntity } from './scene.js';
|
|
3
|
+
import { CollisionVisRenderer } from './collisionVis.js';
|
|
4
|
+
import { DebugRenderer } from './debug.js';
|
|
5
|
+
import { ParticleSystem } from './particleSystem.js';
|
|
6
|
+
import { MemoryUsage } from './types.js';
|
|
7
|
+
import { Texture2D } from './resources.js';
|
|
8
|
+
import { PreparedTexture } from '../assets/texture.js';
|
|
9
|
+
import { DebugMode } from './debugMode.js';
|
|
10
|
+
import { Md2Model } from '../assets/md2.js';
|
|
11
|
+
import { Md3Model } from '../assets/md3.js';
|
|
12
|
+
import { InstanceData } from './instancing.js';
|
|
13
|
+
import { RenderOptions } from './options.js';
|
|
14
|
+
import { RenderStatistics } from './gpuProfiler.js';
|
|
15
|
+
export type Pic = Texture2D;
|
|
16
|
+
export interface IRenderer {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
collisionVis: CollisionVisRenderer;
|
|
20
|
+
debug: DebugRenderer;
|
|
21
|
+
particleSystem: ParticleSystem;
|
|
22
|
+
getPerformanceReport(): RenderStatistics;
|
|
23
|
+
getMemoryUsage(): MemoryUsage;
|
|
24
|
+
renderFrame(options: FrameRenderOptions, entities: readonly RenderableEntity[], renderOptions?: RenderOptions): void;
|
|
25
|
+
registerPic(name: string, data: ArrayBuffer): Promise<Pic>;
|
|
26
|
+
registerTexture(name: string, texture: PreparedTexture): Pic;
|
|
27
|
+
begin2D(): void;
|
|
28
|
+
end2D(): void;
|
|
29
|
+
drawPic(x: number, y: number, pic: Pic, color?: [number, number, number, number]): void;
|
|
30
|
+
drawString(x: number, y: number, text: string, color?: [number, number, number, number]): void;
|
|
31
|
+
drawCenterString(y: number, text: string): void;
|
|
32
|
+
drawfillRect(x: number, y: number, width: number, height: number, color: [number, number, number, number]): void;
|
|
33
|
+
setEntityHighlight(entityId: number, color: [number, number, number, number]): void;
|
|
34
|
+
clearEntityHighlight(entityId: number): void;
|
|
35
|
+
highlightSurface(faceIndex: number, color: [number, number, number, number]): void;
|
|
36
|
+
removeSurfaceHighlight(faceIndex: number): void;
|
|
37
|
+
setDebugMode(mode: DebugMode): void;
|
|
38
|
+
setBrightness(value: number): void;
|
|
39
|
+
setGamma(value: number): void;
|
|
40
|
+
setFullbright(enabled: boolean): void;
|
|
41
|
+
setAmbient(value: number): void;
|
|
42
|
+
setLightStyle(index: number, pattern: string | null): void;
|
|
43
|
+
setUnderwaterWarp(enabled: boolean): void;
|
|
44
|
+
setBloom(enabled: boolean): void;
|
|
45
|
+
setBloomIntensity(value: number): void;
|
|
46
|
+
setLodBias(bias: number): void;
|
|
47
|
+
renderInstanced(model: Md2Model | Md3Model, instances: InstanceData[]): void;
|
|
48
|
+
dispose(): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/render/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BspMap, BspLeaf } from '../assets/bsp.js';
|
|
2
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
3
|
+
export declare function findLeaf(map: BspMap, point: Vec3): {
|
|
4
|
+
leaf: BspLeaf;
|
|
5
|
+
index: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function getMinLight(map: BspMap): number;
|
|
8
|
+
export declare function sampleLightmap(map: BspMap, faceIndex: number, u: number, v: number): number;
|
|
9
|
+
export declare function calculateEntityLight(map: BspMap | undefined, origin: Vec3): number;
|
|
10
|
+
//# sourceMappingURL=light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../../src/render/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKxC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBnF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAyD3F;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,IAAI,GAAG,MAAM,CAgElF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type DLight } from './dlight.js';
|
|
2
|
+
import { type FrustumPlane } from './culling.js';
|
|
3
|
+
/**
|
|
4
|
+
* Culls dynamic lights based on frustum visibility and optional distance/importance.
|
|
5
|
+
*
|
|
6
|
+
* @param lights The list of all active dynamic lights.
|
|
7
|
+
* @param planes The view frustum planes.
|
|
8
|
+
* @param cameraPosition The position of the camera (optional, used for sorting).
|
|
9
|
+
* @param maxLights The maximum number of lights to return (default 32).
|
|
10
|
+
* @returns A filtered and sorted list of visible lights.
|
|
11
|
+
*/
|
|
12
|
+
export declare function cullLights(lights: readonly DLight[], planes: readonly FrustumPlane[], cameraPosition?: {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
z: number;
|
|
16
|
+
}, maxLights?: number): DLight[];
|
|
17
|
+
//# sourceMappingURL=lightCulling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightCulling.d.ts","sourceRoot":"","sources":["../../../src/render/lightCulling.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,cAAc,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,SAAS,GAAE,MAAW,GACvB,MAAM,EAAE,CA+CV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class LightStyleManager {
|
|
2
|
+
private readonly styles;
|
|
3
|
+
private readonly values;
|
|
4
|
+
constructor();
|
|
5
|
+
private setDefaultStyles;
|
|
6
|
+
setStyle(index: number, pattern: string): void;
|
|
7
|
+
update(timeSeconds: number): void;
|
|
8
|
+
getValues(): Float32Array;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=lightStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightStyles.d.ts","sourceRoot":"","sources":["../../../src/render/lightStyles.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;;IAMhD,OAAO,CAAC,gBAAgB;IAgBxB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9C,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAwBjC,SAAS,IAAI,YAAY;CAG1B"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BspMap } from '../assets/bsp.js';
|
|
2
|
+
import { MaterialManager } from './materials.js';
|
|
3
|
+
import { Texture2D } from './resources.js';
|
|
4
|
+
export declare function createMaterialsFromMap(map: BspMap, textures: ReadonlyMap<string, Texture2D>, materialManager: MaterialManager): void;
|
|
5
|
+
//# sourceMappingURL=materialLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialLoader.d.ts","sourceRoot":"","sources":["../../../src/render/materialLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAa,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,wBAAgB,sBAAsB,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EACxC,eAAe,EAAE,eAAe,GACjC,IAAI,CAoIN"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Texture2D } from './resources.js';
|
|
2
|
+
export declare enum BlendMode {
|
|
3
|
+
OPAQUE = 0,
|
|
4
|
+
ALPHA = 1,
|
|
5
|
+
ADDITIVE = 2
|
|
6
|
+
}
|
|
7
|
+
export interface MaterialOptions {
|
|
8
|
+
readonly textures: (WebGLTexture | Texture2D)[];
|
|
9
|
+
readonly fps?: number;
|
|
10
|
+
readonly blendMode?: BlendMode;
|
|
11
|
+
readonly twoSided?: boolean;
|
|
12
|
+
readonly depthWrite?: boolean;
|
|
13
|
+
readonly scroll?: readonly [number, number];
|
|
14
|
+
readonly warp?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class Material {
|
|
17
|
+
readonly blendMode: BlendMode;
|
|
18
|
+
readonly twoSided: boolean;
|
|
19
|
+
readonly depthWrite: boolean;
|
|
20
|
+
readonly warp: boolean;
|
|
21
|
+
readonly scroll: readonly [number, number];
|
|
22
|
+
private readonly textures;
|
|
23
|
+
private readonly fps;
|
|
24
|
+
private currentIndex;
|
|
25
|
+
private lastAnimationTime;
|
|
26
|
+
private lastTime;
|
|
27
|
+
constructor(options: MaterialOptions);
|
|
28
|
+
update(time: number): void;
|
|
29
|
+
get texture(): WebGLTexture | Texture2D | null;
|
|
30
|
+
get scrollOffset(): readonly [number, number];
|
|
31
|
+
}
|
|
32
|
+
export declare class MaterialManager {
|
|
33
|
+
private readonly materials;
|
|
34
|
+
getMaterial(name: string): Material | undefined;
|
|
35
|
+
registerMaterial(name: string, options: MaterialOptions): Material;
|
|
36
|
+
update(time: number): void;
|
|
37
|
+
clear(): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=materials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../../../src/render/materials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,oBAAY,SAAS;IACnB,MAAM,IAAA;IACN,KAAK,IAAA;IACL,QAAQ,IAAA;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAa;gBAEjB,OAAO,EAAE,eAAe;IAUpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU1B,IAAI,OAAO,IAAI,YAAY,GAAG,SAAS,GAAG,IAAI,CAG7C;IAED,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5C;CACF;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAE9D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI/C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ;IAMlE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM1B,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Md2Model } from '../assets/md2.js';
|
|
2
|
+
import { IndexBuffer, VertexArray, VertexBuffer } from './resources.js';
|
|
3
|
+
import { ShaderProgram } from './shaderProgram.js';
|
|
4
|
+
import { DLight } from './dlight.js';
|
|
5
|
+
import { RenderModeConfig } from './frame.js';
|
|
6
|
+
export interface Md2DrawVertex {
|
|
7
|
+
readonly vertexIndex: number;
|
|
8
|
+
readonly texCoord: readonly [number, number];
|
|
9
|
+
}
|
|
10
|
+
export interface Md2Geometry {
|
|
11
|
+
readonly vertices: readonly Md2DrawVertex[];
|
|
12
|
+
readonly indices: Uint16Array;
|
|
13
|
+
}
|
|
14
|
+
export interface Md2FrameBlend {
|
|
15
|
+
readonly frame0: number;
|
|
16
|
+
readonly frame1: number;
|
|
17
|
+
readonly lerp: number;
|
|
18
|
+
}
|
|
19
|
+
export interface Md2BindOptions {
|
|
20
|
+
readonly modelViewProjection: Float32List;
|
|
21
|
+
readonly lightDirection?: readonly [number, number, number];
|
|
22
|
+
readonly ambientLight?: number;
|
|
23
|
+
readonly tint?: readonly [number, number, number, number];
|
|
24
|
+
readonly diffuseSampler?: number;
|
|
25
|
+
readonly dlights?: readonly DLight[];
|
|
26
|
+
readonly modelMatrix?: Float32List;
|
|
27
|
+
readonly renderMode?: RenderModeConfig;
|
|
28
|
+
readonly brightness?: number;
|
|
29
|
+
readonly gamma?: number;
|
|
30
|
+
readonly fullbright?: boolean;
|
|
31
|
+
readonly ambient?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare const MD2_VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nlayout(location = 0) in vec3 a_position;\nlayout(location = 1) in vec3 a_normal;\nlayout(location = 2) in vec2 a_texCoord;\n\nstruct DLight {\n vec3 position;\n vec3 color;\n float intensity;\n};\n\nconst int MAX_DLIGHTS = 32;\n\nuniform mat4 u_modelViewProjection;\nuniform mat4 u_modelMatrix;\nuniform vec3 u_lightDir;\nuniform float u_ambient;\n\nuniform int u_numDlights;\nuniform DLight u_dlights[MAX_DLIGHTS];\n\nout vec2 v_texCoord;\nout vec3 v_lightColor;\nout vec3 v_position; // For faceted shading\n\nvoid main() {\n vec3 normal = normalize(a_normal);\n\n // Directional Light (simple Lambert)\n float dotL = max(dot(normal, normalize(u_lightDir)), 0.0);\n vec3 lightAcc = vec3(min(1.0, u_ambient + dotL)); // White light assumed for directional/ambient\n\n // Dynamic Lights\n vec4 worldPos = u_modelMatrix * vec4(a_position, 1.0);\n\n for (int i = 0; i < MAX_DLIGHTS; i++) {\n if (i >= u_numDlights) break;\n DLight dlight = u_dlights[i];\n\n float dist = distance(worldPos.xyz, dlight.position);\n if (dist < dlight.intensity) {\n float intensity = (dlight.intensity - dist) / dlight.intensity;\n lightAcc += dlight.color * intensity;\n }\n }\n\n v_lightColor = lightAcc;\n v_texCoord = a_texCoord;\n v_position = worldPos.xyz;\n gl_Position = u_modelViewProjection * vec4(a_position, 1.0);\n}";
|
|
34
|
+
export declare const MD2_FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nin vec2 v_texCoord;\nin vec3 v_lightColor;\nin vec3 v_position;\n\nuniform sampler2D u_diffuseMap;\nuniform vec4 u_tint;\n\nuniform int u_renderMode; // 0: Textured, 1: Solid, 2: Solid Faceted\nuniform vec4 u_solidColor;\n\n// Lighting controls\nuniform float u_brightness;\nuniform float u_gamma;\nuniform bool u_fullbright;\nuniform float u_globalAmbient;\n\nout vec4 o_color;\n\nvoid main() {\n vec4 finalColor;\n\n if (u_renderMode == 0) {\n vec4 albedo = texture(u_diffuseMap, v_texCoord) * u_tint;\n\n vec3 light = v_lightColor;\n\n if (u_fullbright) {\n light = vec3(1.0);\n }\n\n // Apply global ambient min\n light = max(light, vec3(u_globalAmbient));\n\n light *= u_brightness;\n\n vec3 rgb = albedo.rgb * light;\n\n if (u_gamma != 1.0) {\n rgb = pow(rgb, vec3(1.0 / u_gamma));\n }\n\n finalColor = vec4(rgb, albedo.a);\n } else {\n vec3 color = u_solidColor.rgb;\n if (u_renderMode == 2) {\n // FACETED\n vec3 fdx = dFdx(v_position);\n vec3 fdy = dFdy(v_position);\n vec3 faceNormal = normalize(cross(fdx, fdy));\n vec3 lightDir = normalize(vec3(0.5, 0.5, 1.0));\n float diff = max(dot(faceNormal, lightDir), 0.2);\n color *= diff;\n }\n finalColor = vec4(color, u_solidColor.a * u_tint.a);\n }\n\n o_color = finalColor;\n}";
|
|
35
|
+
export declare function buildMd2Geometry(model: Md2Model): Md2Geometry;
|
|
36
|
+
export declare function buildMd2VertexData(model: Md2Model, geometry: Md2Geometry, blend: Md2FrameBlend): Float32Array;
|
|
37
|
+
export declare class Md2MeshBuffers {
|
|
38
|
+
readonly gl: WebGL2RenderingContext;
|
|
39
|
+
readonly geometry: Md2Geometry;
|
|
40
|
+
readonly vertexBuffer: VertexBuffer;
|
|
41
|
+
readonly indexBuffer: IndexBuffer;
|
|
42
|
+
readonly vertexArray: VertexArray;
|
|
43
|
+
readonly indexCount: number;
|
|
44
|
+
wireframeIndexBuffer?: IndexBuffer;
|
|
45
|
+
wireframeIndexCount?: number;
|
|
46
|
+
constructor(gl: WebGL2RenderingContext, model: Md2Model, blend: Md2FrameBlend);
|
|
47
|
+
update(model: Md2Model, blend: Md2FrameBlend): void;
|
|
48
|
+
bind(): void;
|
|
49
|
+
dispose(): void;
|
|
50
|
+
}
|
|
51
|
+
export declare class Md2Pipeline {
|
|
52
|
+
readonly gl: WebGL2RenderingContext;
|
|
53
|
+
readonly program: ShaderProgram;
|
|
54
|
+
private readonly uniformMvp;
|
|
55
|
+
private readonly uniformModelMatrix;
|
|
56
|
+
private readonly uniformLightDir;
|
|
57
|
+
private readonly uniformAmbient;
|
|
58
|
+
private readonly uniformTint;
|
|
59
|
+
private readonly uniformDiffuse;
|
|
60
|
+
private readonly uniformRenderMode;
|
|
61
|
+
private readonly uniformSolidColor;
|
|
62
|
+
private readonly uniformNumDlights;
|
|
63
|
+
private readonly uniformDlights;
|
|
64
|
+
private readonly uniformBrightness;
|
|
65
|
+
private readonly uniformGamma;
|
|
66
|
+
private readonly uniformFullbright;
|
|
67
|
+
private readonly uniformGlobalAmbient;
|
|
68
|
+
constructor(gl: WebGL2RenderingContext);
|
|
69
|
+
get shaderSize(): number;
|
|
70
|
+
bind(options: Md2BindOptions): void;
|
|
71
|
+
draw(mesh: Md2MeshBuffers, renderMode?: RenderModeConfig): void;
|
|
72
|
+
dispose(): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=md2Pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md2Pipeline.d.ts","sourceRoot":"","sources":["../../../src/render/md2Pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAEvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,m4CAoD5B,CAAC;AAEH,eAAO,MAAM,mBAAmB,06CA4D9B,CAAC;AA2BH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAiD7D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,aAAa,GACnB,YAAY,CAgCd;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,oBAAoB,CAAC,EAAE,WAAW,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;gBAEjB,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa;IAuB7E,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAKnD,IAAI,IAAI,IAAI;IAKZ,OAAO,IAAI,IAAI;CAMhB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8B;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAEhE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0H;IAGzJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8B;gBAEvD,EAAE,EAAE,sBAAsB;IAiCtC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAgEnC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAkB/D,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Mat4, Vec3 } from '@quake2ts/shared';
|
|
2
|
+
import { Md3Model, Md3Surface } from '../assets/md3.js';
|
|
3
|
+
import { IndexBuffer, VertexArray, VertexBuffer } from './resources.js';
|
|
4
|
+
import { ShaderProgram } from './shaderProgram.js';
|
|
5
|
+
import { RenderModeConfig } from './frame.js';
|
|
6
|
+
export interface Md3DrawVertex {
|
|
7
|
+
readonly vertexIndex: number;
|
|
8
|
+
readonly texCoord: readonly [number, number];
|
|
9
|
+
}
|
|
10
|
+
export interface Md3SurfaceGeometry {
|
|
11
|
+
readonly vertices: readonly Md3DrawVertex[];
|
|
12
|
+
readonly indices: Uint16Array;
|
|
13
|
+
}
|
|
14
|
+
export interface Md3FrameBlend {
|
|
15
|
+
readonly frame0: number;
|
|
16
|
+
readonly frame1: number;
|
|
17
|
+
readonly lerp: number;
|
|
18
|
+
}
|
|
19
|
+
export interface Md3DynamicLight {
|
|
20
|
+
readonly origin: Vec3;
|
|
21
|
+
readonly color: readonly [number, number, number];
|
|
22
|
+
readonly radius: number;
|
|
23
|
+
}
|
|
24
|
+
export interface Md3LightingOptions {
|
|
25
|
+
readonly ambient?: readonly [number, number, number];
|
|
26
|
+
readonly directional?: {
|
|
27
|
+
direction: Vec3;
|
|
28
|
+
color: readonly [number, number, number];
|
|
29
|
+
};
|
|
30
|
+
readonly dynamicLights?: readonly Md3DynamicLight[];
|
|
31
|
+
readonly modelMatrix?: Mat4;
|
|
32
|
+
}
|
|
33
|
+
export interface Md3SurfaceMaterial {
|
|
34
|
+
readonly diffuseSampler?: number;
|
|
35
|
+
readonly tint?: readonly [number, number, number, number];
|
|
36
|
+
readonly renderMode?: RenderModeConfig;
|
|
37
|
+
readonly brightness?: number;
|
|
38
|
+
readonly gamma?: number;
|
|
39
|
+
readonly fullbright?: boolean;
|
|
40
|
+
readonly globalAmbient?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface Md3TagTransform {
|
|
43
|
+
readonly origin: Vec3;
|
|
44
|
+
readonly axis: readonly [Vec3, Vec3, Vec3];
|
|
45
|
+
readonly matrix: Mat4;
|
|
46
|
+
}
|
|
47
|
+
export declare function buildMd3SurfaceGeometry(surface: Md3Surface): Md3SurfaceGeometry;
|
|
48
|
+
export declare function buildMd3VertexData(surface: Md3Surface, geometry: Md3SurfaceGeometry, blend: Md3FrameBlend, lighting?: Md3LightingOptions): Float32Array;
|
|
49
|
+
export declare function interpolateMd3Tag(model: Md3Model, blend: Md3FrameBlend, tagName: string): Md3TagTransform | null;
|
|
50
|
+
export declare const MD3_VERTEX_SHADER = "#version 300 es\nprecision highp float;\n\nlayout(location = 0) in vec3 a_position;\nlayout(location = 1) in vec3 a_normal;\nlayout(location = 2) in vec2 a_texCoord;\nlayout(location = 3) in vec4 a_color;\n\nuniform mat4 u_modelViewProjection;\n\nout vec2 v_texCoord;\nout vec4 v_color;\nout vec3 v_position;\n\nvoid main() {\n v_texCoord = a_texCoord;\n v_color = a_color;\n v_position = a_position; // Model space, assuming single mesh pass\n gl_Position = u_modelViewProjection * vec4(a_position, 1.0);\n}";
|
|
51
|
+
export declare const MD3_FRAGMENT_SHADER = "#version 300 es\nprecision highp float;\n\nin vec2 v_texCoord;\nin vec4 v_color;\nin vec3 v_position;\n\nuniform sampler2D u_diffuseMap;\nuniform vec4 u_tint;\n\nuniform int u_renderMode; // 0: Textured, 1: Solid, 2: Solid Faceted\nuniform vec4 u_solidColor;\n\n// Lighting controls\nuniform float u_brightness;\nuniform float u_gamma;\nuniform bool u_fullbright;\nuniform float u_globalAmbient;\n\nout vec4 o_color;\n\nvoid main() {\n vec4 finalColor;\n\n if (u_renderMode == 0) {\n vec4 albedo = texture(u_diffuseMap, v_texCoord) * u_tint;\n\n vec3 light = v_color.rgb;\n if (u_fullbright) {\n light = vec3(1.0);\n }\n light = max(light, vec3(u_globalAmbient));\n light *= u_brightness;\n\n vec3 rgb = albedo.rgb * light;\n\n if (u_gamma != 1.0) {\n rgb = pow(rgb, vec3(1.0 / u_gamma));\n }\n\n finalColor = vec4(rgb, albedo.a * v_color.a);\n } else {\n vec3 color = u_solidColor.rgb;\n if (u_renderMode == 2) {\n // FACETED\n vec3 fdx = dFdx(v_position);\n vec3 fdy = dFdy(v_position);\n vec3 faceNormal = normalize(cross(fdx, fdy));\n vec3 lightDir = normalize(vec3(0.5, 0.5, 1.0));\n float diff = max(dot(faceNormal, lightDir), 0.2);\n color *= diff;\n }\n finalColor = vec4(color, u_solidColor.a * u_tint.a);\n }\n\n o_color = finalColor;\n}";
|
|
52
|
+
export declare class Md3SurfaceMesh {
|
|
53
|
+
readonly gl: WebGL2RenderingContext;
|
|
54
|
+
readonly geometry: Md3SurfaceGeometry;
|
|
55
|
+
readonly vertexBuffer: VertexBuffer;
|
|
56
|
+
readonly indexBuffer: IndexBuffer;
|
|
57
|
+
readonly vertexArray: VertexArray;
|
|
58
|
+
readonly indexCount: number;
|
|
59
|
+
wireframeIndexBuffer?: IndexBuffer;
|
|
60
|
+
wireframeIndexCount?: number;
|
|
61
|
+
constructor(gl: WebGL2RenderingContext, surface: Md3Surface, blend: Md3FrameBlend, lighting?: Md3LightingOptions);
|
|
62
|
+
update(surface: Md3Surface, blend: Md3FrameBlend, lighting?: Md3LightingOptions): void;
|
|
63
|
+
bind(): void;
|
|
64
|
+
dispose(): void;
|
|
65
|
+
}
|
|
66
|
+
export declare class Md3ModelMesh {
|
|
67
|
+
readonly surfaces: Map<string, Md3SurfaceMesh>;
|
|
68
|
+
readonly gl: WebGL2RenderingContext;
|
|
69
|
+
readonly model: Md3Model;
|
|
70
|
+
blend: Md3FrameBlend;
|
|
71
|
+
lighting?: Md3LightingOptions;
|
|
72
|
+
constructor(gl: WebGL2RenderingContext, model: Md3Model, blend: Md3FrameBlend, lighting?: Md3LightingOptions);
|
|
73
|
+
update(blend: Md3FrameBlend, lighting?: Md3LightingOptions): void;
|
|
74
|
+
dispose(): void;
|
|
75
|
+
}
|
|
76
|
+
export declare class Md3Pipeline {
|
|
77
|
+
readonly gl: WebGL2RenderingContext;
|
|
78
|
+
readonly program: ShaderProgram;
|
|
79
|
+
private readonly uniformMvp;
|
|
80
|
+
private readonly uniformTint;
|
|
81
|
+
private readonly uniformDiffuse;
|
|
82
|
+
private readonly uniformRenderMode;
|
|
83
|
+
private readonly uniformSolidColor;
|
|
84
|
+
private readonly uniformBrightness;
|
|
85
|
+
private readonly uniformGamma;
|
|
86
|
+
private readonly uniformFullbright;
|
|
87
|
+
private readonly uniformGlobalAmbient;
|
|
88
|
+
constructor(gl: WebGL2RenderingContext);
|
|
89
|
+
get shaderSize(): number;
|
|
90
|
+
bind(modelViewProjection: Float32List, tint?: readonly [number, number, number, number], sampler?: number): void;
|
|
91
|
+
drawSurface(mesh: Md3SurfaceMesh, material?: Md3SurfaceMaterial): void;
|
|
92
|
+
dispose(): void;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=md3Pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md3Pipeline.d.ts","sourceRoot":"","sources":["../../../src/render/md3Pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/render/options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|