@forgeax/engine-vfx 0.1.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 (108) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +214 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/__tests__/authoring-descriptor.unit.test.d.ts +2 -0
  5. package/dist/__tests__/authoring-descriptor.unit.test.d.ts.map +1 -0
  6. package/dist/__tests__/channel-input.unit.test.d.ts +2 -0
  7. package/dist/__tests__/channel-input.unit.test.d.ts.map +1 -0
  8. package/dist/__tests__/channel-inspect.unit.test.d.ts +2 -0
  9. package/dist/__tests__/channel-inspect.unit.test.d.ts.map +1 -0
  10. package/dist/__tests__/code-source-v2.unit.test.d.ts +2 -0
  11. package/dist/__tests__/code-source-v2.unit.test.d.ts.map +1 -0
  12. package/dist/__tests__/data-interface-contract.unit.test.d.ts +2 -0
  13. package/dist/__tests__/data-interface-contract.unit.test.d.ts.map +1 -0
  14. package/dist/__tests__/effect-contract.unit.test.d.ts +2 -0
  15. package/dist/__tests__/effect-contract.unit.test.d.ts.map +1 -0
  16. package/dist/__tests__/gpu-program-simulation-culling-owner.test-d.d.ts +2 -0
  17. package/dist/__tests__/gpu-program-simulation-culling-owner.test-d.d.ts.map +1 -0
  18. package/dist/__tests__/gpu-reflection-vocabulary-owner.test-d.d.ts +2 -0
  19. package/dist/__tests__/gpu-reflection-vocabulary-owner.test-d.d.ts.map +1 -0
  20. package/dist/__tests__/gpu-runtime.integration.test.d.ts +2 -0
  21. package/dist/__tests__/gpu-runtime.integration.test.d.ts.map +1 -0
  22. package/dist/__tests__/inspect-snapshot.unit.test.d.ts +2 -0
  23. package/dist/__tests__/inspect-snapshot.unit.test.d.ts.map +1 -0
  24. package/dist/__tests__/instance-public-api.unit.test.d.ts +2 -0
  25. package/dist/__tests__/instance-public-api.unit.test.d.ts.map +1 -0
  26. package/dist/__tests__/instance.unit.test.d.ts +2 -0
  27. package/dist/__tests__/instance.unit.test.d.ts.map +1 -0
  28. package/dist/__tests__/loader-v1-rejection.unit.test.d.ts +2 -0
  29. package/dist/__tests__/loader-v1-rejection.unit.test.d.ts.map +1 -0
  30. package/dist/__tests__/player-reflection.unit.test.d.ts +2 -0
  31. package/dist/__tests__/player-reflection.unit.test.d.ts.map +1 -0
  32. package/dist/__tests__/player-type.test-d.d.ts +2 -0
  33. package/dist/__tests__/player-type.test-d.d.ts.map +1 -0
  34. package/dist/__tests__/renderer-source.unit.test.d.ts +2 -0
  35. package/dist/__tests__/renderer-source.unit.test.d.ts.map +1 -0
  36. package/dist/__tests__/replay-canonical.unit.test.d.ts +2 -0
  37. package/dist/__tests__/replay-canonical.unit.test.d.ts.map +1 -0
  38. package/dist/__tests__/runtime-dist-isolation.test.d.ts +2 -0
  39. package/dist/__tests__/runtime-dist-isolation.test.d.ts.map +1 -0
  40. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +2 -0
  41. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +1 -0
  42. package/dist/__tests__/stage-source.unit.test.d.ts +2 -0
  43. package/dist/__tests__/stage-source.unit.test.d.ts.map +1 -0
  44. package/dist/__tests__/vfx-data-interface-vocabulary-owner.test-d.d.ts +2 -0
  45. package/dist/__tests__/vfx-data-interface-vocabulary-owner.test-d.d.ts.map +1 -0
  46. package/dist/__tests__/vfx-performance-contract.unit.test.d.ts +2 -0
  47. package/dist/__tests__/vfx-performance-contract.unit.test.d.ts.map +1 -0
  48. package/dist/__tests__/vfx-value-type-owner.test-d.d.ts +2 -0
  49. package/dist/__tests__/vfx-value-type-owner.test-d.d.ts.map +1 -0
  50. package/dist/assets/particle-effect-decoder.d.ts +3 -0
  51. package/dist/assets/particle-effect-decoder.d.ts.map +1 -0
  52. package/dist/authoring-descriptor.d.ts +60 -0
  53. package/dist/authoring-descriptor.d.ts.map +1 -0
  54. package/dist/code-source.d.ts +140 -0
  55. package/dist/code-source.d.ts.map +1 -0
  56. package/dist/data-interface.d.ts +53 -0
  57. package/dist/data-interface.d.ts.map +1 -0
  58. package/dist/effect-contract.d.ts +57 -0
  59. package/dist/effect-contract.d.ts.map +1 -0
  60. package/dist/gpu-loader.d.ts +33 -0
  61. package/dist/gpu-loader.d.ts.map +1 -0
  62. package/dist/gpu-program.d.ts +80 -0
  63. package/dist/gpu-program.d.ts.map +1 -0
  64. package/dist/gpu-runtime.d.ts +174 -0
  65. package/dist/gpu-runtime.d.ts.map +1 -0
  66. package/dist/index.d.ts +21 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.mjs +1986 -0
  69. package/dist/index.mjs.map +1 -0
  70. package/dist/instance.d.ts +86 -0
  71. package/dist/instance.d.ts.map +1 -0
  72. package/dist/player.d.ts +17 -0
  73. package/dist/player.d.ts.map +1 -0
  74. package/package.json +66 -0
  75. package/src/__tests__/authoring-descriptor.unit.test.ts +138 -0
  76. package/src/__tests__/channel-input.unit.test.ts +65 -0
  77. package/src/__tests__/channel-inspect.unit.test.ts +65 -0
  78. package/src/__tests__/code-source-v2.unit.test.ts +121 -0
  79. package/src/__tests__/data-interface-contract.unit.test.ts +92 -0
  80. package/src/__tests__/effect-contract.unit.test.ts +62 -0
  81. package/src/__tests__/gpu-program-simulation-culling-owner.test-d.ts +58 -0
  82. package/src/__tests__/gpu-reflection-vocabulary-owner.test-d.ts +23 -0
  83. package/src/__tests__/gpu-runtime.integration.test.ts +549 -0
  84. package/src/__tests__/inspect-snapshot.unit.test.ts +51 -0
  85. package/src/__tests__/instance-public-api.unit.test.ts +27 -0
  86. package/src/__tests__/instance.unit.test.ts +107 -0
  87. package/src/__tests__/loader-v1-rejection.unit.test.ts +125 -0
  88. package/src/__tests__/player-reflection.unit.test.ts +91 -0
  89. package/src/__tests__/player-type.test-d.ts +54 -0
  90. package/src/__tests__/renderer-source.unit.test.ts +58 -0
  91. package/src/__tests__/replay-canonical.unit.test.ts +68 -0
  92. package/src/__tests__/runtime-dist-isolation.test.ts +100 -0
  93. package/src/__tests__/scriptable-pack-consumer.test-d.ts +9 -0
  94. package/src/__tests__/stage-source.unit.test.ts +64 -0
  95. package/src/__tests__/vfx-data-interface-vocabulary-owner.test-d.ts +34 -0
  96. package/src/__tests__/vfx-performance-contract.unit.test.ts +19 -0
  97. package/src/__tests__/vfx-value-type-owner.test-d.ts +32 -0
  98. package/src/assets/particle-effect-decoder.ts +34 -0
  99. package/src/authoring-descriptor.ts +355 -0
  100. package/src/code-source.ts +827 -0
  101. package/src/data-interface.ts +181 -0
  102. package/src/effect-contract.ts +220 -0
  103. package/src/gpu-loader.ts +279 -0
  104. package/src/gpu-program.ts +101 -0
  105. package/src/gpu-runtime.ts +807 -0
  106. package/src/index.ts +110 -0
  107. package/src/instance.ts +379 -0
  108. package/src/player.ts +21 -0
