@pixiv/three-vrm-materials-mtoon 3.4.4 → 3.4.5

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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019-2025 pixiv Inc.
1
+ Copyright (c) 2019-2026 pixiv Inc.
2
2
 
3
3
  MIT License
4
4
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * @pixiv/three-vrm-materials-mtoon v3.4.4
2
+ * @pixiv/three-vrm-materials-mtoon v3.4.5
3
3
  * MToon (toon material) module for @pixiv/three-vrm
4
4
  *
5
- * Copyright (c) 2019-2025 pixiv Inc.
5
+ * Copyright (c) 2019-2026 pixiv Inc.
6
6
  * @pixiv/three-vrm-materials-mtoon is distributed under MIT License
7
7
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
8
8
  */
@@ -1,2 +1,2 @@
1
- /*! (c) 2019-2025 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
1
+ /*! (c) 2019-2026 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  "use strict";var be=Object.create;var C=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var Ce=(r,e)=>{for(var t in e)C(r,t,{get:e[t],enumerable:!0})},X=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of He(e))!ve.call(r,n)&&n!==t&&C(r,n,{get:()=>e[n],enumerable:!(o=Fe(e,n))||o.enumerable});return r};var p=(r,e,t)=>(t=r!=null?be(ye(r)):{},X(e||!r||!r.__esModule?C(t,"default",{value:r,enumerable:!0}):t,r)),Oe=r=>X(C({},"__esModule",{value:!0}),r);var we={};Ce(we,{MToonAnimatedUVNode:()=>T,MToonLightingModel:()=>R,MToonNodeMaterial:()=>w});module.exports=Oe(we);var K=p(require("three"),1),G=parseInt(K.REVISION,10);G<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${G}). This would not work correctly.`);var xe=p(require("three/webgpu"),1),d=require("three/tsl");var a=require("three/tsl"),q=(0,a.materialReference)("color","color"),Z=(0,a.materialReference)("map","texture"),$=(0,a.materialReference)("normalMap","texture"),J=(0,a.materialReference)("normalScale","vec2"),Q=(0,a.materialReference)("emissive","color"),ee=(0,a.materialReference)("emissiveIntensity","float"),te=(0,a.materialReference)("emissiveMap","texture"),ie=(0,a.materialReference)("shadeColorFactor","color"),oe=(0,a.materialReference)("shadingShiftFactor","float"),A=(0,a.materialReference)("shadeMultiplyTexture","texture"),re=(0,a.materialReference)("shadeMultiplyTextureScale","float"),ae=(0,a.materialReference)("shadingToonyFactor","float"),ne=(0,a.materialReference)("rimLightingMixFactor","float"),le=(0,a.materialReference)("rimMultiplyTexture","texture"),se=(0,a.materialReference)("matcapFactor","color"),de=(0,a.materialReference)("matcapTexture","texture"),ue=(0,a.materialReference)("parametricRimColorFactor","color"),ce=(0,a.materialReference)("parametricRimLiftFactor","float"),me=(0,a.materialReference)("parametricRimFresnelPowerFactor","float"),he=(0,a.materialReference)("outlineWidthMultiplyTexture","texture"),pe=(0,a.materialReference)("outlineWidthFactor","float"),W=(0,a.materialReference)("outlineColorFactor","color"),Ne=(0,a.materialReference)("outlineLightingMixFactor","float"),fe=(0,a.materialReference)("uvAnimationMaskTexture","texture"),Te=(0,a.materialReference)("uvAnimationScrollXOffset","float"),Ee=(0,a.materialReference)("uvAnimationScrollYOffset","float"),Re=(0,a.materialReference)("uvAnimationRotationPhase","float");var T=class extends xe.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=(0,d.vec4)(fe).context({getUV:()=>(0,d.uv)()}).r);let t=(0,d.uv)(),o=Re.mul(e),n=(0,d.cos)(o),u=(0,d.sin)(o);t=t.sub((0,d.vec2)(.5,.5)),t=t.mul((0,d.mat2)(n,u,u.negate(),n)),t=t.add((0,d.vec2)(.5,.5));let h=(0,d.vec2)(Te,Ee).mul(e);return t=t.add(h),t.toVar("AnimatedUV")}};var Me=p(require("three/webgpu"),1),l=require("three/tsl");var c=p(require("three/webgpu"),1),m=require("three/tsl"),O=(0,m.nodeImmutable)(c.PropertyNode,"vec3").toVar("ShadeColor"),L=(0,m.nodeImmutable)(c.PropertyNode,"float").toVar("ShadingShift"),P=(0,m.nodeImmutable)(c.PropertyNode,"float").toVar("ShadingToony"),S=(0,m.nodeImmutable)(c.PropertyNode,"float").toVar("RimLightingMix"),b=(0,m.nodeImmutable)(c.PropertyNode,"vec3").toVar("RimMultiply"),F=(0,m.nodeImmutable)(c.PropertyNode,"vec3").toVar("matcap"),H=(0,m.nodeImmutable)(c.PropertyNode,"vec3").toVar("ParametricRim");var ge=p(require("three/tsl"),1),V=p(require("three/webgpu"),1),E=r=>parseInt(V.REVISION,10)>=168?ge.Fn(r):V.tslFn(r);var Le=E(({a:r,b:e,t})=>{let o=t.sub(r),n=e.sub(r);return o.div(n).clamp()}),Pe=E(({dotNL:r})=>{let t=(0,l.float)(1).sub(P),o=r.add(L);return o=Le({a:t.negate(),b:t,t:o}),o=o.mul(1),o}),Ve=E(({shading:r,lightColor:e})=>{let t=(0,l.mix)(O,l.diffuseColor,r);return e.mul((0,l.BRDF_Lambert)({diffuseColor:t}))}),R=class extends Me.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:o}){let n=l.transformedNormalView.dot(e).clamp(-1,1),u=Pe({dotNL:n});o.directDiffuse.addAssign(Ve({shading:u,lightColor:t})),o.directSpecular.addAssign(H.add(F).mul(b).mul((0,l.mix)((0,l.vec3)(0),(0,l.BRDF_Lambert)({diffuseColor:t}),S)))}indirect(e){let t="context"in e?e.context:e;this.indirectDiffuse(t),this.indirectSpecular(t)}indirectDiffuse(e){let{irradiance:t,reflectedLight:o}=e;o.indirectDiffuse.addAssign(t.mul((0,l.BRDF_Lambert)({diffuseColor:l.diffuseColor})))}indirectSpecular(e){let{reflectedLight:t}=e;t.indirectSpecular.addAssign(H.add(F).mul(b).mul((0,l.mix)((0,l.vec3)(1),(0,l.vec3)(0),S)))}};var s=p(require("three/webgpu"),1),i=require("three/tsl");var x={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"};var g=require("three/tsl");var Se=E(({parametricRimLift:r,parametricRimFresnelPower:e,parametricRimColor:t})=>{let o=g.modelViewPosition.normalize(),n=g.transformedNormalView.dot(o.negate());return(0,g.float)(1).sub(n).add(r).clamp().pow(e).mul(t)});var w=class extends s.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 s.Color(1,1,1),this.map=null,this.emissive=new s.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new s.Vector2(1,1),this.shadeColorFactor=new s.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 s.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new s.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=x.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new s.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 R}setup(e){var t;this._animatedUVNode=new T((t=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?t:!1),super.setup(e)}setupDiffuseColor(e){let t=null;if(this.colorNode==null){if(t=q,this.map&&this.map.isTexture===!0){let o=Z.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(s.REVISION,10)<166&&this.transparent===!1&&this.blending===s.NormalBlending&&this.alphaToCoverage===!1&&i.diffuseColor.a.assign(1),this.colorNode===t&&(this.colorNode=null)}setupVariants(){O.assign(this._setupShadeColorNode()),L.assign(this._setupShadingShiftNode()),P.assign(this._setupShadingToonyNode()),S.assign(this._setupRimLightingMixNode()),b.assign(this._setupRimMultiplyNode()),F.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 n=$.context({getUV:()=>this._animatedUVNode});this.normalNode=(0,i.normalMap)(n,J)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(s.REVISION,10)>=168){let n=this.normalNode;return this.normalNode=t,n}else{super.setupNormal(e),this.normalNode=t;return}}setupLighting(e){let t=null;if(this.emissiveNode==null){if(t=Q.mul(ee),this.emissiveMap&&this.emissiveMap.isTexture===!0){let n=te.context({getUV:()=>this._animatedUVNode});t=t.mul(n)}this.emissiveNode=t}let o=super.setupLighting(e);return this.emissiveNode===t&&(this.emissiveNode=null),o}setupOutput(e,t){return this.isOutline&&this.outlineWidthMode!==x.None&&(t=(0,i.vec4)((0,i.mix)(W,t.xyz.mul(W),Ne),t.w)),super.setupOutput(e,t)}setupPosition(e){var n,u;let t=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==x.None){(n=this.positionNode)!=null||(this.positionNode=i.positionLocal);let h=i.normalLocal.normalize(),N=pe;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let f=he.context({getUV:()=>this._animatedUVNode});N=N.mul(f)}let y=(0,i.length)(i.modelNormalMatrix.mul(h)),M=N.mul(y).mul(h);if(this.outlineWidthMode===x.WorldCoordinates)this.positionNode=this.positionNode.add(M);else if(this.outlineWidthMode===x.ScreenCoordinates){let f=i.cameraProjectionMatrix.element(1).element(1),v=i.modelViewMatrix.mul(i.positionLocal);this.positionNode=this.positionNode.add(M.div(f).mul(v.z.negate()))}(u=this.positionNode)!=null||(this.positionNode=i.positionLocal)}let o=super.setupPosition(e);return o.z.add(o.w.mul(1e-6)),this.positionNode=t,o}copy(e){var t,o,n,u,h,N,y,M,f,v,j,U,_,z,I,k,B,Y,D;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=(n=e.normalMap)!=null?n:null,this.normalScale.copy(e.normalScale),this.shadeColorFactor.copy(e.shadeColorFactor),this.shadeMultiplyTexture=(u=e.shadeMultiplyTexture)!=null?u:null,this.shadingShiftFactor=e.shadingShiftFactor,this.shadingShiftTexture=(h=e.shadingShiftTexture)!=null?h:null,this.shadingShiftTextureScale=e.shadingShiftTextureScale,this.shadingToonyFactor=e.shadingToonyFactor,this.rimLightingMixFactor=e.rimLightingMixFactor,this.rimMultiplyTexture=(N=e.rimMultiplyTexture)!=null?N:null,this.matcapFactor.copy(e.matcapFactor),this.matcapTexture=(y=e.matcapTexture)!=null?y:null,this.parametricRimColorFactor.copy(e.parametricRimColorFactor),this.parametricRimLiftFactor=e.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=e.parametricRimFresnelPowerFactor,this.outlineWidthMode=e.outlineWidthMode,this.outlineWidthMultiplyTexture=(M=e.outlineWidthMultiplyTexture)!=null?M: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=(f=e.uvAnimationMaskTexture)!=null?f:null,this.shadeColorNode=(v=e.shadeColorNode)!=null?v:null,this.shadingShiftNode=(j=e.shadingShiftNode)!=null?j:null,this.shadingToonyNode=(U=e.shadingToonyNode)!=null?U:null,this.rimLightingMixNode=(_=e.rimLightingMixNode)!=null?_:null,this.rimMultiplyNode=(z=e.rimMultiplyNode)!=null?z:null,this.matcapNode=(I=e.matcapNode)!=null?I:null,this.parametricRimColorNode=(k=e.parametricRimColorNode)!=null?k:null,this.parametricRimLiftNode=(B=e.parametricRimLiftNode)!=null?B:null,this.parametricRimFresnelPowerNode=(Y=e.parametricRimFresnelPowerNode)!=null?Y:null,this.isOutline=(D=e.isOutline)!=null?D: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(0,i.vec3)(this.shadeColorNode);let e=ie;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(0,i.float)(this.shadingShiftNode);let e=oe;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=A.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(re))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?(0,i.float)(this.shadingToonyNode):ae}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?(0,i.float)(this.rimLightingMixNode):ne}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?(0,i.vec3)(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?le.context({getUV:()=>this._animatedUVNode}):(0,i.vec3)(1)}_setupMatcapNode(){return this.matcapNode!=null?(0,i.vec3)(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?de.context({getUV:()=>i.matcapUV.mul(1,-1).add(0,1)}).mul(se):(0,i.vec3)(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?(0,i.vec3)(this.parametricRimColorNode):ue,t=this.parametricRimLiftNode!=null?(0,i.float)(this.parametricRimLiftNode):ce,o=this.parametricRimFresnelPowerNode!=null?(0,i.float)(this.parametricRimFresnelPowerNode):me;return Se({parametricRimLift:t,parametricRimFresnelPower:o,parametricRimColor:e})}};
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * @pixiv/three-vrm-materials-mtoon v3.4.4
2
+ * @pixiv/three-vrm-materials-mtoon v3.4.5
3
3
  * MToon (toon material) module for @pixiv/three-vrm
4
4
  *
5
- * Copyright (c) 2019-2025 pixiv Inc.
5
+ * Copyright (c) 2019-2026 pixiv Inc.
6
6
  * @pixiv/three-vrm-materials-mtoon is distributed under MIT License
7
7
  * https://github.com/pixiv/three-vrm/blob/release/LICENSE
8
8
  */
