@fps-games/vfx 0.3.2 → 0.3.4

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 (234) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -5
  3. package/dist/effects/treasure-attention/index.d.ts +1 -1
  4. package/package.json +6 -5
  5. package/tooling/vfx-cli.mjs +31 -22
  6. package/tooling/vfx-package-resolution.mjs +8 -8
  7. package/docs/AUTHORING_EFFECTS.md +0 -297
  8. package/docs/INTEGRATION.md +0 -194
  9. package/docs/VFX_LIBRARY_ARCHITECTURE_chatgpt.md +0 -1580
  10. package/docs/VFX_LIBRARY_EXECUTION_PLAN.md +0 -229
  11. package/docs/VFX_LIBRARY_PLAN.md +0 -546
  12. package/docs/hit-flash-red-method.md +0 -155
  13. package/docs/treasure_attention_fx_babylonjs_guide.md +0 -901
  14. package/docs/vfx-ab/RESULTS.md +0 -35
  15. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/after.png +0 -0
  16. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/before.png +0 -0
  17. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/after.png +0 -0
  18. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/before.png +0 -0
  19. package/docs/vfx-integration_chatgpt.md +0 -462
  20. package/docs/vfx-placement-design.md +0 -164
  21. package/docs/weapon-trail-visualization.html +0 -241
  22. package/packages/EffectPackageService.ts +0 -346
  23. package/packages/SceneVfxService.ts +0 -96
  24. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/runtime/simpleMeshEffect.v1.js +0 -333
  25. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.frag.glsl +0 -25
  26. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.vert.glsl +0 -11
  27. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/textures/effect_jianbian.png +0 -0
  28. package/packages/build.mesh.yellow_build_upgrade_indicator/effect.json +0 -927
  29. package/packages/build.mesh.yellow_build_upgrade_indicator/media/contact-sheet.png +0 -0
  30. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.gif +0 -0
  31. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.mp4 +0 -0
  32. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.webm +0 -0
  33. package/packages/build.mesh.yellow_build_upgrade_indicator/media/thumbnail.png +0 -0
  34. package/packages/build.mesh.yellow_build_upgrade_indicator/metadata/description.json +0 -197
  35. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-effect.original.json +0 -895
  36. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-normalized-vfx-to-babylon-report.json +0 -241
  37. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-overrides.json +0 -542
  38. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-tuning-report.json +0 -69
  39. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/asset-map.json +0 -125
  40. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/lineage.json +0 -44
  41. package/packages/build.particle.golden_upgrade_starburst/assets/runtime/particleEmitter.v1.js +0 -210
  42. package/packages/build.particle.golden_upgrade_starburst/assets/textures/effect_guangdian.png +0 -0
  43. package/packages/build.particle.golden_upgrade_starburst/effect.json +0 -880
  44. package/packages/build.particle.golden_upgrade_starburst/media/contact-sheet.png +0 -0
  45. package/packages/build.particle.golden_upgrade_starburst/media/preview.gif +0 -0
  46. package/packages/build.particle.golden_upgrade_starburst/media/preview.mp4 +0 -0
  47. package/packages/build.particle.golden_upgrade_starburst/media/preview.webm +0 -0
  48. package/packages/build.particle.golden_upgrade_starburst/media/thumbnail.png +0 -0
  49. package/packages/build.particle.golden_upgrade_starburst/metadata/description.json +0 -161
  50. package/packages/build.particle.golden_upgrade_starburst/provenance/03-effect.original.json +0 -762
  51. package/packages/build.particle.golden_upgrade_starburst/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  52. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-overrides.json +0 -436
  53. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-tuning-report.json +0 -40
  54. package/packages/build.particle.golden_upgrade_starburst/provenance/asset-map.json +0 -115
  55. package/packages/build.particle.golden_upgrade_starburst/provenance/lineage.json +0 -40
  56. package/packages/build.particle.orange_upgrade_transform_sparks/assets/runtime/particleEmitter.v1.js +0 -210
  57. package/packages/build.particle.orange_upgrade_transform_sparks/assets/textures/b5b27ab1-e740-4398-b407-848fc2b2c897.png +0 -0
  58. package/packages/build.particle.orange_upgrade_transform_sparks/effect.json +0 -887
  59. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.gif +0 -0
  60. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.mp4 +0 -0
  61. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.webm +0 -0
  62. package/packages/build.particle.orange_upgrade_transform_sparks/media/thumbnail.png +0 -0
  63. package/packages/build.particle.orange_upgrade_transform_sparks/metadata/description.json +0 -179
  64. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-effect.original.json +0 -859
  65. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  66. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-overrides.json +0 -478
  67. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-tuning-report.json +0 -40
  68. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/asset-map.json +0 -114
  69. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/lineage.json +0 -41
  70. package/packages/build.particle.wood_chip_dust_burst/assets/runtime/particleEmitter.v1.js +0 -210
  71. package/packages/build.particle.wood_chip_dust_burst/assets/textures/effect_yanwu4.png +0 -0
  72. package/packages/build.particle.wood_chip_dust_burst/assets/textures/suipian3.png +0 -0
  73. package/packages/build.particle.wood_chip_dust_burst/effect.json +0 -1400
  74. package/packages/build.particle.wood_chip_dust_burst/media/contact-sheet.png +0 -0
  75. package/packages/build.particle.wood_chip_dust_burst/media/preview.gif +0 -0
  76. package/packages/build.particle.wood_chip_dust_burst/media/preview.mp4 +0 -0
  77. package/packages/build.particle.wood_chip_dust_burst/media/preview.webm +0 -0
  78. package/packages/build.particle.wood_chip_dust_burst/media/thumbnail.png +0 -0
  79. package/packages/build.particle.wood_chip_dust_burst/metadata/description.json +0 -173
  80. package/packages/build.particle.wood_chip_dust_burst/provenance/03-effect.original.json +0 -1277
  81. package/packages/build.particle.wood_chip_dust_burst/provenance/03-normalized-vfx-to-babylon-report.json +0 -329
  82. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-overrides.json +0 -749
  83. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-tuning-report.json +0 -60
  84. package/packages/build.particle.wood_chip_dust_burst/provenance/asset-map.json +0 -146
  85. package/packages/build.particle.wood_chip_dust_burst/provenance/lineage.json +0 -69
  86. package/packages/effects/building-upgrade/effect.json +0 -6
  87. package/packages/effects/building-upgrade/index.ts +0 -387
  88. package/packages/effects/character-entrance/effect.json +0 -6
  89. package/packages/effects/character-entrance/index.ts +0 -308
  90. package/packages/effects/coin-burst/index.ts +0 -48
  91. package/packages/effects/comet-trail-flame/assets/textures/trail_5x4.webp +0 -0
  92. package/packages/effects/comet-trail-flame/index.ts +0 -107
  93. package/packages/effects/conveyor-upgrade/effect.json +0 -6
  94. package/packages/effects/conveyor-upgrade/index.ts +0 -401
  95. package/packages/effects/debris-smoke/assets/models/rock_debris.glb +0 -0
  96. package/packages/effects/debris-smoke/assets/textures/smoke22.webp +0 -0
  97. package/packages/effects/debris-smoke/index.ts +0 -102
  98. package/packages/effects/door_open_gold_flakes/assets/runtime/goldFlakes.v1.js +0 -397
  99. package/packages/effects/door_open_gold_flakes/door_open_gold_flakes.json +0 -498
  100. package/packages/effects/door_open_gold_flakes/index.ts +0 -11
  101. package/packages/effects/electric-arc/assets/textures/spark_4x4.webp +0 -0
  102. package/packages/effects/electric-arc/index.ts +0 -63
  103. package/packages/effects/energy-shield/effect.json +0 -7
  104. package/packages/effects/energy-shield/index.ts +0 -432
  105. package/packages/effects/explosion/assets/textures/baozha29.webp +0 -0
  106. package/packages/effects/explosion/assets/textures/glow01.webp +0 -0
  107. package/packages/effects/explosion/assets/textures/lizi01.webp +0 -0
  108. package/packages/effects/explosion/assets/textures/xulie_lizibaozha02_5x5.webp +0 -0
  109. package/packages/effects/explosion/index.ts +0 -115
  110. package/packages/effects/ground-tile-upgrade/effect.json +0 -6
  111. package/packages/effects/ground-tile-upgrade/index.ts +0 -410
  112. package/packages/effects/hit-flash/index.ts +0 -77
  113. package/packages/effects/laser-beam/assets/textures/laser_glow.webp +0 -0
  114. package/packages/effects/laser-beam/assets/textures/laser_noise.webp +0 -0
  115. package/packages/effects/laser-beam/index.ts +0 -6
  116. package/packages/effects/laser-beam-factory.ts +0 -146
  117. package/packages/effects/lumber-cart-suction/effect.json +0 -6
  118. package/packages/effects/lumber-cart-suction/index.ts +0 -399
  119. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb +0 -0
  120. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/.active +0 -1
  121. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/1781589063890_upload.glb +0 -0
  122. package/packages/effects/lumber-debris-scatter/assets/runtime/solidParticleScatter.v1.js +0 -236
  123. package/packages/effects/lumber-debris-scatter/effect.json +0 -228
  124. package/packages/effects/lumber-debris-scatter/index.ts +0 -780
  125. package/packages/effects/lumber_vehicle_gear_spin/assets/runtime/gearSpin.v1.js +0 -202
  126. package/packages/effects/lumber_vehicle_gear_spin/index.ts +0 -11
  127. package/packages/effects/lumber_vehicle_gear_spin/lumber_vehicle_gear_spin.json +0 -338
  128. package/packages/effects/lumber_vehicle_upgrade_aura/assets/runtime/upgradeAura.v1.js +0 -353
  129. package/packages/effects/lumber_vehicle_upgrade_aura/index.ts +0 -13
  130. package/packages/effects/lumber_vehicle_upgrade_aura/lumber_vehicle_upgrade_aura.json +0 -365
  131. package/packages/effects/lumber_vehicle_wood_chips/assets/runtime/solidParticleScatter.v1.js +0 -310
  132. package/packages/effects/lumber_vehicle_wood_chips/index.ts +0 -11
  133. package/packages/effects/lumber_vehicle_wood_chips/lumber_vehicle_wood_chips.json +0 -335
  134. package/packages/effects/monster-hit/index.ts +0 -129
  135. package/packages/effects/player-upgrade/effect.json +0 -6
  136. package/packages/effects/player-upgrade/index.ts +0 -640
  137. package/packages/effects/pulse-laser-volley/assets/textures/bolt_guangshu.webp +0 -0
  138. package/packages/effects/pulse-laser-volley/index.ts +0 -215
  139. package/packages/effects/resource-collect-sparkles/effect.json +0 -6
  140. package/packages/effects/resource-collect-sparkles/index.ts +0 -254
  141. package/packages/effects/run-footstep-dust/assets/runtime/runFootstepDust.v1.js +0 -215
  142. package/packages/effects/run-footstep-dust/effect.json +0 -183
  143. package/packages/effects/run-footstep-dust/index.ts +0 -377
  144. package/packages/effects/space-shared.ts +0 -120
  145. package/packages/effects/thruster-flame/index.ts +0 -306
  146. package/packages/effects/treasure-attention/effect.json +0 -7
  147. package/packages/effects/treasure-attention/index.ts +0 -630
  148. package/packages/effects/tree-chop-dust/assets/textures/tree_chop_dust_atlas.png +0 -0
  149. package/packages/effects/tree-chop-dust/effect.json +0 -8
  150. package/packages/effects/tree-chop-dust/index.ts +0 -202
  151. package/packages/effects/tree-leaf-chop-burst/assets/runtime/particleEmitter.v1.js +0 -303
  152. package/packages/effects/tree-leaf-chop-burst/assets/textures/tree_leaf_chop_burst_leaf_atlas.png +0 -0
  153. package/packages/effects/tree-leaf-chop-burst/effect.json +0 -498
  154. package/packages/effects/tree-leaf-chop-burst/index.ts +0 -294
  155. package/packages/effects/tree_chop_dust_burst/assets/runtime/particleEmitter.v1.js +0 -318
  156. package/packages/effects/tree_chop_dust_burst/assets/textures/tree_chop_dust_burst_dust.png +0 -0
  157. package/packages/effects/tree_chop_dust_burst/index.ts +0 -13
  158. package/packages/effects/tree_chop_dust_burst/tree_chop_dust_burst.json +0 -412
  159. package/packages/effects/ufo-thread-flame/assets/textures/flame_flow.webp +0 -0
  160. package/packages/effects/ufo-thread-flame/assets/textures/flame_spike.webp +0 -0
  161. package/packages/effects/ufo-thread-flame/index.ts +0 -153
  162. package/packages/effects/vehicle-exhaust-smoke/assets/textures/vehicle_exhaust_smoke_atlas.png +0 -0
  163. package/packages/effects/vehicle-exhaust-smoke/effect.json +0 -8
  164. package/packages/effects/vehicle-exhaust-smoke/index.ts +0 -298
  165. package/packages/effects/vehicle-upgrade/effect.json +0 -6
  166. package/packages/effects/vehicle-upgrade/index.ts +0 -404
  167. package/packages/effects/weapon-trail/assets/textures/trail_wedge.png +0 -0
  168. package/packages/effects/weapon-trail/index.ts +0 -317
  169. package/packages/effects/wood-crusher-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  170. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  171. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  172. package/packages/effects/wood-crusher-sawdust/index.ts +0 -43
  173. package/packages/effects/wood-crusher-sawdust/wood_crusher_sawdust.json +0 -592
  174. package/packages/effects/wood-cutter-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  175. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  176. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  177. package/packages/effects/wood-cutter-sawdust/index.ts +0 -43
  178. package/packages/effects/wood-cutter-sawdust/wood_cutter_sawdust.json +0 -592
  179. package/packages/effects/wood-sawdust-effect-factory.ts +0 -194
  180. package/packages/effects/wood_crusher_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  181. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  182. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  183. package/packages/effects/wood_crusher_sawdust/index.ts +0 -29
  184. package/packages/effects/wood_crusher_sawdust/wood_crusher_sawdust.json +0 -592
  185. package/packages/effects/wood_cutter_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  186. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  187. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  188. package/packages/effects/wood_cutter_sawdust/index.ts +0 -29
  189. package/packages/effects/wood_cutter_sawdust/wood_cutter_sawdust.json +0 -592
  190. package/packages/effects/wood_peel_material_test/assets/runtime/woodPeelMaterialTest.v1.js +0 -196
  191. package/packages/effects/wood_peel_material_test/index.ts +0 -11
  192. package/packages/effects/wood_peel_material_test/wood_peel_material_test.json +0 -136
  193. package/packages/env.particle.forest_edge_fog/assets/runtime/particleEmitter.v1.js +0 -210
  194. package/packages/env.particle.forest_edge_fog/assets/textures/f12a23c4-b924-4322-a260-3d982428f1e8.png +0 -0
  195. package/packages/env.particle.forest_edge_fog/assets/textures/yuan.png +0 -0
  196. package/packages/env.particle.forest_edge_fog/effect.json +0 -854
  197. package/packages/env.particle.forest_edge_fog/media/preview.gif +0 -0
  198. package/packages/env.particle.forest_edge_fog/media/preview.mp4 +0 -0
  199. package/packages/env.particle.forest_edge_fog/media/preview.webm +0 -0
  200. package/packages/env.particle.forest_edge_fog/media/thumbnail.png +0 -0
  201. package/packages/env.particle.forest_edge_fog/metadata/description.json +0 -148
  202. package/packages/env.particle.forest_edge_fog/provenance/03-effect.original.json +0 -827
  203. package/packages/env.particle.forest_edge_fog/provenance/03-normalized-vfx-to-babylon-report.json +0 -196
  204. package/packages/env.particle.forest_edge_fog/provenance/04-preview-overrides.json +0 -432
  205. package/packages/env.particle.forest_edge_fog/provenance/04-preview-tuning-report.json +0 -28
  206. package/packages/env.particle.forest_edge_fog/provenance/asset-map.json +0 -124
  207. package/packages/env.particle.forest_edge_fog/provenance/lineage.json +0 -41
  208. package/packages/generation.ts +0 -14
  209. package/packages/index.ts +0 -14
  210. package/packages/legacy-particle-runtime.ts +0 -113
  211. package/packages/manifestRuntimePackage.ts +0 -519
  212. package/packages/registry.ts +0 -85
  213. package/packages/rendering.ts +0 -13
  214. package/packages/resource.particle.viscous_oil_suction/assets/runtime/top_disk_suction/particleEmitter.v1.js +0 -424
  215. package/packages/resource.particle.viscous_oil_suction/assets/textures/Glow ad.png +0 -0
  216. package/packages/resource.particle.viscous_oil_suction/effect.json +0 -1254
  217. package/packages/resource.particle.viscous_oil_suction/media/preview.gif +0 -0
  218. package/packages/resource.particle.viscous_oil_suction/media/preview.mp4 +0 -0
  219. package/packages/resource.particle.viscous_oil_suction/media/preview.webm +0 -0
  220. package/packages/resource.particle.viscous_oil_suction/media/thumbnail.png +0 -0
  221. package/packages/resource.particle.viscous_oil_suction/metadata/description.json +0 -122
  222. package/packages/resource.particle.viscous_oil_suction/provenance/03-effect.original.json +0 -1051
  223. package/packages/resource.particle.viscous_oil_suction/provenance/03-normalized-vfx-to-babylon-report.json +0 -200
  224. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-overrides.json +0 -581
  225. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-tuning-report.json +0 -28
  226. package/packages/resource.particle.viscous_oil_suction/provenance/asset-map.json +0 -111
  227. package/packages/resource.particle.viscous_oil_suction/provenance/lineage.json +0 -45
  228. package/packages/types.ts +0 -195
  229. package/tooling/check-dist-runtime.mjs +0 -166
  230. package/tooling/generate-index.mjs +0 -55
  231. package/tooling/test-guardrails.mjs +0 -157
  232. package/tooling/validate-boundary.mjs +0 -92
  233. package/tooling/validate-effects.mjs +0 -304
  234. package/tooling/validate.mjs +0 -53
