reze-engine 0.64.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/engine.d.ts +300 -94
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1628 -787
- package/dist/graph/compile.d.ts.map +1 -1
- package/dist/graph/compile.js +5 -0
- package/dist/graph/presets/body.d.ts.map +1 -1
- package/dist/graph/presets/body.js +26 -24
- package/dist/graph/presets/cloth_rough.js +8 -8
- package/dist/graph/presets/cloth_smooth.js +8 -8
- package/dist/graph/presets/default.js +4 -4
- package/dist/graph/presets/eye.js +10 -10
- package/dist/graph/presets/face.d.ts.map +1 -1
- package/dist/graph/presets/face.js +28 -26
- package/dist/graph/presets/hair.js +6 -6
- package/dist/graph/presets/metal.js +8 -8
- package/dist/graph/presets/stockings.d.ts.map +1 -1
- package/dist/graph/presets/stockings.js +4 -11
- package/dist/graph/presets/unlit.d.ts.map +1 -1
- package/dist/graph/presets/unlit.js +9 -13
- package/dist/graph/registry.d.ts.map +1 -1
- package/dist/graph/registry.js +128 -157
- package/dist/graph/render-class.d.ts +5 -2
- package/dist/graph/render-class.d.ts.map +1 -1
- package/dist/graph/slots.d.ts.map +1 -1
- package/dist/graph/slots.js +12 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/model.d.ts +23 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +41 -1
- package/dist/outline-normals.d.ts +12 -0
- package/dist/outline-normals.d.ts.map +1 -0
- package/dist/outline-normals.js +100 -0
- package/dist/pmx-loader.d.ts +7 -0
- package/dist/pmx-loader.d.ts.map +1 -1
- package/dist/pmx-loader.js +17 -3
- package/dist/shaders/anchor-table.d.ts +11 -0
- package/dist/shaders/anchor-table.d.ts.map +1 -1
- package/dist/shaders/anchor-table.js +9 -3
- package/dist/shaders/directives.d.ts +42 -5
- package/dist/shaders/directives.d.ts.map +1 -1
- package/dist/shaders/directives.js +51 -4
- package/dist/shaders/lights.d.ts +11 -7
- package/dist/shaders/lights.d.ts.map +1 -1
- package/dist/shaders/lights.js +315 -271
- package/dist/shaders/materials/common.d.ts.map +1 -1
- package/dist/shaders/materials/common.js +30 -5
- 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 +191 -271
- package/dist/shaders/passes/bloom.d.ts +4 -3
- package/dist/shaders/passes/bloom.d.ts.map +1 -1
- package/dist/shaders/passes/bloom.js +58 -87
- package/dist/shaders/passes/composite.d.ts +1 -1
- package/dist/shaders/passes/composite.d.ts.map +1 -1
- package/dist/shaders/passes/composite.js +121 -77
- package/dist/shaders/passes/ground.js +1 -1
- package/dist/shaders/passes/mirror.d.ts +18 -12
- package/dist/shaders/passes/mirror.d.ts.map +1 -1
- package/dist/shaders/passes/mirror.js +59 -13
- package/dist/shaders/passes/outline.d.ts.map +1 -1
- package/dist/shaders/passes/outline.js +71 -14
- package/dist/shaders/passes/particles.d.ts.map +1 -1
- package/dist/shaders/passes/particles.js +9 -3
- package/dist/shaders/passes/probe.d.ts +45 -0
- package/dist/shaders/passes/probe.d.ts.map +1 -0
- package/dist/shaders/passes/probe.js +230 -0
- package/dist/shaders/passes/scene-contract.d.ts +13 -0
- package/dist/shaders/passes/scene-contract.d.ts.map +1 -1
- package/dist/shaders/passes/scene-contract.js +4 -0
- package/dist/shaders/scene-light-api.d.ts.map +1 -1
- package/dist/shaders/scene-light-api.js +1 -0
- package/dist/unity/globals.d.ts +7 -0
- package/dist/unity/globals.d.ts.map +1 -1
- package/dist/unity/globals.js +4 -3
- package/dist/unity/host.d.ts +18 -0
- package/dist/unity/host.d.ts.map +1 -1
- package/dist/unity/host.js +144 -70
- package/dist/unity/looks.d.ts +47 -0
- package/dist/unity/looks.d.ts.map +1 -1
- package/dist/unity/looks.js +150 -6
- package/dist/unity/skin.d.ts.map +1 -1
- package/dist/unity/skin.js +5 -2
- package/dist/unity/stage.d.ts +24 -0
- package/dist/unity/stage.d.ts.map +1 -1
- package/dist/unity/stage.js +59 -7
- package/package.json +1 -1
- package/src/engine.ts +2010 -1033
- package/src/graph/compile.ts +4 -0
- package/src/graph/presets/body.ts +26 -24
- package/src/graph/presets/cloth_rough.ts +8 -8
- package/src/graph/presets/cloth_smooth.ts +8 -8
- package/src/graph/presets/default.ts +4 -4
- package/src/graph/presets/eye.ts +10 -10
- package/src/graph/presets/face.ts +28 -26
- package/src/graph/presets/hair.ts +6 -6
- package/src/graph/presets/metal.ts +8 -8
- package/src/graph/presets/stockings.ts +4 -11
- package/src/graph/presets/unlit.ts +9 -13
- package/src/graph/registry.ts +133 -158
- package/src/graph/render-class.ts +5 -2
- package/src/graph/slots.ts +12 -2
- package/src/index.ts +1 -0
- package/src/model.ts +50 -1
- package/src/outline-normals.ts +110 -0
- package/src/pmx-loader.ts +18 -3
- package/src/shaders/anchor-table.ts +15 -3
- package/src/shaders/directives.ts +88 -6
- package/src/shaders/lights.ts +464 -415
- package/src/shaders/materials/common.ts +30 -5
- package/src/shaders/materials/nodes.ts +191 -271
- package/src/shaders/passes/bloom.ts +59 -87
- package/src/shaders/passes/composite.ts +121 -77
- package/src/shaders/passes/ground.ts +1 -1
- package/src/shaders/passes/mirror.ts +60 -13
- package/src/shaders/passes/outline.ts +71 -14
- package/src/shaders/passes/particles.ts +9 -3
- package/src/shaders/passes/probe.ts +240 -0
- package/src/shaders/passes/scene-contract.ts +17 -0
- package/src/shaders/scene-light-api.ts +1 -0
- package/src/unity/globals.ts +7 -3
- package/src/unity/host.ts +93 -20
- package/src/unity/looks.ts +182 -9
- package/src/unity/skin.ts +5 -2
- package/src/unity/stage.ts +66 -7
- package/dist/physics-debug.d.ts +0 -30
- package/dist/physics-debug.d.ts.map +0 -1
- package/dist/physics-debug.js +0 -526
- package/dist/shaders/agx-lut.d.ts +0 -11
- package/dist/shaders/agx-lut.d.ts.map +0 -1
- package/dist/shaders/agx-lut.js +0 -29
- package/dist/shaders/dfg_lut.d.ts +0 -3
- package/dist/shaders/dfg_lut.d.ts.map +0 -1
- package/dist/shaders/dfg_lut.js +0 -129
- package/dist/shaders/ltc_mag_lut.d.ts +0 -3
- package/dist/shaders/ltc_mag_lut.d.ts.map +0 -1
- package/dist/shaders/ltc_mag_lut.js +0 -1033
- package/dist/shaders/materials/body.d.ts +0 -2
- package/dist/shaders/materials/body.d.ts.map +0 -1
- package/dist/shaders/materials/body.js +0 -95
- package/dist/shaders/materials/cloth_rough.d.ts +0 -2
- package/dist/shaders/materials/cloth_rough.d.ts.map +0 -1
- package/dist/shaders/materials/cloth_rough.js +0 -69
- package/dist/shaders/materials/cloth_smooth.d.ts +0 -2
- package/dist/shaders/materials/cloth_smooth.d.ts.map +0 -1
- package/dist/shaders/materials/cloth_smooth.js +0 -61
- package/dist/shaders/materials/default.d.ts +0 -2
- package/dist/shaders/materials/default.d.ts.map +0 -1
- package/dist/shaders/materials/default.js +0 -43
- package/dist/shaders/materials/eye.d.ts +0 -2
- package/dist/shaders/materials/eye.d.ts.map +0 -1
- package/dist/shaders/materials/eye.js +0 -60
- package/dist/shaders/materials/face.d.ts +0 -2
- package/dist/shaders/materials/face.d.ts.map +0 -1
- package/dist/shaders/materials/face.js +0 -95
- package/dist/shaders/materials/hair.d.ts +0 -2
- package/dist/shaders/materials/hair.d.ts.map +0 -1
- package/dist/shaders/materials/hair.js +0 -90
- package/dist/shaders/materials/metal.d.ts +0 -2
- package/dist/shaders/materials/metal.d.ts.map +0 -1
- package/dist/shaders/materials/metal.js +0 -77
- package/dist/shaders/materials/mmd_classic.d.ts +0 -2
- package/dist/shaders/materials/mmd_classic.d.ts.map +0 -1
- package/dist/shaders/materials/mmd_classic.js +0 -66
- package/dist/shaders/materials/stockings.d.ts +0 -2
- package/dist/shaders/materials/stockings.d.ts.map +0 -1
- package/dist/shaders/materials/stockings.js +0 -122
- package/dist/shaders/passes/physics-debug.d.ts +0 -2
- package/dist/shaders/passes/physics-debug.d.ts.map +0 -1
- package/dist/shaders/passes/physics-debug.js +0 -69
- package/src/shaders/agx-lut.ts +0 -30
- package/src/shaders/dfg_lut.ts +0 -131
- package/src/shaders/ltc_mag_lut.ts +0 -1035
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAA6C,MAAM,QAAQ,CAAA;AAEpF,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAI5C,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EAEjB,UAAU,EASX,MAAM,aAAa,CAAA;AAgCpB,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;yDACqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAaD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;2EAE2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,CAAC,EAAE,MAAM,EAAE,CAAA;IACX,CAAC,EAAE,MAAM,EAAE,CAAA;CACZ;AAOD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IAGxB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;;;OASG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC;;;iFAG6E;IAC7E,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;uDAEmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAGD,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB;AAGD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAGD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,IAAI,CAAA;IAChB,aAAa,EAAE,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,mBAAmB,EAAE,YAAY,CAAA;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,WAAW,CAAA;IACnB,OAAO,EAAE,UAAU,CAAA;CACpB;AAGD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAGD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3C;AAED,8FAA8F;AAC9F,eAAO,MAAM,uBAAuB,IAAI,CAAA;AACxC,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAInC,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAA;IACrB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5C;AAKD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,yDAAyD;IACzD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAGD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,iBAAiB,EAAE,CAAA;IAClC,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACvC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;IAC/B,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACvC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB;AAGD,UAAU,gBAAgB;IACxB,aAAa,EAAE,YAAY,CAAA;IAC3B,QAAQ,EAAE,WAAW,CAAA;IACrB,QAAQ,EAAE,WAAW,CAAA;IACrB,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AA2CD,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAa;IAE1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO5B,IAAI,QAAQ,IAAI,IAAI,CAEnB;IAED,IAAI,QAAQ,IAAI,IAAI,CAEnB;IAED,2EAA2E;IAC3E,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;6DACyD;IACzD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAKjC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAKjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;iFAE6E;IAC7E,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI;IAQhD,aAAa,IAAI,YAAY,GAAG,IAAI;IAIpC;4EACwE;IACxE,aAAa,IAAI,YAAY;IAK7B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAA0B;IAG3C,OAAO,CAAC,qBAAqB,CAAC,CAAc;IAC5C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,eAAe,CAAO;IAG9B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAElC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAU;IAG1B,OAAO,CAAC,QAAQ,CAAU;IAG1B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAc;IAG5B,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAiB;IAKpC,OAAO,CAAC,aAAa,CAAqF;IAK1G,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAQ;IAChC,4EAA4E;IAC5E,OAAO,CAAC,SAAS,CAAQ;IAGzB,OAAO,CAAC,aAAa,CAAO;IAM5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,gBAAgB,CAAuE;IAC/F,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC;;;;;iCAK6B;IAC7B,OAAO,CAAC,UAAU,CAA4B;IAC9C;;;;;;kCAM8B;IAC9B,OAAO,CAAC,eAAe,CAAsC;IAG7D,OAAO,CAAC,iBAAiB,CAAC,CAAc;IAMxC,OAAO,CAAC,WAAW,CAAa;IAChC,4FAA4F;IAC5F,OAAO,CAAC,aAAa,CAA0B;IAC/C,oFAAoF;IACpF,OAAO,CAAC,kBAAkB,CAA0B;IACpD,kFAAkF;IAClF,OAAO,CAAC,oBAAoB,CAA0B;IACtD,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,oBAAoB,CAA0B;IAKtD,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAY;IAG/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,eAAe,CAA6B;IAKpD,OAAO,CAAC,OAAO,CASA;IACf,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD;iFAC6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiG;IAC5H,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4D;IAK3F,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAoH;IACrI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoD;IACrF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoD;IAGtF,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,eAAe,CAAI;IAE3B,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,aAAa,CAAK;IAE1B,iHAAiH;IACjH,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;gBAM1D,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,EACrC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,QAAQ,EAAE,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,GAAE,SAAS,EAAO,EAC7B,MAAM,GAAE,KAAK,EAAO,EACpB,YAAY,GAAE,MAAM,EAAO,EAC3B,UAAU,GAAE,YAAY,GAAG,IAAW,EACtC,aAAa,GAAE,YAAY,EAAO;IA4BpC,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAA2D;IAEjF,OAAO,CAAC,yBAAyB;IAuCjC,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,gBAAgB;IAuDxB,OAAO,CAAC,sBAAsB;IAwC9B,OAAO,CAAC,sBAAsB;IA+B9B;;;;;;;;OAQG;IACH;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IA8BvB;;+CAE2C;IAC3C,oBAAoB,IAAI,OAAO;IAM/B;;;;;;;;;;;OAWG;IACH,wBAAwB,IAAI,MAAM,EAAE;IA8BpC,OAAO,CAAC,YAAY;IA6EpB,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC;IAIxC,0DAA0D;IAC1D,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,aAAa,CAAgB;IAErC;;gFAE4E;IAC5E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAGrD,OAAO,CAAC,eAAe,CAAyC;IAEhE;;;;OAIG;IACH,kBAAkB,IAAI,YAAY,CAAC,WAAW,CAAC;IAK/C,WAAW,IAAI,OAAO,EAAE;IAIxB,YAAY,IAAI,QAAQ,EAAE;IAI1B,UAAU,IAAI,WAAW,CAAC,WAAW,CAAC;IAItC;;;;;;;;OAQG;IACH,WAAW,IAAI;QAAE,SAAS,EAAE,YAAY,CAAC;QAAC,GAAG,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE;IAgBnF,WAAW,IAAI,QAAQ;IAIvB;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,GAAG,IAAI;IAa5G,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7C,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAShD,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI;IAWzD,OAAO,CAAC,kBAAkB,CAAQ;IAClC,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAG/C,oBAAoB,IAAI,OAAO;IAI/B;+DAC2D;IAC3D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAMzD;;+CAE2C;IAC3C,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKxD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMnD;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAelE;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IASlD,WAAW,IAAI,QAAQ;IAOvB,cAAc,IAAI,OAAO;IAKzB,eAAe,IAAI,SAAS,MAAM,EAAE;IAIpC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA0B;IAG9D,8EAA8E;IAC9E,OAAO,CAAC,WAAW,CAAmD;IACtE;kEAC8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,aAAa,CAAQ;IAC7B;gDAC4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,SAAS,CAA0B;IAC3C;mEAC+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,UAAU,CAAQ;IAC1B;2DACuD;IACvD,OAAO,CAAC,YAAY,CAAQ;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAkBxD,cAAc,IAAI,OAAO;IAIzB;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,GAAG,IAAI;IAqCtB;sEACkE;IAClE,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAUxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,SAAS;IAyEjB;wBACoB;IACpB,OAAO,CAAC,YAAY;IA4BpB;;;oDAGgD;IAChD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;IAQvE,cAAc,IAAI,SAAS,EAAE;IAI7B,SAAS,IAAI,KAAK,EAAE;IAIpB,WAAW,IAAI,QAAQ;IAIvB,eAAe,IAAI,YAAY;IAM/B,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAmD3E,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAwD5E,OAAO,CAAC,4BAA4B;IA0CpC,gBAAgB,IAAI,IAAI,EAAE;IAI1B,oBAAoB,IAAI,YAAY;IAWpC,0BAA0B,IAAI,YAAY;IAI1C,eAAe,IAAI,YAAY;IAoC/B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAkDvE,OAAO,CAAC,WAAW;IAoGnB,eAAe,IAAI,IAAI;IAMvB,wBAAwB,IAAI,OAAO;IAQnC,wBAAwB,IAAI,YAAY;IAQxC,qBAAqB,IAAI,gBAAgB,GAAG,IAAI;IA6DhD,wBAAwB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAavE,OAAO,CAAC,yBAAyB;IA0DjC;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDpG;;8DAE0D;IAC1D,OAAO,CAAC,kBAAkB;IAS1B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAIjD,aAAa,IAAI,IAAI;IAWrB,cAAc,IAAI,IAAI;IAStB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAI3C;;;;;;;;;;;8EAW0E;IAC1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,GAAG,IAAI;IAgC5F,mEAAmE;IACnE,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B;;;;;;;;;OASG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,WAAW;IAM9E,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO;IAgB3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB;;;;2DAIuD;IACvD,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAMzC,cAAc,IAAI,IAAI;IAItB;;;iFAG6E;IAC7E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,OAAO;IAWvG,+EAA+E;IAC/E,aAAa,CAAC,OAAO,SAAM,GAAG,IAAI;IAUlC,4CAA4C;IAC5C,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;;;mDAI+C;IAC/C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,IAAI;IAc5H,OAAO,CAAC,cAAc;IAYtB;yEACqE;IACrE,OAAO,CAAC,gBAAgB;IAWxB;;;mFAG+E;IAC/E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAoBjF,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAOZ;;uEAEmE;IACnE,cAAc,IAAI,IAAI;IAQtB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B,oBAAoB,IAAI,iBAAiB;IAazC,OAAO,CAAC,MAAM,CAAC,UAAU;IAWzB,OAAO,CAAC,iBAAiB;IAczB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAoB;IAEtC;8EAC0E;IAC1E,OAAO,CAAC,eAAe;IAevB;;;;8BAI0B;IAC1B,OAAO,CAAC,mBAAmB;IA2C3B,8FAA8F;IAC9F,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,iBAAiB;IAiCzB;;;;yEAIqE;IACrE,OAAO,CAAC,gBAAgB;IAuIxB;sFACkF;IAClF,OAAO,CAAC,YAAY;IAmDpB;;2EAEuE;IACvE,OAAO,CAAC,cAAc;IA0CtB;;;;;;;;;OASG;IACH,MAAM,IAAI,OAAO;IAiBjB,qDAAqD;IACrD,OAAO,CAAC,eAAe;IAQvB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,OAAO;IAuHpD,OAAO,CAAC,aAAa;IAyCrB,OAAO,CAAC,aAAa,CAAyB;IAI9C,OAAO,CAAC,4BAA4B;IA4HpC;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAkDlD;kFAC8E;IAC9E,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,IAAI,IAAI;IA4C1B,oBAAoB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;CA0GhD"}
|
package/dist/model.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Mat4, Quat, Vec3, easeInOut, scratchMat4Values, scratchQuat } from "./m
|
|
|
2
2
|
import { Engine } from "./engine";
|
|
3
3
|
import { joinAssetPath } from "./asset-reader";
|
|
4
4
|
import { IKSolverSystem } from "./ik-solver";
|
|
5
|
+
import { buildOutlineVertices } from "./outline-normals";
|
|
5
6
|
import { VMDLoader } from "./vmd-loader";
|
|
6
7
|
import { VMDWriter } from "./vmd-writer";
|
|
7
8
|
import { AnimationState, FPS, interpolateControlPoints, retiredMorphs, rawInterpolationToBoneInterpolation, } from "./animation";
|
|
@@ -123,7 +124,7 @@ export class Model {
|
|
|
123
124
|
this.assetReader = reader;
|
|
124
125
|
this.assetBasePath = basePath;
|
|
125
126
|
}
|
|
126
|
-
constructor(vertexData, indexData, textures, materials, skeleton, skinning, morphing, rigidbodies = [], joints = [], loadWarnings = []) {
|
|
127
|
+
constructor(vertexData, indexData, textures, materials, skeleton, skinning, morphing, rigidbodies = [], joints = [], loadWarnings = [], edgeScales = null, additionalUvs = []) {
|
|
127
128
|
this._name = "";
|
|
128
129
|
this.morphPrevMinVert = -1; // vertices touched by last applyMorphs (reset to base this pass)
|
|
129
130
|
this.morphPrevMaxVert = -1;
|
|
@@ -229,6 +230,9 @@ export class Model {
|
|
|
229
230
|
this.assetBasePath = "";
|
|
230
231
|
/** 軸制限 bones and their normalised axes — see applyFixedAxes. */
|
|
231
232
|
this.fixedAxisBones = [];
|
|
233
|
+
/** PMX per-vertex edge scale, when the source had one. */
|
|
234
|
+
this.edgeScales = null;
|
|
235
|
+
this.outlineVertices = null;
|
|
232
236
|
// When true, update() skips applyPoseFromClip, so whatever was last written to
|
|
233
237
|
// localRotations / localTranslations persists across frames. Used by gizmo drag
|
|
234
238
|
// and other direct-manipulation flows to prevent the currently-shown clip from
|
|
@@ -266,6 +270,8 @@ export class Model {
|
|
|
266
270
|
this.ikDisabled = new Set();
|
|
267
271
|
// Cached set to track which bones are being computed in current IK pass (to avoid infinite recursion)
|
|
268
272
|
this.ikComputedSet = new Set();
|
|
273
|
+
this.edgeScales = edgeScales;
|
|
274
|
+
this.additionalUvs = additionalUvs;
|
|
269
275
|
// Store base vertex data (original positions before morphing)
|
|
270
276
|
this.baseVertexData = new Float32Array(vertexData);
|
|
271
277
|
this.vertexData = vertexData;
|
|
@@ -671,6 +677,21 @@ export class Model {
|
|
|
671
677
|
getVertices() {
|
|
672
678
|
return this.vertexData;
|
|
673
679
|
}
|
|
680
|
+
/** A PMX additional UV channel (1–4) as loaded, four floats a vertex — or
|
|
681
|
+
* null when the file has fewer. Its morphs (types 4–7) are in getMorphing(),
|
|
682
|
+
* with uvOffsets; the engine applies neither, a native look reads both. */
|
|
683
|
+
getAdditionalUv(channel) {
|
|
684
|
+
return this.additionalUvs[channel - 1] ?? null;
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* The outline hull's own vertex stream: per vertex, the smoothed rest-pose
|
|
688
|
+
* normal (xyz) and the PMX edge scale (w). See outline-normals.ts. Built on
|
|
689
|
+
* first ask — only models with an edge-flagged material ever ask.
|
|
690
|
+
*/
|
|
691
|
+
getOutlineVertices() {
|
|
692
|
+
this.outlineVertices ?? (this.outlineVertices = buildOutlineVertices(this.baseVertexData, VERTEX_STRIDE, this.indexData, this.edgeScales ?? undefined));
|
|
693
|
+
return this.outlineVertices;
|
|
694
|
+
}
|
|
674
695
|
getTextures() {
|
|
675
696
|
return this.textures;
|
|
676
697
|
}
|
|
@@ -771,6 +792,25 @@ export class Model {
|
|
|
771
792
|
return null;
|
|
772
793
|
return this.runtimeSkeleton.worldMatrices[idx].getPosition();
|
|
773
794
|
}
|
|
795
|
+
/**
|
|
796
|
+
* The point `distance` model units down a bone's own axis, posed — where
|
|
797
|
+
* `#anchor <bone> along <d>` puts an effect. The axis is the bone's rest tail
|
|
798
|
+
* direction (the way a PMX editor draws it pointing) turned by the bone's
|
|
799
|
+
* pose, the same mapping the named-points tips use. Model space, like
|
|
800
|
+
* getBoneWorldPosition. A bone with no tail has no axis: the joint itself.
|
|
801
|
+
*/
|
|
802
|
+
getBonePointAlong(boneName, distance) {
|
|
803
|
+
const idx = this.runtimeSkeleton.nameIndex[boneName];
|
|
804
|
+
if (idx === undefined || idx < 0)
|
|
805
|
+
return null;
|
|
806
|
+
const w = this.runtimeSkeleton.worldMatrices[idx].values;
|
|
807
|
+
const t = this.skeleton.bones[idx]?.tail;
|
|
808
|
+
const len = t ? Math.hypot(t[0], t[1], t[2]) : 0;
|
|
809
|
+
if (!t || len < 1e-6)
|
|
810
|
+
return new Vec3(w[12], w[13], w[14]);
|
|
811
|
+
const k = distance / len;
|
|
812
|
+
return new Vec3(w[12] + (w[0] * t[0] + w[4] * t[1] + w[8] * t[2]) * k, w[13] + (w[1] * t[0] + w[5] * t[1] + w[9] * t[2]) * k, w[14] + (w[2] * t[0] + w[6] * t[1] + w[10] * t[2]) * k);
|
|
813
|
+
}
|
|
774
814
|
/**
|
|
775
815
|
* A bone's forward axis, normalised — which way a foot points, where a head
|
|
776
816
|
* looks. Model space, like getBoneWorldPosition: the caller composes the model
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Positions closer than this (model units) are one position. */
|
|
2
|
+
export declare const OUTLINE_WELD_EPSILON = 0.0001;
|
|
3
|
+
/**
|
|
4
|
+
* Smoothed outline normals, packed with the PMX per-vertex edge scale:
|
|
5
|
+
* xyz = unit direction, w = edge scale — four floats per vertex.
|
|
6
|
+
*
|
|
7
|
+
* @param vertexData interleaved [pos3, normal3, uv2] per vertex
|
|
8
|
+
* @param indices triangle list
|
|
9
|
+
* @param edgeScales per-vertex PMX edge scale, or omitted for 1
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildOutlineVertices(vertexData: ArrayLike<number>, stride: number, indices: ArrayLike<number>, edgeScales?: ArrayLike<number>): Float32Array<ArrayBuffer>;
|
|
12
|
+
//# sourceMappingURL=outline-normals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline-normals.d.ts","sourceRoot":"","sources":["../src/outline-normals.ts"],"names":[],"mappings":"AAmBA,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,SAAO,CAAA;AAExC;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAC1B,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAC7B,YAAY,CAAC,WAAW,CAAC,CA+D3B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// The inverted hull's own push direction, one per vertex, built once at load.
|
|
2
|
+
//
|
|
3
|
+
// The hull is the model pushed out along a normal. Pushed along the MESH's
|
|
4
|
+
// normals it tears wherever the mesh carries two vertices at one position —
|
|
5
|
+
// every hard edge and every UV seam — because the two copies go two ways and
|
|
6
|
+
// the gap between them shows the body through the line: the jaw, the finger
|
|
7
|
+
// joints, the parting in the hair. Aether Gazer bakes a smoothed normal into
|
|
8
|
+
// vertex colour for exactly this (Character/Debug.shader, pass "Outline"); a
|
|
9
|
+
// PMX has nowhere to carry one, so it is computed here instead: the normals of
|
|
10
|
+
// every vertex at one position, averaged, so the copies agree and the hull
|
|
11
|
+
// stays closed.
|
|
12
|
+
//
|
|
13
|
+
// Each vertex's vote is weighted by the corner angles it owns, which is what
|
|
14
|
+
// makes a hard corner come out as the corner's true bisector rather than
|
|
15
|
+
// leaning toward whichever side happened to be cut into more triangles.
|
|
16
|
+
//
|
|
17
|
+
// Rest pose only, as the game's is: a morph moves the positions and leaves this
|
|
18
|
+
// alone, and skinning turns it exactly as it turns the normal.
|
|
19
|
+
/** Positions closer than this (model units) are one position. */
|
|
20
|
+
export const OUTLINE_WELD_EPSILON = 1e-4;
|
|
21
|
+
/**
|
|
22
|
+
* Smoothed outline normals, packed with the PMX per-vertex edge scale:
|
|
23
|
+
* xyz = unit direction, w = edge scale — four floats per vertex.
|
|
24
|
+
*
|
|
25
|
+
* @param vertexData interleaved [pos3, normal3, uv2] per vertex
|
|
26
|
+
* @param indices triangle list
|
|
27
|
+
* @param edgeScales per-vertex PMX edge scale, or omitted for 1
|
|
28
|
+
*/
|
|
29
|
+
export function buildOutlineVertices(vertexData, stride, indices, edgeScales) {
|
|
30
|
+
const n = Math.floor(vertexData.length / stride);
|
|
31
|
+
const out = new Float32Array(n * 4);
|
|
32
|
+
// Corner angles each vertex owns. A vertex no triangle uses keeps a token
|
|
33
|
+
// weight, so it still has a direction of its own.
|
|
34
|
+
const weight = new Float32Array(n).fill(1e-6);
|
|
35
|
+
for (let t = 0; t + 2 < indices.length; t += 3) {
|
|
36
|
+
const a = indices[t], b = indices[t + 1], c = indices[t + 2];
|
|
37
|
+
if (a >= n || b >= n || c >= n)
|
|
38
|
+
continue;
|
|
39
|
+
weight[a] += cornerAngle(vertexData, stride, a, b, c);
|
|
40
|
+
weight[b] += cornerAngle(vertexData, stride, b, c, a);
|
|
41
|
+
weight[c] += cornerAngle(vertexData, stride, c, a, b);
|
|
42
|
+
}
|
|
43
|
+
// Weld by quantized position.
|
|
44
|
+
const inv = 1 / OUTLINE_WELD_EPSILON;
|
|
45
|
+
const group = new Int32Array(n);
|
|
46
|
+
const ids = new Map();
|
|
47
|
+
let groups = 0;
|
|
48
|
+
for (let i = 0; i < n; i++) {
|
|
49
|
+
const o = i * stride;
|
|
50
|
+
const key = `${Math.round(vertexData[o] * inv)},${Math.round(vertexData[o + 1] * inv)},${Math.round(vertexData[o + 2] * inv)}`;
|
|
51
|
+
let g = ids.get(key);
|
|
52
|
+
if (g === undefined) {
|
|
53
|
+
g = groups++;
|
|
54
|
+
ids.set(key, g);
|
|
55
|
+
}
|
|
56
|
+
group[i] = g;
|
|
57
|
+
}
|
|
58
|
+
const sum = new Float32Array(groups * 3);
|
|
59
|
+
for (let i = 0; i < n; i++) {
|
|
60
|
+
const o = i * stride;
|
|
61
|
+
const w = weight[i];
|
|
62
|
+
const g = group[i] * 3;
|
|
63
|
+
sum[g] += vertexData[o + 3] * w;
|
|
64
|
+
sum[g + 1] += vertexData[o + 4] * w;
|
|
65
|
+
sum[g + 2] += vertexData[o + 5] * w;
|
|
66
|
+
}
|
|
67
|
+
for (let i = 0; i < n; i++) {
|
|
68
|
+
const o = i * stride;
|
|
69
|
+
const nx = vertexData[o + 3], ny = vertexData[o + 4], nz = vertexData[o + 5];
|
|
70
|
+
const g = group[i] * 3;
|
|
71
|
+
let x = sum[g], y = sum[g + 1], z = sum[g + 2];
|
|
72
|
+
const len = Math.hypot(x, y, z);
|
|
73
|
+
// Two sheets back to back at one position (a double-sided skirt, a shell
|
|
74
|
+
// and its lining) cancel to nothing, or to a direction pointing INTO one of
|
|
75
|
+
// them. Either way the welded answer is wrong for this vertex, and its own
|
|
76
|
+
// normal is the honest one.
|
|
77
|
+
if (len < 1e-6 || x * nx + y * ny + z * nz <= 0) {
|
|
78
|
+
x = nx;
|
|
79
|
+
y = ny;
|
|
80
|
+
z = nz;
|
|
81
|
+
}
|
|
82
|
+
const l = Math.hypot(x, y, z) || 1;
|
|
83
|
+
out[i * 4] = x / l;
|
|
84
|
+
out[i * 4 + 1] = y / l;
|
|
85
|
+
out[i * 4 + 2] = z / l;
|
|
86
|
+
out[i * 4 + 3] = edgeScales ? edgeScales[i] : 1;
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/** The angle at vertex `a` of triangle (a, b, c), in radians. */
|
|
91
|
+
function cornerAngle(v, stride, a, b, c) {
|
|
92
|
+
const oa = a * stride, ob = b * stride, oc = c * stride;
|
|
93
|
+
const ux = v[ob] - v[oa], uy = v[ob + 1] - v[oa + 1], uz = v[ob + 2] - v[oa + 2];
|
|
94
|
+
const wx = v[oc] - v[oa], wy = v[oc + 1] - v[oa + 1], wz = v[oc + 2] - v[oa + 2];
|
|
95
|
+
const lu = Math.hypot(ux, uy, uz), lw = Math.hypot(wx, wy, wz);
|
|
96
|
+
if (lu < 1e-12 || lw < 1e-12)
|
|
97
|
+
return 0;
|
|
98
|
+
const cos = (ux * wx + uy * wy + uz * wz) / (lu * lw);
|
|
99
|
+
return Math.acos(Math.max(-1, Math.min(1, cos)));
|
|
100
|
+
}
|
package/dist/pmx-loader.d.ts
CHANGED
|
@@ -18,6 +18,13 @@ export declare class PmxLoader {
|
|
|
18
18
|
private inverseBindMatrices;
|
|
19
19
|
private joints0;
|
|
20
20
|
private weights0;
|
|
21
|
+
/** The PMX's additional UV channels (1–4), each four floats a vertex. The
|
|
22
|
+
* engine's own shading reads none of them; a native look can name one as
|
|
23
|
+
* the carrier of a game vertex stream (NativeLook.streams). */
|
|
24
|
+
private additionalUvs;
|
|
25
|
+
/** PMX per-vertex edge scale — the outline's width multiplier, as the
|
|
26
|
+
* game's outline takes vertex colour alpha. */
|
|
27
|
+
private edgeScales;
|
|
21
28
|
private morphs;
|
|
22
29
|
private vertexCount;
|
|
23
30
|
private rigidbodies;
|
package/dist/pmx-loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmx-loader.d.ts","sourceRoot":"","sources":["../src/pmx-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAcN,MAAM,SAAS,CAAA;AAGhB,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEzE,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,kBAAkB,CAAI;IAC9B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO;IAQP,OAAO,CAAC,IAAI;WAMC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI9C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK;WAIpC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKxF,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,WAAW;IAwDnB,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"pmx-loader.d.ts","sourceRoot":"","sources":["../src/pmx-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAcN,MAAM,SAAS,CAAA;AAGhB,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEzE,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,kBAAkB,CAAI;IAC9B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAA0B;IAC1C;;oEAEgE;IAChE,OAAO,CAAC,aAAa,CAAqB;IAC1C;oDACgD;IAChD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO;IAQP,OAAO,CAAC,IAAI;WAMC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI9C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK;WAIpC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKxF,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,WAAW;IAwDnB,OAAO,CAAC,aAAa;IAgHrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,cAAc;IAsEtB,OAAO,CAAC,UAAU;IAkLlB,OAAO,CAAC,WAAW;IAgMnB,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,gBAAgB;IA+FxB,OAAO,CAAC,WAAW;IAmGnB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,OAAO;IAoJf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,OAAO;IAwBf,OAAO,CAAC,QAAQ;CAIjB"}
|
package/dist/pmx-loader.js
CHANGED
|
@@ -19,6 +19,13 @@ export class PmxLoader {
|
|
|
19
19
|
this.inverseBindMatrices = null;
|
|
20
20
|
this.joints0 = null;
|
|
21
21
|
this.weights0 = null;
|
|
22
|
+
/** The PMX's additional UV channels (1–4), each four floats a vertex. The
|
|
23
|
+
* engine's own shading reads none of them; a native look can name one as
|
|
24
|
+
* the carrier of a game vertex stream (NativeLook.streams). */
|
|
25
|
+
this.additionalUvs = [];
|
|
26
|
+
/** PMX per-vertex edge scale — the outline's width multiplier, as the
|
|
27
|
+
* game's outline takes vertex colour alpha. */
|
|
28
|
+
this.edgeScales = null;
|
|
22
29
|
this.morphs = [];
|
|
23
30
|
this.vertexCount = 0;
|
|
24
31
|
this.rigidbodies = [];
|
|
@@ -117,6 +124,8 @@ export class PmxLoader {
|
|
|
117
124
|
// Prepare skinning arrays (4 influences per vertex)
|
|
118
125
|
const joints = new Uint16Array(count * 4);
|
|
119
126
|
const weights = new Uint8Array(count * 4); // UNORM8, will be normalized to 255
|
|
127
|
+
const edgeScales = new Float32Array(count);
|
|
128
|
+
this.additionalUvs = Array.from({ length: this.additionalVec4Count }, () => new Float32Array(count * 4));
|
|
120
129
|
for (let i = 0; i < count; i++) {
|
|
121
130
|
const px = this.getFloat32();
|
|
122
131
|
const py = this.getFloat32();
|
|
@@ -130,7 +139,11 @@ export class PmxLoader {
|
|
|
130
139
|
const v = this.getFloat32();
|
|
131
140
|
// PMX UVs are in the same orientation as WebGPU sampling; no flip
|
|
132
141
|
uvs.push(u, v);
|
|
133
|
-
|
|
142
|
+
for (let k = 0; k < this.additionalVec4Count; k++) {
|
|
143
|
+
const a = this.additionalUvs[k];
|
|
144
|
+
for (let c = 0; c < 4; c++)
|
|
145
|
+
a[i * 4 + c] = this.getFloat32();
|
|
146
|
+
}
|
|
134
147
|
const type = this.getUint8();
|
|
135
148
|
const base = i * 4;
|
|
136
149
|
// Initialize defaults
|
|
@@ -207,10 +220,11 @@ export class PmxLoader {
|
|
|
207
220
|
else {
|
|
208
221
|
throw new Error(`Invalid bone weight type: ${type}`);
|
|
209
222
|
}
|
|
210
|
-
this.
|
|
223
|
+
edgeScales[i] = this.getFloat32();
|
|
211
224
|
}
|
|
212
225
|
this.joints0 = joints;
|
|
213
226
|
this.weights0 = weights;
|
|
227
|
+
this.edgeScales = edgeScales;
|
|
214
228
|
return { positions, normals, uvs };
|
|
215
229
|
}
|
|
216
230
|
// (removed) skipBoneWeight – replaced by inline parsing
|
|
@@ -1024,7 +1038,7 @@ export class PmxLoader {
|
|
|
1024
1038
|
const morphing = {
|
|
1025
1039
|
morphs: this.morphs,
|
|
1026
1040
|
};
|
|
1027
|
-
return new Model(vertexData, indexData, this.textures, this.materials, skeleton, skinning, morphing, this.rigidbodies, this.joints, this.warnings);
|
|
1041
|
+
return new Model(vertexData, indexData, this.textures, this.materials, skeleton, skinning, morphing, this.rigidbodies, this.joints, this.warnings, this.edgeScales, this.additionalUvs);
|
|
1028
1042
|
}
|
|
1029
1043
|
getUint8() {
|
|
1030
1044
|
if (this.offset >= this.view.buffer.byteLength) {
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
interface AnchorRequest {
|
|
2
2
|
bone: string;
|
|
3
3
|
trail: boolean;
|
|
4
|
+
/** Model units down the bone's own axis (`#anchor ... along d`); absent = 0,
|
|
5
|
+
* the joint itself. */
|
|
6
|
+
along?: number;
|
|
7
|
+
/** World units the bone must move before its trail keeps a point
|
|
8
|
+
* (`trail step d`); absent = every 60 Hz tick. */
|
|
9
|
+
step?: number;
|
|
4
10
|
}
|
|
5
11
|
/** The empty table — a scene with no effect installed asks for no bones. */
|
|
6
12
|
export declare const EMPTY_ANCHOR_TABLE: AnchorTable;
|
|
@@ -26,6 +32,11 @@ export interface AnchorTable {
|
|
|
26
32
|
* Order is first-come, so a single effect gets the identity alias and the whole
|
|
27
33
|
* mechanism is a no-op until a second effect exists — which is what makes this
|
|
28
34
|
* safe to land before setEffects does.
|
|
35
|
+
*
|
|
36
|
+
* A point ALONG a bone is a different point: `#anchor 右手首 trail along 0.9`
|
|
37
|
+
* and a bare `#anchor 右手首` are two entries, keyed by bone and distance, since
|
|
38
|
+
* sharing one ring would hand one of them the other's path. So is a trail
|
|
39
|
+
* recorded at a different `step`: its ring keeps different points.
|
|
29
40
|
*/
|
|
30
41
|
export declare function buildAnchorTable(requests: AnchorRequest[][], max: number): AnchorTable;
|
|
31
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-table.d.ts","sourceRoot":"","sources":["../../src/shaders/anchor-table.ts"],"names":[],"mappings":"AAsBA,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"anchor-table.d.ts","sourceRoot":"","sources":["../../src/shaders/anchor-table.ts"],"names":[],"mappings":"AAsBA,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd;4BACwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;uDACmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,WAAqD,CAAA;AAEtF,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA;IACjB,6EAA6E;IAC7E,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAkCtF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAkB3D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAmCvD"}
|
|
@@ -32,6 +32,11 @@ export const EMPTY_ANCHOR_TABLE = { entries: [], alias: [], dropped: [] };
|
|
|
32
32
|
* Order is first-come, so a single effect gets the identity alias and the whole
|
|
33
33
|
* mechanism is a no-op until a second effect exists — which is what makes this
|
|
34
34
|
* safe to land before setEffects does.
|
|
35
|
+
*
|
|
36
|
+
* A point ALONG a bone is a different point: `#anchor 右手首 trail along 0.9`
|
|
37
|
+
* and a bare `#anchor 右手首` are two entries, keyed by bone and distance, since
|
|
38
|
+
* sharing one ring would hand one of them the other's path. So is a trail
|
|
39
|
+
* recorded at a different `step`: its ring keeps different points.
|
|
35
40
|
*/
|
|
36
41
|
export function buildAnchorTable(requests, max) {
|
|
37
42
|
const entries = [];
|
|
@@ -41,7 +46,8 @@ export function buildAnchorTable(requests, max) {
|
|
|
41
46
|
for (let e = 0; e < requests.length; e++) {
|
|
42
47
|
const local = [];
|
|
43
48
|
for (const req of requests[e]) {
|
|
44
|
-
|
|
49
|
+
const key = req.along || req.step ? `${req.bone}\u0000${req.along ?? 0}\u0000${req.step ?? 0}` : req.bone;
|
|
50
|
+
let g = index.get(key);
|
|
45
51
|
if (g === undefined) {
|
|
46
52
|
if (entries.length >= max) {
|
|
47
53
|
// Refused, and the effect still installs: an effect that loses one of
|
|
@@ -52,8 +58,8 @@ export function buildAnchorTable(requests, max) {
|
|
|
52
58
|
continue;
|
|
53
59
|
}
|
|
54
60
|
g = entries.length;
|
|
55
|
-
index.set(
|
|
56
|
-
entries.push({ bone: req.bone, trail: req.trail });
|
|
61
|
+
index.set(key, g);
|
|
62
|
+
entries.push({ bone: req.bone, trail: req.trail, ...(req.along ? { along: req.along } : {}), ...(req.step ? { step: req.step } : {}) });
|
|
57
63
|
}
|
|
58
64
|
else if (req.trail) {
|
|
59
65
|
// A later request for the same bone can only ever ADD the trail — the
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bone an effect follows: `#anchor <bone> [trail] [along <d>]`.
|
|
3
|
+
*
|
|
4
|
+
* `along` is for an effect that comes off a point ON the bone rather than at its
|
|
5
|
+
* joint — threads leaving the knuckles, not the wrist; a flame at a sword's tip.
|
|
6
|
+
* The point is `d` model units down the bone's own axis: the direction a PMX
|
|
7
|
+
* editor draws the bone pointing (its tail, as an offset or as the bone it
|
|
8
|
+
* points at), turned by the bone's pose, scaled with the model. A left and a
|
|
9
|
+
* right wrist point opposite ways, so one number mirrors itself. A bone with no
|
|
10
|
+
* tail has no axis, and the point stays at the joint.
|
|
11
|
+
*
|
|
12
|
+
* Everything the anchor feeds reads the moved point: rzAnchor, the trail, the
|
|
13
|
+
* ribbon. Two effects naming the same bone at different `along` are two anchors.
|
|
14
|
+
*
|
|
15
|
+
* `trail step d` records the path the way a game's trail does (Unity's
|
|
16
|
+
* minVertexDistance): the newest point follows the bone every frame, and a
|
|
17
|
+
* point is only LEFT BEHIND once the bone is `d` world units from the last one.
|
|
18
|
+
* Sampled on the clock alone, a slowing hand leaves a knot of tiny segments
|
|
19
|
+
* whose directions jitter, and a wide ribbon fans across them into a starburst;
|
|
20
|
+
* a stepped path has no segment shorter than `d`. Ages stay true — each point
|
|
21
|
+
* keeps the time it was left. Different steps are different anchors.
|
|
22
|
+
*/
|
|
23
|
+
export type EffectAnchor = {
|
|
24
|
+
bone: string;
|
|
25
|
+
trail: boolean;
|
|
26
|
+
along?: number;
|
|
27
|
+
step?: number;
|
|
28
|
+
};
|
|
1
29
|
/** A knob an effect exposes, for a host to build a control from. */
|
|
2
30
|
export type EffectParamDecl = {
|
|
3
31
|
name: string;
|
|
@@ -9,11 +37,10 @@ export type EffectParamDecl = {
|
|
|
9
37
|
max?: number;
|
|
10
38
|
};
|
|
11
39
|
export type EffectDirectives = {
|
|
12
|
-
/** Bones this effect follows, in declaration order — slot 0 is the first.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}[];
|
|
40
|
+
/** Bones this effect follows, in declaration order — slot 0 is the first.
|
|
41
|
+
* `along` (model units, absent = 0) moves the point down the bone's own
|
|
42
|
+
* axis, its rest tail direction posed with it: see EffectAnchor. */
|
|
43
|
+
anchors: EffectAnchor[];
|
|
17
44
|
params: EffectParamDecl[];
|
|
18
45
|
/** Field layer: 0 full, 1 half. Full unless `#halfres` says otherwise. */
|
|
19
46
|
fieldLayer: 0 | 1;
|
|
@@ -26,6 +53,16 @@ export type EffectDirectives = {
|
|
|
26
53
|
* every real grass renderer does, and the only thing that bounds a dense
|
|
27
54
|
* lawn's cost by the pixels it covers rather than by how deep it stacks. */
|
|
28
55
|
particleBlend: "alpha" | "additive" | "cutout";
|
|
56
|
+
/** How RIBBONS land, a separate axis from the particles': additive unless
|
|
57
|
+
* the file says `#blend over`. Ribbons ignored #blend until that keyword,
|
|
58
|
+
* and every shipped ribbon was tuned additive — so the default stays, and
|
|
59
|
+
* `over` is the opt-in. The same line sets particles to plain alpha, which
|
|
60
|
+
* already IS premultiplied over for them. */
|
|
61
|
+
trailBlend: "additive" | "over";
|
|
62
|
+
/** `#depth always`: the particles are drawn over the scene, not depth
|
|
63
|
+
* tested — a game glow its material draws with ZTest Always (a moon's halo
|
|
64
|
+
* in front of the sky dome it sits behind). Depth tested otherwise. */
|
|
65
|
+
depthAlways: boolean;
|
|
29
66
|
particles: number;
|
|
30
67
|
lights: number;
|
|
31
68
|
grid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/shaders/directives.ts"],"names":[],"mappings":"AA8BA,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAChC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACjD,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B
|
|
1
|
+
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/shaders/directives.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1F,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAChC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACjD,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;yEAEqE;IACrE,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,0EAA0E;IAC1E,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,8DAA8D;IAC9D,aAAa,EAAE,OAAO,CAAA;IACtB,wEAAwE;IACxE;;;;iFAI6E;IAC7E,aAAa,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAA;IAC9C;;;;kDAI8C;IAC9C,UAAU,EAAE,UAAU,GAAG,MAAM,CAAA;IAC/B;;4EAEwE;IACxE,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ;kFAC8E;IAC9E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;;;;4CAOwC;IACxC,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACjE;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAuBD;;;+BAG+B;AAC/B,eAAO,MAAM,cAAc,QAAmC,CAAA;AAG9D;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAA8B,CAAA;AAmBzD,MAAM,MAAM,eAAe,GAAG;IAAE,UAAU,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAEhF,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA0O7D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD"}
|
|
@@ -34,6 +34,7 @@ const SPEC = {
|
|
|
34
34
|
halfres: 0,
|
|
35
35
|
layer: 1,
|
|
36
36
|
blend: 1,
|
|
37
|
+
depth: 1,
|
|
37
38
|
particles: 1,
|
|
38
39
|
lights: 1,
|
|
39
40
|
grid: 1,
|
|
@@ -88,6 +89,8 @@ export function parseDirectives(wgsl) {
|
|
|
88
89
|
fieldLayer: 0,
|
|
89
90
|
additiveLayer: false,
|
|
90
91
|
particleBlend: "alpha",
|
|
92
|
+
trailBlend: "additive",
|
|
93
|
+
depthAlways: false,
|
|
91
94
|
particles: 0,
|
|
92
95
|
lights: 0,
|
|
93
96
|
grid: 0,
|
|
@@ -120,11 +123,41 @@ export function parseDirectives(wgsl) {
|
|
|
120
123
|
}
|
|
121
124
|
switch (tag) {
|
|
122
125
|
case "anchor": {
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
// <bone> [trail [step <d>]] [along <d>], in that order.
|
|
127
|
+
const usage = `${at}: #anchor takes a bone name, optionally "trail" (and "step" with a distance), then optionally "along" and a distance`;
|
|
128
|
+
if (args.length < 1) {
|
|
129
|
+
errors.push(usage);
|
|
125
130
|
return;
|
|
126
131
|
}
|
|
127
|
-
|
|
132
|
+
let k = 1;
|
|
133
|
+
const trail = args[k] === "trail";
|
|
134
|
+
if (trail)
|
|
135
|
+
k++;
|
|
136
|
+
let step;
|
|
137
|
+
if (trail && args[k] === "step") {
|
|
138
|
+
const v = num(args[k + 1]);
|
|
139
|
+
if (v === null || v <= 0) {
|
|
140
|
+
errors.push(`${at}: #anchor ... trail step needs a positive distance in world units, like "step 0.24"`);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
step = v;
|
|
144
|
+
k += 2;
|
|
145
|
+
}
|
|
146
|
+
let along;
|
|
147
|
+
if (args[k] === "along") {
|
|
148
|
+
const v = num(args[k + 1]);
|
|
149
|
+
if (v === null) {
|
|
150
|
+
errors.push(`${at}: #anchor ... along needs a distance in model units, like "along 0.9"`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
along = v;
|
|
154
|
+
k += 2;
|
|
155
|
+
}
|
|
156
|
+
if (k !== args.length) {
|
|
157
|
+
errors.push(usage);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
d.anchors.push({ bone: args[0], trail, ...(step ? { step } : {}), ...(along ? { along } : {}) });
|
|
128
161
|
return;
|
|
129
162
|
}
|
|
130
163
|
case "param": {
|
|
@@ -181,8 +214,15 @@ export function parseDirectives(wgsl) {
|
|
|
181
214
|
d.additiveLayer = true;
|
|
182
215
|
return;
|
|
183
216
|
case "blend":
|
|
217
|
+
// `over` is for ribbons: laid over the scene by their alpha instead of
|
|
218
|
+
// added. For particles it is the default alpha, which is already over.
|
|
219
|
+
if (args[0] === "over") {
|
|
220
|
+
d.trailBlend = "over";
|
|
221
|
+
d.particleBlend = "alpha";
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
184
224
|
if (args[0] !== "additive" && args[0] !== "cutout") {
|
|
185
|
-
errors.push(`${at}: #blend takes "additive" or "
|
|
225
|
+
errors.push(`${at}: #blend takes "additive", "cutout" or "over" — alpha is the default`);
|
|
186
226
|
return;
|
|
187
227
|
}
|
|
188
228
|
d.particleBlend = args[0];
|
|
@@ -190,6 +230,13 @@ export function parseDirectives(wgsl) {
|
|
|
190
230
|
case "bloom":
|
|
191
231
|
d.bloom = true;
|
|
192
232
|
return;
|
|
233
|
+
case "depth":
|
|
234
|
+
if (args[0] !== "always") {
|
|
235
|
+
errors.push(`${at}: #depth takes "always" — depth tested is the default`);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
d.depthAlways = true;
|
|
239
|
+
return;
|
|
193
240
|
case "ground": {
|
|
194
241
|
const m = /^#([0-9a-fA-F]{6})$/.exec(args[0] ?? "");
|
|
195
242
|
const noise = args[1] === undefined ? 0 : num(args[1]);
|
package/dist/shaders/lights.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Words before the first record: the counts, the grid's placement and the
|
|
2
|
-
* outside mask,
|
|
3
|
-
export declare const LIGHT_HEADER =
|
|
2
|
+
* outside mask, five vec4s — see the layout above. */
|
|
3
|
+
export declare const LIGHT_HEADER = 20;
|
|
4
4
|
/** Floats per light — see the layout above. */
|
|
5
5
|
export declare const LIGHT_STRIDE = 16;
|
|
6
6
|
/**
|
|
@@ -15,10 +15,11 @@ export declare const LIGHT_STRIDE = 16;
|
|
|
15
15
|
* forty-eight each cut a real scene in half. Past this the extras are dropped.
|
|
16
16
|
*
|
|
17
17
|
* A fragment pays for the document lamps its grid cell names, so the cost
|
|
18
|
-
* follows how many reach a place rather than how many the scene holds.
|
|
19
|
-
*
|
|
18
|
+
* follows how many reach a place rather than how many the scene holds. 256,
|
|
19
|
+
* two vec4u of bits per cell, is URP's own Forward+ budget for visible lights
|
|
20
|
+
* — and holds a lit interior's whole rig (X317's 153).
|
|
20
21
|
*/
|
|
21
|
-
export declare const MAX_LIGHTS =
|
|
22
|
+
export declare const MAX_LIGHTS = 256;
|
|
22
23
|
/** Words of lamp bits per grid cell — one bit per lamp the cap allows. */
|
|
23
24
|
export declare const LIGHT_MASK_WORDS: number;
|
|
24
25
|
/** The grid's cell budget. 32k cells over a stage a couple of hundred units
|
|
@@ -37,7 +38,7 @@ export declare const LIGHTS_FLOATS: number;
|
|
|
37
38
|
* out of those modules is a compile error on a function the author was right to
|
|
38
39
|
* write, which is the same trap the grid's step-only half documents.
|
|
39
40
|
*/
|
|
40
|
-
export declare const RZ_LIGHT_STRUCT_WGSL = "\n/** What an effect returns for one of its lights. */\nstruct RzLight {\n pos: vec3f,\n color: vec3f,\n intensity: f32,\n radius: f32,\n}\n";
|
|
41
|
+
export declare const RZ_LIGHT_STRUCT_WGSL = "\n/** What an effect returns for one of its lights. */\nstruct RzLight {\n pos: vec3f,\n color: vec3f,\n intensity: f32,\n radius: f32,\n /** Its bulb: the distance inside which it stops getting brighter. 0 is the\n * engine's default; a glow worn on a hand wants one the size of the glow. */\n near: f32,\n}\n";
|
|
41
42
|
/** rzWorldAmbient against the materials' and the ground's `light` uniform. */
|
|
42
43
|
export declare const WORLD_AMBIENT_WGSL: string;
|
|
43
44
|
/** Does this source define the emit mount? */
|
|
@@ -74,5 +75,8 @@ export declare function buildLightEmitShader(wgsl: string, sceneApi: string, cas
|
|
|
74
75
|
}, paramsDecl?: string): string;
|
|
75
76
|
/** The rz*Light accessors, with the buffer declared at the given binding.
|
|
76
77
|
* `layers` is the WGSL expression for the drawing's rendering-layer bits. */
|
|
77
|
-
export declare function lightsApi(group: number, binding: number, layers: string
|
|
78
|
+
export declare function lightsApi(group: number, binding: number, layers: string, cookies: {
|
|
79
|
+
binding: number;
|
|
80
|
+
sampler: string;
|
|
81
|
+
}): string;
|
|
78
82
|
//# sourceMappingURL=lights.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lights.d.ts","sourceRoot":"","sources":["../../src/shaders/lights.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lights.d.ts","sourceRoot":"","sources":["../../src/shaders/lights.ts"],"names":[],"mappings":"AA8DA;uDACuD;AACvD,eAAO,MAAM,YAAY,KAAK,CAAA;AAC9B,+CAA+C;AAC/C,eAAO,MAAM,YAAY,KAAK,CAAA;AAC9B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,MAAM,CAAA;AAC7B,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,QAAkB,CAAA;AAC/C;0EAC0E;AAC1E,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AACrC,uCAAuC;AACvC,eAAO,MAAM,eAAe,QAA2C,CAAA;AACvE,wDAAwD;AACxD,eAAO,MAAM,aAAa,QAAwD,CAAA;AAElF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,oUAWhC,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,QAA4B,CAAA;AAE3D,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5B,UAAU,SAAK,GACd,MAAM,CAoGR;AAED;8EAC8E;AAC9E,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5C,MAAM,CAsMR"}
|