gfxlite 0.1.0

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.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/gfxlite.es.js +6081 -0
  4. package/dist/gfxlite.umd.js +1455 -0
  5. package/dist/types/core/camera/Camera.d.ts +13 -0
  6. package/dist/types/core/camera/OrthographicCamera.d.ts +11 -0
  7. package/dist/types/core/camera/PerspectiveCamera.d.ts +9 -0
  8. package/dist/types/core/controls/OrbitControls.d.ts +84 -0
  9. package/dist/types/core/environment/Environment.d.ts +25 -0
  10. package/dist/types/core/environment/EnvironmentManager.d.ts +44 -0
  11. package/dist/types/core/geometry/BoxGeometry.d.ts +13 -0
  12. package/dist/types/core/geometry/CircleGeometry.d.ts +11 -0
  13. package/dist/types/core/geometry/ConeGeometry.d.ts +17 -0
  14. package/dist/types/core/geometry/CylinderGeometry.d.ts +19 -0
  15. package/dist/types/core/geometry/Geometry.d.ts +27 -0
  16. package/dist/types/core/geometry/PlaneGeometry.d.ts +15 -0
  17. package/dist/types/core/geometry/SphereGeometry.d.ts +13 -0
  18. package/dist/types/core/geometry/TorusGeometry.d.ts +15 -0
  19. package/dist/types/core/light/DirectionalLight.d.ts +19 -0
  20. package/dist/types/core/light/Light.d.ts +7 -0
  21. package/dist/types/core/material/BasicMaterial.d.ts +20 -0
  22. package/dist/types/core/material/LambertMaterial.d.ts +20 -0
  23. package/dist/types/core/material/Material.d.ts +34 -0
  24. package/dist/types/core/material/PhongMaterial.d.ts +22 -0
  25. package/dist/types/core/material/StandardMaterial.d.ts +42 -0
  26. package/dist/types/core/material/Texture.d.ts +24 -0
  27. package/dist/types/core/material/TextureManager.d.ts +18 -0
  28. package/dist/types/core/object/Mesh.d.ts +8 -0
  29. package/dist/types/core/object/Object3D.d.ts +35 -0
  30. package/dist/types/core/renderer/BatchManager.d.ts +82 -0
  31. package/dist/types/core/renderer/CullingComputePhase.d.ts +13 -0
  32. package/dist/types/core/renderer/DepthPrePhase.d.ts +17 -0
  33. package/dist/types/core/renderer/LightingManager.d.ts +20 -0
  34. package/dist/types/core/renderer/MainRenderPhase.d.ts +62 -0
  35. package/dist/types/core/renderer/Program.d.ts +25 -0
  36. package/dist/types/core/renderer/RenderPhase.d.ts +10 -0
  37. package/dist/types/core/renderer/Renderer.d.ts +61 -0
  38. package/dist/types/core/renderer/ShadowRenderPhase.d.ts +32 -0
  39. package/dist/types/core/renderer/SkyboxRenderPhase.d.ts +26 -0
  40. package/dist/types/core/scene/Scene.d.ts +16 -0
  41. package/dist/types/index.d.ts +28 -0
  42. package/dist/types/loaders/GLTFInterfaces.d.ts +144 -0
  43. package/dist/types/loaders/GLTFLoader.d.ts +30 -0
  44. package/dist/types/math/Box3.d.ts +21 -0
  45. package/dist/types/math/Euler.d.ts +12 -0
  46. package/dist/types/math/Matrix3.d.ts +20 -0
  47. package/dist/types/math/Matrix4.d.ts +31 -0
  48. package/dist/types/math/Quaternion.d.ts +22 -0
  49. package/dist/types/math/Utils.d.ts +3 -0
  50. package/dist/types/math/Vector2.d.ts +16 -0
  51. package/dist/types/math/Vector3.d.ts +32 -0
  52. package/dist/types/math/index.d.ts +10 -0
  53. package/package.json +53 -0
