@luma.gl/engine 8.6.0-alpha.1 → 8.6.0-alpha.5

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 (42) hide show
  1. package/LICENSE +8 -1
  2. package/dist/index.d.ts +17 -7
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +8 -7
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/animation-loop.d.ts +57 -28
  7. package/dist/lib/animation-loop.d.ts.map +1 -1
  8. package/dist/lib/animation-loop.js +71 -62
  9. package/dist/lib/animation-loop.js.map +1 -1
  10. package/dist/lib/model.d.ts +18 -4
  11. package/dist/lib/model.d.ts.map +1 -1
  12. package/dist/lib/model.js +15 -9
  13. package/dist/lib/model.js.map +1 -1
  14. package/dist/lib/program-manager.d.ts +6 -5
  15. package/dist/lib/program-manager.d.ts.map +1 -1
  16. package/dist/lib/program-manager.js +8 -9
  17. package/dist/lib/program-manager.js.map +1 -1
  18. package/dist/lib/render-loop.d.ts +27 -0
  19. package/dist/lib/render-loop.d.ts.map +1 -0
  20. package/dist/lib/render-loop.js +56 -0
  21. package/dist/lib/render-loop.js.map +1 -0
  22. package/dist/transform/buffer-transform.d.ts.map +1 -1
  23. package/dist/transform/buffer-transform.js +2 -3
  24. package/dist/transform/buffer-transform.js.map +1 -1
  25. package/dist/transform/texture-transform.d.ts.map +1 -1
  26. package/dist/transform/texture-transform.js.map +1 -1
  27. package/dist/transform/transform-types.d.ts +1 -0
  28. package/dist/transform/transform-types.d.ts.map +1 -1
  29. package/dist/transform/transform.d.ts +21 -2
  30. package/dist/transform/transform.d.ts.map +1 -1
  31. package/dist/transform/transform.js +26 -11
  32. package/dist/transform/transform.js.map +1 -1
  33. package/package.json +7 -7
  34. package/src/index.ts +18 -13
  35. package/src/lib/animation-loop.ts +141 -125
  36. package/src/lib/model.ts +44 -15
  37. package/src/lib/program-manager.ts +12 -13
  38. package/src/lib/render-loop.ts +56 -0
  39. package/src/transform/buffer-transform.ts +2 -3
  40. package/src/transform/texture-transform.ts +2 -3
  41. package/src/transform/transform-types.ts +1 -0
  42. package/src/transform/transform.ts +38 -22
package/LICENSE CHANGED
@@ -1,9 +1,16 @@
1
+ Copyright (c) 2020 Urban Computing Foundation
2
+
3
+ This software includes parts initially developed by Uber and open sourced under MIT license.
1
4
  Copyright (c) 2015 Uber Technologies, Inc.
2
5
 