@@ -1,854 +0,0 @@
1
- {
2
- "schemaVersion": "vfx-effect-package/1.0",
3
- "id": "env.particle.forest_edge_fog",
4
- "name": {
5
- "zh": "森林边缘雾气",
6
- "en": "Forest Edge Fog"
7
- },
8
- "source": {
9
- "engine": "cocos",
10
- "engineVersion": "3.8.7",
11
- "projectPath": "assets/ArtResources/Effect/Effect_Evn_Fog/prefab",
12
- "rootAsset": "assets/ArtResources/Effect/Effect_Evn_Fog/prefab/Effect_Evn_Fog.prefab",
13
- "sourceId": "34bb52e3-a9a3-45a3-95aa-055fff82e832",
14
- "extractedAt": "2026-05-19T14:51:08.022Z",
15
- "extractorVersion": "normalized-vfx-to-babylon/0.1.0",
16
- "canonicalSource": "gcs",
17
- "sourceArchivePrefix": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/cocos",
18
- "legacyId": "world.particle.effect_evn_fog"
19
- },
20
- "assets": {
21
- "textures": [
22
- {
23
- "kind": "texture",
24
- "id": "yuan",
25
- "packagePath": "assets/textures/yuan.png",
26
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/cocos/assets/ArtResources/Effect/Effect_Evn_Fog/mat/yuan.png",
27
- "sourceId": "d48ae210-4e88-4021-b408-164a096c2587@6c48a",
28
- "width": 64,
29
- "height": 64
30
- },
31
- {
32
- "kind": "texture",
33
- "id": "f12a23c4_b924_4322_a260_3d982428f1e8",
34
- "packagePath": "assets/textures/f12a23c4-b924-4322-a260-3d982428f1e8.png",
35
- "sourcePath": "/Users/admin/Code/FPS/fps-vfx-agent-cocos-to-babylon/scaffolds/cocos-vfx-scaffold/library/f1/f12a23c4-b924-4322-a260-3d982428f1e8.png",
36
- "sourceId": "f12a23c4-b924-4322-a260-3d982428f1e8@6c48a",
37
- "width": 32,
38
- "height": 32
39
- }
40
- ],
41
- "materials": [
42
- {
43
- "kind": "material",
44
- "id": "env_cloud",
45
- "packagePath": "source/cocos/assets/ArtResources/Effect/Effect_Evn_Fog/mat/env_cloud.mtl",
46
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/cocos/assets/ArtResources/Effect/Effect_Evn_Fog/mat/env_cloud.mtl",
47
- "sourceId": "aef8d5b0-ab81-4929-9a24-8e16d42f0c35"
48
- }
49
- ],
50
- "shaders": [],
51
- "meshes": [],
52
- "sounds": [],
53
- "scripts": [
54
- {
55
- "kind": "script",
56
- "id": "particle_emitter_v1",
57
- "packagePath": "assets/runtime/particleEmitter.v1.js",
58
- "runtimeId": "particleEmitter/v1",
59
- "engine": "babylon",
60
- "moduleFormat": "esm",
61
- "exports": [
62
- "createParticleEmitterRuntime",
63
- "runtimeContract"
64
- ],
65
- "mimeType": "text/javascript"
66
- }
67
- ],
68
- "raw": [
69
- {
70
- "kind": "raw",
71
- "id": "02-normalized-vfx",
72
- "packagePath": "source/02-normalized-vfx.json",
73
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/02-normalized-vfx.json"
74
- },
75
- {
76
- "kind": "raw",
77
- "id": "01-source-dump",
78
- "packagePath": "source/01-source-dump.json",
79
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/01-source-dump.json"
80
- },
81
- {
82
- "kind": "raw",
83
- "id": "effect_evn_fog",
84
- "packagePath": "source/raw/Effect_Evn_Fog.prefab",
85
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/cocos/assets/ArtResources/Effect/Effect_Evn_Fog/prefab/Effect_Evn_Fog.prefab",
86
- "sourceId": "34bb52e3-a9a3-45a3-95aa-055fff82e832"
87
- },
88
- {
89
- "kind": "raw",
90
- "id": "effect_evn_fog.meta",
91
- "packagePath": "source/raw/Effect_Evn_Fog.prefab.meta",
92
- "sourcePath": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source/cocos/assets/ArtResources/Effect/Effect_Evn_Fog/prefab/Effect_Evn_Fog.prefab.meta",
93
- "sourceId": "34bb52e3-a9a3-45a3-95aa-055fff82e832"
94
- }
95
- ]
96
- },
97
- "emitters": [
98
- {
99
- "name": "Effect_Evn_Fog",
100
- "sourceNodeName": "Effect_Evn_Fog",
101
- "enabled": true,
102
- "blendMode": "STANDARD",
103
- "particleTexturePath": "assets/textures/yuan.png",
104
- "materialSourcePath": "assets/materials/env_cloud.mtl",
105
- "capacity": 200,
106
- "manualEmitCount": 0,
107
- "emitRate": 50,
108
- "minSize": 4,
109
- "maxSize": 4,
110
- "minLifeTime": 4,
111
- "maxLifeTime": 4,
112
- "minEmitPower": 0.2,
113
- "maxEmitPower": 0.2,
114
- "updateSpeed": 0.01,
115
- "gravity": {
116
- "x": 0,
117
- "y": 0,
118
- "z": 0
119
- },
120
- "shape": {
121
- "sourceType": "Box",
122
- "sourceEnum": 0,
123
- "radius": 1,
124
- "radiusRange": 1,
125
- "angle": 0.4363323129985824,
126
- "type": "Box",
127
- "direction1": {
128
- "x": 0,
129
- "y": 1,
130
- "z": 0
131
- },
132
- "direction2": {
133
- "x": 0,
134
- "y": 1,
135
- "z": 0
136
- },
137
- "minEmitBox": {
138
- "x": -10,
139
- "y": -2.5,
140
- "z": -10
141
- },
142
- "maxEmitBox": {
143
- "x": 10,
144
- "y": 2.5,
145
- "z": 10
146
- }
147
- },
148
- "renderColor": {
149
- "color": {
150
- "r": 0.7529411764705882,
151
- "g": 0.7529411764705882,
152
- "b": 0.7529411764705882,
153
- "a": 0.2901960784313726
154
- },
155
- "colorIntensity": 2,
156
- "alphaIntensity": 2
157
- },
158
- "alphaKeys": [
159
- {
160
- "time": 0,
161
- "alpha": 0
162
- },
163
- {
164
- "time": 0.3075117370892019,
165
- "alpha": 1
166
- },
167
- {
168
- "time": 0.7206572769953051,
169
- "alpha": 1
170
- },
171
- {
172
- "time": 0.9765258215962441,
173
- "alpha": 0
174
- }
175
- ],
176
- "colorKeys": [],
177
- "sizeKeys": [],
178
- "runtime": {
179
- "adapter": "particleEmitter/v1",
180
- "stopAfterSeconds": 999999
181
- },
182
- "source": {
183
- "simulationSpace": 1,
184
- "renderMode": 0,
185
- "velocityScale": 1,
186
- "lengthScale": 1,
187
- "alignSpace": 2,
188
- "normalizedVfxEmitterId": "Effect_Evn_Fog"
189
- },
190
- "sourceMap": null,
191
- "mapping": [
192
- {
193
- "cocos": "$[2]._capacity",
194
- "babylon": "capacity"
195
- },
196
- {
197
- "cocos": "$[2].rateOverTime",
198
- "babylon": "emitRate"
199
- },
200
- {
201
- "cocos": "$[2].bursts[0].count",
202
- "babylon": "manualEmitCount"
203
- },
204
- {
205
- "cocos": "$[2].startSize",
206
- "babylon": "minSize/maxSize"
207
- },
208
- {
209
- "cocos": "$[2].startLifetime",
210
- "babylon": "minLifeTime/maxLifeTime"
211
- },
212
- {
213
- "cocos": "$[2].startSpeed",
214
- "babylon": "minEmitPower/maxEmitPower"
215
- },
216
- {
217
- "cocos": "$[2].rotationOverLifetime.z",
218
- "babylon": "minAngularSpeed/maxAngularSpeed"
219
- },
220
- {
221
- "cocos": "$[2].simulationSpeed",
222
- "babylon": "updateSpeed"
223
- },
224
- {
225
- "cocos": "$[2].gravityModifier",
226
- "babylon": "gravity"
227
- },
228
- {
229
- "cocos": "$[2]._renderMode",
230
- "babylon": "billboardMode"
231
- },
232
- {
233
- "cocos": "$[2]._velocityScale",
234
- "babylon": "stretchedBillboard.velocityScale"
235
- },
236
- {
237
- "cocos": "$[2]._lengthScale",
238
- "babylon": "stretchedBillboard.lengthScale"
239
- },
240
- {
241
- "cocos": "$[2]._velocityScale + $[2]._lengthScale + $[2].startSpeed",
242
- "babylon": "minScaleY/maxScaleY"
243
- },
244
- {
245
- "cocos": "$[2].startColor + material._props[0].tintColor",
246
- "babylon": "renderColor.color + renderColor.colorIntensity/renderColor.alphaIntensity -> color1/color2/colorDead"
247
- },
248
- {
249
- "cocos": "$[2]._shapeModule",
250
- "babylon": "shape"
251
- }
252
- ],
253
- "colorMapping": {
254
- "renderFormula": "2.0 * startColor * materialTintColor * texture",
255
- "multiplier": 2,
256
- "alphaMultiplier": 2,
257
- "cocosStartColor": {
258
- "r": 1,
259
- "g": 1,
260
- "b": 1,
261
- "a": 1
262
- },
263
- "cocosMaterialTintColor": {
264
- "r": 0.7529411764705882,
265
- "g": 0.7529411764705882,
266
- "b": 0.7529411764705882,
267
- "a": 0.2901960784313726
268
- },
269
- "renderColor": {
270
- "r": 0.7529411764705882,
271
- "g": 0.7529411764705882,
272
- "b": 0.7529411764705882,
273
- "a": 0.2901960784313726
274
- },
275
- "babylonColor": {
276
- "r": 1.5058823529411764,
277
- "g": 1.5058823529411764,
278
- "b": 1.5058823529411764,
279
- "a": 0.5803921568627451
280
- },
281
- "babylonColorDead": {
282
- "r": 1.5058823529411764,
283
- "g": 1.5058823529411764,
284
- "b": 1.5058823529411764,
285
- "a": 0
286
- }
287
- },
288
- "cocosSource": {
289
- "source": {
290
- "engine": "cocos",
291
- "componentIndex": 2,
292
- "componentPath": "$[2]",
293
- "nodeIndex": 1,
294
- "rendererIndex": 59,
295
- "componentType": "cc.ParticleSystem"
296
- },
297
- "lifecycle": {
298
- "duration": 5,
299
- "loop": true,
300
- "playOnAwake": true,
301
- "prewarm": true,
302
- "simulationSpeed": 1,
303
- "simulationSpace": 1
304
- },
305
- "transform": {
306
- "position": {
307
- "x": -40.687,
308
- "y": 6.557,
309
- "z": -19.19
310
- },
311
- "rotation": {
312
- "x": 0,
313
- "y": 0,
314
- "z": 0
315
- },
316
- "scale": {
317
- "x": 1,
318
- "y": 1,
319
- "z": 1
320
- }
321
- },
322
- "emission": {
323
- "capacity": 200,
324
- "rateOverTime": 50,
325
- "rateOverDistance": 0,
326
- "bursts": []
327
- },
328
- "lifetime": {
329
- "startLifetime": {
330
- "mode": "constant",
331
- "min": 4,
332
- "max": 4
333
- },
334
- "min": 4,
335
- "max": 4
336
- },
337
- "size": {
338
- "startSize": {
339
- "mode": "constant",
340
- "min": 4,
341
- "max": 4
342
- },
343
- "min": 4,
344
- "max": 4,
345
- "overLifetime": {
346
- "enabled": false,
347
- "keys": [],
348
- "separateAxes": false,
349
- "axisKeys": null
350
- }
351
- },
352
- "speed": {
353
- "startSpeed": {
354
- "mode": "constant",
355
- "min": 0.2,
356
- "max": 0.2
357
- },
358
- "min": 0.2,
359
- "max": 0.2
360
- },
361
- "gravity": {
362
- "modifier": 0,
363
- "vector": {
364
- "x": 0,
365
- "y": 0,
366
- "z": 0
367
- }
368
- },
369
- "shape": {
370
- "enabled": true,
371
- "type": "Box",
372
- "sourceEnum": 0,
373
- "radius": 1,
374
- "radiusThickness": 1,
375
- "angle": 0.4363323129985824,
376
- "scale": {
377
- "__type__": "cc.Vec3",
378
- "x": 20,
379
- "y": 5,
380
- "z": 20
381
- },
382
- "position": {
383
- "__type__": "cc.Vec3",
384
- "x": 0,
385
- "y": 0,
386
- "z": 0
387
- },
388
- "rotation": {
389
- "__type__": "cc.Vec3",
390
- "x": 0,
391
- "y": 0,
392
- "z": 0
393
- },
394
- "minEmit": {
395
- "x": -10,
396
- "y": -2.5,
397
- "z": -10
398
- },
399
- "maxEmit": {
400
- "x": 10,
401
- "y": 2.5,
402
- "z": 10
403
- }
404
- },
405
- "render": {
406
- "mode": 0,
407
- "velocityScale": 1,
408
- "lengthScale": 1,
409
- "alignSpace": 2,
410
- "blendMode": "STANDARD",
411
- "material": {
412
- "uuid": "aef8d5b0-ab81-4929-9a24-8e16d42f0c35",
413
- "path": "assets/ArtResources/Effect/Effect_Evn_Fog/mat/env_cloud.mtl",
414
- "techIdx": 1
415
- },
416
- "texture": {
417
- "uuid": "d48ae210-4e88-4021-b408-164a096c2587@6c48a",
418
- "path": "assets/ArtResources/Effect/Effect_Evn_Fog/mat/yuan.png",
419
- "width": 64,
420
- "height": 64
421
- },
422
- "mesh": null,
423
- "effectAsset": {
424
- "uuid": "d1346436-ac96-4271-b863-1f4fdead95b0",
425
- "name": "particles/builtin-particle",
426
- "classification": "builtin-effect"
427
- }
428
- },
429
- "color": {
430
- "startColor": {
431
- "r": 1,
432
- "g": 1,
433
- "b": 1,
434
- "a": 1
435
- },
436
- "materialTintColor": {
437
- "r": 0.7529411764705882,
438
- "g": 0.7529411764705882,
439
- "b": 0.7529411764705882,
440
- "a": 0.2901960784313726
441
- },
442
- "renderFormula": "2.0 * startColor * materialTintColor * texture",
443
- "overLifetime": {
444
- "enabled": true,
445
- "alphaKeys": [
446
- {
447
- "time": 0,
448
- "alpha": 0
449
- },
450
- {
451
- "time": 0.3075117370892019,
452
- "alpha": 1
453
- },
454
- {
455
- "time": 0.7206572769953051,
456
- "alpha": 1
457
- },
458
- {
459
- "time": 0.9765258215962441,
460
- "alpha": 0
461
- }
462
- ],
463
- "colorKeys": []
464
- }
465
- },
466
- "rotation": {
467
- "overLifetime": {
468
- "enabled": false,
469
- "z": {
470
- "mode": "constant",
471
- "min": 0,
472
- "max": 0
473
- }
474
- }
475
- },
476
- "modules": {
477
- "colorOverLifetime": {
478
- "enabled": true,
479
- "sourcePreservedIn": "source/02-normalized-vfx.json"
480
- },
481
- "sizeOvertime": {
482
- "enabled": false,
483
- "sourcePreservedIn": "source/02-normalized-vfx.json"
484
- },
485
- "rotationOvertime": {
486
- "enabled": false,
487
- "sourcePreservedIn": "source/02-normalized-vfx.json"
488
- },
489
- "velocityOvertime": {
490
- "enabled": false,
491
- "sourcePreservedIn": "source/02-normalized-vfx.json"
492
- },
493
- "forceOvertime": {
494
- "enabled": false,
495
- "sourcePreservedIn": "source/02-normalized-vfx.json"
496
- },
497
- "limitVelocityOvertime": {
498
- "enabled": false,
499
- "sourcePreservedIn": "source/02-normalized-vfx.json"
500
- },
501
- "textureAnimation": {
502
- "enabled": false,
503
- "sourcePreservedIn": "source/02-normalized-vfx.json"
504
- },
505
- "noise": {
506
- "enabled": false,
507
- "sourcePreservedIn": "source/02-normalized-vfx.json"
508
- },
509
- "trail": {
510
- "enabled": false,
511
- "sourcePreservedIn": "source/02-normalized-vfx.json"
512
- }
513
- }
514
- }
515
- }
516
- ],
517
- "runtime": {
518
- "space": "world",
519
- "lifecycle": "sustained",
520
- "anchor": {
521
- "defaultBone": null,
522
- "defaultMesh": null,
523
- "defaultOffset": {
524
- "x": 0,
525
- "y": 1,
526
- "z": 0
527
- }
528
- },
529
- "start": [
530
- "Instantiate Babylon particle systems from 03-effect.json emitters"
531
- ],
532
- "update": [
533
- "Apply Babylon tunable parameter overrides"
534
- ],
535
- "stop": [
536
- "Stop and dispose particle systems"
537
- ],
538
- "adapters": [
539
- {
540
- "id": "particleEmitter/v1",
541
- "engine": "babylon",
542
- "entry": "assets/runtime/particleEmitter.v1.js",
543
- "moduleFormat": "esm",
544
- "exports": [
545
- "createParticleEmitterRuntime",
546
- "runtimeContract"
547
- ]
548
- }
549
- ]
550
- },
551
- "tunableParams": [
552
- {
553
- "key": "Effect_Evn_Fog.capacity",
554
- "labelZh": "Effect_Evn_Fog 容量",
555
- "type": "number",
556
- "default": 200,
557
- "min": 1,
558
- "max": 600,
559
- "step": 1,
560
- "target": {
561
- "emitter": "Effect_Evn_Fog",
562
- "property": "capacity",
563
- "operator": "set"
564
- }
565
- },
566
- {
567
- "key": "Effect_Evn_Fog.manualEmitCount",
568
- "labelZh": "Effect_Evn_Fog 一次性爆发数量",
569
- "type": "number",
570
- "default": 0,
571
- "min": 0,
572
- "max": 100,
573
- "step": 1,
574
- "target": {
575
- "emitter": "Effect_Evn_Fog",
576
- "property": "manualEmitCount",
577
- "operator": "set"
578
- }
579
- },
580
- {
581
- "key": "Effect_Evn_Fog.emitRate",
582
- "labelZh": "Effect_Evn_Fog 发射率",
583
- "type": "number",
584
- "default": 50,
585
- "min": 0,
586
- "max": 200,
587
- "step": 1,
588
- "unit": "particles/s",
589
- "target": {
590
- "emitter": "Effect_Evn_Fog",
591
- "property": "emitRate",
592
- "operator": "set"
593
- }
594
- },
595
- {
596
- "key": "Effect_Evn_Fog.minSize",
597
- "labelZh": "Effect_Evn_Fog 最小尺寸",
598
- "type": "number",
599
- "default": 4,
600
- "min": 0,
601
- "max": 12,
602
- "step": 0.01,
603
- "target": {
604
- "emitter": "Effect_Evn_Fog",
605
- "property": "minSize",
606
- "operator": "set"
607
- }
608
- },
609
- {
610
- "key": "Effect_Evn_Fog.maxSize",
611
- "labelZh": "Effect_Evn_Fog 最大尺寸",
612
- "type": "number",
613
- "default": 4,
614
- "min": 0,
615
- "max": 12,
616
- "step": 0.01,
617
- "target": {
618
- "emitter": "Effect_Evn_Fog",
619
- "property": "maxSize",
620
- "operator": "set"
621
- }
622
- },
623
- {
624
- "key": "Effect_Evn_Fog.minLifeTime",
625
- "labelZh": "Effect_Evn_Fog 最小生命周期",
626
- "type": "number",
627
- "default": 4,
628
- "min": 0,
629
- "max": 16,
630
- "step": 0.01,
631
- "unit": "s",
632
- "target": {
633
- "emitter": "Effect_Evn_Fog",
634
- "property": "minLifeTime",
635
- "operator": "set"
636
- }
637
- },
638
- {
639
- "key": "Effect_Evn_Fog.maxLifeTime",
640
- "labelZh": "Effect_Evn_Fog 最大生命周期",
641
- "type": "number",
642
- "default": 4,
643
- "min": 0,
644
- "max": 16,
645
- "step": 0.01,
646
- "unit": "s",
647
- "target": {
648
- "emitter": "Effect_Evn_Fog",
649
- "property": "maxLifeTime",
650
- "operator": "set"
651
- }
652
- },
653
- {
654
- "key": "Effect_Evn_Fog.minEmitPower",
655
- "labelZh": "Effect_Evn_Fog 最小发射力",
656
- "type": "number",
657
- "default": 0.2,
658
- "min": 0,
659
- "max": 1,
660
- "step": 0.01,
661
- "target": {
662
- "emitter": "Effect_Evn_Fog",
663
- "property": "minEmitPower",
664
- "operator": "set"
665
- }
666
- },
667
- {
668
- "key": "Effect_Evn_Fog.maxEmitPower",
669
- "labelZh": "Effect_Evn_Fog 最大发射力",
670
- "type": "number",
671
- "default": 0.2,
672
- "min": 0,
673
- "max": 1,
674
- "step": 0.01,
675
- "target": {
676
- "emitter": "Effect_Evn_Fog",
677
- "property": "maxEmitPower",
678
- "operator": "set"
679
- }
680
- },
681
- {
682
- "key": "Effect_Evn_Fog.updateSpeed",
683
- "labelZh": "Effect_Evn_Fog 模拟步长",
684
- "type": "number",
685
- "default": 0.01,
686
- "min": 0.0005,
687
- "max": 0.04,
688
- "step": 0.0005,
689
- "target": {
690
- "emitter": "Effect_Evn_Fog",
691
- "property": "updateSpeed",
692
- "operator": "set"
693
- }
694
- },
695
- {
696
- "key": "Effect_Evn_Fog.runtime.stopAfterSeconds",
697
- "labelZh": "Effect_Evn_Fog 播放时长",
698
- "type": "number",
699
- "default": 999999,
700
- "min": 0.1,
701
- "max": 10,
702
- "step": 0.1,
703
- "unit": "s",
704
- "target": {
705
- "emitter": "Effect_Evn_Fog",
706
- "property": "runtime.stopAfterSeconds",
707
- "operator": "set"
708
- }
709
- },
710
- {
711
- "key": "Effect_Evn_Fog.gravity",
712
- "labelZh": "Effect_Evn_Fog 重力",
713
- "type": "vector3",
714
- "default": {
715
- "x": 0,
716
- "y": 0,
717
- "z": 0
718
- },
719
- "target": {
720
- "emitter": "Effect_Evn_Fog",
721
- "property": "gravity",
722
- "operator": "set"
723
- }
724
- },
725
- {
726
- "key": "Effect_Evn_Fog.renderColor.color",
727
- "labelZh": "Effect_Evn_Fog renderColor.color",
728
- "type": "color",
729
- "default": {
730
- "r": 0.7529411764705882,
731
- "g": 0.7529411764705882,
732
- "b": 0.7529411764705882,
733
- "a": 0.2901960784313726
734
- },
735
- "target": {
736
- "emitter": "Effect_Evn_Fog",
737
- "property": "renderColor.color",
738
- "operator": "set"
739
- }
740
- },
741
- {
742
- "key": "Effect_Evn_Fog.renderColor.colorIntensity",
743
- "labelZh": "Effect_Evn_Fog renderColor.colorIntensity",
744
- "type": "number",
745
- "default": 2,
746
- "min": 0,
747
- "max": 8,
748
- "step": 0.05,
749
- "target": {
750
- "emitter": "Effect_Evn_Fog",
751
- "property": "renderColor.colorIntensity",
752
- "operator": "set"
753
- }
754
- },
755
- {
756
- "key": "Effect_Evn_Fog.renderColor.alphaIntensity",
757
- "labelZh": "Effect_Evn_Fog renderColor.alphaIntensity",
758
- "type": "number",
759
- "default": 2,
760
- "min": 0,
761
- "max": 8,
762
- "step": 0.05,
763
- "target": {
764
- "emitter": "Effect_Evn_Fog",
765
- "property": "renderColor.alphaIntensity",
766
- "operator": "set"
767
- }
768
- },
769
- {
770
- "key": "Effect_Evn_Fog.shape.type",
771
- "labelZh": "Effect_Evn_Fog 发射器形状",
772
- "type": "enum",
773
- "default": "Box",
774
- "options": [
775
- "Box",
776
- "Sphere",
777
- "Cone",
778
- "SphereDirected",
779
- "Hemisphere",
780
- "Mesh",
781
- "Unknown"
782
- ],
783
- "target": {
784
- "emitter": "Effect_Evn_Fog",
785
- "property": "shape.type",
786
- "operator": "set"
787
- }
788
- }
789
- ],
790
- "babylon": {
791
- "driver": "particle",
792
- "entryFile": "apps/vfx_asset_library/frontend/src/runtime/drivers/particleDriver.ts",
793
- "previewConfig": {
794
- "textureUrl": "assets/textures/yuan.png",
795
- "emitterCount": 1,
796
- "effectFile": "effect.json",
797
- "normalizedVfx": "source/02-normalized-vfx.json"
798
- }
799
- },
800
- "review": {
801
- "status": "tweaked",
802
- "artistNotes": [
803
- "Stage 3 auto-built from 02-normalized-vfx.json.",
804
- "Needs Babylon visual review and Stage 4 tuning before approval."
805
- ],
806
- "approvedBy": null,
807
- "approvedAt": null,
808
- "history": [
809
- {
810
- "at": "2026-05-20T09:28:52.232Z",
811
- "from": "auto",
812
- "to": "tweaked",
813
- "note": "Stage 4 static preview tuning."
814
- }
815
- ]
816
- },
817
- "recording": {
818
- "provider": "browser-mediarecorder",
819
- "recordedAt": "2026-05-20T09:28:53.132Z",
820
- "mimeType": "video/webm;codecs=vp9",
821
- "durationSec": 10,
822
- "fps": 30,
823
- "media": {
824
- "previewVideo": "media/preview.webm",
825
- "previewWebm": "media/preview.webm",
826
- "previewMp4": "media/preview.mp4",
827
- "previewGif": "media/preview.gif",
828
- "thumbnail": "media/thumbnail.png",
829
- "gcsUri": null
830
- }
831
- },
832
- "aiDescription": null,
833
- "search": {
834
- "tags": [
835
- "cocos",
836
- "particle",
837
- "stage3",
838
- "effect_evn_fog"
839
- ],
840
- "descriptionZh": "从 Cocos Normalized VFX Spec 自动构建的 Babylon 粒子特效,包含 1 个子发射器。",
841
- "descriptionEn": "Babylon particle effect built from a Cocos Normalized VFX Spec with 1 emitters.",
842
- "useCases": [
843
- "vfx preview",
844
- "cocos migration",
845
- "babylon integration"
846
- ],
847
- "negativeUseCases": [
848
- "approved final art without Stage 4 visual tuning"
849
- ]
850
- },
851
- "gcsPrefix": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog",
852
- "sourceArchivePrefix": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/source",
853
- "fullProvenancePrefix": "gs://fps-vfx-library/packages/env.particle.forest_edge_fog/provenance"
854
- }