@@ -1,2 +1,2 @@
1
- /*! (c) 2019-2025 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
1
+ /*! (c) 2019-2026 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
2
2
  import*as K from"three";var G=parseInt(K.REVISION,10);G<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${G}). This would not work correctly.`);import*as ge from"three/webgpu";import{cos as He,mat2 as ye,sin as ve,uv as xe,vec2 as P,vec4 as Ce}from"three/tsl";import{materialReference as o}from"three/tsl";var q=o("color","color"),Z=o("map","texture"),$=o("normalMap","texture"),J=o("normalScale","vec2"),Q=o("emissive","color"),ee=o("emissiveIntensity","float"),te=o("emissiveMap","texture"),ie=o("shadeColorFactor","color"),oe=o("shadingShiftFactor","float"),O=o("shadeMultiplyTexture","texture"),re=o("shadeMultiplyTextureScale","float"),ae=o("shadingToonyFactor","float"),ne=o("rimLightingMixFactor","float"),le=o("rimMultiplyTexture","texture"),se=o("matcapFactor","color"),de=o("matcapTexture","texture"),ue=o("parametricRimColorFactor","color"),ce=o("parametricRimLiftFactor","float"),me=o("parametricRimFresnelPowerFactor","float"),he=o("outlineWidthMultiplyTexture","texture"),pe=o("outlineWidthFactor","float"),L=o("outlineColorFactor","color"),Ne=o("outlineLightingMixFactor","float"),fe=o("uvAnimationMaskTexture","texture"),Te=o("uvAnimationScrollXOffset","float"),Ee=o("uvAnimationScrollYOffset","float"),Re=o("uvAnimationRotationPhase","float");var T=class extends ge.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=Ce(fe).context({getUV:()=>xe()}).r);let t=xe(),i=Re.mul(e),r=He(i),l=ve(i);t=t.sub(P(.5,.5)),t=t.mul(ye(r,l,l.negate(),r)),t=t.add(P(.5,.5));let d=P(Te,Ee).mul(e);return t=t.add(d),t.toVar("AnimatedUV")}};import*as Se from"three/webgpu";import{BRDF_Lambert as w,diffuseColor as be,float as Oe,mix as A,transformedNormalView as Le,vec3 as V}from"three/tsl";import*as s from"three/webgpu";import{nodeImmutable as u}from"three/tsl";var H=u(s.PropertyNode,"vec3").toVar("ShadeColor"),y=u(s.PropertyNode,"float").toVar("ShadingShift"),v=u(s.PropertyNode,"float").toVar("ShadingToony"),E=u(s.PropertyNode,"float").toVar("RimLightingMix"),R=u(s.PropertyNode,"vec3").toVar("RimMultiply"),x=u(s.PropertyNode,"vec3").toVar("matcap"),g=u(s.PropertyNode,"vec3").toVar("ParametricRim");import*as Me from"three/tsl";import*as C from"three/webgpu";var h=n=>parseInt(C.REVISION,10)>=168?Me.Fn(n):C.tslFn(n);var Pe=h(({a:n,b:e,t})=>{let i=t.sub(n),r=e.sub(n);return i.div(r).clamp()}),Ve=h(({dotNL:n})=>{let t=Oe(1).sub(v),i=n.add(y);return i=Pe({a:t.negate(),b:t,t:i}),i=i.mul(1),i}),we=h(({shading:n,lightColor:e})=>{let t=A(H,be,n);return e.mul(w({diffuseColor:t}))}),M=class extends Se.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:i}){let r=Le.dot(e).clamp(-1,1),l=Ve({dotNL:r});i.directDiffuse.addAssign(we({shading:l,lightColor:t})),i.directSpecular.addAssign(g.add(x).mul(R).mul(A(V(0),w({diffuseColor:t}),E)))}indirect(e){let t="context"in e?e.context:e;this.indirectDiffuse(t),this.indirectSpecular(t)}indirectDiffuse(e){let{irradiance:t,reflectedLight:i}=e;i.indirectDiffuse.addAssign(t.mul(w({diffuseColor:be})))}indirectSpecular(e){let{reflectedLight:t}=e;t.indirectSpecular.addAssign(g.add(x).mul(R).mul(A(V(1),V(0),E)))}};import*as a from"three/webgpu";import{cameraProjectionMatrix as Ue,diffuseColor as _e,float as S,length as ze,matcapUV as Ie,materialNormal as ke,mix as Be,modelNormalMatrix as Ye,modelViewMatrix as De,normalLocal as Xe,normalMap as Ge,positionLocal as W,vec3 as N,vec4 as Ke}from"three/tsl";var p={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"};import{float as Ae,modelViewPosition as We,transformedNormalView as je}from"three/tsl";var Fe=h(({parametricRimLift:n,parametricRimFresnelPower:e,parametricRimColor:t})=>{let i=We.normalize(),r=je.dot(i.negate());return Ae(1).sub(r).add(n).clamp().pow(e).mul(t)});var j=class extends a.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 a.Color(1,1,1),this.map=null,this.emissive=new a.Color(0,0,0),this.emissiveIntensity=1,this.emissiveMap=null,this.normalMap=null,this.normalScale=new a.Vector2(1,1),this.shadeColorFactor=new a.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 a.Color(1,1,1),this.matcapTexture=null,this.parametricRimColorFactor=new a.Color(0,0,0),this.parametricRimLiftFactor=0,this.parametricRimFresnelPowerFactor=5,this.outlineWidthMode=p.None,this.outlineWidthMultiplyTexture=null,this.outlineWidthFactor=0,this.outlineColorFactor=new a.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 M}setup(e){var t;this._animatedUVNode=new T((t=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?t:!1),super.setup(e)}setupDiffuseColor(e){let t=null;if(this.colorNode==null){if(t=q,this.map&&this.map.isTexture===!0){let i=Z.context({getUV:()=>this._animatedUVNode});t=t.mul(i)}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(a.REVISION,10)<166&&this.transparent===!1&&this.blending===a.NormalBlending&&this.alphaToCoverage===!1&&_e.a.assign(1),this.colorNode===t&&(this.colorNode=null)}setupVariants(){H.assign(this._setupShadeColorNode()),y.assign(this._setupShadingShiftNode()),v.assign(this._setupShadingToonyNode()),E.assign(this._setupRimLightingMixNode()),R.assign(this._setupRimMultiplyNode()),x.assign(this._setupMatcapNode()),g.assign(this._setupParametricRimNode())}setupNormal(e){let t=this.normalNode;if(this.normalNode==null){if(this.normalNode=ke,this.normalMap&&this.normalMap.isTexture===!0){let r=$.context({getUV:()=>this._animatedUVNode});this.normalNode=Ge(r,J)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(a.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=Q.mul(ee),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=te.context({getUV:()=>this._animatedUVNode});t=t.mul(r)}this.emissiveNode=t}let i=super.setupLighting(e);return this.emissiveNode===t&&(this.emissiveNode=null),i}setupOutput(e,t){return this.isOutline&&this.outlineWidthMode!==p.None&&(t=Ke(Be(L,t.xyz.mul(L),Ne),t.w)),super.setupOutput(e,t)}setupPosition(e){var r,l;let t=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==p.None){(r=this.positionNode)!=null||(this.positionNode=W);let d=Xe.normalize(),c=pe;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let m=he.context({getUV:()=>this._animatedUVNode});c=c.mul(m)}let b=ze(Ye.mul(d)),f=c.mul(b).mul(d);if(this.outlineWidthMode===p.WorldCoordinates)this.positionNode=this.positionNode.add(f);else if(this.outlineWidthMode===p.ScreenCoordinates){let m=Ue.element(1).element(1),F=De.mul(W);this.positionNode=this.positionNode.add(f.div(m).mul(F.z.negate()))}(l=this.positionNode)!=null||(this.positionNode=W)}let i=super.setupPosition(e);return i.z.add(i.w.mul(1e-6)),this.positionNode=t,i}copy(e){var t,i,r,l,d,c,b,f,m,F,U,_,z,I,k,B,Y,D,X;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=(i=e.emissiveMap)!=null?i: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=(d=e.shadingShiftTexture)!=null?d:null,this.shadingShiftTextureScale=e.shadingShiftTextureScale,this.shadingToonyFactor=e.shadingToonyFactor,this.rimLightingMixFactor=e.rimLightingMixFactor,this.rimMultiplyTexture=(c=e.rimMultiplyTexture)!=null?c:null,this.matcapFactor.copy(e.matcapFactor),this.matcapTexture=(b=e.matcapTexture)!=null?b:null,this.parametricRimColorFactor.copy(e.parametricRimColorFactor),this.parametricRimLiftFactor=e.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=e.parametricRimFresnelPowerFactor,this.outlineWidthMode=e.outlineWidthMode,this.outlineWidthMultiplyTexture=(f=e.outlineWidthMultiplyTexture)!=null?f: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=(m=e.uvAnimationMaskTexture)!=null?m:null,this.shadeColorNode=(F=e.shadeColorNode)!=null?F:null,this.shadingShiftNode=(U=e.shadingShiftNode)!=null?U:null,this.shadingToonyNode=(_=e.shadingToonyNode)!=null?_:null,this.rimLightingMixNode=(z=e.rimLightingMixNode)!=null?z:null,this.rimMultiplyNode=(I=e.rimMultiplyNode)!=null?I:null,this.matcapNode=(k=e.matcapNode)!=null?k:null,this.parametricRimColorNode=(B=e.parametricRimColorNode)!=null?B:null,this.parametricRimLiftNode=(Y=e.parametricRimLiftNode)!=null?Y:null,this.parametricRimFresnelPowerNode=(D=e.parametricRimFresnelPowerNode)!=null?D:null,this.isOutline=(X=e.isOutline)!=null?X: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 N(this.shadeColorNode);let e=ie;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let t=O.context({getUV:()=>this._animatedUVNode});e=e.mul(t)}return e}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return S(this.shadingShiftNode);let e=oe;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=O.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(re))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?S(this.shadingToonyNode):ae}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?S(this.rimLightingMixNode):ne}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?N(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?le.context({getUV:()=>this._animatedUVNode}):N(1)}_setupMatcapNode(){return this.matcapNode!=null?N(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?de.context({getUV:()=>Ie.mul(1,-1).add(0,1)}).mul(se):N(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?N(this.parametricRimColorNode):ue,t=this.parametricRimLiftNode!=null?S(this.parametricRimLiftNode):ce,i=this.parametricRimFresnelPowerNode!=null?S(this.parametricRimFresnelPowerNode):me;return Fe({parametricRimLift:t,parametricRimFresnelPower:i,parametricRimColor:e})}};export{T as MToonAnimatedUVNode,M as MToonLightingModel,j as MToonNodeMaterial};