@@ -0,0 +1,82 @@
1
+ import { Mesh } from '../object/Mesh';
2
+ import { Camera } from '../camera/Camera';
3
+ import { Geometry } from '../geometry/Geometry';
4
+ import { Material } from '../material/Material';
5
+ import { DirectionalLight } from '../light/DirectionalLight';
6
+ export interface DrawBatch {
7
+ key: string;
8
+ geometry: Geometry;
9
+ material: Material;
10
+ meshes: Mesh[];
11
+ instanceOffset: number;
12
+ instanceCount: number;
13
+ boundingSphereRadius: number;
14
+ culledStridePerCamera: number;
15
+ batchInfoBuffer: GPUBuffer;
16
+ indirectBuffer: GPUBuffer;
17
+ culledInstanceBuffer: GPUBuffer;
18
+ renderBindGroup: GPUBindGroup | null;
19
+ cullBindGroup: GPUBindGroup | null;
20
+ }
21
+ export interface BatchStats {
22
+ totalBatches: number;
23
+ totalInstances: number;
24
+ drawCalls: number;
25
+ instanceBufferSize: number;
26
+ }
27
+ export interface GeometryData {
28
+ vertexBuffer: GPUBuffer;
29
+ normalBuffer: GPUBuffer | null;
30
+ uvBuffer: GPUBuffer | null;
31
+ tangentBuffer: GPUBuffer | null;
32
+ indexBuffer: GPUBuffer | null;
33
+ version: number;
34
+ }
35
+ export declare class BatchManager {
36
+ private device;
37
+ private instanceBuffer;
38
+ private instanceBufferCapacity;
39
+ private instanceDataArray;
40
+ private batchCache;
41
+ private geometryCache;
42
+ private batches;
43
+ private totalInstances;
44
+ private cameraBuffer;
45
+ private cameraBindGroup;
46
+ private cameraBindGroupLayout;
47
+ private cullBindGroupLayout;
48
+ private renderBindGroupLayout;
49
+ private _tempMatrix;
50
+ private _batchInfoBuffer;
51
+ private _batchInfoU32;
52
+ private _batchInfoF32;
53
+ private _cameraUniformData;
54
+ private activeShadowLightCount;
55
+ constructor(device: GPUDevice);
56
+ private initBindGroupLayouts;
57
+ private initCameraResources;
58
+ getCameraBindGroupLayout(): GPUBindGroupLayout;
59
+ getCullBindGroupLayout(): GPUBindGroupLayout;
60
+ getRenderBindGroupLayout(): GPUBindGroupLayout;
61
+ getCameraBindGroup(): GPUBindGroup | null;
62
+ getCameraBuffer(): GPUBuffer | null;
63
+ getActiveShadowLightCount(): number;
64
+ getGeometryData(geometry: Geometry): GeometryData;
65
+ private createGeometryBuffers;
66
+ private updateGeometryBuffers;
67
+ private getBatchKey;
68
+ private computeBoundingSphereRadius;
69
+ prepareBatches(meshes: Mesh[]): DrawBatch[];
70
+ private createBatch;
71
+ private ensureBatchResources;
72
+ private ensureInstanceBufferCapacity;
73
+ updateInstanceBuffer(batches: DrawBatch[]): void;
74
+ updateCameraUniforms(camera: Camera, shadowLights: DirectionalLight[]): void;
75
+ getCullBindGroup(batch: DrawBatch): GPUBindGroup;
76
+ getRenderBindGroup(batch: DrawBatch, cameraIndex: number): GPUBindGroup;
77
+ getIndirectBufferOffset(cameraIndex: number): number;
78
+ getBatches(): DrawBatch[];
79
+ getTotalInstances(): number;
80
+ getStats(): BatchStats;
81
+ dispose(): void;
82
+ }
@@ -0,0 +1,13 @@
1
+ import { RenderPhase } from './RenderPhase';
2
+ import { BatchManager } from './BatchManager';
3
+ import { Scene } from '../scene/Scene';
4
+ import { Camera } from '../camera/Camera';
5
+ export declare class CullingComputePhase extends RenderPhase {
6
+ private cullingPipeline;
7
+ private batchManager;
8
+ constructor(device: GPUDevice);
9
+ setBatchManager(batchManager: BatchManager): void;
10
+ private initPipeline;
11
+ prepare(_scene: Scene, _camera: Camera): void;
12
+ execute(commandEncoder: GPUCommandEncoder): void;
13
+ }
@@ -0,0 +1,17 @@
1
+ import { RenderPhase } from './RenderPhase';
2
+ import { Scene } from '../scene/Scene';
3
+ import { Camera } from '../camera/Camera';
4
+ import { BatchManager } from './BatchManager';
5
+ export declare class DepthPrePhase extends RenderPhase {
6
+ private batchManager;
7
+ private depthTextureView;
8
+ private sampleCount;
9
+ private depthPipeline;
10
+ private opaqueBatches;
11
+ constructor(device: GPUDevice, batchManager: BatchManager, sampleCount?: number);
12
+ private initDepthPipeline;
13
+ setDepthTextureView(depthTextureView: GPUTextureView): void;
14
+ prepare(_scene: Scene, _camera: Camera): void;
15
+ execute(commandEncoder: GPUCommandEncoder): void;
16
+ dispose(): void;
17
+ }
@@ -0,0 +1,20 @@
1
+ import { Scene } from '../scene/Scene';
2
+ import { Light } from '../light/Light';
3
+ export declare class LightingManager {
4
+ private device;
5
+ private lightingBuffer;
6
+ shadowMapArray: GPUTexture | null;
7
+ shadowMapArrayView: GPUTextureView | null;
8
+ private dummyShadowMap;
9
+ private dummyShadowSampler;
10
+ private _lightingData;
11
+ private _tempMatrix;
12
+ constructor(device: GPUDevice, dummyShadowMap: GPUTextureView, dummyShadowSampler: GPUSampler);
13
+ collectLights(scene: Scene): Light[];
14
+ updateLightingBuffer(scene: Scene, lights: Light[], shadowType: number, shadowsEnabled?: boolean): GPUBuffer;
15
+ private createShadowMapArray;
16
+ getLightingBuffer(): GPUBuffer | null;
17
+ getDummyShadowMap(): GPUTextureView;
18
+ getShadowSampler(): GPUSampler;
19
+ dispose(): void;
20
+ }
@@ -0,0 +1,62 @@
1
+ import { RenderPhase } from './RenderPhase';
2
+ import { Scene } from '../scene/Scene';
3
+ import { Camera } from '../camera/Camera';
4
+ import { LightingManager } from './LightingManager';
5
+ import { BatchManager } from './BatchManager';
6
+ import { TextureManager } from '../material/TextureManager';
7
+ import { EnvironmentManager } from '../environment/EnvironmentManager';
8
+ import { Environment } from '../environment/Environment';
9
+ export declare class MainRenderPhase extends RenderPhase {
10
+ private lightingManager;
11
+ private batchManager;
12
+ private textureManager;
13
+ private environmentManager;
14
+ private context;
15
+ private depthTextureView;
16
+ private msaaTextureView;
17
+ private sampleCount;
18
+ private renderList;
19
+ private batches;
20
+ private currentEnvironment;
21
+ private skyboxRendered;
22
+ private clearColor;
23
+ private cameraPosition;
24
+ private indirectPipelineCache;
25
+ private materialBindGroupLayout;
26
+ private lightingBindGroupLayout;
27
+ private textureBindGroupLayout;
28
+ private simpleTextureBindGroupLayout;
29
+ private textureBindGroupCache;
30
+ private simpleTextureBindGroupCache;
31
+ private envParamsBufferCache;
32
+ private sceneEnvironmentId;
33
+ private materialEnvKeyCache;
34
+ debugInfo: {
35
+ calls: number;
36
+ triangles: number;
37
+ batches: number;
38
+ };
39
+ constructor(device: GPUDevice, lightingManager: LightingManager, batchManager: BatchManager, textureManager: TextureManager, context: GPUCanvasContext, depthTextureView: GPUTextureView, msaaTextureView: GPUTextureView | null, sampleCount: number);
40
+ setEnvironmentManager(environmentManager: EnvironmentManager): void;
41
+ setEnvironment(environment: Environment | null): void;
42
+ /** Called by Renderer to inform whether skybox was rendered this frame */
43
+ setSkyboxRendered(rendered: boolean): void;
44
+ /** Set the clear color for the background */
45
+ setClearColor(r: number, g: number, b: number, a?: number): void;
46
+ private initBindGroupLayouts;
47
+ private getIndirectPipeline;
48
+ private createLightingBindGroup;
49
+ invalidateLightingBindGroups(): void;
50
+ prepare(scene: Scene, camera: Camera): void;
51
+ execute(commandEncoder: GPUCommandEncoder): void;
52
+ private sortTransparentBatches;
53
+ private getBatchCentroidDistance;
54
+ private renderBatches;
55
+ private updateMaterial;
56
+ private getTextureBindGroup;
57
+ private getSimpleTextureBindGroup;
58
+ private materialBindGroupCache;
59
+ private materialBufferCache;
60
+ private getMaterialBindGroup;
61
+ dispose(): void;
62
+ }
@@ -0,0 +1,25 @@
1
+ export interface ProgramOptions {
2
+ vertex: {
3
+ code: string;
4
+ entryPoint?: string;
5
+ };
6
+ fragment: {
7
+ code: string;
8
+ entryPoint?: string;
9
+ };
10
+ multisample?: GPUMultisampleState;
11
+ bindGroupLayouts?: GPUBindGroupLayout[];
12
+ positionOnly?: boolean;
13
+ hasNormals?: boolean;
14
+ hasUVs?: boolean;
15
+ hasTangents?: boolean;
16
+ blend?: GPUBlendState;
17
+ depthWrite?: boolean;
18
+ depthCompare?: GPUCompareFunction;
19
+ cullMode?: GPUCullMode;
20
+ }
21
+ export declare class Program {
22
+ pipeline: GPURenderPipeline;
23
+ bindGroupLayouts: GPUBindGroupLayout[] | null;
24
+ constructor(device: GPUDevice, options: ProgramOptions);
25
+ }
@@ -0,0 +1,10 @@
1
+ import { Scene } from '../scene/Scene';
2
+ import { Camera } from '../camera/Camera';
3
+ export declare abstract class RenderPhase {
4
+ protected device: GPUDevice;
5
+ protected label: string;
6
+ constructor(device: GPUDevice, label: string);
7
+ abstract prepare(scene: Scene, camera: Camera): void;
8
+ abstract execute(commandEncoder: GPUCommandEncoder): void;
9
+ dispose?(): void;
10
+ }
@@ -0,0 +1,61 @@
1
+ import { Camera } from '../camera/Camera';
2
+ import { Scene } from '../scene/Scene';
3
+ export declare const ShadowType: {
4
+ readonly Basic: 0;
5
+ readonly PCF: 1;
6
+ readonly PCFSoft: 2;
7
+ };
8
+ export type ShadowType = (typeof ShadowType)[keyof typeof ShadowType];
9
+ export interface RendererOptions {
10
+ antialias?: boolean;
11
+ shadowType?: ShadowType;
12
+ shadows?: boolean;
13
+ }
14
+ export declare class Renderer {
15
+ canvas: HTMLCanvasElement;
16
+ device: GPUDevice;
17
+ context: GPUCanvasContext;
18
+ presentationFormat: GPUTextureFormat;
19
+ private pixelRatio;
20
+ debug: boolean;
21
+ private isInitialized;
22
+ private initializationPromise;
23
+ private lightingManager;
24
+ private batchManager;
25
+ private textureManager;
26
+ private environmentManager;
27
+ private mainPhase;
28
+ private shadowPhase;
29
+ private depthPrePhase;
30
+ private skyboxPhase;
31
+ private cullingPhase;
32
+ private depthTexture;
33
+ private depthTextureView;
34
+ private msaaTexture;
35
+ private msaaTextureView;
36
+ private dummyShadowMap;
37
+ private dummyShadowSampler;
38
+ shadowType: ShadowType;
39
+ shadowsEnabled: boolean;
40
+ private sampleCount;
41
+ private lastBackgroundType;
42
+ private lastClearColor;
43
+ debugInfo: {
44
+ render: {
45
+ calls: number;
46
+ triangles: number;
47
+ };
48
+ memory: {
49
+ geometries: number;
50
+ programs: number;
51
+ };
52
+ };
53
+ constructor(canvas: HTMLCanvasElement, options?: RendererOptions);
54
+ private init;
55
+ getPixelRatio(): number;
56
+ setPixelRatio(value: number): void;
57
+ resize(): void;
58
+ private createFrameResources;
59
+ render(scene: Scene, camera: Camera): Promise<void>;
60
+ dispose(): void;
61
+ }
@@ -0,0 +1,32 @@
1
+ import { RenderPhase } from './RenderPhase';
2
+ import { LightingManager } from './LightingManager';
3
+ import { Scene } from '../scene/Scene';
4
+ import { Camera } from '../camera/Camera';
5
+ import { Light } from '../light/Light';
6
+ import { BatchManager } from './BatchManager';
7
+ export declare class ShadowRenderPhase extends RenderPhase {
8
+ private lightingManager;
9
+ private batchManager;
10
+ private shadowPipeline;
11
+ private shadowsEnabled;
12
+ private lights;
13
+ private scene;
14
+ private batches;
15
+ private shadowRenderBindGroupLayout;
16
+ private lightIndexBuffer;
17
+ private lightIndexBindGroupLayout;
18
+ private lightIndexBindGroups;
19
+ private shadowMapLayerViews;
20
+ private cachedShadowMapArray;
21
+ private _sceneBox;
22
+ private _tempBox;
23
+ constructor(device: GPUDevice, lightingManager: LightingManager, batchManager: BatchManager);
24
+ private initShadowRenderPipeline;
25
+ setEnabled(enabled: boolean): void;
26
+ setLights(lights: Light[]): void;
27
+ prepare(scene: Scene, _camera: Camera): void;
28
+ execute(commandEncoder: GPUCommandEncoder): void;
29
+ private renderShadowForLight;
30
+ private updateShadowCameraBounds;
31
+ dispose(): void;
32
+ }
@@ -0,0 +1,26 @@
1
+ import { RenderPhase } from './RenderPhase';
2
+ import { Scene } from '../scene/Scene';
3
+ import { Camera } from '../camera/Camera';
4
+ import { EnvironmentManager } from '../environment/EnvironmentManager';
5
+ import { Environment } from '../environment/Environment';
6
+ export declare class SkyboxRenderPhase extends RenderPhase {
7
+ private environmentManager;
8
+ private presentationFormat;
9
+ private sampleCount;
10
+ private pipeline;
11
+ private bindGroupLayout;
12
+ private cameraBuffer;
13
+ private paramsBuffer;
14
+ private bindGroup;
15
+ private colorTextureView;
16
+ private depthTextureView;
17
+ private environment;
18
+ constructor(device: GPUDevice, environmentManager: EnvironmentManager, presentationFormat: GPUTextureFormat, sampleCount?: number);
19
+ private createResources;
20
+ private createPipeline;
21
+ setEnvironment(environment: Environment | null): void;
22
+ setRenderTargets(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView): void;
23
+ prepare(_scene: Scene, camera: Camera): void;
24
+ execute(commandEncoder: GPUCommandEncoder): void;
25
+ dispose(): void;
26
+ }
@@ -0,0 +1,16 @@
1
+ import { Object3D } from '../object/Object3D';
2
+ import { Vector3 } from '../../math';
3
+ import { Environment } from '../environment/Environment';
4
+ export type SceneBackground = {
5
+ type: "none";
6
+ } | {
7
+ type: "color";
8
+ color: Vector3;
9
+ } | {
10
+ type: "environment";
11
+ };
12
+ export declare class Scene extends Object3D {
13
+ ambientLight: Vector3;
14
+ environment: Environment | null;
15
+ background: SceneBackground;
16
+ }
@@ -0,0 +1,28 @@
1
+ export { Renderer } from './core/renderer/Renderer';
2
+ export { ShadowType } from './core/renderer/Renderer';
3
+ export { Scene } from './core/scene/Scene';
4
+ export type { SceneBackground } from './core/scene/Scene';
5
+ export { Object3D } from './core/object/Object3D';
6
+ export { Camera } from './core/camera/Camera';
7
+ export { PerspectiveCamera } from './core/camera/PerspectiveCamera';
8
+ export { OrthographicCamera } from './core/camera/OrthographicCamera';
9
+ export { BasicMaterial } from './core/material/BasicMaterial';
10
+ export { BoxGeometry } from './core/geometry/BoxGeometry';
11
+ export { SphereGeometry } from './core/geometry/SphereGeometry';
12
+ export { PlaneGeometry } from './core/geometry/PlaneGeometry';
13
+ export { CylinderGeometry } from './core/geometry/CylinderGeometry';
14
+ export { TorusGeometry } from './core/geometry/TorusGeometry';
15
+ export { CircleGeometry } from './core/geometry/CircleGeometry';
16
+ export { ConeGeometry } from './core/geometry/ConeGeometry';
17
+ export { Mesh } from './core/object/Mesh';
18
+ export { PhongMaterial } from './core/material/PhongMaterial';
19
+ export { LambertMaterial } from './core/material/LambertMaterial';
20
+ export { StandardMaterial } from './core/material/StandardMaterial';
21
+ export { Texture } from './core/material/Texture';
22
+ export { BlendMode } from './core/material/Material';
23
+ export { Light } from './core/light/Light';
24
+ export { DirectionalLight } from './core/light/DirectionalLight';
25
+ export { Environment } from './core/environment/Environment';
26
+ export { GLTFLoader } from './loaders/GLTFLoader';
27
+ export { OrbitControls } from './core/controls/OrbitControls';
28
+ export { Vector2, Vector3, Box3, Euler, Quaternion, Matrix3, Matrix4, clamp, degToRad, radToDeg, } from './math';
@@ -0,0 +1,144 @@
1
+ export interface GLTF {
2
+ asset: GLTFAsset;
3
+ scene?: number;
4
+ scenes?: GLTFScene[];
5
+ nodes?: GLTFNode[];
6
+ meshes?: GLTFMesh[];
7
+ materials?: GLTFMaterial[];
8
+ textures?: GLTFTexture[];
9
+ images?: GLTFImage[];
10
+ samplers?: GLTFSampler[];
11
+ accessors?: GLTFAccessor[];
12
+ bufferViews?: GLTFBufferView[];
13
+ buffers?: GLTFBuffer[];
14
+ }
15
+ export interface GLTFAsset {
16
+ version: string;
17
+ generator?: string;
18
+ minVersion?: string;
19
+ }
20
+ export interface GLTFScene {
21
+ nodes?: number[];
22
+ name?: string;
23
+ }
24
+ export interface GLTFNode {
25
+ camera?: number;
26
+ children?: number[];
27
+ skin?: number;
28
+ matrix?: number[];
29
+ mesh?: number;
30
+ rotation?: number[];
31
+ scale?: number[];
32
+ translation?: number[];
33
+ weights?: number[];
34
+ name?: string;
35
+ }
36
+ export interface GLTFMesh {
37
+ primitives: GLTFPrimitive[];
38
+ weights?: number[];
39
+ name?: string;
40
+ }
41
+ export interface GLTFPrimitive {
42
+ attributes: {
43
+ [key: string]: number;
44
+ };
45
+ indices?: number;
46
+ material?: number;
47
+ mode?: number;
48
+ targets?: {
49
+ [key: string]: number;
50
+ }[];
51
+ }
52
+ export interface GLTFMaterial {
53
+ name?: string;
54
+ pbrMetallicRoughness?: GLTFPbrMetallicRoughness;
55
+ normalTexture?: GLTFTextureInfo;
56
+ occlusionTexture?: GLTFTextureInfo;
57
+ emissiveTexture?: GLTFTextureInfo;
58
+ emissiveFactor?: number[];
59
+ alphaMode?: "OPAQUE" | "MASK" | "BLEND";
60
+ alphaCutoff?: number;
61
+ doubleSided?: boolean;
62
+ }
63
+ export interface GLTFPbrMetallicRoughness {
64
+ baseColorFactor?: number[];
65
+ baseColorTexture?: GLTFTextureInfo;
66
+ metallicFactor?: number;
67
+ roughnessFactor?: number;
68
+ metallicRoughnessTexture?: GLTFTextureInfo;
69
+ }
70
+ export interface GLTFTextureInfo {
71
+ index: number;
72
+ texCoord?: number;
73
+ scale?: number;
74
+ strength?: number;
75
+ }
76
+ export interface GLTFTexture {
77
+ sampler?: number;
78
+ source?: number;
79
+ name?: string;
80
+ }
81
+ export interface GLTFImage {
82
+ uri?: string;
83
+ mimeType?: string;
84
+ bufferView?: number;
85
+ name?: string;
86
+ }
87
+ export interface GLTFSampler {
88
+ magFilter?: number;
89
+ minFilter?: number;
90
+ wrapS?: number;
91
+ wrapT?: number;
92
+ name?: string;
93
+ }
94
+ export interface GLTFAccessor {
95
+ bufferView?: number;
96
+ byteOffset?: number;
97
+ componentType: number;
98
+ normalized?: boolean;
99
+ count: number;
100
+ type: "SCALAR" | "VEC2" | "VEC3" | "VEC4" | "MAT2" | "MAT3" | "MAT4";
101
+ max?: number[];
102
+ min?: number[];
103
+ sparse?: object;
104
+ name?: string;
105
+ }
106
+ export interface GLTFBufferView {
107
+ buffer: number;
108
+ byteOffset?: number;
109
+ byteLength: number;
110
+ byteStride?: number;
111
+ target?: number;
112
+ name?: string;
113
+ }
114
+ export interface GLTFBuffer {
115
+ uri?: string;
116
+ byteLength: number;
117
+ name?: string;
118
+ }
119
+ export declare const GLTFConstants: {
120
+ POINTS: number;
121
+ LINES: number;
122
+ LINE_LOOP: number;
123
+ LINE_STRIP: number;
124
+ TRIANGLES: number;
125
+ TRIANGLE_STRIP: number;
126
+ TRIANGLE_FAN: number;
127
+ BYTE: number;
128
+ UNSIGNED_BYTE: number;
129
+ SHORT: number;
130
+ UNSIGNED_SHORT: number;
131
+ UNSIGNED_INT: number;
132
+ FLOAT: number;
133
+ ARRAY_BUFFER: number;
134
+ ELEMENT_ARRAY_BUFFER: number;
135
+ NEAREST: number;
136
+ LINEAR: number;
137
+ NEAREST_MIPMAP_NEAREST: number;
138
+ LINEAR_MIPMAP_NEAREST: number;
139
+ NEAREST_MIPMAP_LINEAR: number;
140
+ LINEAR_MIPMAP_LINEAR: number;
141
+ CLAMP_TO_EDGE: number;
142
+ MIRRORED_REPEAT: number;
143
+ REPEAT: number;
144
+ };
@@ -0,0 +1,30 @@
1
+ import { GLTF } from './GLTFInterfaces';
2
+ import { Object3D } from '../core/object/Object3D';
3
+ export declare class GLTFLoader {
4
+ private json;
5
+ private bufferData;
6
+ private textures;
7
+ private materials;
8
+ private meshes;
9
+ private geometries;
10
+ private baseURL;
11
+ load(url: string): Promise<Object3D>;
12
+ private parseGLB;
13
+ parse(json: GLTF, isGLB?: boolean): Promise<Object3D>;
14
+ private loadBuffers;
15
+ private resolveURL;
16
+ private loadTextures;
17
+ private convertWrapMode;
18
+ private convertMinFilter;
19
+ private convertMagFilter;
20
+ private loadMaterials;
21
+ private loadMeshes;
22
+ private getAccessor;
23
+ private getAccessorData;
24
+ private getNumComponents;
25
+ private getComponentSize;
26
+ private createTypedArray;
27
+ private buildScene;
28
+ private parseNode;
29
+ private createMeshNode;
30
+ }
@@ -0,0 +1,21 @@
1
+ import { Vector3 } from './Vector3';
2
+ import { Matrix4 } from './Matrix4';
3
+ export declare class Box3 {
4
+ min: Vector3;
5
+ max: Vector3;
6
+ constructor(min?: Vector3, max?: Vector3);
7
+ set(min: Vector3, max: Vector3): this;
8
+ setFromPoints(points: Vector3[]): this;
9
+ setFromBufferAttribute(attribute: Float32Array): this;
10
+ clone(): Box3;
11
+ copy(box: Box3): this;
12
+ makeEmpty(): this;
13
+ isEmpty(): boolean;
14
+ expandByPoint(point: Vector3): this;
15
+ expandByScalar(scalar: number): this;
16
+ expandByObject(_object: any): this;
17
+ union(box: Box3): this;
18
+ applyMatrix4(matrix: Matrix4): this;
19
+ getCenter(target: Vector3): Vector3;
20
+ getSize(target: Vector3): Vector3;
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Matrix3 } from './Matrix3';
2
+ import { Quaternion } from './Quaternion';
3
+ export declare class Euler {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ order: string;
8
+ constructor(x?: number, y?: number, z?: number, order?: string);
9
+ setFromQuaternion(q: Quaternion, order: string): this;
10
+ setFromRotationMatrix(m: Matrix3, order: string): this;
11
+ clone(): Euler;
12
+ }
@@ -0,0 +1,20 @@
1
+ import { Euler } from './Euler';
2
+ import { Quaternion } from './Quaternion';
3
+ export declare class Matrix3 {
4
+ elements: number[];
5
+ constructor();
6
+ set(m11: number, m12: number, m13: number, m21: number, m22: number, m23: number, m31: number, m32: number, m33: number): this;
7
+ identity(): this;
8
+ multiply(m: Matrix3): this;
9
+ premultiply(m: Matrix3): this;
10
+ multiplyMatrices(a: Matrix3, b: Matrix3): this;
11
+ multiplyScalar(s: number): this;
12
+ determinant(): number;
13
+ invert(): this;
14
+ transpose(): this;
15
+ makeRotationFromEuler(euler: Euler): this;
16
+ makeRotationFromQuaternion(quaternion: Quaternion): this;
17
+ fromArray(array: number[]): this;
18
+ toArray(): number[];
19
+ clone(): Matrix3;
20
+ }
@@ -0,0 +1,31 @@
1
+ import { Vector3 } from './Vector3';
2
+ import { Matrix3 } from './Matrix3';
3
+ import { Quaternion } from './Quaternion';
4
+ export declare class Matrix4 {
5
+ elements: number[];
6
+ constructor();
7
+ set(m11: number, m12: number, m13: number, m14: number, m21: number, m22: number, m23: number, m24: number, m31: number, m32: number, m33: number, m34: number, m41: number, m42: number, m43: number, m44: number): this;
8
+ identity(): this;
9
+ copy(m: Matrix4): this;
10
+ multiply(m: Matrix4): this;
11
+ premultiply(m: Matrix4): this;
12
+ multiplyMatrices(a: Matrix4, b: Matrix4): this;
13
+ multiplyScalar(s: number): this;
14
+ determinant(): number;
15
+ invert(): this;
16
+ transpose(): this;
17
+ setPosition(position: Vector3): this;
18
+ scalePosition(scale: Vector3): this;
19
+ setRotation(rotation: Matrix3): this;
20
+ extractPosition(): Vector3;
21
+ extractRotation(): Matrix3;
22
+ lookAt(eye: Vector3, target: Vector3, up: Vector3): this;
23
+ fromArray(array: number[]): this;
24
+ toArray(): number[];
25
+ clone(): Matrix4;
26
+ lerp(other: Matrix4, coef: number): Matrix4;
27
+ compose(position: Vector3, quaternion: Quaternion, scale: Vector3): this;
28
+ decompose(position: Vector3, quaternion: Quaternion, scale: Vector3): this;
29
+ perspective(fov: number, aspect: number, near: number, far: number): this;
30
+ orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): this;
31
+ }