@woosh/meep-engine 3.34.0 → 3.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/package.json +1 -1
  2. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +25 -11
  3. package/src/shade/device/timing/profile/GPUProfileSession.d.ts.map +1 -1
  4. package/src/shade/device/timing/profile/GPUProfileSession.js +553 -474
  5. package/src/shade/playground/avboit/main.d.ts.map +1 -1
  6. package/src/shade/playground/avboit/main.js +888 -916
  7. package/src/shade/playground/particle_ecs/README.md +13 -7
  8. package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +5 -5
  9. package/src/shade/playground/particle_ecs/bonfire_effects.js +5 -5
  10. package/src/shade/playground/particle_ecs/effects/smoke.json +1859 -1859
  11. package/src/shade/playground/particle_ecs/effects/soot.json +1605 -1605
  12. package/src/shade/playground/particle_system/README.md +1 -2
  13. package/src/shade/playground/profile_hotkey.d.ts.map +1 -1
  14. package/src/shade/playground/profile_hotkey.js +4 -40
  15. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
  16. package/src/shade/playground/skinned_blas_refit/main.js +4 -39
  17. package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
  18. package/src/shade/playground/volumetrics_froxel/main.js +4 -39
  19. package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
  20. package/src/shade/playground/volumetrics_froxel/measure.js +2 -4
  21. package/src/shade/renderer/Renderer.d.ts +1 -1
  22. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  23. package/src/shade/renderer/Renderer.js +3 -1
  24. package/src/shade/renderer/light/GPULightCollection.d.ts +9 -1
  25. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  26. package/src/shade/renderer/light/GPULightCollection.js +41 -0
  27. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts +37 -0
  28. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -0
  29. package/src/shade/renderer/light/environment/shader_project_environment_sh.js +105 -0
  30. package/src/shade/renderer/particles/DESIGN.md +65 -8
  31. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +7 -1
  32. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  33. package/src/shade/renderer/particles/GPUParticleSystem.js +1247 -1244
  34. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +7 -1
  35. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  36. package/src/shade/renderer/particles/graph_particles_avboit.js +9 -0
  37. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  38. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +4 -2
  39. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +15 -9
  40. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  41. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +29 -11
  42. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts +24 -0
  43. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts.map +1 -0
  44. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.js +45 -0
  45. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +3 -0
  46. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  47. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -0
  48. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  49. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +190 -185
  50. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +8 -0
  51. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  52. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +5 -0
  53. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +8 -1
  54. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  55. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +9 -0
  56. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +13 -3
  57. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  58. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +9 -1
  59. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts +39 -0
  60. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts.map +1 -0
  61. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.js +107 -0
  62. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +15 -0
  63. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +1 -0
  64. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +44 -0
  65. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +19 -0
  66. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +1 -0
  67. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +48 -0
  68. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +29 -0
  69. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +1 -0
  70. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +90 -0
  71. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts +10 -0
  72. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts.map +1 -0
  73. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.js +55 -0
  74. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts +10 -0
  75. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts.map +1 -0
  76. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.js +47 -0
  77. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts +10 -0
  78. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts.map +1 -0
  79. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.js +63 -0
  80. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +17 -0
  81. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +1 -0
  82. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +26 -0
  83. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +8 -1
  84. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  85. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +50 -2
  86. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  87. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +488 -436
  88. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +1 -1
  89. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  90. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +254 -63
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Advanced 3D game engine",
7
7
  "type": "module",
8
8
  "author": "Alexander Goldring",
