@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.
Files changed (270) hide show
  1. package/dist/animation/key-frames.d.ts +18 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -0
  3. package/dist/{esm/animation → animation}/key-frames.js +13 -6
  4. package/dist/animation/key-frames.js.map +1 -0
  5. package/dist/animation/timeline.d.ts +51 -0
  6. package/dist/animation/timeline.d.ts.map +1 -0
  7. package/dist/{esm/animation → animation}/timeline.js +10 -5
  8. package/dist/animation/timeline.js.map +1 -0
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundle.d.ts.map +1 -0
  11. package/dist/bundle.js +5 -0
  12. package/dist/bundle.js.map +1 -0
  13. package/dist/geometries/cone-geometry.d.ts +10 -0
  14. package/dist/geometries/cone-geometry.d.ts.map +1 -0
  15. package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
  16. package/dist/geometries/cone-geometry.js.map +1 -0
  17. package/dist/geometries/cube-geometry.d.ts +9 -0
  18. package/dist/geometries/cube-geometry.d.ts.map +1 -0
  19. package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
  20. package/dist/geometries/cube-geometry.js.map +1 -0
  21. package/dist/geometries/cylinder-geometry.d.ts +10 -0
  22. package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
  23. package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
  24. package/dist/geometries/cylinder-geometry.js.map +1 -0
  25. package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
  26. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
  27. package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
  28. package/dist/geometries/ico-sphere-geometry.js.map +1 -0
  29. package/dist/geometries/plane-geometry.d.ts +10 -0
  30. package/dist/geometries/plane-geometry.d.ts.map +1 -0
  31. package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
  32. package/dist/geometries/plane-geometry.js.map +1 -0
  33. package/dist/geometries/sphere-geometry.d.ts +12 -0
  34. package/dist/geometries/sphere-geometry.d.ts.map +1 -0
  35. package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
  36. package/dist/geometries/sphere-geometry.js.map +1 -0
  37. package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
  38. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
  39. package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
  40. package/dist/geometries/truncated-cone-geometry.js.map +1 -0
  41. package/dist/geometry/geometry-utils.d.ts +2 -0
  42. package/dist/geometry/geometry-utils.d.ts.map +1 -0
  43. package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
  44. package/dist/geometry/geometry-utils.js.map +1 -0
  45. package/dist/geometry/geometry.d.ts +44 -0
  46. package/dist/geometry/geometry.d.ts.map +1 -0
  47. package/dist/{esm/geometry → geometry}/geometry.js +28 -19
  48. package/dist/geometry/geometry.js.map +1 -0
  49. package/dist/index.d.ts +26 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +17 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/animation-loop.d.ts +149 -0
  54. package/dist/lib/animation-loop.d.ts.map +1 -0
  55. package/dist/{esm/lib → lib}/animation-loop.js +190 -143
  56. package/dist/lib/animation-loop.js.map +1 -0
  57. package/dist/lib/model-utils.d.ts +4 -0
  58. package/dist/lib/model-utils.d.ts.map +1 -0
  59. package/dist/{esm/lib → lib}/model-utils.js +3 -2
  60. package/dist/lib/model-utils.js.map +1 -0
  61. package/dist/lib/model.d.ts +109 -0
  62. package/dist/lib/model.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/model.js +76 -20
  64. package/dist/lib/model.js.map +1 -0
  65. package/dist/lib/program-manager.d.ts +39 -0
  66. package/dist/lib/program-manager.d.ts.map +1 -0
  67. package/dist/{esm/lib → lib}/program-manager.js +29 -18
  68. package/dist/lib/program-manager.js.map +1 -0
  69. package/dist/lib/render-loop.d.ts +27 -0
  70. package/dist/lib/render-loop.d.ts.map +1 -0
  71. package/dist/lib/render-loop.js +56 -0
  72. package/dist/lib/render-loop.js.map +1 -0
  73. package/dist/transform/buffer-transform.d.ts +36 -0
  74. package/dist/transform/buffer-transform.d.ts.map +1 -0
  75. package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
  76. package/dist/transform/buffer-transform.js.map +1 -0
  77. package/dist/transform/texture-transform.d.ts +57 -0
  78. package/dist/transform/texture-transform.d.ts.map +1 -0
  79. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  80. package/dist/transform/texture-transform.js.map +1 -0
  81. package/dist/transform/transform-shader-utils.d.ts +26 -0
  82. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  83. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  84. package/dist/transform/transform-shader-utils.js.map +1 -0
  85. package/dist/transform/transform-types.d.ts +44 -0
  86. package/dist/transform/transform-types.d.ts.map +1 -0
  87. package/dist/transform/transform-types.js +2 -0
  88. package/dist/transform/transform-types.js.map +1 -0
  89. package/dist/transform/transform.d.ts +47 -0
  90. package/dist/transform/transform.d.ts.map +1 -0
  91. package/dist/{esm/transform → transform}/transform.js +63 -43
  92. package/dist/transform/transform.js.map +1 -0
  93. package/dist/utils/clip-space.d.ts +5 -0
  94. package/dist/utils/clip-space.d.ts.map +1 -0
  95. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  96. package/dist/utils/clip-space.js.map +1 -0
  97. package/package.json +11 -11
  98. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  99. package/src/animation/{timeline.js → timeline.ts} +54 -18
  100. package/src/bundle.ts +4 -0
  101. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  102. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  103. package/src/geometries/cylinder-geometry.ts +20 -0
  104. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  105. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  106. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  107. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  108. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  109. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  110. package/src/index.ts +35 -0
  111. package/src/lib/animation-loop.ts +724 -0
  112. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  113. package/src/lib/{model.js → model.ts} +184 -66
  114. package/src/lib/{program-manager.js → program-manager.ts} +53 -34
  115. package/src/lib/render-loop.ts +56 -0
  116. package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
  117. package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
  118. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  119. package/src/transform/transform-types.ts +42 -0
  120. package/src/transform/transform.ts +189 -0
  121. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  122. package/dist/dist.js +0 -32403
  123. package/dist/dist.min.js +0 -1
  124. package/dist/es5/animation/key-frames.d.ts +0 -19
  125. package/dist/es5/animation/key-frames.js +0 -95
  126. package/dist/es5/animation/key-frames.js.map +0 -1
  127. package/dist/es5/animation/timeline.d.ts +0 -39
  128. package/dist/es5/animation/timeline.js +0 -211
  129. package/dist/es5/animation/timeline.js.map +0 -1
  130. package/dist/es5/bundle.js +0 -9
  131. package/dist/es5/bundle.js.map +0 -1
  132. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  133. package/dist/es5/geometries/cone-geometry.js +0 -59
  134. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  135. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  136. package/dist/es5/geometries/cube-geometry.js +0 -75
  137. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  138. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  139. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  140. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  141. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  142. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  143. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  144. package/dist/es5/geometries/index.d.ts +0 -7
  145. package/dist/es5/geometries/index.js +0 -64
  146. package/dist/es5/geometries/index.js.map +0 -1
  147. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  148. package/dist/es5/geometries/plane-geometry.js +0 -168
  149. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  150. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  151. package/dist/es5/geometries/sphere-geometry.js +0 -152
  152. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  153. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  154. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  155. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  156. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  157. package/dist/es5/geometry/geometry-utils.js +0 -49
  158. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  159. package/dist/es5/geometry/geometry.d.ts +0 -25
  160. package/dist/es5/geometry/geometry.js +0 -150
  161. package/dist/es5/geometry/geometry.js.map +0 -1
  162. package/dist/es5/index.d.ts +0 -19
  163. package/dist/es5/index.js +0 -128
  164. package/dist/es5/index.js.map +0 -1
  165. package/dist/es5/lib/animation-loop.d.ts +0 -158
  166. package/dist/es5/lib/animation-loop.js +0 -642
  167. package/dist/es5/lib/animation-loop.js.map +0 -1
  168. package/dist/es5/lib/model-utils.d.ts +0 -3
  169. package/dist/es5/lib/model-utils.js +0 -110
  170. package/dist/es5/lib/model-utils.js.map +0 -1
  171. package/dist/es5/lib/model.d.ts +0 -214
  172. package/dist/es5/lib/model.js +0 -584
  173. package/dist/es5/lib/model.js.map +0 -1
  174. package/dist/es5/lib/program-manager.d.ts +0 -79
  175. package/dist/es5/lib/program-manager.js +0 -238
  176. package/dist/es5/lib/program-manager.js.map +0 -1
  177. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  178. package/dist/es5/transform/buffer-transform.js +0 -294
  179. package/dist/es5/transform/buffer-transform.js.map +0 -1
  180. package/dist/es5/transform/resource-transform.d.ts +0 -16
  181. package/dist/es5/transform/texture-transform.d.ts +0 -16
  182. package/dist/es5/transform/texture-transform.js +0 -405
  183. package/dist/es5/transform/texture-transform.js.map +0 -1
  184. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  185. package/dist/es5/transform/transform-shader-utils.js +0 -160
  186. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  187. package/dist/es5/transform/transform.d.ts +0 -33
  188. package/dist/es5/transform/transform.js +0 -274
  189. package/dist/es5/transform/transform.js.map +0 -1
  190. package/dist/es5/utils/clip-space.d.ts +0 -5
  191. package/dist/es5/utils/clip-space.js +0 -72
  192. package/dist/es5/utils/clip-space.js.map +0 -1
  193. package/dist/esm/animation/key-frames.d.ts +0 -19
  194. package/dist/esm/animation/key-frames.js.map +0 -1
  195. package/dist/esm/animation/timeline.d.ts +0 -39
  196. package/dist/esm/animation/timeline.js.map +0 -1
  197. package/dist/esm/bundle.js +0 -7
  198. package/dist/esm/bundle.js.map +0 -1
  199. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  200. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  201. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  202. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  203. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  204. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  205. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  206. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  207. package/dist/esm/geometries/index.d.ts +0 -7
  208. package/dist/esm/geometries/index.js +0 -8
  209. package/dist/esm/geometries/index.js.map +0 -1
  210. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  211. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  212. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  213. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  214. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  215. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  216. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  217. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  218. package/dist/esm/geometry/geometry.d.ts +0 -25
  219. package/dist/esm/geometry/geometry.js.map +0 -1
  220. package/dist/esm/index.d.ts +0 -19
  221. package/dist/esm/index.js +0 -16
  222. package/dist/esm/index.js.map +0 -1
  223. package/dist/esm/lib/animation-loop.d.ts +0 -158
  224. package/dist/esm/lib/animation-loop.js.map +0 -1
  225. package/dist/esm/lib/model-utils.d.ts +0 -3
  226. package/dist/esm/lib/model-utils.js.map +0 -1
  227. package/dist/esm/lib/model.d.ts +0 -214
  228. package/dist/esm/lib/model.js.map +0 -1
  229. package/dist/esm/lib/program-manager.d.ts +0 -79
  230. package/dist/esm/lib/program-manager.js.map +0 -1
  231. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  232. package/dist/esm/transform/buffer-transform.js.map +0 -1
  233. package/dist/esm/transform/resource-transform.d.ts +0 -16
  234. package/dist/esm/transform/texture-transform.d.ts +0 -16
  235. package/dist/esm/transform/texture-transform.js.map +0 -1
  236. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  237. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  238. package/dist/esm/transform/transform.d.ts +0 -33
  239. package/dist/esm/transform/transform.js.map +0 -1
  240. package/dist/esm/utils/clip-space.d.ts +0 -5
  241. package/dist/esm/utils/clip-space.js.map +0 -1
  242. package/src/animation/key-frames.d.ts +0 -19
  243. package/src/animation/timeline.d.ts +0 -39
  244. package/src/bundle.js +0 -7
  245. package/src/geometries/cone-geometry.d.ts +0 -5
  246. package/src/geometries/cube-geometry.d.ts +0 -5
  247. package/src/geometries/cylinder-geometry.d.ts +0 -5
  248. package/src/geometries/cylinder-geometry.js +0 -14
  249. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  250. package/src/geometries/index.d.ts +0 -7
  251. package/src/geometries/index.js +0 -7
  252. package/src/geometries/plane-geometry.d.ts +0 -5
  253. package/src/geometries/sphere-geometry.d.ts +0 -5
  254. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  255. package/src/geometry/geometry-utils.d.ts +0 -1
  256. package/src/geometry/geometry.d.ts +0 -25
  257. package/src/index.d.ts +0 -19
  258. package/src/index.js +0 -22
  259. package/src/lib/animation-loop.d.ts +0 -158
  260. package/src/lib/animation-loop.js +0 -601
  261. package/src/lib/model-utils.d.ts +0 -3
  262. package/src/lib/model.d.ts +0 -214
  263. package/src/lib/program-manager.d.ts +0 -79
  264. package/src/transform/buffer-transform.d.ts +0 -13
  265. package/src/transform/resource-transform.d.ts +0 -16
  266. package/src/transform/texture-transform.d.ts +0 -16
  267. package/src/transform/transform-shader-utils.d.ts +0 -31
  268. package/src/transform/transform.d.ts +0 -33
  269. package/src/transform/transform.js +0 -177
  270. package/src/utils/clip-space.d.ts +0 -5
@@ -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":"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","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
- }