@pixiv/three-vrm 3.1.1 → 3.1.3

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 CHANGED
@@ -32,8 +32,8 @@ You can import all the dependencies via CDN like [jsDelivr](https://www.jsdelivr
32
32
  <script type="importmap">
33
33
  {
34
34
  "imports": {
35
- "three": "https://cdn.jsdelivr.net/npm/three@0.168.0/build/three.module.js",
36
- "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.168.0/examples/jsm/",
35
+ "three": "https://cdn.jsdelivr.net/npm/three@0.169.0/build/three.module.js",
36
+ "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.169.0/examples/jsm/",
37
37
  "@pixiv/three-vrm": "https://cdn.jsdelivr.net/npm/@pixiv/three-vrm@3/lib/three-vrm.module.min.js"
38
38
  }
39
39
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.1.1
2
+ * @pixiv/three-vrm v3.1.3
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2024 pixiv Inc.
@@ -522,7 +522,7 @@ var MToonNodeMaterial = class extends THREE8.NodeMaterial {
522
522
  }
523
523
  };
524
524
  /*!
525
- * @pixiv/three-vrm-materials-mtoon v3.1.1
525
+ * @pixiv/three-vrm-materials-mtoon v3.1.3
526
526
  * MToon (toon material) module for @pixiv/three-vrm
527
527
  *
528
528
  * Copyright (c) 2019-2024 pixiv Inc.
@@ -1,7 +1,7 @@
1
1
  /*! (c) 2019-2024 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  "use strict";var B=Object.create;var v=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var o in t)v(e,o,{get:t[o],enumerable:!0})},O=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of K(t))!Z.call(e,l)&&l!==o&&v(e,l,{get:()=>t[l],enumerable:!(r=q(t,l))||r.enumerable});return e};var h=(e,t,o)=>(o=e!=null?B(j(e)):{},O(t||!e||!e.__esModule?v(o,"default",{value:e,enumerable:!0}):o,e)),G=e=>O(v({},"__esModule",{value:!0}),e);var Ce={};$(Ce,{MToonAnimatedUVNode:()=>D,MToonLightingModel:()=>z,MToonNodeMaterial:()=>ye});module.exports=G(Ce);var b=h(require("three"),1),s=h(require("three/webgpu"),1),a=h(require("three/webgpu"),1),n=h(require("three/webgpu"),1),m=h(require("three/webgpu"),1),p=h(require("three/webgpu"),1),i=h(require("three/webgpu"),1),E=h(require("three/webgpu"),1);var W=parseInt(b.REVISION,10);W<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${W}). This would not work correctly.`);var J=a.materialReference("color","color"),Q=a.materialReference("map","texture"),ee=a.materialReference("normalMap","texture"),te=a.materialReference("normalScale","vec2"),ie=a.materialReference("emissive","color"),oe=a.materialReference("emissiveIntensity","float"),re=a.materialReference("emissiveMap","texture"),ae=a.materialReference("shadeColorFactor","color"),le=a.materialReference("shadingShiftFactor","float"),U=a.materialReference("shadeMultiplyTexture","texture"),ne=a.materialReference("shadeMultiplyTextureScale","float"),se=a.materialReference("shadingToonyFactor","float"),me=a.materialReference("rimLightingMixFactor","float"),ue=a.materialReference("rimMultiplyTexture","texture"),he=a.materialReference("matcapFactor","color"),de=a.materialReference("matcapTexture","texture"),ce=a.materialReference("parametricRimColorFactor","color"),pe=a.materialReference("parametricRimLiftFactor","float"),Ee=a.materialReference("parametricRimFresnelPowerFactor","float"),Re=a.materialReference("outlineWidthMultiplyTexture","texture"),fe=a.materialReference("outlineWidthFactor","float"),I=a.materialReference("outlineColorFactor","color"),Te=a.materialReference("outlineLightingMixFactor","float"),ve=a.materialReference("uvAnimationMaskTexture","texture"),Ne=a.materialReference("uvAnimationScrollXOffset","float"),ge=a.materialReference("uvAnimationScrollYOffset","float"),He=a.materialReference("uvAnimationRotationPhase","float"),D=class extends s.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=s.vec4(ve).context({getUV:()=>s.uv()}).r);let t=s.uv(),o=He.mul(e),r=s.cos(o),l=s.sin(o);t=t.sub(s.vec2(.5,.5)),t=t.mul(s.mat2(r,l,l.negate(),r)),t=t.add(s.vec2(.5,.5));let u=s.vec2(Ne,ge).mul(e);return t=t.add(u),t.temp("AnimatedUV")}},k=m.nodeImmutable(m.PropertyNode,"vec3").temp("ShadeColor"),Y=m.nodeImmutable(m.PropertyNode,"float").temp("ShadingShift"),X=m.nodeImmutable(m.PropertyNode,"float").temp("ShadingToony"),g=m.nodeImmutable(m.PropertyNode,"float").temp("RimLightingMix"),H=m.nodeImmutable(m.PropertyNode,"vec3").temp("RimMultiply"),M=m.nodeImmutable(m.PropertyNode,"vec3").temp("matcap"),x=m.nodeImmutable(m.PropertyNode,"vec3").temp("ParametricRim"),N=e=>parseInt(p.REVISION,10)>=168?p.Fn(e):p.tslFn(e),Me=N(({a:e,b:t,t:o})=>{let r=o.sub(e),l=t.sub(e);return r.div(l).clamp()}),xe=N(({dotNL:e})=>{let o=n.float(1).sub(X),r=e.add(Y);return r=Me({a:o.negate(),b:o,t:r}),r=r.mul(1),r}),Se=N(({shading:e,lightColor:t})=>{let o=n.mix(k,n.diffuseColor,e);return t.mul(n.BRDF_Lambert({diffuseColor:o}))}),z=class extends n.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:o}){let r=n.transformedNormalView.dot(e).clamp(-1,1),l=xe({dotNL:r});o.directDiffuse.assign(o.directDiffuse.add(Se({shading:l,lightColor:t}))),o.directSpecular.assign(o.directSpecular.add(x.add(M).mul(H).mul(n.mix(n.vec3(0),n.BRDF_Lambert({diffuseColor:t}),g))))}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e)}indirectDiffuse({irradiance:e,reflectedLight:t}){t.indirectDiffuse.assign(t.indirectDiffuse.add(e.mul(n.BRDF_Lambert({diffuseColor:n.diffuseColor}))))}indirectSpecular({reflectedLight:e}){e.indirectSpecular.assign(e.indirectSpecular.add(x.add(M).mul(H).mul(n.mix(n.vec3(1),n.vec3(0),g))))}},f={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},Fe=N(({parametricRimLift:e,parametricRimFresnelPower:t,parametricRimColor:o})=>{let r=E.modelViewPosition.normalize(),l=E.transformedNormalView.dot(r.negate());return E.float(1).sub(l).add(e).clamp().pow(t).mul(o)}),ye=class extends i.NodeMaterial{customProgramCacheKey(){let e=super.customProgramCacheKey();return e+=`isOutline:${this.isOutline},`,e}get isMToonNodeMaterial(){return!0}constructor(e={}){super(),e.transparentWithZWrite&&(e.depthWrite=!0),delete e.transparentWithZWrite,delete e.giEqualizationFactor,delete e.v0CompatShade,delete e.debugMode,this.emissiveNode=null,this.lights=!0,this.color=new i.Color(1,1,1),this.map=null,this.emissive=new i.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new i.Vector2(1,1),this.shadeColorFactor=new i.Color(0,0,0),this.shadeMultiplyTexture=null,this.shadingShiftFactor=0,this.shadingShiftTexture=null,this.shadingShiftTextureScale=1,this.shadingToonyFactor=.9,this.rimLightingMixFactor=1,this.rimMultiplyTexture=null,this.matcapFactor=new i.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new i.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=f.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new i.Color(0,0,0),this.outlineLightingMixFactor=1,this.uvAnimationScrollXSpeedFactor=0,this.uvAnimationScrollYSpeedFactor=0,this.uvAnimationRotationSpeedFactor=0,this.uvAnimationMaskTexture=null,this.shadeColorNode=null,this.shadingShiftNode=null,this.shadingToonyNode=null,this.rimLightingMixNode=null,this.rimMultiplyNode=null,this.matcapNode=null,this.parametricRimColorNode=null,this.parametricRimLiftNode=null,this.parametricRimFresnelPowerNode=null,this.uvAnimationScrollXOffset=0,this.uvAnimationScrollYOffset=0,this.uvAnimationRotationPhase=0,this.isOutline=!1,this._animatedUVNode=null,this.setValues(e)}setupLightingModel(){return new z}setup(e){var t;this._animatedUVNode=new D((t=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?t:!1),super.setup(e)}setupDiffuseColor(e){let t=null;if(this.colorNode==null){if(t=J,this.map&&this.map.isTexture===!0){let o=Q.context({getUV:()=>this._animatedUVNode});t=t.mul(o)}this.colorNode=t}this.vertexColors===!0&&e.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(e),parseInt(i.REVISION,10)<166&&this.transparent===!1&&this.blending===i.NormalBlending&&this.alphaToCoverage===!1&&i.diffuseColor.a.assign(1),this.colorNode===t&&(this.colorNode=null)}setupVariants(){k.assign(this._setupShadeColorNode()),Y.assign(this._setupShadingShiftNode()),X.assign(this._setupShadingToonyNode()),g.assign(this._setupRimLightingMixNode()),H.assign(this._setupRimMultiplyNode()),M.assign(this._setupMatcapNode()),x.assign(this._setupParametricRimNode())}setupNormal(e){let t=this.normalNode;if(this.normalNode==null){if(this.normalNode=i.materialNormal,this.normalMap&&this.normalMap.isTexture===!0){let r=ee.context({getUV:()=>this._animatedUVNode});this.normalNode=i.normalMap(r,te)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(i.REVISION,10)>=168){let r=this.normalNode;return this.normalNode=t,r}else{super.setupNormal(e),this.normalNode=t;return}}setupLighting(e){let t=null;if(this.emissiveNode==null){if(t=ie.mul(oe),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=re.context({getUV:()=>this._animatedUVNode});t=t.mul(r)}this.emissiveNode=t}let o=super.setupLighting(e);return this.emissiveNode===t&&(this.emissiveNode=null),o}setupOutput(e,t){return this.isOutline&&this.outlineWidthMode!==f.None&&(t=i.vec4(i.mix(I,t.xyz.mul(I),Te),t.w)),super.setupOutput(e,t)}setupPosition(e){var t,o;let r=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==f.None){(t=this.positionNode)!=null||(this.positionNode=i.positionLocal);let u=i.normalLocal.normalize(),d=fe;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let c=Re.context({getUV:()=>this._animatedUVNode});d=d.mul(c)}let T=i.length(i.modelNormalMatrix.mul(u)),R=d.mul(T).mul(u);if(this.outlineWidthMode===f.WorldCoordinates)this.positionNode=this.positionNode.add(R);else if(this.outlineWidthMode===f.ScreenCoordinates){let c=i.cameraProjectionMatrix.element(1).element(1);this.positionNode=this.positionNode.add(R.div(c).mul(i.positionView.z.negate()))}(o=this.positionNode)!=null||(this.positionNode=i.positionLocal)}let l=super.setupPosition(e);return l.z.add(l.w.mul(1e-6)),this.positionNode=r,l}copy(e){var t,o,r,l,u,d,T,R,c,S,F,y,C,_,L,w,V,P,A;return this.color.copy(e.color),this.map=(t=e.map)!=null?t:null,this.emissive.copy(e.emissive),this.emissiveIntensity=e.emissiveIntensity,this.emissiveMap=(o=e.emissiveMap)!=null?o:null,this.normalMap=(r=e.normalMap)!=null?r:null,this.normalScale.copy(e.normalScale),this.shadeColorFactor.copy(e.shadeColorFactor),this.shadeMultiplyTexture=(l=e.shadeMultiplyTexture)!=null?l:null,this.shadingShiftFactor=e.shadingShiftFactor,this.shadingShiftTexture=(u=e.shadingShiftTexture)!=null?u:null,this.shadingShiftTextureScale=e.shadingShiftTextureScale,this.shadingToonyFactor=e.shadingToonyFactor,this.rimLightingMixFactor=e.rimLightingMixFactor,this.rimMultiplyTexture=(d=e.rimMultiplyTexture)!=null?d:null,this.matcapFactor.copy(e.matcapFactor),this.matcapTexture=(T=e.matcapTexture)!=null?T:null,this.parametricRimColorFactor.copy(e.parametricRimColorFactor),this.parametricRimLiftFactor=e.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=e.parametricRimFresnelPowerFactor,this.outlineWidthMode=e.outlineWidthMode,this.outlineWidthMultiplyTexture=(R=e.outlineWidthMultiplyTexture)!=null?R:null,this.outlineWidthFactor=e.outlineWidthFactor,this.outlineColorFactor.copy(e.outlineColorFactor),this.outlineLightingMixFactor=e.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=e.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=e.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=e.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(c=e.uvAnimationMaskTexture)!=null?c:null,this.shadeColorNode=(S=e.shadeColorNode)!=null?S:null,this.shadingShiftNode=(F=e.shadingShiftNode)!=null?F:null,this.shadingToonyNode=(y=e.shadingToonyNode)!=null?y:null,this.rimLightingMixNode=(C=e.rimLightingMixNode)!=null?C:null,this.rimMultiplyNode=(_=e.rimMultiplyNode)!=null?_:null,this.matcapNode=(L=e.matcapNode)!=null?L:null,this.parametricRimColorNode=(w=e.parametricRimColorNode)!=null?w:null,this.parametricRimLiftNode=(V=e.parametricRimLiftNode)!=null?V:null,this.parametricRimFresnelPowerNode=(P=e.parametricRimFresnelPowerNode)!=null?P:null,this.isOutline=(A=e.isOutline)!=null?A:null,super.copy(e)}update(e){this.uvAnimationScrollXOffset+=e*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=e*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=e*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return i.vec3(this.shadeColorNode);let e=ae;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let t=U.context({getUV:()=>this._animatedUVNode});e=e.mul(t)}return e}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return i.float(this.shadingShiftNode);let e=le;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=U.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(ne))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?i.float(this.shadingToonyNode):se}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?i.float(this.rimLightingMixNode):me}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?i.vec3(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?ue.context({getUV:()=>this._animatedUVNode}):i.vec3(1)}_setupMatcapNode(){return this.matcapNode!=null?i.vec3(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?de.context({getUV:()=>i.matcapUV.mul(1,-1).add(0,1)}).mul(he):i.vec3(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?i.vec3(this.parametricRimColorNode):ce,t=this.parametricRimLiftNode!=null?i.float(this.parametricRimLiftNode):pe,o=this.parametricRimFresnelPowerNode!=null?i.float(this.parametricRimFresnelPowerNode):Ee;return Fe({parametricRimLift:t,parametricRimFresnelPower:o,parametricRimColor:e})}};
3
3
  /*!
4
- * @pixiv/three-vrm-materials-mtoon v3.1.1
4
+ * @pixiv/three-vrm-materials-mtoon v3.1.3
5
5
  * MToon (toon material) module for @pixiv/three-vrm
6
6
  *
7
7
  * Copyright (c) 2019-2024 pixiv Inc.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pixiv/three-vrm v3.1.1
2
+ * @pixiv/three-vrm v3.1.3
3
3
  * VRM file loader for three.js.
4
4
  *
5
5
  * Copyright (c) 2019-2024 pixiv Inc.
@@ -490,7 +490,7 @@ export {
490
490
  MToonNodeMaterial
491
491
  };
492
492
  /*!
493
- * @pixiv/three-vrm-materials-mtoon v3.1.1
493
+ * @pixiv/three-vrm-materials-mtoon v3.1.3
494
494
  * MToon (toon material) module for @pixiv/three-vrm
495
495
  *
496
496
  * Copyright (c) 2019-2024 pixiv Inc.
@@ -1,7 +1,7 @@
1
1
  /*! (c) 2019-2024 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  import*as W from"three";import*as n from"three/webgpu";import*as r from"three/webgpu";import*as l from"three/webgpu";import*as s from"three/webgpu";import*as c from"three/webgpu";import*as i from"three/webgpu";import*as p from"three/webgpu";var P=parseInt(W.REVISION,10);P<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${P}). This would not work correctly.`);var D=r.materialReference("color","color"),k=r.materialReference("map","texture"),Y=r.materialReference("normalMap","texture"),X=r.materialReference("normalScale","vec2"),z=r.materialReference("emissive","color"),B=r.materialReference("emissiveIntensity","float"),q=r.materialReference("emissiveMap","texture"),K=r.materialReference("shadeColorFactor","color"),j=r.materialReference("shadingShiftFactor","float"),A=r.materialReference("shadeMultiplyTexture","texture"),Z=r.materialReference("shadeMultiplyTextureScale","float"),$=r.materialReference("shadingToonyFactor","float"),G=r.materialReference("rimLightingMixFactor","float"),J=r.materialReference("rimMultiplyTexture","texture"),Q=r.materialReference("matcapFactor","color"),ee=r.materialReference("matcapTexture","texture"),te=r.materialReference("parametricRimColorFactor","color"),ie=r.materialReference("parametricRimLiftFactor","float"),oe=r.materialReference("parametricRimFresnelPowerFactor","float"),re=r.materialReference("outlineWidthMultiplyTexture","texture"),ae=r.materialReference("outlineWidthFactor","float"),O=r.materialReference("outlineColorFactor","color"),le=r.materialReference("outlineLightingMixFactor","float"),ne=r.materialReference("uvAnimationMaskTexture","texture"),se=r.materialReference("uvAnimationScrollXOffset","float"),me=r.materialReference("uvAnimationScrollYOffset","float"),ue=r.materialReference("uvAnimationRotationPhase","float"),he=class extends n.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=n.vec4(ne).context({getUV:()=>n.uv()}).r);let t=n.uv(),o=ue.mul(e),a=n.cos(o),m=n.sin(o);t=t.sub(n.vec2(.5,.5)),t=t.mul(n.mat2(a,m,m.negate(),a)),t=t.add(n.vec2(.5,.5));let u=n.vec2(se,me).mul(e);return t=t.add(u),t.temp("AnimatedUV")}},U=s.nodeImmutable(s.PropertyNode,"vec3").temp("ShadeColor"),I=s.nodeImmutable(s.PropertyNode,"float").temp("ShadingShift"),b=s.nodeImmutable(s.PropertyNode,"float").temp("ShadingToony"),v=s.nodeImmutable(s.PropertyNode,"float").temp("RimLightingMix"),N=s.nodeImmutable(s.PropertyNode,"vec3").temp("RimMultiply"),g=s.nodeImmutable(s.PropertyNode,"vec3").temp("matcap"),H=s.nodeImmutable(s.PropertyNode,"vec3").temp("ParametricRim"),T=e=>parseInt(c.REVISION,10)>=168?c.Fn(e):c.tslFn(e),de=T(({a:e,b:t,t:o})=>{let a=o.sub(e),m=t.sub(e);return a.div(m).clamp()}),ce=T(({dotNL:e})=>{let o=l.float(1).sub(b),a=e.add(I);return a=de({a:o.negate(),b:o,t:a}),a=a.mul(1),a}),pe=T(({shading:e,lightColor:t})=>{let o=l.mix(U,l.diffuseColor,e);return t.mul(l.BRDF_Lambert({diffuseColor:o}))}),Ee=class extends l.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:o}){let a=l.transformedNormalView.dot(e).clamp(-1,1),m=ce({dotNL:a});o.directDiffuse.assign(o.directDiffuse.add(pe({shading:m,lightColor:t}))),o.directSpecular.assign(o.directSpecular.add(H.add(g).mul(N).mul(l.mix(l.vec3(0),l.BRDF_Lambert({diffuseColor:t}),v))))}indirect(e){this.indirectDiffuse(e),this.indirectSpecular(e)}indirectDiffuse({irradiance:e,reflectedLight:t}){t.indirectDiffuse.assign(t.indirectDiffuse.add(e.mul(l.BRDF_Lambert({diffuseColor:l.diffuseColor}))))}indirectSpecular({reflectedLight:e}){e.indirectSpecular.assign(e.indirectSpecular.add(H.add(g).mul(N).mul(l.mix(l.vec3(1),l.vec3(0),v))))}},R={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},Re=T(({parametricRimLift:e,parametricRimFresnelPower:t,parametricRimColor:o})=>{let a=p.modelViewPosition.normalize(),m=p.transformedNormalView.dot(a.negate());return p.float(1).sub(m).add(e).clamp().pow(t).mul(o)}),fe=class extends i.NodeMaterial{customProgramCacheKey(){let e=super.customProgramCacheKey();return e+=`isOutline:${this.isOutline},`,e}get isMToonNodeMaterial(){return!0}constructor(e={}){super(),e.transparentWithZWrite&&(e.depthWrite=!0),delete e.transparentWithZWrite,delete e.giEqualizationFactor,delete e.v0CompatShade,delete e.debugMode,this.emissiveNode=null,this.lights=!0,this.color=new i.Color(1,1,1),this.map=null,this.emissive=new i.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new i.Vector2(1,1),this.shadeColorFactor=new i.Color(0,0,0),this.shadeMultiplyTexture=null,this.shadingShiftFactor=0,this.shadingShiftTexture=null,this.shadingShiftTextureScale=1,this.shadingToonyFactor=.9,this.rimLightingMixFactor=1,this.rimMultiplyTexture=null,this.matcapFactor=new i.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new i.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=R.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new i.Color(0,0,0),this.outlineLightingMixFactor=1,this.uvAnimationScrollXSpeedFactor=0,this.uvAnimationScrollYSpeedFactor=0,this.uvAnimationRotationSpeedFactor=0,this.uvAnimationMaskTexture=null,this.shadeColorNode=null,this.shadingShiftNode=null,this.shadingToonyNode=null,this.rimLightingMixNode=null,this.rimMultiplyNode=null,this.matcapNode=null,this.parametricRimColorNode=null,this.parametricRimLiftNode=null,this.parametricRimFresnelPowerNode=null,this.uvAnimationScrollXOffset=0,this.uvAnimationScrollYOffset=0,this.uvAnimationRotationPhase=0,this.isOutline=!1,this._animatedUVNode=null,this.setValues(e)}setupLightingModel(){return new Ee}setup(e){var t;this._animatedUVNode=new he((t=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?t:!1),super.setup(e)}setupDiffuseColor(e){let t=null;if(this.colorNode==null){if(t=D,this.map&&this.map.isTexture===!0){let o=k.context({getUV:()=>this._animatedUVNode});t=t.mul(o)}this.colorNode=t}this.vertexColors===!0&&e.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(e),parseInt(i.REVISION,10)<166&&this.transparent===!1&&this.blending===i.NormalBlending&&this.alphaToCoverage===!1&&i.diffuseColor.a.assign(1),this.colorNode===t&&(this.colorNode=null)}setupVariants(){U.assign(this._setupShadeColorNode()),I.assign(this._setupShadingShiftNode()),b.assign(this._setupShadingToonyNode()),v.assign(this._setupRimLightingMixNode()),N.assign(this._setupRimMultiplyNode()),g.assign(this._setupMatcapNode()),H.assign(this._setupParametricRimNode())}setupNormal(e){let t=this.normalNode;if(this.normalNode==null){if(this.normalNode=i.materialNormal,this.normalMap&&this.normalMap.isTexture===!0){let a=Y.context({getUV:()=>this._animatedUVNode});this.normalNode=i.normalMap(a,X)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(i.REVISION,10)>=168){let a=this.normalNode;return this.normalNode=t,a}else{super.setupNormal(e),this.normalNode=t;return}}setupLighting(e){let t=null;if(this.emissiveNode==null){if(t=z.mul(B),this.emissiveMap&&this.emissiveMap.isTexture===!0){let a=q.context({getUV:()=>this._animatedUVNode});t=t.mul(a)}this.emissiveNode=t}let o=super.setupLighting(e);return this.emissiveNode===t&&(this.emissiveNode=null),o}setupOutput(e,t){return this.isOutline&&this.outlineWidthMode!==R.None&&(t=i.vec4(i.mix(O,t.xyz.mul(O),le),t.w)),super.setupOutput(e,t)}setupPosition(e){var t,o;let a=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==R.None){(t=this.positionNode)!=null||(this.positionNode=i.positionLocal);let u=i.normalLocal.normalize(),h=ae;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let d=re.context({getUV:()=>this._animatedUVNode});h=h.mul(d)}let f=i.length(i.modelNormalMatrix.mul(u)),E=h.mul(f).mul(u);if(this.outlineWidthMode===R.WorldCoordinates)this.positionNode=this.positionNode.add(E);else if(this.outlineWidthMode===R.ScreenCoordinates){let d=i.cameraProjectionMatrix.element(1).element(1);this.positionNode=this.positionNode.add(E.div(d).mul(i.positionView.z.negate()))}(o=this.positionNode)!=null||(this.positionNode=i.positionLocal)}let m=super.setupPosition(e);return m.z.add(m.w.mul(1e-6)),this.positionNode=a,m}copy(e){var t,o,a,m,u,h,f,E,d,M,x,S,F,y,C,_,L,w,V;return this.color.copy(e.color),this.map=(t=e.map)!=null?t:null,this.emissive.copy(e.emissive),this.emissiveIntensity=e.emissiveIntensity,this.emissiveMap=(o=e.emissiveMap)!=null?o:null,this.normalMap=(a=e.normalMap)!=null?a:null,this.normalScale.copy(e.normalScale),this.shadeColorFactor.copy(e.shadeColorFactor),this.shadeMultiplyTexture=(m=e.shadeMultiplyTexture)!=null?m:null,this.shadingShiftFactor=e.shadingShiftFactor,this.shadingShiftTexture=(u=e.shadingShiftTexture)!=null?u:null,this.shadingShiftTextureScale=e.shadingShiftTextureScale,this.shadingToonyFactor=e.shadingToonyFactor,this.rimLightingMixFactor=e.rimLightingMixFactor,this.rimMultiplyTexture=(h=e.rimMultiplyTexture)!=null?h:null,this.matcapFactor.copy(e.matcapFactor),this.matcapTexture=(f=e.matcapTexture)!=null?f:null,this.parametricRimColorFactor.copy(e.parametricRimColorFactor),this.parametricRimLiftFactor=e.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=e.parametricRimFresnelPowerFactor,this.outlineWidthMode=e.outlineWidthMode,this.outlineWidthMultiplyTexture=(E=e.outlineWidthMultiplyTexture)!=null?E:null,this.outlineWidthFactor=e.outlineWidthFactor,this.outlineColorFactor.copy(e.outlineColorFactor),this.outlineLightingMixFactor=e.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=e.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=e.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=e.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(d=e.uvAnimationMaskTexture)!=null?d:null,this.shadeColorNode=(M=e.shadeColorNode)!=null?M:null,this.shadingShiftNode=(x=e.shadingShiftNode)!=null?x:null,this.shadingToonyNode=(S=e.shadingToonyNode)!=null?S:null,this.rimLightingMixNode=(F=e.rimLightingMixNode)!=null?F:null,this.rimMultiplyNode=(y=e.rimMultiplyNode)!=null?y:null,this.matcapNode=(C=e.matcapNode)!=null?C:null,this.parametricRimColorNode=(_=e.parametricRimColorNode)!=null?_:null,this.parametricRimLiftNode=(L=e.parametricRimLiftNode)!=null?L:null,this.parametricRimFresnelPowerNode=(w=e.parametricRimFresnelPowerNode)!=null?w:null,this.isOutline=(V=e.isOutline)!=null?V:null,super.copy(e)}update(e){this.uvAnimationScrollXOffset+=e*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=e*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=e*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return i.vec3(this.shadeColorNode);let e=K;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let t=A.context({getUV:()=>this._animatedUVNode});e=e.mul(t)}return e}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return i.float(this.shadingShiftNode);let e=j;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=A.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(Z))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?i.float(this.shadingToonyNode):$}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?i.float(this.rimLightingMixNode):G}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?i.vec3(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?J.context({getUV:()=>this._animatedUVNode}):i.vec3(1)}_setupMatcapNode(){return this.matcapNode!=null?i.vec3(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?ee.context({getUV:()=>i.matcapUV.mul(1,-1).add(0,1)}).mul(Q):i.vec3(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?i.vec3(this.parametricRimColorNode):te,t=this.parametricRimLiftNode!=null?i.float(this.parametricRimLiftNode):ie,o=this.parametricRimFresnelPowerNode!=null?i.float(this.parametricRimFresnelPowerNode):oe;return Re({parametricRimLift:t,parametricRimFresnelPower:o,parametricRimColor:e})}};export{he as MToonAnimatedUVNode,Ee as MToonLightingModel,fe as MToonNodeMaterial};
3
3
  /*!
4
- * @pixiv/three-vrm-materials-mtoon v3.1.1
4
+ * @pixiv/three-vrm-materials-mtoon v3.1.3
5
5
  * MToon (toon material) module for @pixiv/three-vrm
6
6
  *
7
7
  * Copyright (c) 2019-2024 pixiv Inc.