9
- "version": "3.34.0",
9
+ "version": "3.35.0",
10
10
  "exports": {
11
11
  "./build/*": "./build/*",
12
12
  "./src/*": "./src/*",
@@ -72,7 +72,8 @@ export class GPUProfileSession {
72
72
  readonly onBytesWritten: any;
73
73
  /**
74
74
  * Fires once, with the finished capture, however the session ended — `stop()` or the frame
75
- * limit running out. Both paths land here so a caller can await one thing.
75
+ * limit running out — once the frames begun before that have landed. Both paths land here so a
76
+ * caller can await one thing.
76
77
  *
77
78
  * @readonly
78
79
  * @type {Signal<ArrayBuffer>}
@@ -83,6 +84,10 @@ export class GPUProfileSession {
83
84
  */
84
85
  get level(): number;
85
86
  /**
87
+ * Whether new frames are being taken: from `start()` until `stop()` or the frame limit. A session
88
+ * that is no longer running can still be waiting on frames begun before that; {@link done} says
89
+ * when it has them.
90
+ *
86
91
  * @returns {boolean}
87
92
  */
88
93
  get is_running(): boolean;
@@ -123,7 +128,8 @@ export class GPUProfileSession {
123
128
  */
124
129
  begin_frame(frame_index: number, cpu_begin_ms: number): GPUFrameRecorder | null;
125
130
  /**
126
- * Close a recorder opened by {@link begin_frame} and commit what it collected.
131
+ * Close a recorder opened by {@link begin_frame} and commit what it collected — after `stop()`
132
+ * too, which is waiting for exactly this.
127
133
  *
128
134
  * @param {GPUFrameRecorder} recorder
129
135
  * @param {number} cpu_submit_ms
@@ -133,9 +139,10 @@ export class GPUProfileSession {
133
139
  /**
134
140
  * Commit one frame.
135
141
  *
136
- * Ignored when the session is not running, so a frame that lands after `stop()` — the readback
137
- * for a frame already submitted, which is the ordinary case — is dropped rather than throwing
138
- * inside somebody's render loop.
142
+ * Taken for as long as the stream is open: from `start()` until the capture is finished, which
143
+ * `stop()` holds off until every frame already begun has landed. Ignored before `start()`, once
144
+ * the capture is finished, and past the frame limit — frames begun before the limit was reached
145
+ * still land after it — rather than throwing inside somebody's render loop.
139
146
  *
140
147
  * @param {GPUProfileFrame} frame
141
148
  * @returns {void}
@@ -151,17 +158,24 @@ export class GPUProfileSession {
151
158
  */
152
159
  snapshot(): ArrayBuffer;
153
160
  /**
154
- * End the recording and hand back the capture.
161
+ * End the recording, and resolve with the capture once every frame already begun has landed.
162
+ *
163
+ * No frame is begun after this — {@link begin_frame} hands out nothing — but the ones that were
164
+ * are kept. A frame is committed when its timestamp readback resolves, a `mapAsync` behind its
165
+ * submit, so when `stop()` is called the last frame or two are always still on their way; behind
166
+ * a first-use pipeline compile, which holds the queue for seconds, every frame of a short capture
167
+ * can be. Finishing the stream on the spot threw all of those away without a word.
155
168
  *
156
- * Calling it twice returns the same bytes rather than complaining; a session that hit its
157
- * frame limit has already stopped itself, and the caller awaiting `stop()` should still get
169
+ * Calling it again resolves with the same capture rather than complaining; a session that hit
170
+ * its frame limit has already stopped itself, and the caller awaiting `stop()` should still get
158
171
  * the capture.
159
172
  *
160
- * @returns {ArrayBuffer}
173
+ * @returns {Promise<ArrayBuffer>}
161
174
  */
162
- stop(): ArrayBuffer;
175
+ stop(): Promise<ArrayBuffer>;
163
176
  /**
164
- * Resolves with the capture when the session ends, whichever way it ends.
177
+ * Resolves with the capture when the session ends, whichever way it ends — after the frames
178
+ * begun before the end have landed.
165
179
  *
166
180
  * @returns {Promise<ArrayBuffer>}
167
181
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GPUProfileSession.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/device/timing/profile/GPUProfileSession.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IAqGI;;;;;;OAMG;IACH;QAL4B,KAAK,GAAtB,MAAM;QACW,WAAW,GAA5B,MAAM;QAEW,IAAI,GAArB,MAAM;OAkBhB;IA7DD;;;;;;;OAOG;IACH,6BAEC;IAED;;;;;;OAMG;IACH,aAFU,MAAM,CAEkB;IAElC;;;;;OAKG;IACH,6BAA8B;IAE9B;;;;;;OAMG;IACH,yBAA0B;IA2B1B;;OAEG;IACH,oBAEC;IAED;;OAEG;IACH,0BAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;;;OAKG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,SAFa,IAAI,CAqBhB;IAED;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,gBAAgB,GAAC,IAAI,CAkBjC;IAED;;;;;;OAMG;IACH,oBAJW,gBAAgB,iBAChB,MAAM,GACJ,IAAI,CAMhB;IAsCD;;;;;;;;;OASG;IACH,oBAHW,eAAe,GACb,IAAI,CAkEhB;IAED;;;;;;;OAOG;IACH,YAFa,WAAW,CAMvB;IAED;;;;;;;;OAQG;IACH,QAFa,WAAW,CAiBvB;IAOD;;;;OAIG;IACH,iCAaC;;CACJ;8BAzcY,OAAO,sBAAsB,EAAE,eAAe;+BAZ5B,qBAAqB;iCAFnB,uBAAuB"}
1
+ {"version":3,"file":"GPUProfileSession.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/device/timing/profile/GPUProfileSession.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IAkHI;;;;;;OAMG;IACH;QAL4B,KAAK,GAAtB,MAAM;QACW,WAAW,GAA5B,MAAM;QAEW,IAAI,GAArB,MAAM;OAkBhB;IA9DD;;;;;;;OAOG;IACH,6BAEC;IAED;;;;;;OAMG;IACH,aAFU,MAAM,CAEkB;IAElC;;;;;OAKG;IACH,6BAA8B;IAE9B;;;;;;;OAOG;IACH,yBAA0B;IA2B1B;;OAEG;IACH,oBAEC;IAED;;;;;;OAMG;IACH,0BAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;;;OAKG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,SAFa,IAAI,CAqBhB;IAED;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,gBAAgB,GAAC,IAAI,CAoBjC;IAED;;;;;;;OAOG;IACH,oBAJW,gBAAgB,iBAChB,MAAM,GACJ,IAAI,CAiBhB;IAwDD;;;;;;;;;;OAUG;IACH,oBAHW,eAAe,GACb,IAAI,CAWhB;IAsED;;;;;;;OAOG;IACH,YAFa,WAAW,CAMvB;IAED;;;;;;;;;;;;;;OAcG;IACH,QAFa,QAAQ,WAAW,CAAC,CAehC;IAkBD;;;;;OAKG;IACH,iCAaC;;CACJ;8BAxhBY,OAAO,sBAAsB,EAAE,eAAe;+BAZ5B,qBAAqB;iCAFnB,uBAAuB"}