@forgeax/engine-vfx-render 0.1.20 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/feature/gpu-particle-feature.d.ts.map +1 -1
- package/dist/feature/particle-resources.d.ts +14 -0
- package/dist/feature/particle-resources.d.ts.map +1 -1
- package/dist/index.mjs +35 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -8
- package/src/__tests__/particle-resources.unit.test.ts +36 -0
- package/src/__tests__/stage-plan.integration.test.ts +16 -0
- package/src/feature/gpu-particle-feature.ts +10 -4
- package/src/feature/particle-resources.ts +46 -0
- package/dist/.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpu-particle-feature.d.ts","sourceRoot":"","sources":["../../src/feature/gpu-particle-feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EAAO,KAAK,aAAa,EAAE,KAAK,SAAS,EAAM,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gpu-particle-feature.d.ts","sourceRoot":"","sources":["../../src/feature/gpu-particle-feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,9 @@ export interface ParticleMaterialPass {
|
|
|
50
50
|
readonly shader: string;
|
|
51
51
|
readonly renderState?: MaterialRenderState;
|
|
52
52
|
}
|
|
53
|
+
type ParticleBlendMode = Extract<ParticleRendererSource, {
|
|
54
|
+
readonly kind: 'billboard';
|
|
55
|
+
}>['blend'];
|
|
53
56
|
/**
|
|
54
57
|
* Resolve the one material pass that is meaningful for a particle projection.
|
|
55
58
|
* A regular Forward pass is intentionally ignored: VFX vertex layouts are a
|
|
@@ -57,6 +60,17 @@ export interface ParticleMaterialPass {
|
|
|
57
60
|
* shape and make authored particle shaders appear to work while never running.
|
|
58
61
|
*/
|
|
59
62
|
export declare function particleMaterialPass(kind: ParticleRendererKind, material: MaterialAsset | undefined): ParticleMaterialPass;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve the default pipeline state for a particle renderer.
|
|
65
|
+
*
|
|
66
|
+
* The built-in particle shaders emit premultiplied RGB (`rgb * alpha`). The
|
|
67
|
+
* renderer's explicit blend mode therefore has to become a matching fixed
|
|
68
|
+
* function state; leaving the state undefined makes transparent billboard
|
|
69
|
+
* corners overwrite the scene with their zero RGB (the visible black-box
|
|
70
|
+
* failure). An authored particle pass remains authoritative and bypasses
|
|
71
|
+
* these defaults.
|
|
72
|
+
*/
|
|
73
|
+
export declare function particleRendererRenderState(kind: ParticleRendererKind, blend: ParticleBlendMode, authored: MaterialRenderState | undefined): MaterialRenderState | undefined;
|
|
60
74
|
/** True when the authored particle shader consumes the standard material bind group. */
|
|
61
75
|
export declare function particleMaterialUsesBindings(material: MaterialAsset | undefined): boolean;
|
|
62
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle-resources.d.ts","sourceRoot":"","sources":["../../src/feature/particle-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EAEd,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAK,wBAAwB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/F,KAAK,oBAAoB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAsErD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB;;;;;;;EAWhG;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,aAAa,GAAG,SAAS,GAClC,oBAAoB,CAQtB;AAED,wFAAwF;AACxF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAEzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,0CAA0C,GAAG,SAAS,GAC/D,CAAC,GAAG,CAAC,GAAG,SAAS,CAInB;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAyBnE"}
|
|
1
|
+
{"version":3,"file":"particle-resources.d.ts","sourceRoot":"","sources":["../../src/feature/particle-resources.ts"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { frustum } from '@forgeax/engine-math';
|
|
2
|
-
import {
|
|
2
|
+
import { GlobalTransform } from '@forgeax/engine-scene';
|
|
3
3
|
import { err, ok } from '@forgeax/engine-types';
|
|
4
4
|
import { VFX_GPU_RUNTIME_RESOURCE_KEY, vfxGpuEffectContribution, vfxGpuEffectPackLoader, vfxGpuRuntimePlugin, resolveVfxDataInterfaces, ParticleEffectPlayer } from '@forgeax/engine-vfx';
|
|
5
5
|
import { getAssetRegistryResolver } from '@forgeax/engine-assets-runtime';
|
|
@@ -164,6 +164,14 @@ function topologyCapacitySnapshot(plan, input) {
|
|
|
164
164
|
degenerate: Math.max(0, input.degenerate ?? 0)
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
+
var PARTICLE_PREMULTIPLIED_ALPHA_BLEND = {
|
|
168
|
+
color: { srcFactor: "one", dstFactor: "one-minus-src-alpha", operation: "add" },
|
|
169
|
+
alpha: { srcFactor: "one", dstFactor: "one-minus-src-alpha", operation: "add" }
|
|
170
|
+
};
|
|
171
|
+
var PARTICLE_ADDITIVE_BLEND = {
|
|
172
|
+
color: { srcFactor: "one", dstFactor: "one", operation: "add" },
|
|
173
|
+
alpha: { srcFactor: "one", dstFactor: "one-minus-src-alpha", operation: "add" }
|
|
174
|
+
};
|
|
167
175
|
function particleMaterialPass(kind, material) {
|
|
168
176
|
const pass = material?.passes?.find((candidate) => candidate.name === `particle-${kind}`);
|
|
169
177
|
return {
|
|
@@ -171,6 +179,25 @@ function particleMaterialPass(kind, material) {
|
|
|
171
179
|
...pass?.renderState === void 0 ? {} : { renderState: pass.renderState }
|
|
172
180
|
};
|
|
173
181
|
}
|
|
182
|
+
function particleRendererRenderState(kind, blend, authored) {
|
|
183
|
+
if (authored !== void 0) return authored;
|
|
184
|
+
const isTopology = kind === "ribbon" || kind === "trail" || kind === "beam";
|
|
185
|
+
if (kind !== "billboard" && !isTopology) return void 0;
|
|
186
|
+
const mode = kind === "billboard" ? blend ?? "alpha" : "alpha";
|
|
187
|
+
if (mode === "opaque-cutout") {
|
|
188
|
+
return {
|
|
189
|
+
cullMode: "none",
|
|
190
|
+
depthCompare: "less-equal",
|
|
191
|
+
depthWriteEnabled: true
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
cullMode: "none",
|
|
196
|
+
depthCompare: "less-equal",
|
|
197
|
+
depthWriteEnabled: false,
|
|
198
|
+
blend: mode === "additive" ? PARTICLE_ADDITIVE_BLEND : PARTICLE_PREMULTIPLIED_ALPHA_BLEND
|
|
199
|
+
};
|
|
200
|
+
}
|
|
174
201
|
function particleMaterialUsesBindings(material) {
|
|
175
202
|
return (material?.parameters?.length ?? 0) > 0;
|
|
176
203
|
}
|
|
@@ -499,7 +526,7 @@ function runtimeData(intent, camera, material, localToWorld, renderer, rendererI
|
|
|
499
526
|
}
|
|
500
527
|
function emitterTransform(world, intent) {
|
|
501
528
|
if (intent.emitter.space === "world") return IDENTITY_MATRIX;
|
|
502
|
-
const transform = world.get(intent.player,
|
|
529
|
+
const transform = world.get(intent.player, GlobalTransform);
|
|
503
530
|
return transform.ok ? transform.value.world : IDENTITY_MATRIX;
|
|
504
531
|
}
|
|
505
532
|
function emitterVisible(intent, camera, localToWorld) {
|
|
@@ -849,7 +876,12 @@ function gpuParticleRenderFeature(options) {
|
|
|
849
876
|
const graphicsProgram = `${rendererPrefix}.graphics-program`;
|
|
850
877
|
const graphicsBindings = `${rendererPrefix}.graphics-bindings`;
|
|
851
878
|
const vertexData = `${rendererPrefix}.vertex-data`;
|
|
852
|
-
const
|
|
879
|
+
const defaultRenderState = particleRendererRenderState(
|
|
880
|
+
renderer.kind,
|
|
881
|
+
renderer.kind === "billboard" ? renderer.blend : void 0,
|
|
882
|
+
materialPass.renderState
|
|
883
|
+
);
|
|
884
|
+
const renderState = isBillboard && depthTarget !== void 0 ? { ...defaultRenderState ?? {}, depthWriteEnabled: false } : defaultRenderState;
|
|
853
885
|
resources.push(
|
|
854
886
|
{
|
|
855
887
|
kind: "graphics-program",
|