@pixiv/three-vrm 3.4.2 → 3.4.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/lib/nodes/index.cjs +2 -2
- package/lib/nodes/index.min.cjs +1 -1
- package/lib/nodes/index.module.js +2 -2
- package/lib/nodes/index.module.min.js +1 -1
- package/lib/three-vrm.cjs +7 -7
- package/lib/three-vrm.min.cjs +8 -8
- package/lib/three-vrm.module.js +7 -7
- package/lib/three-vrm.module.min.js +8 -8
- package/package.json +8 -8
package/lib/nodes/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pixiv/three-vrm v3.4.
|
|
2
|
+
* @pixiv/three-vrm v3.4.3
|
|
3
3
|
* VRM file loader for three.js.
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -522,7 +522,7 @@ var MToonNodeMaterial = class extends THREE5.NodeMaterial {
|
|
|
522
522
|
}
|
|
523
523
|
};
|
|
524
524
|
/*!
|
|
525
|
-
* @pixiv/three-vrm-materials-mtoon v3.4.
|
|
525
|
+
* @pixiv/three-vrm-materials-mtoon v3.4.3
|
|
526
526
|
* MToon (toon material) module for @pixiv/three-vrm
|
|
527
527
|
*
|
|
528
528
|
* Copyright (c) 2019-2025 pixiv Inc.
|
package/lib/nodes/index.min.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*! (c) 2019-2025 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
|
|
2
2
|
"use strict";var Z=Object.create;var x=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty;var it=(t,i)=>{for(var o in i)x(t,o,{get:i[o],enumerable:!0})},O=(t,i,o,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let n of J(i))!tt.call(t,n)&&n!==o&&x(t,n,{get:()=>i[n],enumerable:!(r=$(i,n))||r.enumerable});return t};var c=(t,i,o)=>(o=t!=null?Z(Q(t)):{},O(i||!t||!t.__esModule?x(o,"default",{value:t,enumerable:!0}):o,t)),et=t=>O(x({},"__esModule",{value:!0}),t);var At={};it(At,{MToonAnimatedUVNode:()=>X,MToonLightingModel:()=>j,MToonNodeMaterial:()=>Pt});module.exports=et(At);var D=c(require("three"),1),Y=c(require("three/webgpu"),1),h=require("three/tsl"),a=require("three/tsl"),z=c(require("three/webgpu"),1),l=require("three/tsl"),m=c(require("three/webgpu"),1),d=require("three/tsl"),K=c(require("three/tsl"),1),R=c(require("three/webgpu"),1),s=c(require("three/webgpu"),1),e=require("three/tsl"),N=require("three/tsl");var I=parseInt(D.REVISION,10);I<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${I}). This would not work correctly.`);var ot=(0,a.materialReference)("color","color"),rt=(0,a.materialReference)("map","texture"),at=(0,a.materialReference)("normalMap","texture"),nt=(0,a.materialReference)("normalScale","vec2"),lt=(0,a.materialReference)("emissive","color"),st=(0,a.materialReference)("emissiveIntensity","float"),ht=(0,a.materialReference)("emissiveMap","texture"),ut=(0,a.materialReference)("shadeColorFactor","color"),mt=(0,a.materialReference)("shadingShiftFactor","float"),k=(0,a.materialReference)("shadeMultiplyTexture","texture"),dt=(0,a.materialReference)("shadeMultiplyTextureScale","float"),ct=(0,a.materialReference)("shadingToonyFactor","float"),pt=(0,a.materialReference)("rimLightingMixFactor","float"),ft=(0,a.materialReference)("rimMultiplyTexture","texture"),Nt=(0,a.materialReference)("matcapFactor","color"),gt=(0,a.materialReference)("matcapTexture","texture"),vt=(0,a.materialReference)("parametricRimColorFactor","color"),Tt=(0,a.materialReference)("parametricRimLiftFactor","float"),Mt=(0,a.materialReference)("parametricRimFresnelPowerFactor","float"),xt=(0,a.materialReference)("outlineWidthMultiplyTexture","texture"),Rt=(0,a.materialReference)("outlineWidthFactor","float"),b=(0,a.materialReference)("outlineColorFactor","color"),St=(0,a.materialReference)("outlineLightingMixFactor","float"),Ft=(0,a.materialReference)("uvAnimationMaskTexture","texture"),Et=(0,a.materialReference)("uvAnimationScrollXOffset","float"),yt=(0,a.materialReference)("uvAnimationScrollYOffset","float"),Ct=(0,a.materialReference)("uvAnimationRotationPhase","float"),X=class extends Y.TempNode{constructor(t){super("vec2"),this.hasMaskTexture=t}setup(){let t=1;this.hasMaskTexture&&(t=(0,h.vec4)(Ft).context({getUV:()=>(0,h.uv)()}).r);let i=(0,h.uv)(),o=Ct.mul(t),r=(0,h.cos)(o),n=(0,h.sin)(o);i=i.sub((0,h.vec2)(.5,.5)),i=i.mul((0,h.mat2)(r,n,n.negate(),r)),i=i.add((0,h.vec2)(.5,.5));let u=(0,h.vec2)(Et,yt).mul(t);return i=i.add(u),i.toVar("AnimatedUV")}},B=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("ShadeColor"),q=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("ShadingShift"),G=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("ShadingToony"),F=(0,d.nodeImmutable)(m.PropertyNode,"float").toVar("RimLightingMix"),E=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("RimMultiply"),y=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("matcap"),C=(0,d.nodeImmutable)(m.PropertyNode,"vec3").toVar("ParametricRim"),S=t=>parseInt(R.REVISION,10)>=168?K.Fn(t):R.tslFn(t),_t=S(({a:t,b:i,t:o})=>{let r=o.sub(t),n=i.sub(t);return r.div(n).clamp()}),Vt=S(({dotNL:t})=>{let o=(0,l.float)(1).sub(G),r=t.add(q);return r=_t({a:o.negate(),b:o,t:r}),r=r.mul(1),r}),Lt=S(({shading:t,lightColor:i})=>{let o=(0,l.mix)(B,l.diffuseColor,t);return i.mul((0,l.BRDF_Lambert)({diffuseColor:o}))}),j=class extends z.LightingModel{constructor(){super()}direct({lightDirection:t,lightColor:i,reflectedLight:o}){let r=l.transformedNormalView.dot(t).clamp(-1,1),n=Vt({dotNL:r});o.directDiffuse.addAssign(Lt({shading:n,lightColor:i})),o.directSpecular.addAssign(C.add(y).mul(E).mul((0,l.mix)((0,l.vec3)(0),(0,l.BRDF_Lambert)({diffuseColor:i}),F)))}indirect(t){let i="context"in t?t.context:t;this.indirectDiffuse(i),this.indirectSpecular(i)}indirectDiffuse(t){let{irradiance:i,reflectedLight:o}=t;o.indirectDiffuse.addAssign(i.mul((0,l.BRDF_Lambert)({diffuseColor:l.diffuseColor})))}indirectSpecular(t){let{reflectedLight:i}=t;i.indirectSpecular.addAssign(C.add(y).mul(E).mul((0,l.mix)((0,l.vec3)(1),(0,l.vec3)(0),F)))}},v={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},wt=S(({parametricRimLift:t,parametricRimFresnelPower:i,parametricRimColor:o})=>{let r=N.modelViewPosition.normalize(),n=N.transformedNormalView.dot(r.negate());return(0,N.float)(1).sub(n).add(t).clamp().pow(i).mul(o)}),Pt=class extends s.NodeMaterial{customProgramCacheKey(){let t=super.customProgramCacheKey();return t+=`isOutline:${this.isOutline},`,t}get isMToonNodeMaterial(){return!0}constructor(t={}){super(),t.transparentWithZWrite&&(t.depthWrite=!0),delete t.transparentWithZWrite,delete t.giEqualizationFactor,delete t.v0CompatShade,delete t.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=v.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(t)}setupLightingModel(){return new j}setup(t){var i;this._animatedUVNode=new X((i=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?i:!1),super.setup(t)}setupDiffuseColor(t){let i=null;if(this.colorNode==null){if(i=ot,this.map&&this.map.isTexture===!0){let o=rt.context({getUV:()=>this._animatedUVNode});i=i.mul(o)}this.colorNode=i}this.vertexColors===!0&&t.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(t),parseInt(s.REVISION,10)<166&&this.transparent===!1&&this.blending===s.NormalBlending&&this.alphaToCoverage===!1&&e.diffuseColor.a.assign(1),this.colorNode===i&&(this.colorNode=null)}setupVariants(){B.assign(this._setupShadeColorNode()),q.assign(this._setupShadingShiftNode()),G.assign(this._setupShadingToonyNode()),F.assign(this._setupRimLightingMixNode()),E.assign(this._setupRimMultiplyNode()),y.assign(this._setupMatcapNode()),C.assign(this._setupParametricRimNode())}setupNormal(t){let i=this.normalNode;if(this.normalNode==null){if(this.normalNode=e.materialNormal,this.normalMap&&this.normalMap.isTexture===!0){let r=at.context({getUV:()=>this._animatedUVNode});this.normalNode=(0,e.normalMap)(r,nt)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(s.REVISION,10)>=168){let r=this.normalNode;return this.normalNode=i,r}else{super.setupNormal(t),this.normalNode=i;return}}setupLighting(t){let i=null;if(this.emissiveNode==null){if(i=lt.mul(st),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=ht.context({getUV:()=>this._animatedUVNode});i=i.mul(r)}this.emissiveNode=i}let o=super.setupLighting(t);return this.emissiveNode===i&&(this.emissiveNode=null),o}setupOutput(t,i){return this.isOutline&&this.outlineWidthMode!==v.None&&(i=(0,e.vec4)((0,e.mix)(b,i.xyz.mul(b),St),i.w)),super.setupOutput(t,i)}setupPosition(t){var i,o;let r=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==v.None){(i=this.positionNode)!=null||(this.positionNode=e.positionLocal);let u=e.normalLocal.normalize(),p=Rt;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let f=xt.context({getUV:()=>this._animatedUVNode});p=p.mul(f)}let T=(0,e.length)(e.modelNormalMatrix.mul(u)),g=p.mul(T).mul(u);if(this.outlineWidthMode===v.WorldCoordinates)this.positionNode=this.positionNode.add(g);else if(this.outlineWidthMode===v.ScreenCoordinates){let f=e.cameraProjectionMatrix.element(1).element(1),M=e.modelViewMatrix.mul(e.positionLocal);this.positionNode=this.positionNode.add(g.div(f).mul(M.z.negate()))}(o=this.positionNode)!=null||(this.positionNode=e.positionLocal)}let n=super.setupPosition(t);return n.z.add(n.w.mul(1e-6)),this.positionNode=r,n}copy(t){var i,o,r,n,u,p,T,g,f,M,_,V,L,w,P,A,H,W,U;return this.color.copy(t.color),this.map=(i=t.map)!=null?i:null,this.emissive.copy(t.emissive),this.emissiveIntensity=t.emissiveIntensity,this.emissiveMap=(o=t.emissiveMap)!=null?o:null,this.normalMap=(r=t.normalMap)!=null?r:null,this.normalScale.copy(t.normalScale),this.shadeColorFactor.copy(t.shadeColorFactor),this.shadeMultiplyTexture=(n=t.shadeMultiplyTexture)!=null?n:null,this.shadingShiftFactor=t.shadingShiftFactor,this.shadingShiftTexture=(u=t.shadingShiftTexture)!=null?u:null,this.shadingShiftTextureScale=t.shadingShiftTextureScale,this.shadingToonyFactor=t.shadingToonyFactor,this.rimLightingMixFactor=t.rimLightingMixFactor,this.rimMultiplyTexture=(p=t.rimMultiplyTexture)!=null?p:null,this.matcapFactor.copy(t.matcapFactor),this.matcapTexture=(T=t.matcapTexture)!=null?T:null,this.parametricRimColorFactor.copy(t.parametricRimColorFactor),this.parametricRimLiftFactor=t.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=t.parametricRimFresnelPowerFactor,this.outlineWidthMode=t.outlineWidthMode,this.outlineWidthMultiplyTexture=(g=t.outlineWidthMultiplyTexture)!=null?g:null,this.outlineWidthFactor=t.outlineWidthFactor,this.outlineColorFactor.copy(t.outlineColorFactor),this.outlineLightingMixFactor=t.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(f=t.uvAnimationMaskTexture)!=null?f:null,this.shadeColorNode=(M=t.shadeColorNode)!=null?M:null,this.shadingShiftNode=(_=t.shadingShiftNode)!=null?_:null,this.shadingToonyNode=(V=t.shadingToonyNode)!=null?V:null,this.rimLightingMixNode=(L=t.rimLightingMixNode)!=null?L:null,this.rimMultiplyNode=(w=t.rimMultiplyNode)!=null?w:null,this.matcapNode=(P=t.matcapNode)!=null?P:null,this.parametricRimColorNode=(A=t.parametricRimColorNode)!=null?A:null,this.parametricRimLiftNode=(H=t.parametricRimLiftNode)!=null?H:null,this.parametricRimFresnelPowerNode=(W=t.parametricRimFresnelPowerNode)!=null?W:null,this.isOutline=(U=t.isOutline)!=null?U:null,super.copy(t)}update(t){this.uvAnimationScrollXOffset+=t*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=t*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=t*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return(0,e.vec3)(this.shadeColorNode);let t=ut;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let i=k.context({getUV:()=>this._animatedUVNode});t=t.mul(i)}return t}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return(0,e.float)(this.shadingShiftNode);let t=mt;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let i=k.context({getUV:()=>this._animatedUVNode});t=t.add(i.mul(dt))}return t}_setupShadingToonyNode(){return this.shadingToonyNode!=null?(0,e.float)(this.shadingToonyNode):ct}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?(0,e.float)(this.rimLightingMixNode):pt}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?(0,e.vec3)(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?ft.context({getUV:()=>this._animatedUVNode}):(0,e.vec3)(1)}_setupMatcapNode(){return this.matcapNode!=null?(0,e.vec3)(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?gt.context({getUV:()=>e.matcapUV.mul(1,-1).add(0,1)}).mul(Nt):(0,e.vec3)(0)}_setupParametricRimNode(){let t=this.parametricRimColorNode!=null?(0,e.vec3)(this.parametricRimColorNode):vt,i=this.parametricRimLiftNode!=null?(0,e.float)(this.parametricRimLiftNode):Tt,o=this.parametricRimFresnelPowerNode!=null?(0,e.float)(this.parametricRimFresnelPowerNode):Mt;return wt({parametricRimLift:i,parametricRimFresnelPower:o,parametricRimColor:t})}};
|
|
3
3
|
/*!
|
|
4
|
-
* @pixiv/three-vrm-materials-mtoon v3.4.
|
|
4
|
+
* @pixiv/three-vrm-materials-mtoon v3.4.3
|
|
5
5
|
* MToon (toon material) module for @pixiv/three-vrm
|
|
6
6
|
*
|
|
7
7
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pixiv/three-vrm v3.4.
|
|
2
|
+
* @pixiv/three-vrm v3.4.3
|
|
3
3
|
* VRM file loader for three.js.
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -505,7 +505,7 @@ export {
|
|
|
505
505
|
MToonNodeMaterial
|
|
506
506
|
};
|
|
507
507
|
/*!
|
|
508
|
-
* @pixiv/three-vrm-materials-mtoon v3.4.
|
|
508
|
+
* @pixiv/three-vrm-materials-mtoon v3.4.3
|
|
509
509
|
* MToon (toon material) module for @pixiv/three-vrm
|
|
510
510
|
*
|
|
511
511
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*! (c) 2019-2025 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
|
|
2
2
|
import*as Y from"three";import*as X from"three/webgpu";import{cos as Z,mat2 as $,sin as J,uv as k,vec2 as M,vec4 as Q}from"three/tsl";import{materialReference as o}from"three/tsl";import*as z from"three/webgpu";import{BRDF_Lambert as S,diffuseColor as B,float as yt,mix as F,transformedNormalView as Ct,vec3 as x}from"three/tsl";import*as s from"three/webgpu";import{nodeImmutable as h}from"three/tsl";import*as j from"three/tsl";import*as v from"three/webgpu";import*as a from"three/webgpu";import{cameraProjectionMatrix as Pt,diffuseColor as At,float as p,length as Ht,matcapUV as Wt,materialNormal as Ut,mix as Ot,modelNormalMatrix as It,modelViewMatrix as kt,normalLocal as bt,normalMap as Dt,positionLocal as R,vec3 as d,vec4 as Yt}from"three/tsl";import{float as Xt,modelViewPosition as zt,transformedNormalView as Bt}from"three/tsl";var I=parseInt(Y.REVISION,10);I<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${I}). This would not work correctly.`);var tt=o("color","color"),it=o("map","texture"),et=o("normalMap","texture"),ot=o("normalScale","vec2"),rt=o("emissive","color"),at=o("emissiveIntensity","float"),nt=o("emissiveMap","texture"),lt=o("shadeColorFactor","color"),st=o("shadingShiftFactor","float"),b=o("shadeMultiplyTexture","texture"),ht=o("shadeMultiplyTextureScale","float"),ut=o("shadingToonyFactor","float"),mt=o("rimLightingMixFactor","float"),dt=o("rimMultiplyTexture","texture"),ct=o("matcapFactor","color"),pt=o("matcapTexture","texture"),ft=o("parametricRimColorFactor","color"),Nt=o("parametricRimLiftFactor","float"),gt=o("parametricRimFresnelPowerFactor","float"),vt=o("outlineWidthMultiplyTexture","texture"),Tt=o("outlineWidthFactor","float"),D=o("outlineColorFactor","color"),Mt=o("outlineLightingMixFactor","float"),xt=o("uvAnimationMaskTexture","texture"),Rt=o("uvAnimationScrollXOffset","float"),St=o("uvAnimationScrollYOffset","float"),Ft=o("uvAnimationRotationPhase","float"),Et=class extends X.TempNode{constructor(t){super("vec2"),this.hasMaskTexture=t}setup(){let t=1;this.hasMaskTexture&&(t=Q(xt).context({getUV:()=>k()}).r);let i=k(),e=Ft.mul(t),r=Z(e),n=J(e);i=i.sub(M(.5,.5)),i=i.mul($(r,n,n.negate(),r)),i=i.add(M(.5,.5));let l=M(Rt,St).mul(t);return i=i.add(l),i.toVar("AnimatedUV")}},q=h(s.PropertyNode,"vec3").toVar("ShadeColor"),G=h(s.PropertyNode,"float").toVar("ShadingShift"),K=h(s.PropertyNode,"float").toVar("ShadingToony"),E=h(s.PropertyNode,"float").toVar("RimLightingMix"),y=h(s.PropertyNode,"vec3").toVar("RimMultiply"),C=h(s.PropertyNode,"vec3").toVar("matcap"),_=h(s.PropertyNode,"vec3").toVar("ParametricRim"),T=t=>parseInt(v.REVISION,10)>=168?j.Fn(t):v.tslFn(t),_t=T(({a:t,b:i,t:e})=>{let r=e.sub(t),n=i.sub(t);return r.div(n).clamp()}),Vt=T(({dotNL:t})=>{let e=yt(1).sub(K),r=t.add(G);return r=_t({a:e.negate(),b:e,t:r}),r=r.mul(1),r}),Lt=T(({shading:t,lightColor:i})=>{let e=F(q,B,t);return i.mul(S({diffuseColor:e}))}),wt=class extends z.LightingModel{constructor(){super()}direct({lightDirection:t,lightColor:i,reflectedLight:e}){let r=Ct.dot(t).clamp(-1,1),n=Vt({dotNL:r});e.directDiffuse.addAssign(Lt({shading:n,lightColor:i})),e.directSpecular.addAssign(_.add(C).mul(y).mul(F(x(0),S({diffuseColor:i}),E)))}indirect(t){let i="context"in t?t.context:t;this.indirectDiffuse(i),this.indirectSpecular(i)}indirectDiffuse(t){let{irradiance:i,reflectedLight:e}=t;e.indirectDiffuse.addAssign(i.mul(S({diffuseColor:B})))}indirectSpecular(t){let{reflectedLight:i}=t;i.indirectSpecular.addAssign(_.add(C).mul(y).mul(F(x(1),x(0),E)))}},f={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"},qt=T(({parametricRimLift:t,parametricRimFresnelPower:i,parametricRimColor:e})=>{let r=zt.normalize(),n=Bt.dot(r.negate());return Xt(1).sub(n).add(t).clamp().pow(i).mul(e)}),Qt=class extends a.NodeMaterial{customProgramCacheKey(){let t=super.customProgramCacheKey();return t+=`isOutline:${this.isOutline},`,t}get isMToonNodeMaterial(){return!0}constructor(t={}){super(),t.transparentWithZWrite&&(t.depthWrite=!0),delete t.transparentWithZWrite,delete t.giEqualizationFactor,delete t.v0CompatShade,delete t.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=f.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(t)}setupLightingModel(){return new wt}setup(t){var i;this._animatedUVNode=new Et((i=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?i:!1),super.setup(t)}setupDiffuseColor(t){let i=null;if(this.colorNode==null){if(i=tt,this.map&&this.map.isTexture===!0){let e=it.context({getUV:()=>this._animatedUVNode});i=i.mul(e)}this.colorNode=i}this.vertexColors===!0&&t.geometry.hasAttribute("color")&&(console.warn("MToonNodeMaterial: MToon ignores vertex colors. Consider using a model without vertex colors instead."),this.vertexColors=!1),super.setupDiffuseColor(t),parseInt(a.REVISION,10)<166&&this.transparent===!1&&this.blending===a.NormalBlending&&this.alphaToCoverage===!1&&At.a.assign(1),this.colorNode===i&&(this.colorNode=null)}setupVariants(){q.assign(this._setupShadeColorNode()),G.assign(this._setupShadingShiftNode()),K.assign(this._setupShadingToonyNode()),E.assign(this._setupRimLightingMixNode()),y.assign(this._setupRimMultiplyNode()),C.assign(this._setupMatcapNode()),_.assign(this._setupParametricRimNode())}setupNormal(t){let i=this.normalNode;if(this.normalNode==null){if(this.normalNode=Ut,this.normalMap&&this.normalMap.isTexture===!0){let r=et.context({getUV:()=>this._animatedUVNode});this.normalNode=Dt(r,ot)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(a.REVISION,10)>=168){let r=this.normalNode;return this.normalNode=i,r}else{super.setupNormal(t),this.normalNode=i;return}}setupLighting(t){let i=null;if(this.emissiveNode==null){if(i=rt.mul(at),this.emissiveMap&&this.emissiveMap.isTexture===!0){let r=nt.context({getUV:()=>this._animatedUVNode});i=i.mul(r)}this.emissiveNode=i}let e=super.setupLighting(t);return this.emissiveNode===i&&(this.emissiveNode=null),e}setupOutput(t,i){return this.isOutline&&this.outlineWidthMode!==f.None&&(i=Yt(Ot(D,i.xyz.mul(D),Mt),i.w)),super.setupOutput(t,i)}setupPosition(t){var i,e;let r=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==f.None){(i=this.positionNode)!=null||(this.positionNode=R);let l=bt.normalize(),u=Tt;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let m=vt.context({getUV:()=>this._animatedUVNode});u=u.mul(m)}let N=Ht(It.mul(l)),c=u.mul(N).mul(l);if(this.outlineWidthMode===f.WorldCoordinates)this.positionNode=this.positionNode.add(c);else if(this.outlineWidthMode===f.ScreenCoordinates){let m=Pt.element(1).element(1),g=kt.mul(R);this.positionNode=this.positionNode.add(c.div(m).mul(g.z.negate()))}(e=this.positionNode)!=null||(this.positionNode=R)}let n=super.setupPosition(t);return n.z.add(n.w.mul(1e-6)),this.positionNode=r,n}copy(t){var i,e,r,n,l,u,N,c,m,g,V,L,w,P,A,H,W,U,O;return this.color.copy(t.color),this.map=(i=t.map)!=null?i:null,this.emissive.copy(t.emissive),this.emissiveIntensity=t.emissiveIntensity,this.emissiveMap=(e=t.emissiveMap)!=null?e:null,this.normalMap=(r=t.normalMap)!=null?r:null,this.normalScale.copy(t.normalScale),this.shadeColorFactor.copy(t.shadeColorFactor),this.shadeMultiplyTexture=(n=t.shadeMultiplyTexture)!=null?n:null,this.shadingShiftFactor=t.shadingShiftFactor,this.shadingShiftTexture=(l=t.shadingShiftTexture)!=null?l:null,this.shadingShiftTextureScale=t.shadingShiftTextureScale,this.shadingToonyFactor=t.shadingToonyFactor,this.rimLightingMixFactor=t.rimLightingMixFactor,this.rimMultiplyTexture=(u=t.rimMultiplyTexture)!=null?u:null,this.matcapFactor.copy(t.matcapFactor),this.matcapTexture=(N=t.matcapTexture)!=null?N:null,this.parametricRimColorFactor.copy(t.parametricRimColorFactor),this.parametricRimLiftFactor=t.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=t.parametricRimFresnelPowerFactor,this.outlineWidthMode=t.outlineWidthMode,this.outlineWidthMultiplyTexture=(c=t.outlineWidthMultiplyTexture)!=null?c:null,this.outlineWidthFactor=t.outlineWidthFactor,this.outlineColorFactor.copy(t.outlineColorFactor),this.outlineLightingMixFactor=t.outlineLightingMixFactor,this.uvAnimationScrollXSpeedFactor=t.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=t.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=t.uvAnimationRotationSpeedFactor,this.uvAnimationMaskTexture=(m=t.uvAnimationMaskTexture)!=null?m:null,this.shadeColorNode=(g=t.shadeColorNode)!=null?g:null,this.shadingShiftNode=(V=t.shadingShiftNode)!=null?V:null,this.shadingToonyNode=(L=t.shadingToonyNode)!=null?L:null,this.rimLightingMixNode=(w=t.rimLightingMixNode)!=null?w:null,this.rimMultiplyNode=(P=t.rimMultiplyNode)!=null?P:null,this.matcapNode=(A=t.matcapNode)!=null?A:null,this.parametricRimColorNode=(H=t.parametricRimColorNode)!=null?H:null,this.parametricRimLiftNode=(W=t.parametricRimLiftNode)!=null?W:null,this.parametricRimFresnelPowerNode=(U=t.parametricRimFresnelPowerNode)!=null?U:null,this.isOutline=(O=t.isOutline)!=null?O:null,super.copy(t)}update(t){this.uvAnimationScrollXOffset+=t*this.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYOffset+=t*this.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationPhase+=t*this.uvAnimationRotationSpeedFactor}_setupShadeColorNode(){if(this.shadeColorNode!=null)return d(this.shadeColorNode);let t=lt;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let i=b.context({getUV:()=>this._animatedUVNode});t=t.mul(i)}return t}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return p(this.shadingShiftNode);let t=st;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let i=b.context({getUV:()=>this._animatedUVNode});t=t.add(i.mul(ht))}return t}_setupShadingToonyNode(){return this.shadingToonyNode!=null?p(this.shadingToonyNode):ut}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?p(this.rimLightingMixNode):mt}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?d(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?dt.context({getUV:()=>this._animatedUVNode}):d(1)}_setupMatcapNode(){return this.matcapNode!=null?d(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?pt.context({getUV:()=>Wt.mul(1,-1).add(0,1)}).mul(ct):d(0)}_setupParametricRimNode(){let t=this.parametricRimColorNode!=null?d(this.parametricRimColorNode):ft,i=this.parametricRimLiftNode!=null?p(this.parametricRimLiftNode):Nt,e=this.parametricRimFresnelPowerNode!=null?p(this.parametricRimFresnelPowerNode):gt;return qt({parametricRimLift:i,parametricRimFresnelPower:e,parametricRimColor:t})}};export{Et as MToonAnimatedUVNode,wt as MToonLightingModel,Qt as MToonNodeMaterial};
|
|
3
3
|
/*!
|
|
4
|
-
* @pixiv/three-vrm-materials-mtoon v3.4.
|
|
4
|
+
* @pixiv/three-vrm-materials-mtoon v3.4.3
|
|
5
5
|
* MToon (toon material) module for @pixiv/three-vrm
|
|
6
6
|
*
|
|
7
7
|
* Copyright (c) 2019-2025 pixiv Inc.
|
package/lib/three-vrm.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pixiv/three-vrm v3.4.
|
|
2
|
+
* @pixiv/three-vrm v3.4.3
|
|
3
3
|
* VRM file loader for three.js.
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6710,7 +6710,7 @@ VRMUtils.removeUnnecessaryJoints = removeUnnecessaryJoints;
|
|
|
6710
6710
|
VRMUtils.removeUnnecessaryVertices = removeUnnecessaryVertices;
|
|
6711
6711
|
VRMUtils.rotateVRM0 = rotateVRM0;
|
|
6712
6712
|
/*!
|
|
6713
|
-
* @pixiv/three-vrm-core v3.4.
|
|
6713
|
+
* @pixiv/three-vrm-core v3.4.3
|
|
6714
6714
|
* The implementation of core features of VRM, for @pixiv/three-vrm
|
|
6715
6715
|
*
|
|
6716
6716
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6718,7 +6718,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
|
|
|
6718
6718
|
* https://github.com/pixiv/three-vrm/blob/release/LICENSE
|
|
6719
6719
|
*/
|
|
6720
6720
|
/*!
|
|
6721
|
-
* @pixiv/three-vrm-materials-mtoon v3.4.
|
|
6721
|
+
* @pixiv/three-vrm-materials-mtoon v3.4.3
|
|
6722
6722
|
* MToon (toon material) module for @pixiv/three-vrm
|
|
6723
6723
|
*
|
|
6724
6724
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6726,7 +6726,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
|
|
|
6726
6726
|
* https://github.com/pixiv/three-vrm/blob/release/LICENSE
|
|
6727
6727
|
*/
|
|
6728
6728
|
/*!
|
|
6729
|
-
* @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.4.
|
|
6729
|
+
* @pixiv/three-vrm-materials-hdr-emissive-multiplier v3.4.3
|
|
6730
6730
|
* Support VRMC_hdr_emissiveMultiplier for @pixiv/three-vrm
|
|
6731
6731
|
*
|
|
6732
6732
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6734,7 +6734,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
|
|
|
6734
6734
|
* https://github.com/pixiv/three-vrm/blob/release/LICENSE
|
|
6735
6735
|
*/
|
|
6736
6736
|
/*!
|
|
6737
|
-
* @pixiv/three-vrm-materials-v0compat v3.4.
|
|
6737
|
+
* @pixiv/three-vrm-materials-v0compat v3.4.3
|
|
6738
6738
|
* VRM0.0 materials compatibility layer plugin for @pixiv/three-vrm
|
|
6739
6739
|
*
|
|
6740
6740
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6742,7 +6742,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
|
|
|
6742
6742
|
* https://github.com/pixiv/three-vrm/blob/release/LICENSE
|
|
6743
6743
|
*/
|
|
6744
6744
|
/*!
|
|
6745
|
-
* @pixiv/three-vrm-node-constraint v3.4.
|
|
6745
|
+
* @pixiv/three-vrm-node-constraint v3.4.3
|
|
6746
6746
|
* Node constraint module for @pixiv/three-vrm
|
|
6747
6747
|
*
|
|
6748
6748
|
* Copyright (c) 2019-2025 pixiv Inc.
|
|
@@ -6750,7 +6750,7 @@ VRMUtils.rotateVRM0 = rotateVRM0;
|
|
|
6750
6750
|
* https://github.com/pixiv/three-vrm/blob/release/LICENSE
|
|
6751
6751
|
*/
|
|
6752
6752
|
/*!
|
|
6753
|
-
* @pixiv/three-vrm-springbone v3.4.
|
|
6753
|
+
* @pixiv/three-vrm-springbone v3.4.3
|
|
6754
6754
|
* Spring bone module for @pixiv/three-vrm
|
|
6755
6755
|
*
|
|
6756
6756
|
* Copyright (c) 2019-2025 pixiv Inc.
|