@luma.gl/engine 8.5.8 → 8.6.0-alpha.2
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/animation/key-frames.d.ts +18 -0
- package/dist/animation/key-frames.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/key-frames.js +13 -6
- package/dist/animation/key-frames.js.map +1 -0
- package/dist/animation/timeline.d.ts +51 -0
- package/dist/animation/timeline.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/timeline.js +10 -5
- package/dist/animation/timeline.js.map +1 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/geometries/cone-geometry.d.ts +10 -0
- package/dist/geometries/cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
- package/dist/geometries/cone-geometry.js.map +1 -0
- package/dist/geometries/cube-geometry.d.ts +9 -0
- package/dist/geometries/cube-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
- package/dist/geometries/cube-geometry.js.map +1 -0
- package/dist/geometries/cylinder-geometry.d.ts +10 -0
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
- package/dist/geometries/cylinder-geometry.js.map +1 -0
- package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
- package/dist/geometries/ico-sphere-geometry.js.map +1 -0
- package/dist/geometries/plane-geometry.d.ts +10 -0
- package/dist/geometries/plane-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
- package/dist/geometries/plane-geometry.js.map +1 -0
- package/dist/geometries/sphere-geometry.d.ts +12 -0
- package/dist/geometries/sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
- package/dist/geometries/sphere-geometry.js.map +1 -0
- package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
- package/dist/geometries/truncated-cone-geometry.js.map +1 -0
- package/dist/geometry/geometry-utils.d.ts +2 -0
- package/dist/geometry/geometry-utils.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
- package/dist/geometry/geometry-utils.js.map +1 -0
- package/dist/geometry/geometry.d.ts +44 -0
- package/dist/geometry/geometry.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry.js +28 -19
- package/dist/geometry/geometry.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/animation-loop.d.ts +149 -0
- package/dist/lib/animation-loop.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/animation-loop.js +190 -143
- package/dist/lib/animation-loop.js.map +1 -0
- package/dist/lib/model-utils.d.ts +4 -0
- package/dist/lib/model-utils.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model-utils.js +3 -2
- package/dist/lib/model-utils.js.map +1 -0
- package/dist/lib/model.d.ts +109 -0
- package/dist/lib/model.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model.js +76 -20
- package/dist/lib/model.js.map +1 -0
- package/dist/lib/program-manager.d.ts +39 -0
- package/dist/lib/program-manager.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/program-manager.js +29 -18
- package/dist/lib/program-manager.js.map +1 -0
- package/dist/lib/render-loop.d.ts +27 -0
- package/dist/lib/render-loop.d.ts.map +1 -0
- package/dist/lib/render-loop.js +56 -0
- package/dist/lib/render-loop.js.map +1 -0
- package/dist/transform/buffer-transform.d.ts +36 -0
- package/dist/transform/buffer-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
- package/dist/transform/buffer-transform.js.map +1 -0
- package/dist/transform/texture-transform.d.ts +57 -0
- package/dist/transform/texture-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/texture-transform.js +48 -16
- package/dist/transform/texture-transform.js.map +1 -0
- package/dist/transform/transform-shader-utils.d.ts +26 -0
- package/dist/transform/transform-shader-utils.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
- package/dist/transform/transform-shader-utils.js.map +1 -0
- package/dist/transform/transform-types.d.ts +44 -0
- package/dist/transform/transform-types.d.ts.map +1 -0
- package/dist/transform/transform-types.js +2 -0
- package/dist/transform/transform-types.js.map +1 -0
- package/dist/transform/transform.d.ts +47 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform.js +63 -43
- package/dist/transform/transform.js.map +1 -0
- package/dist/utils/clip-space.d.ts +5 -0
- package/dist/utils/clip-space.d.ts.map +1 -0
- package/dist/{esm/utils → utils}/clip-space.js +3 -17
- package/dist/utils/clip-space.js.map +1 -0
- package/package.json +11 -11
- package/src/animation/{key-frames.js → key-frames.ts} +18 -16
- package/src/animation/{timeline.js → timeline.ts} +54 -18
- package/src/bundle.ts +4 -0
- package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
- package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
- package/src/geometries/cylinder-geometry.ts +20 -0
- package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
- package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
- package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
- package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
- package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
- package/src/geometry/{geometry.js → geometry.ts} +47 -34
- package/src/index.ts +35 -0
- package/src/lib/animation-loop.ts +724 -0
- package/src/lib/{model-utils.js → model-utils.ts} +2 -2
- package/src/lib/{model.js → model.ts} +184 -66
- package/src/lib/{program-manager.js → program-manager.ts} +53 -34
- package/src/lib/render-loop.ts +56 -0
- package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
- package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
- package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
- package/src/transform/transform-types.ts +42 -0
- package/src/transform/transform.ts +189 -0
- package/src/utils/{clip-space.js → clip-space.ts} +4 -3
- package/dist/dist.js +0 -32403
- package/dist/dist.min.js +0 -1
- package/dist/es5/animation/key-frames.d.ts +0 -19
- package/dist/es5/animation/key-frames.js +0 -95
- package/dist/es5/animation/key-frames.js.map +0 -1
- package/dist/es5/animation/timeline.d.ts +0 -39
- package/dist/es5/animation/timeline.js +0 -211
- package/dist/es5/animation/timeline.js.map +0 -1
- package/dist/es5/bundle.js +0 -9
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/geometries/cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/cone-geometry.js +0 -59
- package/dist/es5/geometries/cone-geometry.js.map +0 -1
- package/dist/es5/geometries/cube-geometry.d.ts +0 -5
- package/dist/es5/geometries/cube-geometry.js +0 -75
- package/dist/es5/geometries/cube-geometry.js.map +0 -1
- package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/es5/geometries/cylinder-geometry.js +0 -55
- package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
- package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
- package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/index.d.ts +0 -7
- package/dist/es5/geometries/index.js +0 -64
- package/dist/es5/geometries/index.js.map +0 -1
- package/dist/es5/geometries/plane-geometry.d.ts +0 -5
- package/dist/es5/geometries/plane-geometry.js +0 -168
- package/dist/es5/geometries/plane-geometry.js.map +0 -1
- package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/sphere-geometry.js +0 -152
- package/dist/es5/geometries/sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
- package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/es5/geometry/geometry-utils.d.ts +0 -1
- package/dist/es5/geometry/geometry-utils.js +0 -49
- package/dist/es5/geometry/geometry-utils.js.map +0 -1
- package/dist/es5/geometry/geometry.d.ts +0 -25
- package/dist/es5/geometry/geometry.js +0 -150
- package/dist/es5/geometry/geometry.js.map +0 -1
- package/dist/es5/index.d.ts +0 -19
- package/dist/es5/index.js +0 -128
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/animation-loop.d.ts +0 -158
- package/dist/es5/lib/animation-loop.js +0 -642
- package/dist/es5/lib/animation-loop.js.map +0 -1
- package/dist/es5/lib/model-utils.d.ts +0 -3
- package/dist/es5/lib/model-utils.js +0 -110
- package/dist/es5/lib/model-utils.js.map +0 -1
- package/dist/es5/lib/model.d.ts +0 -214
- package/dist/es5/lib/model.js +0 -584
- package/dist/es5/lib/model.js.map +0 -1
- package/dist/es5/lib/program-manager.d.ts +0 -79
- package/dist/es5/lib/program-manager.js +0 -238
- package/dist/es5/lib/program-manager.js.map +0 -1
- package/dist/es5/transform/buffer-transform.d.ts +0 -13
- package/dist/es5/transform/buffer-transform.js +0 -294
- package/dist/es5/transform/buffer-transform.js.map +0 -1
- package/dist/es5/transform/resource-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.js +0 -405
- package/dist/es5/transform/texture-transform.js.map +0 -1
- package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
- package/dist/es5/transform/transform-shader-utils.js +0 -160
- package/dist/es5/transform/transform-shader-utils.js.map +0 -1
- package/dist/es5/transform/transform.d.ts +0 -33
- package/dist/es5/transform/transform.js +0 -274
- package/dist/es5/transform/transform.js.map +0 -1
- package/dist/es5/utils/clip-space.d.ts +0 -5
- package/dist/es5/utils/clip-space.js +0 -72
- package/dist/es5/utils/clip-space.js.map +0 -1
- package/dist/esm/animation/key-frames.d.ts +0 -19
- package/dist/esm/animation/key-frames.js.map +0 -1
- package/dist/esm/animation/timeline.d.ts +0 -39
- package/dist/esm/animation/timeline.js.map +0 -1
- package/dist/esm/bundle.js +0 -7
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/geometries/cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/cone-geometry.js.map +0 -1
- package/dist/esm/geometries/cube-geometry.d.ts +0 -5
- package/dist/esm/geometries/cube-geometry.js.map +0 -1
- package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
- package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/index.d.ts +0 -7
- package/dist/esm/geometries/index.js +0 -8
- package/dist/esm/geometries/index.js.map +0 -1
- package/dist/esm/geometries/plane-geometry.d.ts +0 -5
- package/dist/esm/geometries/plane-geometry.js.map +0 -1
- package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/esm/geometry/geometry-utils.d.ts +0 -1
- package/dist/esm/geometry/geometry-utils.js.map +0 -1
- package/dist/esm/geometry/geometry.d.ts +0 -25
- package/dist/esm/geometry/geometry.js.map +0 -1
- package/dist/esm/index.d.ts +0 -19
- package/dist/esm/index.js +0 -16
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/animation-loop.d.ts +0 -158
- package/dist/esm/lib/animation-loop.js.map +0 -1
- package/dist/esm/lib/model-utils.d.ts +0 -3
- package/dist/esm/lib/model-utils.js.map +0 -1
- package/dist/esm/lib/model.d.ts +0 -214
- package/dist/esm/lib/model.js.map +0 -1
- package/dist/esm/lib/program-manager.d.ts +0 -79
- package/dist/esm/lib/program-manager.js.map +0 -1
- package/dist/esm/transform/buffer-transform.d.ts +0 -13
- package/dist/esm/transform/buffer-transform.js.map +0 -1
- package/dist/esm/transform/resource-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.js.map +0 -1
- package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
- package/dist/esm/transform/transform-shader-utils.js.map +0 -1
- package/dist/esm/transform/transform.d.ts +0 -33
- package/dist/esm/transform/transform.js.map +0 -1
- package/dist/esm/utils/clip-space.d.ts +0 -5
- package/dist/esm/utils/clip-space.js.map +0 -1
- package/src/animation/key-frames.d.ts +0 -19
- package/src/animation/timeline.d.ts +0 -39
- package/src/bundle.js +0 -7
- package/src/geometries/cone-geometry.d.ts +0 -5
- package/src/geometries/cube-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.js +0 -14
- package/src/geometries/ico-sphere-geometry.d.ts +0 -5
- package/src/geometries/index.d.ts +0 -7
- package/src/geometries/index.js +0 -7
- package/src/geometries/plane-geometry.d.ts +0 -5
- package/src/geometries/sphere-geometry.d.ts +0 -5
- package/src/geometries/truncated-cone-geometry.d.ts +0 -5
- package/src/geometry/geometry-utils.d.ts +0 -1
- package/src/geometry/geometry.d.ts +0 -25
- package/src/index.d.ts +0 -19
- package/src/index.js +0 -22
- package/src/lib/animation-loop.d.ts +0 -158
- package/src/lib/animation-loop.js +0 -601
- package/src/lib/model-utils.d.ts +0 -3
- package/src/lib/model.d.ts +0 -214
- package/src/lib/program-manager.d.ts +0 -79
- package/src/transform/buffer-transform.d.ts +0 -13
- package/src/transform/resource-transform.d.ts +0 -16
- package/src/transform/texture-transform.d.ts +0 -16
- package/src/transform/transform-shader-utils.d.ts +0 -31
- package/src/transform/transform.d.ts +0 -33
- package/src/transform/transform.js +0 -177
- package/src/utils/clip-space.d.ts +0 -5
package/dist/esm/lib/model.d.ts
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import ProgramManager from './program-manager';
|
|
2
|
-
import {Program, Shader} from '@luma.gl/webgl';
|
|
3
|
-
|
|
4
|
-
type DefineMap = object;
|
|
5
|
-
type InjectionMap = object;
|
|
6
|
-
|
|
7
|
-
type ProgramProps = {
|
|
8
|
-
program?: Program
|
|
9
|
-
vs?: Shader | string
|
|
10
|
-
fs?: Shader | string
|
|
11
|
-
modules?: (object | string)[]; // Array<ShaderModule | ShaderModuleObject | string>
|
|
12
|
-
defines?: DefineMap
|
|
13
|
-
inject?: InjectionMap
|
|
14
|
-
varyings?: string[]
|
|
15
|
-
bufferMode?: number
|
|
16
|
-
transpileToGLSL100?: boolean
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
type ModelProps = ProgramProps & {
|
|
20
|
-
id?: string
|
|
21
|
-
moduleSettings?: object; // UniformsOptions
|
|
22
|
-
attributes?: object,
|
|
23
|
-
uniforms?: object; // Uniforms
|
|
24
|
-
geometry?: object; // Geometry
|
|
25
|
-
vertexCount?: number
|
|
26
|
-
drawMode?: number
|
|
27
|
-
isInstanced?: boolean
|
|
28
|
-
instanceCount?: number
|
|
29
|
-
programManager?: ProgramManager
|
|
30
|
-
onBeforeRender?: () => void
|
|
31
|
-
onAfterRender?: () => void
|
|
32
|
-
_feedbackBuffers?: object; // FeedbackBuffers
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/*
|
|
36
|
-
export type ModelProps = {
|
|
37
|
-
id?: string;
|
|
38
|
-
program?: Program;
|
|
39
|
-
vs?: Shader | string;
|
|
40
|
-
fs?: Shader | string;
|
|
41
|
-
geometry?: object;
|
|
42
|
-
drawMode?: number;
|
|
43
|
-
vertexCount?: number;
|
|
44
|
-
isInstanced?: boolean;
|
|
45
|
-
modules?: object;
|
|
46
|
-
defines?: object;
|
|
47
|
-
inject?: object;
|
|
48
|
-
varyings?: object;
|
|
49
|
-
bufferMode?: number;
|
|
50
|
-
transpileToGLSL100?: boolean;
|
|
51
|
-
};
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
export default class Model {
|
|
55
|
-
readonly id: string;
|
|
56
|
-
readonly gl: WebGLRenderingContext;
|
|
57
|
-
readonly animated: boolean;
|
|
58
|
-
readonly programManager: ProgramManager;
|
|
59
|
-
readonly vertexCount: number;
|
|
60
|
-
|
|
61
|
-
constructor(gl: WebGLRenderingContext, props?: ModelProps);
|
|
62
|
-
initialize(props: any): void;
|
|
63
|
-
setProps(props: any): void;
|
|
64
|
-
delete(): void;
|
|
65
|
-
getDrawMode(): any;
|
|
66
|
-
getVertexCount(): any;
|
|
67
|
-
getInstanceCount(): any;
|
|
68
|
-
getAttributes(): any;
|
|
69
|
-
getProgram(): any;
|
|
70
|
-
setProgram(props: any): void;
|
|
71
|
-
getUniforms(): any;
|
|
72
|
-
setDrawMode(drawMode: any): this;
|
|
73
|
-
setVertexCount(vertexCount: number): this;
|
|
74
|
-
setInstanceCount(instanceCount: number): this;
|
|
75
|
-
setGeometry(geometry: any): this;
|
|
76
|
-
setAttributes(attributes?: object): this;
|
|
77
|
-
setUniforms(uniforms?: object): this;
|
|
78
|
-
getModuleUniforms(opts?: object): any;
|
|
79
|
-
updateModuleSettings(opts?: object): this;
|
|
80
|
-
clear(opts: any): this;
|
|
81
|
-
draw(opts?: {}): boolean;
|
|
82
|
-
transform(opts?: {}): this;
|
|
83
|
-
render(uniforms?: {}): any;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/*
|
|
87
|
-
import Geometry from '../geometry/geometry';
|
|
88
|
-
import { AnimationProps } from './animation-loop';
|
|
89
|
-
import {
|
|
90
|
-
Buffer,
|
|
91
|
-
Program,
|
|
92
|
-
VertexArray,
|
|
93
|
-
Framebuffer,
|
|
94
|
-
TransformFeedback,
|
|
95
|
-
Accessor,
|
|
96
|
-
VertexShader,
|
|
97
|
-
FragmentShader
|
|
98
|
-
} from '@luma.gl/webgl';
|
|
99
|
-
|
|
100
|
-
import {
|
|
101
|
-
AccessorObject
|
|
102
|
-
} from '@luma.gl/webgl/src/classes/accessor'
|
|
103
|
-
|
|
104
|
-
import {
|
|
105
|
-
Uniforms,
|
|
106
|
-
UniformsOptions
|
|
107
|
-
} from '@luma.gl/webgl/src/classes/uniforms'
|
|
108
|
-
|
|
109
|
-
import {
|
|
110
|
-
ShaderModule,
|
|
111
|
-
ShaderModuleObject,
|
|
112
|
-
InjectionMap
|
|
113
|
-
} from '@luma.gl/shadertools/src/lib/shader-module'
|
|
114
|
-
|
|
115
|
-
import {
|
|
116
|
-
DefineMap
|
|
117
|
-
} from '@luma.gl/shadertools/src/lib/assemble-shaders'
|
|
118
|
-
|
|
119
|
-
type Attribute = Buffer | AccessorObject | Accessor |
|
|
120
|
-
[Buffer, Accessor] | [Buffer, AccessorObject]
|
|
121
|
-
|
|
122
|
-
interface Attributes {
|
|
123
|
-
[attributeName: string]: Attribute
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
interface Parameters {
|
|
127
|
-
[parameterConstant: number]: boolean
|
|
128
|
-
[settingName: string]: boolean
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
interface FeedbackBuffers {
|
|
132
|
-
[name: string]: string | Buffer
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
interface ProgramProps {
|
|
136
|
-
program: Program
|
|
137
|
-
vs: VertexShader | string
|
|
138
|
-
fs: FragmentShader | string
|
|
139
|
-
modules: Array<ShaderModule | ShaderModuleObject | string>
|
|
140
|
-
defines: DefineMap
|
|
141
|
-
inject: InjectionMap
|
|
142
|
-
varyings: Array<string>
|
|
143
|
-
bufferMode: number
|
|
144
|
-
transpileToGLSL100: boolean
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
interface ModelProps extends ProgramProps {
|
|
148
|
-
id?: string
|
|
149
|
-
moduleSettings?: UniformsOptions
|
|
150
|
-
uniforms?: Uniforms
|
|
151
|
-
geometry?: Geometry
|
|
152
|
-
vertexCount?: number
|
|
153
|
-
drawMode?: number
|
|
154
|
-
programManager?: ProgramManager
|
|
155
|
-
onBeforeRender?: () => void
|
|
156
|
-
onAfterRender?: () => void
|
|
157
|
-
_feedbackBuffers?: FeedbackBuffers
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
interface DrawOpts {
|
|
161
|
-
moduleSettings?: UniformsOptions
|
|
162
|
-
framebuffer: Framebuffer
|
|
163
|
-
uniforms?: Uniforms
|
|
164
|
-
attributes?: Attributes
|
|
165
|
-
parameters?: Parameters
|
|
166
|
-
transformFeedback?: TransformFeedback
|
|
167
|
-
vertexArray?: VertexArray
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
interface ClearOpts {
|
|
171
|
-
framebuffer?: Framebuffer
|
|
172
|
-
color?: boolean
|
|
173
|
-
depth?: boolean
|
|
174
|
-
stencil?: boolean
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
interface TransformOpts extends DrawOpts {
|
|
178
|
-
discard: boolean
|
|
179
|
-
feedbackBuffers: FeedbackBuffers
|
|
180
|
-
unbindModels: Array<Model>
|
|
181
|
-
parameters: Parameters
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export default class Model {
|
|
185
|
-
readonly id: string;
|
|
186
|
-
readonly gl: WebGLRenderingContext;
|
|
187
|
-
readonly animated: boolean;
|
|
188
|
-
readonly programManager: ProgramManager;
|
|
189
|
-
|
|
190
|
-
constructor(gl: WebGLRenderingContext, props?: ModelProps);
|
|
191
|
-
initialize(props: any): void;
|
|
192
|
-
setProps(props: any): void;
|
|
193
|
-
delete(): void;
|
|
194
|
-
getDrawMode(): any;
|
|
195
|
-
getVertexCount(): any;
|
|
196
|
-
getInstanceCount(): any;
|
|
197
|
-
getAttributes(): any;
|
|
198
|
-
getProgram(): any;
|
|
199
|
-
setProgram(props: any): void;
|
|
200
|
-
getUniforms(): any;
|
|
201
|
-
setDrawMode(drawMode: any): this;
|
|
202
|
-
setVertexCount(vertexCount: number): this;
|
|
203
|
-
setInstanceCount(instanceCount: number): this;
|
|
204
|
-
setGeometry(geometry: any): this;
|
|
205
|
-
setAttributes(attributes?: object): this;
|
|
206
|
-
setUniforms(uniforms?: object): this;
|
|
207
|
-
getModuleUniforms(opts?: object): any;
|
|
208
|
-
updateModuleSettings(opts?: object): this;
|
|
209
|
-
clear(opts: any): this;
|
|
210
|
-
draw(opts?: {}): any;
|
|
211
|
-
transform(opts?: {}): this;
|
|
212
|
-
render(uniforms?: {}): any;
|
|
213
|
-
}
|
|
214
|
-
*/
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/model.js"],"names":["isWebGL","ProgramManager","Program","VertexArray","clear","TransformFeedback","Buffer","log","isObjectEmpty","uid","assert","getDebugTableForUniforms","getDebugTableForVertexArray","getDebugTableForProgramConfiguration","getBuffersFromGeometry","LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","ERR_MODEL_PARAMS","NOOP","DRAW_PARAMS","Model","constructor","gl","props","id","lastLogTime","animated","initialize","programManager","getDefaultProgramManager","_programManagerState","_managedProgram","program","vs","fs","modules","defines","inject","varyings","bufferMode","transpileToGLSL100","programProps","vertexArray","_programDirty","userData","needsRedraw","_attributes","attributes","uniforms","pickable","_checkProgram","setUniforms","Object","assign","getModuleUniforms","moduleSettings","drawMode","undefined","vertexCount","geometryBuffers","isInstanced","instanced","instanceCount","_setModelProps","geometry","Number","isFinite","setProps","delete","key","release","_deleteGeometryBuffers","getDrawMode","getVertexCount","getInstanceCount","getAttributes","getProgram","setProgram","getUniforms","setDrawMode","setVertexCount","setInstanceCount","setGeometry","setAttributes","normalizedAttributes","name","attribute","getValue","opts","updateModuleSettings","draw","framebuffer","transformFeedback","parameters","logPriority","priority","_logDrawCallStart","drawParams","getDrawParams","isIndexed","indexType","indexOffset","vertexArrayInstanced","warn","onBeforeRender","onAfterRender","didDraw","offset","_logDrawCallEnd","transform","discard","feedbackBuffers","unbindModels","_setFeedbackBuffers","forEach","model","unbindBuffers","bindBuffers","render","_feedbackBuffers","needsUpdate","stateHash","get","buffer","_setAnimationProps","animationProps","setBuffers","logLevel","logDrawTimeout","Date","now","group","collapsed","level","attributeTable","header","table","uniformTable","unusedTable","unusedCount","missingTable","count","missingCount","undefinedOnly","keys","configTable","configuration","message","groupEnd"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();\n }\n}\n"],"file":"model.js"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
export default class ProgramManager {
|
|
2
|
-
static getDefaultProgramManager(gl: WebGLRenderingContext): any;
|
|
3
|
-
constructor(gl: WebGLRenderingContext);
|
|
4
|
-
addDefaultModule(module: any): void;
|
|
5
|
-
removeDefaultModule(module: any): void;
|
|
6
|
-
addShaderHook(hook: any, opts: any): void;
|
|
7
|
-
get(props?: {}): any;
|
|
8
|
-
getUniforms(program: any): any;
|
|
9
|
-
release(program: any): void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/*
|
|
13
|
-
import {
|
|
14
|
-
VertexShader,
|
|
15
|
-
FragmentShader,
|
|
16
|
-
Program
|
|
17
|
-
} from '@luma.gl/webgl';
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
Uniforms,
|
|
21
|
-
UniformsOptions
|
|
22
|
-
} from '@luma.gl/webgl/src/classes/uniforms'
|
|
23
|
-
|
|
24
|
-
import {
|
|
25
|
-
ShaderModule,
|
|
26
|
-
ShaderModuleObject,
|
|
27
|
-
InjectionMap
|
|
28
|
-
} from '@luma.gl/shadertools/src/lib/shader-module'
|
|
29
|
-
|
|
30
|
-
import {
|
|
31
|
-
DefineMap
|
|
32
|
-
} from '@luma.gl/shadertools/src/lib/assemble-shaders'
|
|
33
|
-
|
|
34
|
-
interface ProgramManagerProps {
|
|
35
|
-
vs?: VertexShader | string
|
|
36
|
-
fs?: FragmentShader | string
|
|
37
|
-
modules?: Array<ShaderModuleObject | string>
|
|
38
|
-
defines?: DefineMap
|
|
39
|
-
inject?: InjectionMap
|
|
40
|
-
varyings?: Array<string>
|
|
41
|
-
bufferMode?: number
|
|
42
|
-
transpileToGLSL100?: boolean
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export default class ProgramManager {
|
|
46
|
-
stateHash: number
|
|
47
|
-
gl: WebGLRenderingContext
|
|
48
|
-
_programCache: {
|
|
49
|
-
[programHash: string]: Program
|
|
50
|
-
}
|
|
51
|
-
_getUniforms: {
|
|
52
|
-
[programHash: string]: (opts: UniformsOptions, context: Uniforms) => Uniforms
|
|
53
|
-
}
|
|
54
|
-
_registeredModules: {} // TODO: Remove? This isn't used anywhere in luma.gl
|
|
55
|
-
_hookFunctions: Array<{
|
|
56
|
-
hook: string
|
|
57
|
-
header?: string
|
|
58
|
-
footer?: string
|
|
59
|
-
}>
|
|
60
|
-
_defaultModules: Array<ShaderModuleObject | ShaderModule>
|
|
61
|
-
_hashes: {
|
|
62
|
-
[key: string]: number
|
|
63
|
-
}
|
|
64
|
-
_hashCounter: number
|
|
65
|
-
_useCounts: {
|
|
66
|
-
[programHash: string]: number
|
|
67
|
-
}
|
|
68
|
-
static getDefaultProgramManager(gl: WebGLRenderingContext): ProgramManager;
|
|
69
|
-
constructor(gl: WebGLRenderingContext);
|
|
70
|
-
addDefaultModule(module: ShaderModuleObject | ShaderModule): void;
|
|
71
|
-
removeDefaultModule(module: ShaderModuleObject | ShaderModule | string): void;
|
|
72
|
-
addShaderHook(hook: string, opts?: {header?: string, footer?: string}): void;
|
|
73
|
-
get(props?: ProgramManagerProps): Program;
|
|
74
|
-
getUniforms(program: Program): ((opts: UniformsOptions, context: Uniforms) => Uniforms) | null;
|
|
75
|
-
release(program: Program): void;
|
|
76
|
-
_getHash(key: string): number;
|
|
77
|
-
_getModuleList(appModules?: Array<ShaderModuleObject | ShaderModule>): Array<ShaderModuleObject | ShaderModule>;
|
|
78
|
-
}
|
|
79
|
-
*/
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/program-manager.js"],"names":["assembleShaders","Program","ProgramManager","getDefaultProgramManager","gl","luma","defaultProgramManager","constructor","_programCache","_getUniforms","_registeredModules","_hookFunctions","_defaultModules","_hashes","_hashCounter","stateHash","_useCounts","addDefaultModule","module","find","m","name","push","removeDefaultModule","moduleName","filter","addShaderHook","hook","opts","Object","assign","get","props","vs","fs","defines","inject","varyings","bufferMode","transpileToGLSL100","modules","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","map","sort","varyingHashes","v","defineKeys","keys","injectKeys","defineHashes","injectHashes","key","hash","join","assembled","hookFunctions","getUniforms","x","program","release","delete","undefined","appModules","Array","length","seen","count","i","len"],"mappings":"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","sourcesContent":["import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n"],"file":"program-manager.js"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {TransformDrawOptions, TransformModelProps} from './resource-transform';
|
|
2
|
-
|
|
3
|
-
export default class BufferTransform {
|
|
4
|
-
constructor(gl: WebGLRenderingContext, props?: {});
|
|
5
|
-
setupResources(opts: any): void;
|
|
6
|
-
updateModelProps(props?: {}): TransformModelProps;
|
|
7
|
-
getDrawOptions(opts?: {}): TransformDrawOptions;
|
|
8
|
-
swap(): boolean;
|
|
9
|
-
update(opts?: {}): void;
|
|
10
|
-
getBuffer(varyingName: any): any;
|
|
11
|
-
getData(options?: {varyingName: string}): any;
|
|
12
|
-
delete(): void;
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/buffer-transform.js"],"names":["isWebGL2","Buffer","TransformFeedback","assert","BufferTransform","constructor","gl","props","currentIndex","feedbackMap","varyings","bindings","resources","_initialize","Object","seal","setupResources","opts","binding","_setupTransformFeedback","updateModelProps","length","assign","getDrawOptions","sourceBuffers","transformFeedback","attributes","swap","_getNextIndex","update","_setupBuffers","getBuffer","varyingName","feedbackBuffers","bufferOrParams","buffer","getData","options","delete","name","keys","_getFeedbackBuffers","sourceName","feedbackName","bufferName","bufferOrRef","sourceBuffer","byteLength","usage","accessor","_createNewBuffer","_updateBindings","model","program","buffers","_updateBinding","_swapBuffers","nextIndex","setBuffers","srcName","dstName"],"mappings":"AAAA,SAAQA,QAAR,QAAuB,kBAAvB;AACA,SAAQC,MAAR,EAAgBC,iBAAhB,QAAwC,gBAAxC;AACA,SAAQC,MAAR,QAAqB,gBAArB;AAEA,eAAe,MAAMC,eAAN,CAAsB;AACnCC,EAAAA,WAAW,CAACC,EAAD,EAAKC,KAAK,GAAG,EAAb,EAAiB;AAC1B,SAAKD,EAAL,GAAUA,EAAV;AACA,SAAKE,YAAL,GAAoB,CAApB;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKC,QAAL,GAAgB,EAAhB;AAEA,SAAKC,SAAL,GAAiB,EAAjB;;AAEA,SAAKC,WAAL,CAAiBN,KAAjB;;AACAO,IAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;AACD;;AAEDC,EAAAA,cAAc,CAACC,IAAD,EAAO;AACnB,SAAK,MAAMC,OAAX,IAAsB,KAAKP,QAA3B,EAAqC;AACnC,WAAKQ,uBAAL,CAA6BD,OAA7B,EAAsCD,IAAtC;AACD;AACF;;AAEDG,EAAAA,gBAAgB,CAACb,KAAK,GAAG,EAAT,EAAa;AAC3B,UAAM;AAACG,MAAAA;AAAD,QAAa,IAAnB;;AACA,QAAIA,QAAQ,CAACW,MAAT,GAAkB,CAAtB,EAAyB;AACvBd,MAAAA,KAAK,GAAGO,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBf,KAAlB,EAAyB;AAACG,QAAAA;AAAD,OAAzB,CAAR;AACD;;AACD,WAAOH,KAAP;AACD;;AAEDgB,EAAAA,cAAc,CAACN,IAAI,GAAG,EAAR,EAAY;AACxB,UAAMC,OAAO,GAAG,KAAKP,QAAL,CAAc,KAAKH,YAAnB,CAAhB;AACA,UAAM;AAACgB,MAAAA,aAAD;AAAgBC,MAAAA;AAAhB,QAAqCP,OAA3C;AACA,UAAMQ,UAAU,GAAGZ,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBE,aAAlB,EAAiCP,IAAI,CAACS,UAAtC,CAAnB;AAEA,WAAO;AAACA,MAAAA,UAAD;AAAaD,MAAAA;AAAb,KAAP;AACD;;AAEDE,EAAAA,IAAI,GAAG;AACL,QAAI,KAAKlB,WAAT,EAAsB;AACpB,WAAKD,YAAL,GAAoB,KAAKoB,aAAL,EAApB;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAGDC,EAAAA,MAAM,CAACZ,IAAI,GAAG,EAAR,EAAY;AAChB,SAAKa,aAAL,CAAmBb,IAAnB;AACD;;AAGDc,EAAAA,SAAS,CAACC,WAAD,EAAc;AACrB,UAAM;AAACC,MAAAA;AAAD,QAAoB,KAAKtB,QAAL,CAAc,KAAKH,YAAnB,CAA1B;AACA,UAAM0B,cAAc,GAAGF,WAAW,GAAGC,eAAe,CAACD,WAAD,CAAlB,GAAkC,IAApE;;AACA,QAAI,CAACE,cAAL,EAAqB;AACnB,aAAO,IAAP;AACD;;AACD,WAAOA,cAAc,YAAYjC,MAA1B,GAAmCiC,cAAnC,GAAoDA,cAAc,CAACC,MAA1E;AACD;;AAEDC,EAAAA,OAAO,CAACC,OAAO,GAAG,EAAX,EAAe;AACpB,UAAM;AAACL,MAAAA;AAAD,QAAgBK,OAAtB;AACA,UAAMF,MAAM,GAAG,KAAKJ,SAAL,CAAeC,WAAf,CAAf;;AACA,QAAIG,MAAJ,EAAY;AACV,aAAOA,MAAM,CAACC,OAAP,EAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAGDE,EAAAA,MAAM,GAAG;AACP,SAAK,MAAMC,IAAX,IAAmB,KAAK3B,SAAxB,EAAmC;AACjC,WAAKA,SAAL,CAAe2B,IAAf,EAAqBD,MAArB;AACD;AACF;;AAIDzB,EAAAA,WAAW,CAACN,KAAK,GAAG,EAAT,EAAa;AACtB,SAAKuB,aAAL,CAAmBvB,KAAnB;;AACA,SAAKG,QAAL,GAAgBH,KAAK,CAACG,QAAN,IAAkBI,MAAM,CAAC0B,IAAP,CAAY,KAAK7B,QAAL,CAAc,KAAKH,YAAnB,EAAiCyB,eAA7C,CAAlC;;AACA,QAAI,KAAKvB,QAAL,CAAcW,MAAd,GAAuB,CAA3B,EAA8B;AAE5BlB,MAAAA,MAAM,CAACH,QAAQ,CAAC,KAAKM,EAAN,CAAT,CAAN;AACD;AACF;;AAGDmC,EAAAA,mBAAmB,CAAClC,KAAD,EAAQ;AACzB,UAAM;AAACiB,MAAAA,aAAa,GAAG;AAAjB,QAAuBjB,KAA7B;AACA,UAAM0B,eAAe,GAAG,EAAxB;;AACA,QAAI,KAAKtB,QAAL,CAAc,KAAKH,YAAnB,CAAJ,EAAsC;AAGpCM,MAAAA,MAAM,CAACQ,MAAP,CAAcW,eAAd,EAA+B,KAAKtB,QAAL,CAAc,KAAKH,YAAnB,EAAiCyB,eAAhE;AACD;;AACD,QAAI,KAAKxB,WAAT,EAAsB;AAEpB,WAAK,MAAMiC,UAAX,IAAyB,KAAKjC,WAA9B,EAA2C;AACzC,cAAMkC,YAAY,GAAG,KAAKlC,WAAL,CAAiBiC,UAAjB,CAArB;;AACA,YAAIA,UAAU,IAAIlB,aAAlB,EAAiC;AAC/BS,UAAAA,eAAe,CAACU,YAAD,CAAf,GAAgCD,UAAhC;AACD;AACF;AACF;;AACD5B,IAAAA,MAAM,CAACQ,MAAP,CAAcW,eAAd,EAA+B1B,KAAK,CAAC0B,eAArC;;AACA,SAAK,MAAMW,UAAX,IAAyBX,eAAzB,EAA0C;AACxC,YAAMY,WAAW,GAAGZ,eAAe,CAACW,UAAD,CAAnC;;AACA,UAAI,OAAOC,WAAP,KAAuB,QAA3B,EAAqC;AAEnC,cAAMC,YAAY,GAAGtB,aAAa,CAACqB,WAAD,CAAlC;AACA,cAAM;AAACE,UAAAA,UAAD;AAAaC,UAAAA,KAAb;AAAoBC,UAAAA;AAApB,YAAgCH,YAAtC;AACAb,QAAAA,eAAe,CAACW,UAAD,CAAf,GAA8B,KAAKM,gBAAL,CAAsBN,UAAtB,EAAkC;AAC9DG,UAAAA,UAD8D;AAE9DC,UAAAA,KAF8D;AAG9DC,UAAAA;AAH8D,SAAlC,CAA9B;AAKD;AACF;;AAED,WAAOhB,eAAP;AACD;;AAEDH,EAAAA,aAAa,CAACvB,KAAK,GAAG,EAAT,EAAa;AACxB,UAAM;AAACiB,MAAAA,aAAa,GAAG;AAAjB,QAAyBjB,KAA/B;AACAO,IAAAA,MAAM,CAACQ,MAAP,CAAc,KAAKb,WAAnB,EAAgCF,KAAK,CAACE,WAAtC;;AACA,UAAMwB,eAAe,GAAG,KAAKQ,mBAAL,CAAyBlC,KAAzB,CAAxB;;AACA,SAAK4C,eAAL,CAAqB;AAAC3B,MAAAA,aAAD;AAAgBS,MAAAA;AAAhB,KAArB;AACD;;AAEDd,EAAAA,uBAAuB,CAACD,OAAD,EAAU;AAACkC,IAAAA;AAAD,GAAV,EAAmB;AACxC,UAAM;AAACC,MAAAA;AAAD,QAAYD,KAAlB;AACAlC,IAAAA,OAAO,CAACO,iBAAR,GAA4B,IAAIvB,iBAAJ,CAAsB,KAAKI,EAA3B,EAA+B;AACzD+C,MAAAA,OADyD;AAEzDC,MAAAA,OAAO,EAAEpC,OAAO,CAACe;AAFwC,KAA/B,CAA5B;AAID;;AAEDkB,EAAAA,eAAe,CAAClC,IAAD,EAAO;AACpB,SAAKN,QAAL,CAAc,KAAKH,YAAnB,IAAmC,KAAK+C,cAAL,CAAoB,KAAK5C,QAAL,CAAc,KAAKH,YAAnB,CAApB,EAAsDS,IAAtD,CAAnC;;AACA,QAAI,KAAKR,WAAT,EAAsB;AACpB,YAAM;AAACe,QAAAA,aAAD;AAAgBS,QAAAA;AAAhB,UAAmC,KAAKuB,YAAL,CAAkB,KAAK7C,QAAL,CAAc,KAAKH,YAAnB,CAAlB,CAAzC;;AACA,YAAMiD,SAAS,GAAG,KAAK7B,aAAL,EAAlB;;AACA,WAAKjB,QAAL,CAAc8C,SAAd,IAA2B,KAAKF,cAAL,CAAoB,KAAK5C,QAAL,CAAc8C,SAAd,CAApB,EAA8C;AACvEjC,QAAAA,aADuE;AAEvES,QAAAA;AAFuE,OAA9C,CAA3B;AAID;AACF;;AAEDsB,EAAAA,cAAc,CAACrC,OAAD,EAAUD,IAAV,EAAgB;AAC5B,QAAI,CAACC,OAAL,EAAc;AACZ,aAAO;AACLM,QAAAA,aAAa,EAAEV,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBL,IAAI,CAACO,aAAvB,CADV;AAELS,QAAAA,eAAe,EAAEnB,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBL,IAAI,CAACgB,eAAvB;AAFZ,OAAP;AAID;;AACDnB,IAAAA,MAAM,CAACQ,MAAP,CAAcJ,OAAO,CAACM,aAAtB,EAAqCP,IAAI,CAACO,aAA1C;AACAV,IAAAA,MAAM,CAACQ,MAAP,CAAcJ,OAAO,CAACe,eAAtB,EAAuChB,IAAI,CAACgB,eAA5C;;AACA,QAAIf,OAAO,CAACO,iBAAZ,EAA+B;AAC7BP,MAAAA,OAAO,CAACO,iBAAR,CAA0BiC,UAA1B,CAAqCxC,OAAO,CAACe,eAA7C;AACD;;AACD,WAAOf,OAAP;AACD;;AAEDsC,EAAAA,YAAY,CAACvC,IAAD,EAAO;AACjB,QAAI,CAAC,KAAKR,WAAV,EAAuB;AACrB,aAAO,IAAP;AACD;;AACD,UAAMe,aAAa,GAAGV,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBL,IAAI,CAACO,aAAvB,CAAtB;AACA,UAAMS,eAAe,GAAGnB,MAAM,CAACQ,MAAP,CAAc,EAAd,EAAkBL,IAAI,CAACgB,eAAvB,CAAxB;;AACA,SAAK,MAAM0B,OAAX,IAAsB,KAAKlD,WAA3B,EAAwC;AACtC,YAAMmD,OAAO,GAAG,KAAKnD,WAAL,CAAiBkD,OAAjB,CAAhB;AACAnC,MAAAA,aAAa,CAACmC,OAAD,CAAb,GAAyB1C,IAAI,CAACgB,eAAL,CAAqB2B,OAArB,CAAzB;AACA3B,MAAAA,eAAe,CAAC2B,OAAD,CAAf,GAA2B3C,IAAI,CAACO,aAAL,CAAmBmC,OAAnB,CAA3B;AAGAxD,MAAAA,MAAM,CAAC8B,eAAe,CAAC2B,OAAD,CAAf,YAAoC3D,MAArC,CAAN;AACD;;AACD,WAAO;AAACuB,MAAAA,aAAD;AAAgBS,MAAAA;AAAhB,KAAP;AACD;;AAGDiB,EAAAA,gBAAgB,CAACX,IAAD,EAAOtB,IAAP,EAAa;AAC3B,UAAMkB,MAAM,GAAG,IAAIlC,MAAJ,CAAW,KAAKK,EAAhB,EAAoBW,IAApB,CAAf;;AACA,QAAI,KAAKL,SAAL,CAAe2B,IAAf,CAAJ,EAA0B;AACxB,WAAK3B,SAAL,CAAe2B,IAAf,EAAqBD,MAArB;AACD;;AACD,SAAK1B,SAAL,CAAe2B,IAAf,IAAuBJ,MAAvB;AACA,WAAOA,MAAP;AACD;;AAEDP,EAAAA,aAAa,GAAG;AACd,WAAO,CAAC,KAAKpB,YAAL,GAAoB,CAArB,IAA0B,CAAjC;AACD;;AAjMkC","sourcesContent":["import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n"],"file":"buffer-transform.js"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type TransformDrawOptions = {
|
|
2
|
-
attributes?: object;
|
|
3
|
-
framebuffer?: any;
|
|
4
|
-
uniforms?: object;
|
|
5
|
-
discard?: boolean;
|
|
6
|
-
parameters?: object;
|
|
7
|
-
transformFeedback?: any;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export type TransformModelProps = {
|
|
11
|
-
vs: any;
|
|
12
|
-
fs: any;
|
|
13
|
-
modules: any;
|
|
14
|
-
uniforms: any;
|
|
15
|
-
inject: any;
|
|
16
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {TransformDrawOptions, TransformModelProps} from './resource-transform';
|
|
2
|
-
|
|
3
|
-
export default class TextureTransform {
|
|
4
|
-
constructor(gl: WebGLRenderingContext, props?: {});
|
|
5
|
-
|
|
6
|
-
updateModelProps(props?: {}): TransformModelProps;
|
|
7
|
-
|
|
8
|
-
getDrawOptions(opts?: {}): TransformDrawOptions;
|
|
9
|
-
|
|
10
|
-
swap(): boolean;
|
|
11
|
-
update(opts?: {}): void;
|
|
12
|
-
getTargetTexture(): any;
|
|
13
|
-
getData(opts: {packed?: boolean}): any;
|
|
14
|
-
getFramebuffer(): any;
|
|
15
|
-
delete(): void;
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/texture-transform.js"],"names":["cloneTextureFrom","readPixelsToArray","getShaderVersion","Buffer","Texture2D","Framebuffer","_transform","transformModule","getPassthroughFS","typeToChannelCount","combineInjects","updateForTextures","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","FS_OUTPUT_VARIABLE","TextureTransform","constructor","gl","props","id","currentIndex","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","bindings","resources","_initialize","Object","seal","updateModelProps","updatedModelProps","_processVertexShader","assign","getDrawOptions","opts","sourceBuffers","sourceTextures","framebuffer","targetTexture","attributes","uniforms","parameters","discard","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","sampler","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","viewport","width","height","swap","_getNextIndex","update","_setupTextures","getTargetTexture","getData","packed","pixels","ArrayType","channelCount","packedPixels","length","packCount","i","j","getFramebuffer","currentResources","delete","ownTexture","_targetTextureVarying","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","keys","_updateBindings","_updateElementIDBuffer","elementCount","elementIds","Float32Array","forEach","_","index","array","data","accessor","size","setData","_updateBinding","_swapTextures","nextIndex","binding","attachments","resizeAttachments","resize","name","setParameters","texture","pixelStore","vs","inject","combinedInject","fs","_fs","version","input","inputType","output","modules","concat"],"mappings":"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","sourcesContent":["/** @typedef {import('./transform').TransformProps} TransformProps */\nimport GL from '@luma.gl/constants';\n\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} = this.bindings[\n this.currentIndex\n ];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n /** @param {TransformProps} props */\n _setupTextures(props = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n"],"file":"texture-transform.js"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export function updateForTextures(options: {
|
|
2
|
-
vs: any;
|
|
3
|
-
sourceTextureMap: any;
|
|
4
|
-
targetTextureVarying: any;
|
|
5
|
-
targetTexture: any;
|
|
6
|
-
}): {
|
|
7
|
-
vs: any;
|
|
8
|
-
targetTextureType: any;
|
|
9
|
-
inject: {};
|
|
10
|
-
samplerTextureMap: {};
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export function getSizeUniforms(options: {
|
|
14
|
-
sourceTextureMap: any;
|
|
15
|
-
targetTextureVarying: any;
|
|
16
|
-
targetTexture: any;
|
|
17
|
-
}): {};
|
|
18
|
-
|
|
19
|
-
export function getVaryingType(line: any, varying: any): any;
|
|
20
|
-
|
|
21
|
-
export function processAttributeDefinition(
|
|
22
|
-
line: any,
|
|
23
|
-
textureMap: any
|
|
24
|
-
): {
|
|
25
|
-
updatedLine: string;
|
|
26
|
-
inject: {
|
|
27
|
-
'vs:#decl': string;
|
|
28
|
-
'vs:#main-start': string;
|
|
29
|
-
};
|
|
30
|
-
samplerTextureMap: {};
|
|
31
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/transform-shader-utils.js"],"names":["assert","combineInjects","getQualifierDetails","typeToChannelSuffix","SAMPLER_UNIFORM_PREFIX","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","updateForTextures","vs","sourceTextureMap","targetTextureVarying","targetTexture","texAttributeNames","Object","keys","sourceCount","length","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","split","updateVsLines","slice","forEach","line","index","lines","updated","processAttributeDefinition","updatedLine","inject","assign","getVaryingType","sizeName","uniformDeclaration","posInstructions","join","getSizeUniforms","uniforms","width","height","textureName","getAttributeDefinition","getSamplerDeclerations","samplerName","uniformDeclerations","varying","qualaiferDetails","name","type","textureMap","attributeData","channels","sampleInstruction"],"mappings":"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","sourcesContent":["import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n"],"file":"transform-shader-utils.js"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import Model from '../lib/model';
|
|
2
|
-
|
|
3
|
-
export type TransformProps = {
|
|
4
|
-
vs?: string;
|
|
5
|
-
elementCount?: number;
|
|
6
|
-
sourceBuffers?: object;
|
|
7
|
-
feedbackBuffers?: object;
|
|
8
|
-
varyings?: string[];
|
|
9
|
-
feedbackMap?: object;
|
|
10
|
-
modules?: object[]; // TODO use ShaderModule type
|
|
11
|
-
_sourceTextures?: any;
|
|
12
|
-
_targetTexture?: any;
|
|
13
|
-
_targetTextureVarying?: string;
|
|
14
|
-
_swapTexture?: string;
|
|
15
|
-
_fs?: string;
|
|
16
|
-
inject?: any;
|
|
17
|
-
drawMode?: number;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export default class Transform {
|
|
21
|
-
readonly model: Model;
|
|
22
|
-
|
|
23
|
-
static isSupported(gl: WebGLRenderingContext): any;
|
|
24
|
-
constructor(gl: WebGLRenderingContext, props?: TransformProps);
|
|
25
|
-
delete(): void;
|
|
26
|
-
run(opts?: {}): void;
|
|
27
|
-
swap(): void;
|
|
28
|
-
getBuffer(varyingName?: any): any;
|
|
29
|
-
// TODO - mix of options for buffers and textures
|
|
30
|
-
getData(opts?: {packed?: boolean; varyingName?: string}): any;
|
|
31
|
-
getFramebuffer(): any;
|
|
32
|
-
update(opts?: TransformProps): void;
|
|
33
|
-
}
|