@@ -0,0 +1,101 @@
1
+ import type {
2
+ BindGroupLayoutDescriptor,
3
+ ParticleEffectAsset,
4
+ ParticleEffectProgram,
5
+ ParticleEffectProgramEmitter,
6
+ } from '@forgeax/engine-types';
7
+ import type {
8
+ ParticleChannelSource,
9
+ ParticleEmitterSourceV2,
10
+ ParticleEventSource,
11
+ ParticleRendererOverflowPolicy,
12
+ ParticleRendererSorting,
13
+ ParticleRendererSource,
14
+ ParticleStageDomain,
15
+ ParticleStageResourceAccess,
16
+ } from './code-source.js';
17
+ import type { VfxDataInterfaceRequirement } from './data-interface.js';
18
+ import type { VfxEffectReflection } from './effect-contract.js';
19
+
20
+ export const VFX_GPU_PROGRAM_FORMAT = 'forgeax-vfx-program-2' as const;
21
+ export const VFX_GPU_PROGRAM_ARTIFACT_KEY = 'particle-effect/program.json' as const;
22
+
23
+ export interface VfxGpuStageReflection {
24
+ readonly id: string;
25
+ readonly entry: string;
26
+ readonly entryPoint: string;
27
+ readonly domain: ParticleStageDomain;
28
+ readonly resources: readonly {
29
+ readonly name: string;
30
+ readonly access: ParticleStageResourceAccess;
31
+ }[];
32
+ readonly dependsOn: readonly string[];
33
+ readonly iterationBudget: number;
34
+ }
35
+
36
+ export interface VfxGpuRendererReflection {
37
+ readonly topology: ParticleRendererSource['kind'];
38
+ readonly resource: string;
39
+ readonly capacity: number;
40
+ readonly overflow: ParticleRendererOverflowPolicy;
41
+ readonly enabled: boolean;
42
+ readonly shaderInputs: readonly string[];
43
+ readonly textureSheet?: {
44
+ readonly columns: number;
45
+ readonly rows: number;
46
+ readonly frameRate: number;
47
+ readonly frameCount: number;
48
+ };
49
+ readonly pivot?: readonly [number, number];
50
+ readonly softParticle?: { readonly fadeDistance: number; readonly requiresDepth: true };
51
+ readonly sorting?: ParticleRendererSorting;
52
+ readonly stripKey?: 'alive-index';
53
+ readonly historyLength?: number;
54
+ readonly endpointField?: 'velocity';
55
+ }
56
+
57
+ export interface VfxGpuProgramReflection {
58
+ readonly hooks: readonly ['vfx_spawn', 'vfx_update'];
59
+ readonly imports: readonly string[];
60
+ readonly resources: readonly string[];
61
+ readonly entryPoints: readonly string[];
62
+ readonly bindings: readonly BindGroupLayoutDescriptor[];
63
+ readonly layout?: VfxEffectReflection;
64
+ readonly dataInterfaces?: readonly VfxDataInterfaceRequirement[];
65
+ readonly eventChannels?: readonly ParticleChannelSource[];
66
+ readonly events?: readonly ParticleEventSource[];
67
+ readonly eventEntryPoint?: 'forgeax_vfx_event_main';
68
+ readonly stages?: readonly VfxGpuStageReflection[];
69
+ readonly renderers?: readonly VfxGpuRendererReflection[];
70
+ }
71
+
72
+ export interface VfxGpuEmitterProgram
73
+ extends Omit<
74
+ ParticleEffectProgramEmitter,
75
+ 'schedule' | 'bounds' | 'renderers' | 'reflection' | 'channels' | 'events'
76
+ > {
77
+ readonly id: string;
78
+ readonly module: string;
79
+ readonly capacity: number;
80
+ readonly backend: ParticleEmitterSourceV2['backend'];
81
+ readonly space: ParticleEmitterSourceV2['space'];
82
+ readonly schedule: ParticleEmitterSourceV2['schedule'];
83
+ readonly bounds: ParticleEmitterSourceV2['bounds'];
84
+ readonly renderers: ParticleEmitterSourceV2['renderers'];
85
+ readonly channels?: readonly ParticleChannelSource[];
86
+ readonly events?: readonly ParticleEventSource[];
87
+ readonly simulationWhenCulled: NonNullable<ParticleEmitterSourceV2['simulationWhenCulled']>;
88
+ readonly wgsl: string;
89
+ readonly reflection: VfxGpuProgramReflection;
90
+ }
91
+
92
+ export interface VfxGpuProgram extends Omit<ParticleEffectProgram, 'emitters'> {
93
+ readonly format: typeof VFX_GPU_PROGRAM_FORMAT;
94
+ readonly fingerprint: string;
95
+ readonly emitters: readonly VfxGpuEmitterProgram[];
96
+ }
97
+
98
+ export interface VfxGpuEffectAsset extends ParticleEffectAsset {
99
+ readonly guid: string;
100
+ readonly program: VfxGpuProgram;
101
+ }