3
6
  This software includes parts of PhiloGL (https://github.com/philogb/philogl)
4
7
  under MIT license. PhiloGL parts Copyright © 2013 Sencha Labs.
5
8
 
6
- This software includes adaptations of postprocessing code from THREE.js (https://github.com/mrdoob/three.js/) under MIT license. Additional attribution given in specific source files. THREE.js parts Copyright © 2010-2018 three.js authors.
9
+ This software includes adaptations of some postprocessing code from
10
+ THREE.js (https://github.com/mrdoob/three.js/) under MIT license.
11
+ THREE.js parts Copyright © 2010-2018 three.js authors.
12
+
13
+ Additional attribution given in specific source files.
7
14
 
8
15
  Permission is hereby granted, free of charge, to any person obtaining a copy
9
16
  of this software and associated documentation files (the "Software"), to deal
package/dist/index.d.ts CHANGED
@@ -1,15 +1,25 @@
1
+ export type { AnimationLoopProps, AnimationProps } from './lib/animation-loop';
1
2
  export { default as AnimationLoop } from './lib/animation-loop';
3
+ export { RenderLoop } from './lib/render-loop';
4
+ export type { ModelProps } from './lib/model';
2
5
  export { default as Model } from './lib/model';
3
6
  export { default as ProgramManager } from './lib/program-manager';
4
7
  export { default as Transform } from './transform/transform';
5
8
  export { default as Geometry } from './geometry/geometry';
6
- export { ConeGeometry, ConeGeometryProps } from './geometries/cone-geometry';
7
- export { CubeGeometry, CubeGeometryProps } from './geometries/cube-geometry';
8
- export { CylinderGeometry, CylinderGeometryProps } from './geometries/cylinder-geometry';
9
- export { IcoSphereGeometry, IcoSphereGeometryProps } from './geometries/ico-sphere-geometry';
10
- export { PlaneGeometry, PlaneGeometryProps } from './geometries/plane-geometry';
11
- export { SphereGeometry, SphereGeometryProps } from './geometries/sphere-geometry';
12
- export { TruncatedConeGeometry, TruncatedConeGeometryProps } from './geometries/truncated-cone-geometry';
9
+ export type { ConeGeometryProps } from './geometries/cone-geometry';
10
+ export { ConeGeometry } from './geometries/cone-geometry';
11
+ export type { CubeGeometryProps } from './geometries/cube-geometry';
12
+ export { CubeGeometry } from './geometries/cube-geometry';
13
+ export type { CylinderGeometryProps } from './geometries/cylinder-geometry';
14
+ export { CylinderGeometry } from './geometries/cylinder-geometry';
15
+ export type { IcoSphereGeometryProps } from './geometries/ico-sphere-geometry';
16
+ export { IcoSphereGeometry } from './geometries/ico-sphere-geometry';
17
+ export type { PlaneGeometryProps } from './geometries/plane-geometry';
18
+ export { PlaneGeometry } from './geometries/plane-geometry';
19
+ export type { SphereGeometryProps } from './geometries/sphere-geometry';
20
+ export { SphereGeometry } from './geometries/sphere-geometry';
21
+ export type { TruncatedConeGeometryProps } from './geometries/truncated-cone-geometry';
22
+ export { TruncatedConeGeometry } from './geometries/truncated-cone-geometry';
13
23
  export { Timeline } from './animation/timeline';
14
24
  export { KeyFrames } from './animation/key-frames';
15
25
  export { default as ClipSpace } from './utils/clip-space';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAC,YAAY,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,YAAY,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C,YAAY,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,YAAY,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,YAAY,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAC,gBAAgB,EAAC,MAAM,gCAAgC,CAAC;AAChE,YAAY,EAAC,sBAAsB,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,YAAY,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAC,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAG3E,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  export { default as AnimationLoop } from './lib/animation-loop';
2
+ export { RenderLoop } from './lib/render-loop';
2
3
  export { default as Model } from './lib/model';
3
4
  export { default as ProgramManager } from './lib/program-manager';
4
5
  export { default as Transform } from './transform/transform';
5
6
  export { default as Geometry } from './geometry/geometry';
6
- export { ConeGeometry, ConeGeometryProps } from './geometries/cone-geometry';
7
- export { CubeGeometry, CubeGeometryProps } from './geometries/cube-geometry';
8
- export { CylinderGeometry, CylinderGeometryProps } from './geometries/cylinder-geometry';
9
- export { IcoSphereGeometry, IcoSphereGeometryProps } from './geometries/ico-sphere-geometry';
10
- export { PlaneGeometry, PlaneGeometryProps } from './geometries/plane-geometry';
11
- export { SphereGeometry, SphereGeometryProps } from './geometries/sphere-geometry';
12
- export { TruncatedConeGeometry, TruncatedConeGeometryProps } from './geometries/truncated-cone-geometry';
7
+ export { ConeGeometry } from './geometries/cone-geometry';
8
+ export { CubeGeometry } from './geometries/cube-geometry';
9
+ export { CylinderGeometry } from './geometries/cylinder-geometry';
10
+ export { IcoSphereGeometry } from './geometries/ico-sphere-geometry';
11
+ export { PlaneGeometry } from './geometries/plane-geometry';
12
+ export { SphereGeometry } from './geometries/sphere-geometry';
13
+ export { TruncatedConeGeometry } from './geometries/truncated-cone-geometry';
13
14
  export { Timeline } from './animation/timeline';
14
15
  export { KeyFrames } from './animation/key-frames';
15
16
  export { default as ClipSpace } from './utils/clip-space';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["default","AnimationLoop","Model","ProgramManager","Transform","Geometry","ConeGeometry","ConeGeometryProps","CubeGeometry","CubeGeometryProps","CylinderGeometry","CylinderGeometryProps","IcoSphereGeometry","IcoSphereGeometryProps","PlaneGeometry","PlaneGeometryProps","SphereGeometry","SphereGeometryProps","TruncatedConeGeometry","TruncatedConeGeometryProps","Timeline","KeyFrames","ClipSpace"],"mappings":"AACA,SAAQA,OAAO,IAAIC,aAAnB,QAAuC,sBAAvC;AACA,SAAQD,OAAO,IAAIE,KAAnB,QAA+B,aAA/B;AACA,SAAQF,OAAO,IAAIG,cAAnB,QAAwC,uBAAxC;AACA,SAAQH,OAAO,IAAII,SAAnB,QAAmC,uBAAnC;AAGA,SAAQJ,OAAO,IAAIK,QAAnB,QAAkC,qBAAlC;AAGA,SAAQC,YAAR,EAAsBC,iBAAtB,QAA8C,4BAA9C;AACA,SAAQC,YAAR,EAAsBC,iBAAtB,QAA8C,4BAA9C;AACA,SAAQC,gBAAR,EAA0BC,qBAA1B,QAAsD,gCAAtD;AACA,SACEC,iBADF,EAEEC,sBAFF,QAGO,kCAHP;AAIA,SAAQC,aAAR,EAAuBC,kBAAvB,QAAgD,6BAAhD;AACA,SAAQC,cAAR,EAAwBC,mBAAxB,QAAkD,8BAAlD;AACA,SACEC,qBADF,EAEEC,0BAFF,QAGO,sCAHP;AAMA,SAAQC,QAAR,QAAuB,sBAAvB;AACA,SAAQC,SAAR,QAAwB,wBAAxB;AAGA,SAAQrB,OAAO,IAAIsB,SAAnB,QAAmC,oBAAnC","sourcesContent":["// CORE\nexport {default as AnimationLoop} from './lib/animation-loop';\nexport {default as Model} from './lib/model';\nexport {default as ProgramManager} from './lib/program-manager';\nexport {default as Transform} from './transform/transform';\n\n// Geometries\nexport {default as Geometry} from './geometry/geometry';\n\n// Primitives\nexport {ConeGeometry, ConeGeometryProps} from './geometries/cone-geometry';\nexport {CubeGeometry, CubeGeometryProps} from './geometries/cube-geometry';\nexport {CylinderGeometry, CylinderGeometryProps} from './geometries/cylinder-geometry';\nexport {\n IcoSphereGeometry,\n IcoSphereGeometryProps\n} from './geometries/ico-sphere-geometry';\nexport {PlaneGeometry, PlaneGeometryProps} from './geometries/plane-geometry';\nexport {SphereGeometry, SphereGeometryProps} from './geometries/sphere-geometry';\nexport {\n TruncatedConeGeometry,\n TruncatedConeGeometryProps\n} from './geometries/truncated-cone-geometry';\n\n// Animation\nexport {Timeline} from './animation/timeline';\nexport {KeyFrames} from './animation/key-frames';\n\n// Utils\nexport {default as ClipSpace} from './utils/clip-space';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["default","AnimationLoop","RenderLoop","Model","ProgramManager","Transform","Geometry","ConeGeometry","CubeGeometry","CylinderGeometry","IcoSphereGeometry","PlaneGeometry","SphereGeometry","TruncatedConeGeometry","Timeline","KeyFrames","ClipSpace"],"mappings":"AAEA,SAAQA,OAAO,IAAIC,aAAnB,QAAuC,sBAAvC;AACA,SAAQC,UAAR,QAAyB,mBAAzB;AAGA,SAAQF,OAAO,IAAIG,KAAnB,QAA+B,aAA/B;AACA,SAAQH,OAAO,IAAII,cAAnB,QAAwC,uBAAxC;AACA,SAAQJ,OAAO,IAAIK,SAAnB,QAAmC,uBAAnC;AAGA,SAAQL,OAAO,IAAIM,QAAnB,QAAkC,qBAAlC;AAIA,SAAQC,YAAR,QAA2B,4BAA3B;AAEA,SAAQC,YAAR,QAA2B,4BAA3B;AAEA,SAAQC,gBAAR,QAA+B,gCAA/B;AAEA,SAAQC,iBAAR,QAAgC,kCAAhC;AAEA,SAAQC,aAAR,QAA4B,6BAA5B;AAEA,SAAQC,cAAR,QAA6B,8BAA7B;AAEA,SAAQC,qBAAR,QAAoC,sCAApC;AAGA,SAAQC,QAAR,QAAuB,sBAAvB;AACA,SAAQC,SAAR,QAAwB,wBAAxB;AAGA,SAAQf,OAAO,IAAIgB,SAAnB,QAAmC,oBAAnC","sourcesContent":["// CORE\nexport type {AnimationLoopProps, AnimationProps} from './lib/animation-loop';\nexport {default as AnimationLoop} from './lib/animation-loop';\nexport {RenderLoop} from './lib/render-loop';\n\nexport type {ModelProps} from './lib/model';\nexport {default as Model} from './lib/model';\nexport {default as ProgramManager} from './lib/program-manager';\nexport {default as Transform} from './transform/transform';\n\n// Geometries\nexport {default as Geometry} from './geometry/geometry';\n\n// Primitives\nexport type {ConeGeometryProps} from './geometries/cone-geometry';\nexport {ConeGeometry} from './geometries/cone-geometry';\nexport type {CubeGeometryProps} from './geometries/cube-geometry';\nexport {CubeGeometry} from './geometries/cube-geometry';\nexport type {CylinderGeometryProps} from './geometries/cylinder-geometry';\nexport {CylinderGeometry} from './geometries/cylinder-geometry';\nexport type {IcoSphereGeometryProps} from './geometries/ico-sphere-geometry';\nexport {IcoSphereGeometry} from './geometries/ico-sphere-geometry';\nexport type {PlaneGeometryProps} from './geometries/plane-geometry';\nexport {PlaneGeometry} from './geometries/plane-geometry';\nexport type {SphereGeometryProps} from './geometries/sphere-geometry';\nexport {SphereGeometry} from './geometries/sphere-geometry';\nexport type {TruncatedConeGeometryProps} from './geometries/truncated-cone-geometry';\nexport {TruncatedConeGeometry} from './geometries/truncated-cone-geometry';\n\n// Animation\nexport {Timeline} from './animation/timeline';\nexport {KeyFrames} from './animation/key-frames';\n\n// Utils\nexport {default as ClipSpace} from './utils/clip-space';\n"],"file":"index.js"}
@@ -1,31 +1,36 @@
1
1
  /// <reference types="offscreencanvas" />
2
+ import { Device } from '@luma.gl/api';
3
+ import type { WebGLDeviceProps } from '@luma.gl/webgl';
2
4
  import { Query, Framebuffer } from '@luma.gl/webgl';
3
- import { Stats } from 'probe.gl';
5
+ import { Stats, Stat } from '@probe.gl/stats';
4
6
  import { Timeline } from '../animation/timeline';
5
- import type { GLContextOptions } from '@luma.gl/gltools';
7
+ declare type DeviceProps = WebGLDeviceProps;
8
+ declare type ContextProps = WebGLDeviceProps;
6
9
  /** AnimationLoop properties */
7
10
  export declare type AnimationLoopProps = {
8
- onCreateContext?: (opts: GLContextOptions) => WebGLRenderingContext;
11
+ onCreateDevice?: (props: DeviceProps) => Device;
12
+ onCreateContext?: (props: ContextProps) => WebGLRenderingContext;
9
13
  onAddHTML?: (div: HTMLDivElement) => string;
10
- onInitialize?: ((animationProps: AnimationProps) => {}) | ((animationProps: AnimationProps) => {});
14
+ onInitialize?: (animationProps: AnimationProps) => {} | void;
11
15
  onRender?: (animationProps: AnimationProps) => void;
12
16
  onFinalize?: (animationProps: AnimationProps) => void;
13
17
  onError?: (reason: any) => void;
14
18
  stats?: Stats;
15
- gl?: WebGLRenderingContext;
16
- glOptions?: GLContextOptions;
19
+ device?: Device;
20
+ glOptions?: ContextProps;
17
21
  debug?: boolean;
18
22
  autoResizeViewport?: boolean;
19
23
  autoResizeDrawingBuffer?: boolean;
20
24
  useDevicePixels?: number | boolean;
21
- /** @deprecated */
25
+ /** @deprecated Use .device */
26
+ gl?: WebGLRenderingContext;
27
+ /** @deprecated Will be removed */
22
28
  createFramebuffer?: boolean;
23
29
  };
24
30
  export declare type AnimationProps = {
25
- gl: WebGLRenderingContext;
31
+ device: Device;
26
32
  stop: () => AnimationLoop;
27
33
  canvas: HTMLCanvasElement | OffscreenCanvas;
28
- framebuffer: Framebuffer;
29
34
  useDevicePixels: number | boolean;
30
35
  needsRedraw?: string;
31
36
  startTime: number;
@@ -36,24 +41,32 @@ export declare type AnimationProps = {
36
41
  width: number;
37
42
  height: number;
38
43
  aspect: number;
44
+ timeline: Timeline;
45
+ animationLoop: AnimationLoop;
46
+ _mousePosition?: [number, number];
47
+ /** @deprecated Will be removed, create your own Framebuffer */
48
+ framebuffer: Framebuffer;
49
+ /** @deprecated Use .device */
50
+ gl: WebGLRenderingContext;
51
+ /** @deprecated Use .timeline */
39
52
  _timeline: Timeline;
53
+ /** @deprecated Use .animationLoop */
40
54
  _loop: AnimationLoop;
55
+ /** @deprecated Use .animationLoop */
41
56
  _animationLoop: AnimationLoop;
42
- _mousePosition?: [number, number];
43
- _offScreen: boolean;
44
57
  };
58
+ /** Convenient animation loop */
45
59
  export default class AnimationLoop {
46
- animationProps: AnimationProps;
47
- props: Required<AnimationLoopProps>;
48
- gl: WebGLRenderingContext;
60
+ device: Device;
49
61
  canvas: HTMLCanvasElement | OffscreenCanvas;
62
+ props: Required<AnimationLoopProps>;
63
+ animationProps: AnimationProps;
50
64
  framebuffer: Framebuffer;
51
65
  timeline: Timeline;
52
66
  stats: Stats;
53
- cpuTime: Stats;
54
- gpuTime: Stats;
55
- frameRate: Stats;
56
- offScreen: boolean;
67
+ cpuTime: Stat;
68
+ gpuTime: Stat;
69
+ frameRate: Stat;
57
70
  display: any;
58
71
  needsRedraw: string | null;
59
72
  _initialized: boolean;
@@ -64,7 +77,11 @@ export default class AnimationLoop {
64
77
  _resolveNextFrame: ((AnimationLoop: any) => void) | null;
65
78
  _cpuStartTime: number;
66
79
  _gpuTimeQuery: Query | null;
80
+ /** @deprecated */
81
+ gl: WebGLRenderingContext;
67
82
  constructor(props?: AnimationLoopProps);
83
+ destroy(): void;
84
+ /** @deprecated Use .destroy() */
68
85
  delete(): void;
69
86
  setNeedsRedraw(reason: string): this;
70
87
  setProps(props: AnimationLoopProps): this;
@@ -81,40 +98,52 @@ export default class AnimationLoop {
81
98
  waitForRender(): Promise<AnimationLoop>;
82
99
  toDataURL(): Promise<string>;
83
100
  isContextLost(): boolean;
84
- onCreateContext(...args: any[]): WebGLRenderingContext;
85
- onInitialize(...args: any[]): {};
86
- onRender(...args: any[]): void;
87
- onFinalize(...args: any[]): void;
101
+ onCreateDevice(deviceProps: DeviceProps): Device;
102
+ onInitialize(animationProps: AnimationProps): {} | void;
103
+ onRender(animationProps: AnimationProps): void;
104
+ onFinalize(animationProps: AnimationProps): void;
105
+ /** @deprecated Use .onCreateDevice() */
106
+ onCreateContext(props: ContextProps): WebGLRenderingContext;
107
+ /** @deprecated */
88
108
  getHTMLControlValue(id: any, defaultValue?: number): number;
89
- setViewParameters(): this;
90
- _initialize(opts: any): void;
109
+ _initialize(props: AnimationLoopProps): void;
91
110
  _getPageLoadPromise(): Promise<{}>;
92
111
  _setDisplay(display: any): void;
93
112
  _requestAnimationFrame(): void;
94
113
  _cancelAnimationFrame(): void;
95
114
  _animationFrame(): void;
96
- _renderFrame(...args: any[]): void;
115
+ _renderFrame(props: AnimationProps): void;
97
116
  _clearNeedsRedraw(): void;
98
117
  _setupFrame(): void;
99
118
  _initializeCallbackData(): void;
100
119
  _updateCallbackData(): void;
101
120
  _finalizeCallbackData(): void;
121
+ /** Add application's data to the app context object */
102
122
  _addCallbackData(appContext: any): void;
103
- _createWebGLContext(opts: any): void;
123
+ /** Either uses supplied or existing context, or calls provided callback to create one */
124
+ _createDevice(props: DeviceProps): void;
104
125
  _createInfoDiv(): void;
105
126
  _getSizeAndAspect(): {
106
127
  width: number;
107
128
  height: number;
108
129
  aspect: number;
109
130
  };
131
+ /** Default viewport setup */
110
132
  _resizeViewport(): void;
133
+ /**
134
+ * Resize the render buffer of the canvas to match canvas client size
135
+ * Optionally multiplying with devicePixel ratio
136
+ */
111
137
  _resizeCanvasDrawingBuffer(): void;
112
- _createFramebuffer(): void;
113
- _resizeFramebuffer(): void;
114
138
  _beginTimers(): void;
115
139
  _endTimers(): void;
116
140
  _startEventHandling(): void;
117
141
  _onMousemove(e: any): void;
118
142
  _onMouseleave(e: any): void;
143
+ /** @deprecated */
144
+ _createFramebuffer(): void;
145
+ /** @deprecated */
146
+ _resizeFramebuffer(): void;
119
147
  }
148
+ export {};
120
149
  //# sourceMappingURL=animation-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"animation-loop.d.ts","sourceRoot":"","sources":["../../src/lib/animation-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animation-loop.d.ts","sourceRoot":"","sources":["../../src/lib/animation-loop.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,38 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { isWebGL, createGLContext, instrumentGLContext, resizeGLContext, resetParameters } from '@luma.gl/gltools';
3
- import { requestAnimationFrame, cancelAnimationFrame, Query, lumaStats, Framebuffer, log } from '@luma.gl/webgl';
4
- import { isBrowser } from 'probe.gl/env';
2
+ import { luma } from '@luma.gl/api';
3
+ import { lumaStats, log } from '@luma.gl/api';
4
+ import { isWebGL, resetParameters } from '@luma.gl/webgl';
5
+ import { requestAnimationFrame, cancelAnimationFrame, Query, Framebuffer } from '@luma.gl/webgl';
6
+ import { isBrowser } from '@probe.gl/env';
5
7
  const isPage = isBrowser() && typeof document !== 'undefined';
6
8
  let statIdCounter = 0;
7
9
  const DEFAULT_ANIMATION_LOOP_PROPS = {
8
- onCreateContext: opts => createGLContext(opts),
10
+ onCreateDevice: props => luma.createDevice(props),
11
+ onCreateContext: null,
9
12
  onAddHTML: null,
10
13
  onInitialize: () => ({}),
11
14
  onRender: () => {},
12
15
  onFinalize: () => {},
13
16
  onError: error => console.error(error),
14
- gl: null,
15
- glOptions: {},
17
+ device: null,
16
18
  debug: false,
17
- createFramebuffer: false,
18
19
  useDevicePixels: true,
19
20
  autoResizeViewport: true,
20
21
  autoResizeDrawingBuffer: true,
21
- stats: lumaStats.get("animation-loop-".concat(statIdCounter++))
22
+ stats: lumaStats.get("animation-loop-".concat(statIdCounter++)),
23
+ gl: null,
24
+ glOptions: {},
25
+ createFramebuffer: false
22
26
  };
23
27
  export default class AnimationLoop {
24
28
  constructor(props = {}) {
25
- _defineProperty(this, "animationProps", void 0);
29
+ _defineProperty(this, "device", void 0);
26
30
 
27
- _defineProperty(this, "props", void 0);
31
+ _defineProperty(this, "canvas", void 0);
28
32
 
29
- _defineProperty(this, "gl", void 0);
33
+ _defineProperty(this, "props", void 0);
30
34
 
31
- _defineProperty(this, "canvas", void 0);
35
+ _defineProperty(this, "animationProps", void 0);
32
36
 
33
37
  _defineProperty(this, "framebuffer", null);
34
38
 
@@ -42,8 +46,6 @@ export default class AnimationLoop {
42
46
 
43
47
  _defineProperty(this, "frameRate", void 0);
44
48
 
45
- _defineProperty(this, "offScreen", void 0);
46
-
47
49
  _defineProperty(this, "display", void 0);
48
50
 
49
51
  _defineProperty(this, "needsRedraw", 'initialized');
@@ -64,6 +66,8 @@ export default class AnimationLoop {
64
66
 
65
67
  _defineProperty(this, "_gpuTimeQuery", null);
66
68
 
69
+ _defineProperty(this, "gl", void 0);
70
+
67
71
  this.props = { ...DEFAULT_ANIMATION_LOOP_PROPS,
68
72
  ...props
69
73
  };
@@ -77,7 +81,8 @@ export default class AnimationLoop {
77
81
  useDevicePixels = props.useDevicePixelRatio;
78
82
  }
79
83
 
80
- this.gl = props.gl;
84
+ this.device = props.device;
85
+ this.gl = this.device && this.device.gl || props.gl;
81
86
  this.stats = props.stats;
82
87
  this.cpuTime = this.stats.get('CPU Time');
83
88
  this.gpuTime = this.stats.get('GPU Time');
@@ -93,12 +98,16 @@ export default class AnimationLoop {
93
98
  this._onMouseleave = this._onMouseleave.bind(this);
94
99
  }
95
100
 
96
- delete() {
101
+ destroy() {
97
102
  this.stop();
98
103
 
99
104
  this._setDisplay(null);
100
105
  }
101
106
 
107
+ delete() {
108
+ this.destroy();
109
+ }
110
+
102
111
  setNeedsRedraw(reason) {
103
112
  this.needsRedraw = this.needsRedraw || reason;
104
113
  return this;
@@ -184,10 +193,6 @@ export default class AnimationLoop {
184
193
 
185
194
  this._clearNeedsRedraw();
186
195
 
187
- if (this.offScreen && this.gl.commit) {
188
- this.gl.commit();
189
- }
190
-
191
196
  if (this._resolveNextFrame) {
192
197
  this._resolveNextFrame(this);
193
198
 
@@ -245,20 +250,24 @@ export default class AnimationLoop {
245
250
  return this.gl.isContextLost();
246
251
  }
247
252
 
248
- onCreateContext(...args) {
249
- return this.props.onCreateContext(...args);
253
+ onCreateDevice(deviceProps) {
254
+ return this.props.onCreateDevice(deviceProps);
255
+ }
256
+
257
+ onInitialize(animationProps) {
258
+ return this.props.onInitialize(animationProps);
250
259
  }
251
260
 
252
- onInitialize(...args) {
253
- return this.props.onInitialize(...args);
261
+ onRender(animationProps) {
262
+ return this.props.onRender(animationProps);
254
263
  }
255
264
 
256
- onRender(...args) {
257
- return this.props.onRender(...args);
265
+ onFinalize(animationProps) {
266
+ return this.props.onFinalize(animationProps);
258
267
  }
259
268
 
260
- onFinalize(...args) {
261
- return this.props.onFinalize(...args);
269
+ onCreateContext(props) {
270
+ return this.props.onCreateContext(props);
262
271
  }
263
272
 
264
273
  getHTMLControlValue(id, defaultValue = 1) {
@@ -266,13 +275,8 @@ export default class AnimationLoop {
266
275
  return element ? Number(element.value) : defaultValue;
267
276
  }
268
277
 
269
- setViewParameters() {
270
- log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();
271
- return this;
272
- }
273
-
274
- _initialize(opts) {
275
- this._createWebGLContext(opts);
278
+ _initialize(props) {
279
+ this._createDevice(props);
276
280
 
277
281
  this._createFramebuffer();
278
282
 
@@ -346,14 +350,14 @@ export default class AnimationLoop {
346
350
  this._requestAnimationFrame();
347
351
  }
348
352
 
349
- _renderFrame(...args) {
353
+ _renderFrame(props) {
350
354
  if (this.display) {
351
- this.display._renderFrame(...args);
355
+ this.display._renderFrame(props);
352
356
 
353
357
  return;
354
358
  }
355
359
 
356
- this.onRender(...args);
360
+ this.onRender(props);
357
361
  }
358
362
 
359
363
  _clearNeedsRedraw() {
@@ -370,21 +374,24 @@ export default class AnimationLoop {
370
374
 
371
375
  _initializeCallbackData() {
372
376
  this.animationProps = {
377
+ device: this.device,
373
378
  gl: this.gl,
374
379
  stop: this.stop,
375
380
  canvas: this.gl.canvas,
376
- framebuffer: this.framebuffer,
377
381
  useDevicePixels: this.props.useDevicePixels,
378
382
  needsRedraw: null,
379
383
  startTime: Date.now(),
380
384
  engineTime: 0,
381
385
  tick: 0,
382
386
  tock: 0,
387
+ timeline: this.timeline,
388
+ animationLoop: this,
383
389
  time: 0,
390
+ _mousePosition: null,
391
+ framebuffer: this.framebuffer,
384
392
  _timeline: this.timeline,
385
393
  _loop: this,
386
- _animationLoop: this,
387
- _mousePosition: null
394
+ _animationLoop: this
388
395
  };
389
396
  }
390
397
 
@@ -416,7 +423,6 @@ export default class AnimationLoop {
416
423
  this.animationProps.tick = Math.floor(this.animationProps.time / 1000 * 60);
417
424
  this.animationProps.tock++;
418
425
  this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;
419
- this.animationProps._offScreen = this.offScreen;
420
426
  }
421
427
 
422
428
  _finalizeCallbackData() {
@@ -429,10 +435,13 @@ export default class AnimationLoop {
429
435
  }
430
436
  }
431
437
 
432
- _createWebGLContext(opts) {
433
- this.offScreen = opts.canvas && typeof OffscreenCanvas !== 'undefined' && opts.canvas instanceof OffscreenCanvas;
434
- opts = Object.assign({}, opts, this.props.glOptions);
435
- this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);
438
+ _createDevice(props) {
439
+ const deviceProps = { ...this.props,
440
+ ...props,
441
+ ...this.props.glOptions
442
+ };
443
+ this.device = this.onCreateDevice(deviceProps);
444
+ this.gl = this.device.gl;
436
445
 
437
446
  if (!isWebGL(this.gl)) {
438
447
  throw new Error('AnimationLoop.onCreateContext - illegal context returned');
@@ -493,27 +502,12 @@ export default class AnimationLoop {
493
502
 
494
503
  _resizeCanvasDrawingBuffer() {
495
504
  if (this.props.autoResizeDrawingBuffer) {
496
- resizeGLContext(this.gl, {
505
+ this.device.resize({
497
506
  useDevicePixels: this.props.useDevicePixels
498
507
  });
499
508
  }
500
509
  }
501
510
 
502
- _createFramebuffer() {
503
- if (this.props.createFramebuffer) {
504
- this.framebuffer = new Framebuffer(this.gl);
505
- }
506
- }
507
-
508
- _resizeFramebuffer() {
509
- if (this.framebuffer) {
510
- this.framebuffer.resize({
511
- width: this.gl.drawingBufferWidth,
512
- height: this.gl.drawingBufferHeight
513
- });
514
- }
515
- }
516
-
517
511
  _beginTimers() {
518
512
  this.frameRate.timeEnd();
519
513
  this.frameRate.timeStart();
@@ -556,5 +550,20 @@ export default class AnimationLoop {
556
550
  this.animationProps._mousePosition = null;
557
551
  }
558
552
 
553
+ _createFramebuffer() {
554
+ if (this.props.createFramebuffer) {
555
+ this.framebuffer = new Framebuffer(this.gl);
556
+ }
557
+ }
558
+
559
+ _resizeFramebuffer() {
560
+ if (this.framebuffer) {
561
+ this.framebuffer.resize({
562
+ width: this.gl.drawingBufferWidth,
563
+ height: this.gl.drawingBufferHeight
564
+ });
565
+ }
566
+ }
567
+
559
568
  }
560
569
  //# sourceMappingURL=animation-loop.js.map