reze-engine 0.41.0 → 0.41.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.
- package/README.md +4 -2
- package/dist/engine.d.ts +31 -3
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +190 -18
- package/dist/graph/presets/body.js +2 -2
- package/dist/graph/presets/cloth_rough.js +2 -2
- package/dist/graph/presets/cloth_smooth.js +2 -2
- package/dist/graph/presets/default.js +2 -2
- package/dist/graph/presets/eye.js +2 -2
- package/dist/graph/presets/face.js +2 -2
- package/dist/graph/presets/hair.js +2 -2
- package/dist/graph/presets/metal.js +2 -2
- package/dist/graph/presets/stockings.js +3 -3
- package/dist/graph/registry.d.ts.map +1 -1
- package/dist/graph/registry.js +426 -10
- package/dist/graph/style-group.d.ts +46 -0
- package/dist/graph/style-group.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shaders/agx-lut.d.ts +11 -0
- package/dist/shaders/agx-lut.d.ts.map +1 -0
- package/dist/shaders/agx-lut.js +29 -0
- package/dist/shaders/materials/common.d.ts +1 -1
- package/dist/shaders/materials/common.d.ts.map +1 -1
- package/dist/shaders/materials/common.js +10 -0
- package/dist/shaders/materials/nodes.d.ts +1 -1
- package/dist/shaders/materials/nodes.d.ts.map +1 -1
- package/dist/shaders/materials/nodes.js +957 -576
- package/dist/shaders/passes/composite.d.ts.map +1 -1
- package/dist/shaders/passes/composite.js +76 -4
- package/package.json +1 -1
- package/src/engine.ts +211 -17
- package/src/graph/presets/body.ts +2 -2
- package/src/graph/presets/cloth_rough.ts +2 -2
- package/src/graph/presets/cloth_smooth.ts +2 -2
- package/src/graph/presets/default.ts +2 -2
- package/src/graph/presets/eye.ts +2 -2
- package/src/graph/presets/face.ts +2 -2
- package/src/graph/presets/hair.ts +2 -2
- package/src/graph/presets/metal.ts +2 -2
- package/src/graph/presets/stockings.ts +3 -3
- package/src/graph/registry.ts +439 -10
- package/src/graph/style-group.ts +44 -0
- package/src/index.ts +2 -0
- package/src/shaders/agx-lut.ts +30 -0
- package/src/shaders/materials/common.ts +10 -0
- package/src/shaders/materials/nodes.ts +962 -581
- package/src/shaders/passes/composite.ts +76 -4
package/README.md
CHANGED
|
@@ -281,7 +281,9 @@ Note the asymmetry: rotation goes through `rotateBones(…, 0)`, but translation
|
|
|
281
281
|
|
|
282
282
|
## Shader graphs & style groups
|
|
283
283
|
|
|
284
|
-
Materials are styled by **shader graphs** — plain JSON (`ShaderGraph`) validated and compiled to WGSL at runtime. Node semantics
|
|
284
|
+
Materials are styled by **shader graphs** — plain JSON (`ShaderGraph`) validated and compiled to WGSL at runtime. Node semantics track **Blender 5.2**: Principled carries its v2 sockets, and the math (39), vector-math (24) and mix (20) operation sets are Blender's own, transcribed from its GLSL with the safeguards intact (divide-by-zero is 0, modulo truncates), so community Blender NPR presets port by transcription. Sockets match Blender's too — every math node carries three value inputs whichever operation is selected, so a transcription maps socket for socket. One node has no Blender counterpart because MMD has no equivalent to borrow: **`sphere_map`** applies the PMX material's own sphere texture, which is where a PMX keeps its highlights — every model ships one, and hair without it reads flat. The texture is a view-space lighting mask sampled by the camera-space normal rather than by any UV the mesh carries, which is why it tracks the viewer. The material's own mode picks the operator (`.sph` multiplies the shaded base, `.spa` adds), so a graph asks for the effect and the model decides which it meant; a material with no sphere texture is an exact no-op. Three nodes have no Blender counterpart in the same sense, because they answer questions a `.blend` answers with scene objects: **`light`** exposes the key light as values (direction, colour, ambient, shadow), which is what a graph needs to build its own `dot(N, L)` term rather than accept a baked closure — the idiom most game NPR presets use, where the original reads a light empty through a driver. **`head_basis`** gives the head bone's forward/right/up, for face shading that tracks the head. **`tex_image/0`…`3`** read up to four image maps carried by the style group.
|
|
285
|
+
|
|
286
|
+
Nine graphs ship built-in (`FACE_GRAPH`, `HAIR_GRAPH`, `BODY_GRAPH`, `EYE_GRAPH`, `METAL_GRAPH`, `STOCKINGS_GRAPH`, `CLOTH_SMOOTH_GRAPH`, `CLOTH_ROUGH_GRAPH`, `DEFAULT_GRAPH` — the neutral base) as a starter library; you can also author or import your own.
|
|
285
287
|
|
|
286
288
|
A **style group** binds `{ materials, graph, renderClass?, alphaMode? }` — a set of materials, the graph that shades them, and the engine's small pass-integration vocabulary (`renderClass`: `auto`/`eye`/`hair` for stencil/cull/draw-order; `alphaMode`: `opaque`/`hashed`). **Groups are user-defined and unlimited** — any materials, any graph. A graph is pure shading; `renderClass` carries the built-in effects (hair's over-eyes stencil, the eye see-through stamp), so any graph in an `eye`/`hair` group inherits them. **Every group needs a valid graph**; a material in no group renders the **neutral default** (`DEFAULT_GRAPH`).
|
|
287
289
|
|
|
@@ -382,7 +384,7 @@ Each built-in shader graph mixes an NPR stack with a Principled-style BSDF, so c
|
|
|
382
384
|
| `metal` | Toon + emission overlay (×8), Voronoi base, metallic 1 |
|
|
383
385
|
| `stockings` | Gradient × facing mask + HSV emission (×5), sheen 0.7, **alpha-hashed** |
|
|
384
386
|
|
|
385
|
-
**Post & output.** Directional shadow map (4096², depth32float, PCF) → HDR main pass at 4× MSAA (`rg11b10ufloat` color + `rg8unorm` aux MRT for bloom mask + alpha; fits Apple-Silicon TBDR tile memory so MSAA resolves in-tile, `rgba16float` fallback) → bloom mip pyramid →
|
|
387
|
+
**Post & output.** Directional shadow map (4096², depth32float, PCF) → HDR main pass at 4× MSAA (`rg11b10ufloat` color + `rg8unorm` aux MRT for bloom mask + alpha; fits Apple-Silicon TBDR tile memory so MSAA resolves in-tile, `rgba16float` fallback) → bloom mip pyramid → view transform (`setViewTransformOptions`: `standard` — sRGB and nothing else, which is what NPR and anime work renders under; `filmic` — Blender 3.6 "Filmic / Medium High Contrast" as a LUT, the default; `agx` — Blender's own 57³ `AgX_Base_sRGB.cube`, plus exposure and gamma) → ASC CDL colour grade (`setColorGrading`, scene only — the background layer and any green-screen key are deliberately left ungraded) → composite over the background (base color / 360 equirect, then the optional user WGSL effect layer over-composited by its alpha, display space) → inverted-hull outline.
|
|
386
388
|
|
|
387
389
|
- **Alpha-hashed transparency** (`stockings`) — Wyman & McGuire 2017 derivative-aware stochastic discard in object space, so self-overlapping meshes resolve under MSAA with opaque depth writes and the dither doesn't swim.
|
|
388
390
|
- **Sheer-material detection** — PMX has no "translucent" flag (a see-through veil usually ships diffuse alpha 1.0 with the transparency in its texture), so at load each material samples its texture's alpha at its own triangle centroids; genuinely sheer materials route to the transparent bucket — drawn after the opaque + hair passes so a veil composites over the hair behind it, and excluded from the shadow map so sheer cloth doesn't cast the solid shadow of an opaque sheet. Centroids, not vertices: hair-card corners sit in transparent texture margins, and hair must stay opaque-bucket for stencil interplay and shadows.
|
package/dist/engine.d.ts
CHANGED
|
@@ -18,6 +18,9 @@ type GroupInstall = {
|
|
|
18
18
|
/** hair render-class only: the stencil-matched IS_OVER_EYES=true variant. */
|
|
19
19
|
overEyesPipeline?: GPURenderPipeline;
|
|
20
20
|
uniformBuffer: GPUBuffer;
|
|
21
|
+
/** The group's own image maps, uploaded once per apply and owned here — the
|
|
22
|
+
* install destroys them when it is replaced, so a re-apply cannot leak. */
|
|
23
|
+
images?: (GPUTexture | null)[];
|
|
21
24
|
slotMap: StyleSlot[];
|
|
22
25
|
/** Serialized (graph + renderClass + alphaMode) — lets applyStyleGroups skip recompiling
|
|
23
26
|
* an unchanged group. */
|
|
@@ -35,8 +38,6 @@ export type WorldOptions = {
|
|
|
35
38
|
/** Multiplier on world color (Blender: World > Surface > Strength). */
|
|
36
39
|
strength?: number;
|
|
37
40
|
};
|
|
38
|
-
/** A model's scene placement — root offset baked into skinning + visibility. Serializable
|
|
39
|
-
* into a scene descriptor via getModelTransform. */
|
|
40
41
|
export type ModelTransform = {
|
|
41
42
|
position: Vec3;
|
|
42
43
|
rotation: Quat;
|
|
@@ -121,7 +122,17 @@ export type ViewTransformOptions = {
|
|
|
121
122
|
exposure: number;
|
|
122
123
|
/** After Filmic, display gamma (`pow(rgb, 1/gamma)`). */
|
|
123
124
|
gamma: number;
|
|
124
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Which display transform the frame is formed with.
|
|
127
|
+
*
|
|
128
|
+
* "standard" is Blender's Standard: the sRGB encoding and nothing else, which
|
|
129
|
+
* is what NPR and anime work uses — the colours the graph computes are the
|
|
130
|
+
* colours that land, with no film curve reinterpreting them. Both of the
|
|
131
|
+
* reference Wuthering Waves projects render this way.
|
|
132
|
+
*
|
|
133
|
+
* "filmic" is Blender 3.6's Filmic, Medium High Contrast, baked as a LUT.
|
|
134
|
+
*/
|
|
135
|
+
transform: "agx" | "filmic" | "standard";
|
|
125
136
|
};
|
|
126
137
|
export declare const DEFAULT_VIEW_TRANSFORM: ViewTransformOptions;
|
|
127
138
|
/** Color grading applied to the tonemapped scene (ASC CDL — see grade() in
|
|
@@ -408,6 +419,8 @@ export declare class Engine {
|
|
|
408
419
|
private fallbackEquirectTexture;
|
|
409
420
|
private fallbackEquirectView;
|
|
410
421
|
private effect;
|
|
422
|
+
private agxLutTexture;
|
|
423
|
+
private agxFallbackTexture;
|
|
411
424
|
/** Bound at composite binding 7 when no effect (or a param-less one) is set. */
|
|
412
425
|
private bgParamsDummyBuffer;
|
|
413
426
|
private compositePipelineLayout;
|
|
@@ -597,6 +610,15 @@ export declare class Engine {
|
|
|
597
610
|
private writeBloomUniforms;
|
|
598
611
|
init(): Promise<void>;
|
|
599
612
|
private bakeBrdfLut;
|
|
613
|
+
/**
|
|
614
|
+
* Decompress and upload Blender's AgX cube.
|
|
615
|
+
*
|
|
616
|
+
* Deliberately off the critical path: it is 723 KB once inflated, and a frame
|
|
617
|
+
* rendered before it lands should show the scene under whatever transform is
|
|
618
|
+
* already there rather than wait. Until then binding 10 holds a 1×1×1 stand-in,
|
|
619
|
+
* which is only ever sampled if someone selects AgX in that window.
|
|
620
|
+
*/
|
|
621
|
+
private loadAgxLut;
|
|
600
622
|
private bakeFilmicLut;
|
|
601
623
|
private createRenderPipeline;
|
|
602
624
|
private createPipelines;
|
|
@@ -756,6 +778,12 @@ export declare class Engine {
|
|
|
756
778
|
markVertexBufferDirty(modelNameOrModel?: string | Model): void;
|
|
757
779
|
setSelectedMaterial(modelName: string | null, materialName: string | null): void;
|
|
758
780
|
setSelectedBone(modelName: string | null, boneName: string | null): void;
|
|
781
|
+
/** A group's uniform buffer and its maps have the same lifetime — freeing one
|
|
782
|
+
* without the other is how a re-apply leaks GPU memory a frame at a time. */
|
|
783
|
+
private destroyInstall;
|
|
784
|
+
/** Upload a group's image maps. Sources are decoded images the host already
|
|
785
|
+
* holds; the engine never fetches, matching how models and motions arrive. */
|
|
786
|
+
private uploadGroupImages;
|
|
759
787
|
private createMaterialBindGroup;
|
|
760
788
|
setMaterialVisible(modelName: string, materialName: string, visible: boolean): void;
|
|
761
789
|
toggleMaterialVisible(modelName: string, materialName: string): void;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -17,6 +17,7 @@ import { TRANSPARENT_DEPTH_PREPASS_WGSL } from "./shaders/passes/depth-prepass";
|
|
|
17
17
|
import { SELECTION_MASK_SHADER_WGSL, SELECTION_EDGE_SHADER_WGSL } from "./shaders/passes/selection";
|
|
18
18
|
import { GIZMO_SHADER_WGSL } from "./shaders/passes/gizmo";
|
|
19
19
|
import { BLOOM_BLIT_SHADER_WGSL, BLOOM_DOWNSAMPLE_SHADER_WGSL, BLOOM_UPSAMPLE_SHADER_WGSL, } from "./shaders/passes/bloom";
|
|
20
|
+
import { AGX_LUT_GZ, AGX_LUT_SIZE } from "./shaders/agx-lut";
|
|
20
21
|
import { buildCompositeShader } from "./shaders/passes/composite";
|
|
21
22
|
import { PICK_SHADER_WGSL } from "./shaders/passes/pick";
|
|
22
23
|
import { MIPMAP_BLIT_SHADER_WGSL } from "./shaders/passes/mipmap";
|
|
@@ -46,7 +47,17 @@ const PRESET_NAME_HINTS = [
|
|
|
46
47
|
"face",
|
|
47
48
|
["顔", "颜", "顏", "脸", "臉", "かお", "face", "舌", "tongue", "牙", "牙齿", "齿", "歯", "teeth", "tooth", "口腔", "口内", "mouth", "嘴", "唇", "歯茎", "gums"],
|
|
48
49
|
],
|
|
49
|
-
|
|
50
|
+
// Simplified 发 is listed as compounds, never bare: it also writes 发光 (glow),
|
|
51
|
+
// and hair carries a renderClass, so a chance hit puts an emissive panel in the
|
|
52
|
+
// hair pass. Same reasoning as bare 口 being omitted from face above.
|
|
53
|
+
[
|
|
54
|
+
"hair",
|
|
55
|
+
[
|
|
56
|
+
"前髪", "後髪", "髪", "髮", "頭髪", "もみあげ", "アホ毛", "ヘア",
|
|
57
|
+
"头发", "前发", "后发", "长发", "短发", "发丝", "刘海", "辫", "马尾",
|
|
58
|
+
"hair", "ahoge", "bang",
|
|
59
|
+
],
|
|
60
|
+
],
|
|
50
61
|
["body", ["肌", "皮肤", "skin"]],
|
|
51
62
|
["metal", ["金属", "メタル", "metal", "earring", "耳环", "耳環"]],
|
|
52
63
|
[
|
|
@@ -135,6 +146,15 @@ function nodeIdForWgslLine(wgsl, lineNum) {
|
|
|
135
146
|
}
|
|
136
147
|
return undefined;
|
|
137
148
|
}
|
|
149
|
+
/** A model's scene placement — root offset baked into skinning + visibility. Serializable
|
|
150
|
+
* into a scene descriptor via getModelTransform. */
|
|
151
|
+
/** How many character positions an effect can read (viewU[11..14]). */
|
|
152
|
+
const MAX_EFFECT_SUBJECTS = 4;
|
|
153
|
+
/** Where a character IS, for an effect that follows them. センター carries a
|
|
154
|
+
* motion's root movement — walking, jumping — where the model transform only
|
|
155
|
+
* carries where the model was placed; 全ての親 is the fallback for a model that
|
|
156
|
+
* animates the true root instead. */
|
|
157
|
+
const SUBJECT_BONES = ["センター", "全ての親"];
|
|
138
158
|
export const DEFAULT_BLOOM_OPTIONS = {
|
|
139
159
|
enabled: true,
|
|
140
160
|
threshold: 0.5,
|
|
@@ -159,7 +179,7 @@ export const DEFAULT_DEPTH_OF_FIELD_OPTIONS = {
|
|
|
159
179
|
export const DEFAULT_VIEW_TRANSFORM = {
|
|
160
180
|
exposure: 0.6,
|
|
161
181
|
gamma: 1.0,
|
|
162
|
-
|
|
182
|
+
transform: "filmic",
|
|
163
183
|
};
|
|
164
184
|
const NEUTRAL_GRADE_CHANNEL = 0.5;
|
|
165
185
|
export const DEFAULT_COLOR_GRADING = {
|
|
@@ -305,7 +325,7 @@ export class Engine {
|
|
|
305
325
|
// 11 × vec4f — see the viewU comment in composite.ts. The last one is the
|
|
306
326
|
// camera's world position, which is what lets a foreground effect turn the
|
|
307
327
|
// depth it is handed into a PLACE (bgWorldPos) rather than a distance.
|
|
308
|
-
this.compositeUniformData = new Float32Array(
|
|
328
|
+
this.compositeUniformData = new Float32Array(60);
|
|
309
329
|
/** Composite background (display-space sRGB 0–1) — null = transparent canvas. */
|
|
310
330
|
this.backgroundColor = null;
|
|
311
331
|
// 360 backdrop (equirectangular skybox, sampled by view ray in composite).
|
|
@@ -317,6 +337,7 @@ export class Engine {
|
|
|
317
337
|
// params live in their own uniform buffer so setEffectParam is a write, not a
|
|
318
338
|
// recompile (the same instant tier as setStyleParam).
|
|
319
339
|
this.effect = null;
|
|
340
|
+
this.agxLutTexture = null;
|
|
320
341
|
/** time=0 origin for the active effect — reset each setEffect. */
|
|
321
342
|
this.effectEpochMs = 0;
|
|
322
343
|
this.compositeBloomView = null;
|
|
@@ -653,7 +674,7 @@ export class Engine {
|
|
|
653
674
|
return {
|
|
654
675
|
exposure: partial?.exposure ?? d.exposure,
|
|
655
676
|
gamma: partial?.gamma ?? d.gamma,
|
|
656
|
-
|
|
677
|
+
transform: partial?.transform ?? d.transform,
|
|
657
678
|
};
|
|
658
679
|
}
|
|
659
680
|
/** Current bloom settings (Blender names; tint is a copied `Vec3`). */
|
|
@@ -671,7 +692,7 @@ export class Engine {
|
|
|
671
692
|
}
|
|
672
693
|
getViewTransformOptions() {
|
|
673
694
|
const v = this.viewTransform;
|
|
674
|
-
return { exposure: v.exposure, gamma: v.gamma,
|
|
695
|
+
return { exposure: v.exposure, gamma: v.gamma, transform: v.transform };
|
|
675
696
|
}
|
|
676
697
|
/**
|
|
677
698
|
* Color-grade the tonemapped scene (ASC CDL slope/offset/power + saturation).
|
|
@@ -711,8 +732,8 @@ export class Engine {
|
|
|
711
732
|
v.exposure = patch.exposure;
|
|
712
733
|
if (patch.gamma !== undefined)
|
|
713
734
|
v.gamma = patch.gamma;
|
|
714
|
-
if (patch.
|
|
715
|
-
v.
|
|
735
|
+
if (patch.transform !== undefined)
|
|
736
|
+
v.transform = patch.transform;
|
|
716
737
|
if (this.device && this.compositeUniformBuffer) {
|
|
717
738
|
this.writeCompositeViewUniforms();
|
|
718
739
|
}
|
|
@@ -743,8 +764,10 @@ export class Engine {
|
|
|
743
764
|
u[10] = bg?.z ?? 0;
|
|
744
765
|
// Base-layer mode only. A user effect is a separate LAYER over whichever
|
|
745
766
|
// base is active, and needs no flag of its own: the composite pipeline is
|
|
746
|
-
// rebuilt per effect, so the compiled variant IS the flag.
|
|
767
|
+
// rebuilt per effect, so the compiled variant IS the flag.
|
|
747
768
|
u[11] = this.backdropEquirectView ? 2 : bg ? 1 : 0;
|
|
769
|
+
// Which display transform forms the frame (see viewTransform in composite.ts).
|
|
770
|
+
u[25] = v.transform === "agx" ? 2 : v.transform === "standard" ? 1 : 0;
|
|
748
771
|
u[26] = this.canvas.width;
|
|
749
772
|
u[27] = this.canvas.height;
|
|
750
773
|
// ── Grade (viewU[7..9]) ── The UI's three tonal COLORS map to ASC CDL here,
|
|
@@ -806,6 +829,7 @@ export class Engine {
|
|
|
806
829
|
{ binding: 7, resource: { buffer: this.effect?.paramsBuffer ?? this.bgParamsDummyBuffer } },
|
|
807
830
|
{ binding: 8, resource: this.depthReadView },
|
|
808
831
|
{ binding: 9, resource: { buffer: this.dofUniformBuffer } },
|
|
832
|
+
{ binding: 10, resource: (this.agxLutTexture ?? this.agxFallbackTexture).createView({ dimension: "3d" }) },
|
|
809
833
|
],
|
|
810
834
|
});
|
|
811
835
|
}
|
|
@@ -1287,6 +1311,38 @@ export class Engine {
|
|
|
1287
1311
|
// smooth gradients) while still passing through every anchor (look preserved) and staying
|
|
1288
1312
|
// monotone (no tonemap overshoot/ringing). Domain is uniform in log2 space: anchor k sits
|
|
1289
1313
|
// at t=k, k=0..13 (t = log2(linear)+10). See composite.ts::filmic for the sampling map.
|
|
1314
|
+
/**
|
|
1315
|
+
* Decompress and upload Blender's AgX cube.
|
|
1316
|
+
*
|
|
1317
|
+
* Deliberately off the critical path: it is 723 KB once inflated, and a frame
|
|
1318
|
+
* rendered before it lands should show the scene under whatever transform is
|
|
1319
|
+
* already there rather than wait. Until then binding 10 holds a 1×1×1 stand-in,
|
|
1320
|
+
* which is only ever sampled if someone selects AgX in that window.
|
|
1321
|
+
*/
|
|
1322
|
+
async loadAgxLut() {
|
|
1323
|
+
try {
|
|
1324
|
+
const packed = Uint8Array.from(atob(AGX_LUT_GZ), (ch) => ch.charCodeAt(0));
|
|
1325
|
+
const stream = new Blob([packed]).stream().pipeThrough(new DecompressionStream("gzip"));
|
|
1326
|
+
const bytes = new Uint8Array(await new Response(stream).arrayBuffer());
|
|
1327
|
+
const n = AGX_LUT_SIZE;
|
|
1328
|
+
if (bytes.byteLength !== n * n * n * 4)
|
|
1329
|
+
throw new Error(`AgX LUT is ${bytes.byteLength} bytes, expected ${n ** 3 * 4}`);
|
|
1330
|
+
const tex = this.device.createTexture({
|
|
1331
|
+
label: "AgX 57³ LUT",
|
|
1332
|
+
size: [n, n, n],
|
|
1333
|
+
dimension: "3d",
|
|
1334
|
+
format: "rgb10a2unorm",
|
|
1335
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
|
|
1336
|
+
});
|
|
1337
|
+
// .cube order is red fastest, which is exactly a 3D texture's own layout.
|
|
1338
|
+
this.device.queue.writeTexture({ texture: tex }, bytes, { bytesPerRow: n * 4, rowsPerImage: n }, [n, n, n]);
|
|
1339
|
+
this.agxLutTexture = tex;
|
|
1340
|
+
this.rebuildCompositeBindGroup();
|
|
1341
|
+
}
|
|
1342
|
+
catch {
|
|
1343
|
+
// A missing LUT costs AgX, not the renderer — the other transforms stand.
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1290
1346
|
bakeFilmicLut() {
|
|
1291
1347
|
const anchors = [
|
|
1292
1348
|
0.0028, 0.0068, 0.0151, 0.0313, 0.061, 0.112, 0.192, 0.306, 0.459, 0.631, 0.82, 0.907, 0.962, 0.989,
|
|
@@ -1532,6 +1588,13 @@ export class Engine {
|
|
|
1532
1588
|
// StyleUniforms for compiled graph shaders (adjust-tier sliders). Hand-written
|
|
1533
1589
|
// presets simply don't declare it — a layout may carry bindings a shader ignores.
|
|
1534
1590
|
{ binding: 4, visibility: GPUShaderStage.FRAGMENT, buffer: { type: "uniform" } },
|
|
1591
|
+
// Style-group image maps. A PMX material carries one image; a
|
|
1592
|
+
// Blender-authored look needs a lightmap or ramp beside it, and those
|
|
1593
|
+
// belong to the GROUP rather than to the model's own material data.
|
|
1594
|
+
{ binding: 5, visibility: GPUShaderStage.FRAGMENT, texture: {} },
|
|
1595
|
+
{ binding: 6, visibility: GPUShaderStage.FRAGMENT, texture: {} },
|
|
1596
|
+
{ binding: 7, visibility: GPUShaderStage.FRAGMENT, texture: {} },
|
|
1597
|
+
{ binding: 8, visibility: GPUShaderStage.FRAGMENT, texture: {} },
|
|
1535
1598
|
],
|
|
1536
1599
|
});
|
|
1537
1600
|
// Shared zero StyleUniforms buffer — bound by every ungrouped material; grouped
|
|
@@ -1659,6 +1722,14 @@ export class Engine {
|
|
|
1659
1722
|
this.shadowMapDepthView = this.shadowMapTexture.createView();
|
|
1660
1723
|
// One-shot bake of Blender EEVEE's combined BRDF LUT (DFG + LTC packed rgba8unorm).
|
|
1661
1724
|
this.bakeBrdfLut();
|
|
1725
|
+
this.agxFallbackTexture = this.device.createTexture({
|
|
1726
|
+
label: "AgX LUT fallback",
|
|
1727
|
+
size: [1, 1, 1],
|
|
1728
|
+
dimension: "3d",
|
|
1729
|
+
format: "rgb10a2unorm",
|
|
1730
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
|
|
1731
|
+
});
|
|
1732
|
+
void this.loadAgxLut();
|
|
1662
1733
|
this.bakeFilmicLut();
|
|
1663
1734
|
// Now that shadow resources exist, create the main per-frame bind group
|
|
1664
1735
|
this.perFrameBindGroup = this.device.createBindGroup({
|
|
@@ -1935,8 +2006,9 @@ export class Engine {
|
|
|
1935
2006
|
// (bg rgb, mode) · camera right/up/forward basis for the 360 skybox ray ·
|
|
1936
2007
|
// (time, _, canvas width, canvas height) for user effects · three grade
|
|
1937
2008
|
// vectors (CDL offset+contrast, power+saturation, slope+flag) · camera
|
|
1938
|
-
// world position, for an effect placing itself in the scene
|
|
1939
|
-
|
|
2009
|
+
// world position, for an effect placing itself in the scene · four
|
|
2010
|
+
// character positions, for one that wants to respond to the cast.
|
|
2011
|
+
size: 240,
|
|
1940
2012
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
1941
2013
|
});
|
|
1942
2014
|
this.dofUniformBuffer = this.device.createBuffer({
|
|
@@ -1976,6 +2048,9 @@ export class Engine {
|
|
|
1976
2048
|
texture: { sampleType: "depth", viewDimension: "2d", multisampled: true },
|
|
1977
2049
|
},
|
|
1978
2050
|
{ binding: 9, visibility: GPUShaderStage.FRAGMENT, buffer: { type: "uniform" } },
|
|
2051
|
+
// AgX's 57³ cube. Decompressed and uploaded off the critical path, so a
|
|
2052
|
+
// 1×1×1 stand-in keeps the bind group valid until it arrives.
|
|
2053
|
+
{ binding: 10, visibility: GPUShaderStage.FRAGMENT, texture: { viewDimension: "3d" } },
|
|
1979
2054
|
],
|
|
1980
2055
|
});
|
|
1981
2056
|
this.fallbackEquirectTexture = this.device.createTexture({
|
|
@@ -2787,7 +2862,7 @@ export class Engine {
|
|
|
2787
2862
|
// zero buffer is engine-owned.
|
|
2788
2863
|
this.forEachInstance((inst) => {
|
|
2789
2864
|
for (const install of inst.styleGroups.values())
|
|
2790
|
-
|
|
2865
|
+
this.destroyInstall(install);
|
|
2791
2866
|
inst.styleGroups.clear();
|
|
2792
2867
|
});
|
|
2793
2868
|
this.zeroStyleBuffer?.destroy();
|
|
@@ -2913,7 +2988,7 @@ export class Engine {
|
|
|
2913
2988
|
}
|
|
2914
2989
|
// Per-group StyleUniforms buffers aren't in gpuBuffers (allocated post-load).
|
|
2915
2990
|
for (const install of inst.styleGroups.values())
|
|
2916
|
-
|
|
2991
|
+
this.destroyInstall(install);
|
|
2917
2992
|
this.modelInstances.delete(name);
|
|
2918
2993
|
}
|
|
2919
2994
|
getModelNames() {
|
|
@@ -2995,11 +3070,50 @@ export class Engine {
|
|
|
2995
3070
|
}
|
|
2996
3071
|
// Build a material's bind group with binding(4) pointing at a given StyleUniforms buffer
|
|
2997
3072
|
// (the group's buffer when grouped, or the shared zero buffer when ungrouped).
|
|
2998
|
-
|
|
3073
|
+
/** A group's uniform buffer and its maps have the same lifetime — freeing one
|
|
3074
|
+
* without the other is how a re-apply leaks GPU memory a frame at a time. */
|
|
3075
|
+
destroyInstall(install) {
|
|
3076
|
+
install.uniformBuffer.destroy();
|
|
3077
|
+
for (const tex of install.images ?? [])
|
|
3078
|
+
tex?.destroy();
|
|
3079
|
+
}
|
|
3080
|
+
/** Upload a group's image maps. Sources are decoded images the host already
|
|
3081
|
+
* holds; the engine never fetches, matching how models and motions arrive. */
|
|
3082
|
+
uploadGroupImages(group) {
|
|
3083
|
+
if (!group.images?.length)
|
|
3084
|
+
return undefined;
|
|
3085
|
+
return group.images.slice(0, 4).map((entry) => {
|
|
3086
|
+
if (!entry)
|
|
3087
|
+
return null;
|
|
3088
|
+
const wrapped = "source" in entry;
|
|
3089
|
+
const src = wrapped ? entry.source : entry;
|
|
3090
|
+
const width = Math.max(1, "naturalWidth" in src ? src.naturalWidth : src.width);
|
|
3091
|
+
const height = Math.max(1, "naturalHeight" in src ? src.naturalHeight : src.height);
|
|
3092
|
+
const tex = this.device.createTexture({
|
|
3093
|
+
label: `group map: ${group.id}`,
|
|
3094
|
+
size: [width, height],
|
|
3095
|
+
// Colour maps decode to linear on sample, the way material textures do;
|
|
3096
|
+
// data maps must not, or every threshold packed in their channels moves.
|
|
3097
|
+
format: wrapped && entry.srgb ? "rgba8unorm-srgb" : "rgba8unorm",
|
|
3098
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
3099
|
+
});
|
|
3100
|
+
this.device.queue.copyExternalImageToTexture({ source: src }, { texture: tex, premultipliedAlpha: wrapped && entry.premultiplied === true }, [width, height]);
|
|
3101
|
+
return tex;
|
|
3102
|
+
});
|
|
3103
|
+
}
|
|
3104
|
+
createMaterialBindGroup(label, baseEntries, styleBuffer, groupImages) {
|
|
3105
|
+
// Every material bind group in the engine is built here, which is why the
|
|
3106
|
+
// group's maps are threaded through this one function rather than patched in
|
|
3107
|
+
// at each call site — an unset slot reads white, never stale.
|
|
3108
|
+
const slots = [];
|
|
3109
|
+
for (let i = 0; i < 4; i++) {
|
|
3110
|
+
const tex = groupImages?.[i] ?? this.fallbackMaterialTexture;
|
|
3111
|
+
slots.push({ binding: 5 + i, resource: tex.createView() });
|
|
3112
|
+
}
|
|
2999
3113
|
return this.device.createBindGroup({
|
|
3000
3114
|
label,
|
|
3001
3115
|
layout: this.mainPerMaterialBindGroupLayout,
|
|
3002
|
-
entries: [...baseEntries, { binding: 4, resource: { buffer: styleBuffer } }],
|
|
3116
|
+
entries: [...baseEntries, { binding: 4, resource: { buffer: styleBuffer } }, ...slots],
|
|
3003
3117
|
});
|
|
3004
3118
|
}
|
|
3005
3119
|
setMaterialVisible(modelName, materialName, visible) {
|
|
@@ -4578,7 +4692,7 @@ export class Engine {
|
|
|
4578
4692
|
for (const [id, install] of inst.styleGroups) {
|
|
4579
4693
|
if (!nextIds.has(id)) {
|
|
4580
4694
|
inst.styleGroupGen.set(id, (inst.styleGroupGen.get(id) ?? 0) + 1);
|
|
4581
|
-
|
|
4695
|
+
this.destroyInstall(install);
|
|
4582
4696
|
inst.styleGroups.delete(id);
|
|
4583
4697
|
}
|
|
4584
4698
|
}
|
|
@@ -4612,7 +4726,7 @@ export class Engine {
|
|
|
4612
4726
|
if (!inst || !install)
|
|
4613
4727
|
return;
|
|
4614
4728
|
inst.styleGroupGen.set(groupId, (inst.styleGroupGen.get(groupId) ?? 0) + 1); // discard in-flight compile
|
|
4615
|
-
|
|
4729
|
+
this.destroyInstall(install);
|
|
4616
4730
|
inst.styleGroups.delete(groupId);
|
|
4617
4731
|
this.assignDrawCallGroups(inst, this.currentClaims(inst));
|
|
4618
4732
|
}
|
|
@@ -4623,7 +4737,7 @@ export class Engine {
|
|
|
4623
4737
|
return;
|
|
4624
4738
|
for (const [id, install] of inst.styleGroups) {
|
|
4625
4739
|
inst.styleGroupGen.set(id, (inst.styleGroupGen.get(id) ?? 0) + 1);
|
|
4626
|
-
|
|
4740
|
+
this.destroyInstall(install);
|
|
4627
4741
|
}
|
|
4628
4742
|
inst.styleGroups.clear();
|
|
4629
4743
|
this.assignDrawCallGroups(inst, new Map());
|
|
@@ -4712,6 +4826,9 @@ export class Engine {
|
|
|
4712
4826
|
size: 256,
|
|
4713
4827
|
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
4714
4828
|
});
|
|
4829
|
+
// The outgoing install's maps go with it — a re-apply that changes images
|
|
4830
|
+
// would otherwise strand the old textures for the life of the model.
|
|
4831
|
+
const previousImages = inst.styleGroups.get(group.id)?.images;
|
|
4715
4832
|
inst.styleGroups.set(group.id, {
|
|
4716
4833
|
group,
|
|
4717
4834
|
renderClass,
|
|
@@ -4720,9 +4837,28 @@ export class Engine {
|
|
|
4720
4837
|
pipelineNoDepthWrite,
|
|
4721
4838
|
overEyesPipeline,
|
|
4722
4839
|
uniformBuffer,
|
|
4840
|
+
images: this.uploadGroupImages(group),
|
|
4723
4841
|
slotMap: result.slotMap,
|
|
4724
4842
|
signature,
|
|
4725
4843
|
});
|
|
4844
|
+
// Rebind this group's draw calls before the old textures go.
|
|
4845
|
+
//
|
|
4846
|
+
// assignDrawCallGroups only rebuilds a bind group when a material CHANGES
|
|
4847
|
+
// group, which is the wrong test here: swapping the graph on a group a
|
|
4848
|
+
// material already belongs to leaves its id alone while replacing the maps
|
|
4849
|
+
// underneath it. The draw call then kept a bind group holding the outgoing
|
|
4850
|
+
// textures — destroyed on the next line — so a graph swap either sampled the
|
|
4851
|
+
// old maps, or the fallback white where the previous graph had none (which
|
|
4852
|
+
// reads as a blown-out white material through any screen or add), or tripped
|
|
4853
|
+
// a validation error on a destroyed texture. Only a reload cleared it.
|
|
4854
|
+
const install = inst.styleGroups.get(group.id);
|
|
4855
|
+
for (const dc of inst.drawCalls) {
|
|
4856
|
+
if (!dc.baseBindGroupEntries || dc.groupId !== group.id)
|
|
4857
|
+
continue;
|
|
4858
|
+
dc.bindGroup = this.createMaterialBindGroup(`material: ${dc.materialName}`, dc.baseBindGroupEntries, uniformBuffer, install?.images);
|
|
4859
|
+
}
|
|
4860
|
+
for (const tex of previousImages ?? [])
|
|
4861
|
+
tex?.destroy();
|
|
4726
4862
|
this.writeGroupDefaults(uniformBuffer, group, result.slotMap);
|
|
4727
4863
|
return { ok: true, diagnostics, slotMap: result.slotMap };
|
|
4728
4864
|
}
|
|
@@ -4741,7 +4877,7 @@ export class Engine {
|
|
|
4741
4877
|
if (dc.groupId === groupId)
|
|
4742
4878
|
continue;
|
|
4743
4879
|
dc.groupId = groupId;
|
|
4744
|
-
dc.bindGroup = this.createMaterialBindGroup(`material: ${dc.materialName}`, dc.baseBindGroupEntries, install ? install.uniformBuffer : this.zeroStyleBuffer);
|
|
4880
|
+
dc.bindGroup = this.createMaterialBindGroup(`material: ${dc.materialName}`, dc.baseBindGroupEntries, install ? install.uniformBuffer : this.zeroStyleBuffer, install?.images);
|
|
4745
4881
|
}
|
|
4746
4882
|
this.sortDrawCalls(inst);
|
|
4747
4883
|
}
|
|
@@ -5020,6 +5156,42 @@ export class Engine {
|
|
|
5020
5156
|
u[40] = cameraPos.x;
|
|
5021
5157
|
u[41] = cameraPos.y;
|
|
5022
5158
|
u[42] = cameraPos.z;
|
|
5159
|
+
// Character positions (viewU[11..14]), count in viewU[10].w. Stages are
|
|
5160
|
+
// excluded: an effect asking where the cast is means the characters, and a
|
|
5161
|
+
// stage's origin is wherever its author put it, which is not a place
|
|
5162
|
+
// anything is standing. Four is the cap because the uniform is small and a
|
|
5163
|
+
// scene with five characters is not the case this serves.
|
|
5164
|
+
let n = 0;
|
|
5165
|
+
this.forEachInstance((inst) => {
|
|
5166
|
+
if (n >= MAX_EFFECT_SUBJECTS || inst.isStage)
|
|
5167
|
+
return;
|
|
5168
|
+
const m = inst.model;
|
|
5169
|
+
// The model transform is only where the model was PLACED. A motion moves
|
|
5170
|
+
// the character by animating bones, so an effect anchored to the
|
|
5171
|
+
// transform never follows anyone anywhere — it sits at the spawn point
|
|
5172
|
+
// while they walk out of it. Composed exactly as the follow camera
|
|
5173
|
+
// composes it, for the same reason: bone matrices are model-space.
|
|
5174
|
+
let px = m.position.x;
|
|
5175
|
+
let py = m.position.y;
|
|
5176
|
+
let pz = m.position.z;
|
|
5177
|
+
for (const bone of SUBJECT_BONES) {
|
|
5178
|
+
const pos = m.getBoneWorldPosition(bone);
|
|
5179
|
+
if (!pos)
|
|
5180
|
+
continue;
|
|
5181
|
+
const sc = m.scale;
|
|
5182
|
+
pos.setXYZ(pos.x * sc, pos.y * sc, pos.z * sc);
|
|
5183
|
+
Quat.rotateVecInto(m.rotation, pos, pos);
|
|
5184
|
+
px += pos.x;
|
|
5185
|
+
py += pos.y;
|
|
5186
|
+
pz += pos.z;
|
|
5187
|
+
break;
|
|
5188
|
+
}
|
|
5189
|
+
u[44 + n * 4] = px;
|
|
5190
|
+
u[45 + n * 4] = py;
|
|
5191
|
+
u[46 + n * 4] = pz;
|
|
5192
|
+
n++;
|
|
5193
|
+
});
|
|
5194
|
+
u[43] = n;
|
|
5023
5195
|
this.device.queue.writeBuffer(this.compositeUniformBuffer, 0, u);
|
|
5024
5196
|
}
|
|
5025
5197
|
}
|
|
@@ -52,7 +52,7 @@ export const BODY_GRAPH = {
|
|
|
52
52
|
{
|
|
53
53
|
id: "principled",
|
|
54
54
|
type: "principled",
|
|
55
|
-
inputs: { metallic: 0.0,
|
|
55
|
+
inputs: { metallic: 0.0, specular_ior_level: 0.5, roughness: 0.3, spec_clamp: 10.0, sheen_weight: 0.0, sheen_tint: 0.0 },
|
|
56
56
|
},
|
|
57
57
|
{ id: "p_sum", type: "add_shader" },
|
|
58
58
|
{ id: "mix_shader_001", type: "mix_shader", inputs: { fac: 0.5 } },
|
|
@@ -89,7 +89,7 @@ export const BODY_GRAPH = {
|
|
|
89
89
|
{ from: { node: "noise_ramp", socket: "fac_out" }, to: { node: "principled_base", socket: "fac" } },
|
|
90
90
|
{ from: { node: "bc", socket: "color" }, to: { node: "principled_base", socket: "a" } },
|
|
91
91
|
{ from: { node: "bc", socket: "color" }, to: { node: "p_emit", socket: "color" } },
|
|
92
|
-
{ from: { node: "principled_base", socket: "color" }, to: { node: "principled", socket: "
|
|
92
|
+
{ from: { node: "principled_base", socket: "color" }, to: { node: "principled", socket: "base_color" } },
|
|
93
93
|
{ from: { node: "bump", socket: "vector" }, to: { node: "principled", socket: "normal" } },
|
|
94
94
|
{ from: { node: "principled", socket: "color" }, to: { node: "p_sum", socket: "a" } },
|
|
95
95
|
{ from: { node: "p_emit", socket: "color" }, to: { node: "p_sum", socket: "b" } },
|
|
@@ -27,7 +27,7 @@ export const CLOTH_ROUGH_GRAPH = {
|
|
|
27
27
|
{
|
|
28
28
|
id: "principled",
|
|
29
29
|
type: "principled",
|
|
30
|
-
inputs: { metallic: 0.0,
|
|
30
|
+
inputs: { metallic: 0.0, specular_ior_level: 0.8, roughness: 0.8187, spec_clamp: 10.0, sheen_weight: 0.0, sheen_tint: 0.0 },
|
|
31
31
|
},
|
|
32
32
|
{ id: "mix_shader_001", type: "mix_shader", inputs: { fac: 0.8999999761581421 } },
|
|
33
33
|
],
|
|
@@ -52,7 +52,7 @@ export const CLOTH_ROUGH_GRAPH = {
|
|
|
52
52
|
{ from: { node: "noise_ramp", socket: "fac_out" }, to: { node: "bump", socket: "height" } },
|
|
53
53
|
{ from: { node: "geo", socket: "normal" }, to: { node: "bump", socket: "normal" } },
|
|
54
54
|
{ from: { node: "tex", socket: "color" }, to: { node: "principled_base", socket: "color" } },
|
|
55
|
-
{ from: { node: "principled_base", socket: "color" }, to: { node: "principled", socket: "
|
|
55
|
+
{ from: { node: "principled_base", socket: "color" }, to: { node: "principled", socket: "base_color" } },
|
|
56
56
|
{ from: { node: "bump", socket: "vector" }, to: { node: "principled", socket: "normal" } },
|
|
57
57
|
{ from: { node: "npr_emit", socket: "color" }, to: { node: "mix_shader_001", socket: "a" } },
|
|
58
58
|
{ from: { node: "principled", socket: "color" }, to: { node: "mix_shader_001", socket: "b" } },
|