@pixiv/three-vrm-materials-mtoon 3.1.0-beta.0 → 3.1.1
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 +75 -56
- package/lib/nodes/index.min.cjs +1 -1
- package/lib/nodes/index.module.js +75 -56
- package/lib/nodes/index.module.min.js +1 -1
- package/lib/three-vrm-materials-mtoon.cjs +2 -2
- package/lib/three-vrm-materials-mtoon.module.js +2 -2
- package/package.json +6 -6
- package/types/MToonMaterialDebugMode.d.ts +1 -1
- package/types/MToonMaterialOutlineWidthMode.d.ts +1 -1
- package/types/nodes/MToonNodeMaterial.d.ts +1 -1
- package/types/nodes/mtoonParametricRim.d.ts +1 -1
- package/types/nodes/utils/FnCompat.d.ts +9 -0
package/lib/nodes/index.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! (c) 2019-2024 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */
|
|
2
|
-
"use strict";var Re=Object.create;var b=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var He=Object.getPrototypeOf,xe=Object.prototype.hasOwnProperty;var Me=(a,e)=>{for(var t in e)b(a,t,{get:e[t],enumerable:!0})},k=(a,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ne(e))!xe.call(a,n)&&n!==t&&b(a,n,{get:()=>e[n],enumerable:!(o=fe(e,n))||o.enumerable});return a};var E=(a,e,t)=>(t=a!=null?Re(He(a)):{},k(e||!a||!a.__esModule?b(t,"default",{value:a,enumerable:!0}):t,a)),ge=a=>k(b({},"__esModule",{value:!0}),a);var ve={};Me(ve,{MToonAnimatedUVNode:()=>T,MToonLightingModel:()=>R,MToonNodeMaterial:()=>C});module.exports=ge(ve);var Y=E(require("three"),1),D=parseInt(Y.REVISION,10);D<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${D}). This would not work correctly.`);var s=E(require("three/webgpu"),1);var r=E(require("three/webgpu"),1),X=r.materialReference("color","color"),B=r.materialReference("map","texture"),K=r.materialReference("normalMap","texture"),q=r.materialReference("normalScale","vec2"),Z=r.materialReference("emissive","color"),$=r.materialReference("emissiveIntensity","float"),G=r.materialReference("emissiveMap","texture"),J=r.materialReference("shadeColorFactor","color"),Q=r.materialReference("shadingShiftFactor","float"),O=r.materialReference("shadeMultiplyTexture","texture"),ee=r.materialReference("shadeMultiplyTextureScale","float"),te=r.materialReference("shadingToonyFactor","float"),ie=r.materialReference("rimLightingMixFactor","float"),oe=r.materialReference("rimMultiplyTexture","texture"),re=r.materialReference("matcapFactor","color"),ae=r.materialReference("matcapTexture","texture"),le=r.materialReference("parametricRimColorFactor","color"),ne=r.materialReference("parametricRimLiftFactor","float"),se=r.materialReference("parametricRimFresnelPowerFactor","float"),de=r.materialReference("outlineWidthMultiplyTexture","texture"),ue=r.materialReference("outlineWidthFactor","float"),L=r.materialReference("outlineColorFactor","color"),ce=r.materialReference("outlineLightingMixFactor","float"),me=r.materialReference("uvAnimationMaskTexture","texture"),Ee=r.materialReference("uvAnimationScrollXOffset","float"),he=r.materialReference("uvAnimationScrollYOffset","float"),pe=r.materialReference("uvAnimationRotationPhase","float");var T=class extends s.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=s.vec4(me).context({getUV:()=>s.uv()}).r);let t=s.uv(),o=pe.mul(e),n=s.cos(o),u=s.sin(o);t=t.sub(s.vec2(.5,.5)),t=t.mul(s.mat2(n,u,u.negate(),n)),t=t.add(s.vec2(.5,.5));let m=s.vec2(Ee,he).mul(e);return t=t.add(m),t.temp("AnimatedUV")}};var l=E(require("three/webgpu"),1);var d=E(require("three/webgpu"),1),F=d.nodeImmutable(d.PropertyNode,"vec3").temp("ShadeColor"),v=d.nodeImmutable(d.PropertyNode,"float").temp("ShadingShift"),y=d.nodeImmutable(d.PropertyNode,"float").temp("ShadingToony"),H=d.nodeImmutable(d.PropertyNode,"float").temp("RimLightingMix"),x=d.nodeImmutable(d.PropertyNode,"vec3").temp("RimMultiply"),M=d.nodeImmutable(d.PropertyNode,"vec3").temp("matcap"),g=d.nodeImmutable(d.PropertyNode,"vec3").temp("ParametricRim");var Se=l.tslFn(({a,b:e,t})=>{let o=t.sub(a),n=e.sub(a);return o.div(n).clamp()}),be=l.tslFn(({dotNL:a})=>{let t=l.float(1).sub(y),o=a.add(v);return o=Se({a:t.negate(),b:t,t:o}),o=o.mul(1),o}),Fe=l.tslFn(({shading:a,lightColor:e})=>{let t=l.mix(F,l.diffuseColor,a);return e.mul(l.BRDF_Lambert({diffuseColor:t}))}),R=class extends l.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:o}){let n=l.transformedNormalView.dot(e).clamp(-1,1),u=be({dotNL:n});o.directDiffuse.assign(o.directDiffuse.add(Fe({shading:u,lightColor:t}))),o.directSpecular.assign(o.directSpecular.add(g.add(M).mul(x).mul(l.mix(l.vec3(0),l.BRDF_Lambert({diffuseColor:t}),H))))}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(g.add(M).mul(x).mul(l.mix(l.vec3(1),l.vec3(0),H))))}};var i=E(require("three/webgpu"),1);var f={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"};var c=E(require("three/webgpu"),1),Te=c.tslFn(({parametricRimLift:a,parametricRimFresnelPower:e,parametricRimColor:t})=>{let o=c.modelViewPosition.normalize(),n=c.transformedNormalView.dot(o.negate());return c.float(1).sub(n).add(a).clamp().pow(e).mul(t)});var C=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 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=X,this.map&&this.map.isTexture===!0){let o=B.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(){F.assign(this._setupShadeColorNode()),v.assign(this._setupShadingShiftNode()),y.assign(this._setupShadingToonyNode()),H.assign(this._setupRimLightingMixNode()),x.assign(this._setupRimMultiplyNode()),M.assign(this._setupMatcapNode()),g.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 o=K.context({getUV:()=>this._animatedUVNode});this.normalNode=o.normalMap(q)}this.isOutline&&(this.normalNode=this.normalNode.negate())}super.setupNormal(e),this.normalNode=t}setupLighting(e){let t=null;if(this.emissiveNode==null){if(t=Z.mul($),this.emissiveMap&&this.emissiveMap.isTexture===!0){let n=G.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!==f.None&&(t=i.vec4(i.mix(L,t.xyz.mul(L),ce),t.w)),super.setupOutput(e,t)}setupPosition(e){var n,u;let t=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==f.None){(n=this.positionNode)!=null||(this.positionNode=i.positionLocal);let m=i.normalLocal.normalize(),h=ue;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let p=de.context({getUV:()=>this._animatedUVNode});h=h.mul(p)}let S=i.length(i.modelNormalMatrix.mul(m)),N=h.mul(S).mul(m);if(this.outlineWidthMode===f.WorldCoordinates)this.positionNode=this.positionNode.add(N);else if(this.outlineWidthMode===f.ScreenCoordinates){let p=i.cameraProjectionMatrix.element(1).element(1);this.positionNode=this.positionNode.add(N.div(p).mul(i.positionView.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,m,h,S,N,p,P,w,A,V,W,j,U,I,_,z;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=(m=e.shadingShiftTexture)!=null?m: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=(S=e.matcapTexture)!=null?S:null,this.parametricRimColorFactor.copy(e.parametricRimColorFactor),this.parametricRimLiftFactor=e.parametricRimLiftFactor,this.parametricRimFresnelPowerFactor=e.parametricRimFresnelPowerFactor,this.outlineWidthMode=e.outlineWidthMode,this.outlineWidthMultiplyTexture=(N=e.outlineWidthMultiplyTexture)!=null?N: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=(p=e.uvAnimationMaskTexture)!=null?p:null,this.shadeColorNode=(P=e.shadeColorNode)!=null?P:null,this.shadingShiftNode=(w=e.shadingShiftNode)!=null?w:null,this.shadingToonyNode=(A=e.shadingToonyNode)!=null?A:null,this.rimLightingMixNode=(V=e.rimLightingMixNode)!=null?V:null,this.rimMultiplyNode=(W=e.rimMultiplyNode)!=null?W:null,this.matcapNode=(j=e.matcapNode)!=null?j:null,this.parametricRimColorNode=(U=e.parametricRimColorNode)!=null?U:null,this.parametricRimLiftNode=(I=e.parametricRimLiftNode)!=null?I:null,this.parametricRimFresnelPowerNode=(_=e.parametricRimFresnelPowerNode)!=null?_:null,this.isOutline=(z=e.isOutline)!=null?z: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=J;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 i.float(this.shadingShiftNode);let e=Q;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=O.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(ee))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?i.float(this.shadingToonyNode):te}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?i.float(this.rimLightingMixNode):ie}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?i.vec3(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?oe.context({getUV:()=>this._animatedUVNode}):i.vec3(1)}_setupMatcapNode(){return this.matcapNode!=null?i.vec3(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?ae.context({getUV:()=>i.matcapUV.mul(1,-1).add(0,1)}).mul(re):i.vec3(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?i.vec3(this.parametricRimColorNode):le,t=this.parametricRimLiftNode!=null?i.float(this.parametricRimLiftNode):ne,o=this.parametricRimFresnelPowerNode!=null?i.float(this.parametricRimFresnelPowerNode):se;return Te({parametricRimLift:t,parametricRimFresnelPower:o,parametricRimColor:e})}};
|
|
2
|
+
"use strict";var Ne=Object.create;var v=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var Se=(r,e)=>{for(var t in e)v(r,t,{get:e[t],enumerable:!0})},Y=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xe(e))!ge.call(r,n)&&n!==t&&v(r,n,{get:()=>e[n],enumerable:!(o=He(e,n))||o.enumerable});return r};var c=(r,e,t)=>(t=r!=null?Ne(Me(r)):{},Y(e||!r||!r.__esModule?v(t,"default",{value:r,enumerable:!0}):t,r)),be=r=>Y(v({},"__esModule",{value:!0}),r);var Ce={};Se(Ce,{MToonAnimatedUVNode:()=>p,MToonLightingModel:()=>f,MToonNodeMaterial:()=>L});module.exports=be(Ce);var B=c(require("three"),1),X=parseInt(B.REVISION,10);X<167&&console.warn(`MToonNodeMaterial requires Three.js r167 or higher (You are using r${X}). This would not work correctly.`);var s=c(require("three/webgpu"),1);var a=c(require("three/webgpu"),1),K=a.materialReference("color","color"),q=a.materialReference("map","texture"),Z=a.materialReference("normalMap","texture"),$=a.materialReference("normalScale","vec2"),G=a.materialReference("emissive","color"),J=a.materialReference("emissiveIntensity","float"),Q=a.materialReference("emissiveMap","texture"),ee=a.materialReference("shadeColorFactor","color"),te=a.materialReference("shadingShiftFactor","float"),P=a.materialReference("shadeMultiplyTexture","texture"),ie=a.materialReference("shadeMultiplyTextureScale","float"),oe=a.materialReference("shadingToonyFactor","float"),re=a.materialReference("rimLightingMixFactor","float"),ae=a.materialReference("rimMultiplyTexture","texture"),ne=a.materialReference("matcapFactor","color"),le=a.materialReference("matcapTexture","texture"),se=a.materialReference("parametricRimColorFactor","color"),de=a.materialReference("parametricRimLiftFactor","float"),ue=a.materialReference("parametricRimFresnelPowerFactor","float"),ce=a.materialReference("outlineWidthMultiplyTexture","texture"),me=a.materialReference("outlineWidthFactor","float"),w=a.materialReference("outlineColorFactor","color"),Ee=a.materialReference("outlineLightingMixFactor","float"),he=a.materialReference("uvAnimationMaskTexture","texture"),pe=a.materialReference("uvAnimationScrollXOffset","float"),Te=a.materialReference("uvAnimationScrollYOffset","float"),Re=a.materialReference("uvAnimationRotationPhase","float");var p=class extends s.TempNode{constructor(e){super("vec2"),this.hasMaskTexture=e}setup(){let e=1;this.hasMaskTexture&&(e=s.vec4(he).context({getUV:()=>s.uv()}).r);let t=s.uv(),o=Re.mul(e),n=s.cos(o),u=s.sin(o);t=t.sub(s.vec2(.5,.5)),t=t.mul(s.mat2(n,u,u.negate(),n)),t=t.add(s.vec2(.5,.5));let m=s.vec2(pe,Te).mul(e);return t=t.add(m),t.temp("AnimatedUV")}};var l=c(require("three/webgpu"),1);var d=c(require("three/webgpu"),1),y=d.nodeImmutable(d.PropertyNode,"vec3").temp("ShadeColor"),C=d.nodeImmutable(d.PropertyNode,"float").temp("ShadingShift"),O=d.nodeImmutable(d.PropertyNode,"float").temp("ShadingToony"),M=d.nodeImmutable(d.PropertyNode,"float").temp("RimLightingMix"),g=d.nodeImmutable(d.PropertyNode,"vec3").temp("RimMultiply"),S=d.nodeImmutable(d.PropertyNode,"vec3").temp("matcap"),b=d.nodeImmutable(d.PropertyNode,"vec3").temp("ParametricRim");var T=c(require("three/webgpu"),1),R=r=>parseInt(T.REVISION,10)>=168?T.Fn(r):T.tslFn(r);var Fe=R(({a:r,b:e,t})=>{let o=t.sub(r),n=e.sub(r);return o.div(n).clamp()}),ve=R(({dotNL:r})=>{let t=l.float(1).sub(O),o=r.add(C);return o=Fe({a:t.negate(),b:t,t:o}),o=o.mul(1),o}),ye=R(({shading:r,lightColor:e})=>{let t=l.mix(y,l.diffuseColor,r);return e.mul(l.BRDF_Lambert({diffuseColor:t}))}),f=class extends l.LightingModel{constructor(){super()}direct({lightDirection:e,lightColor:t,reflectedLight:o}){let n=l.transformedNormalView.dot(e).clamp(-1,1),u=ve({dotNL:n});o.directDiffuse.assign(o.directDiffuse.add(ye({shading:u,lightColor:t}))),o.directSpecular.assign(o.directSpecular.add(b.add(S).mul(g).mul(l.mix(l.vec3(0),l.BRDF_Lambert({diffuseColor:t}),M))))}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(b.add(S).mul(g).mul(l.mix(l.vec3(1),l.vec3(0),M))))}};var i=c(require("three/webgpu"),1);var N={None:"none",WorldCoordinates:"worldCoordinates",ScreenCoordinates:"screenCoordinates"};var H=c(require("three/webgpu"),1);var fe=R(({parametricRimLift:r,parametricRimFresnelPower:e,parametricRimColor:t})=>{let o=H.modelViewPosition.normalize(),n=H.transformedNormalView.dot(o.negate());return H.float(1).sub(n).add(r).clamp().pow(e).mul(t)});var L=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=N.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 f}setup(e){var t;this._animatedUVNode=new p((t=this.uvAnimationMaskTexture&&this.uvAnimationMaskTexture.isTexture===!0)!=null?t:!1),super.setup(e)}setupDiffuseColor(e){let t=null;if(this.colorNode==null){if(t=K,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(){y.assign(this._setupShadeColorNode()),C.assign(this._setupShadingShiftNode()),O.assign(this._setupShadingToonyNode()),M.assign(this._setupRimLightingMixNode()),g.assign(this._setupRimMultiplyNode()),S.assign(this._setupMatcapNode()),b.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=Z.context({getUV:()=>this._animatedUVNode});this.normalNode=i.normalMap(n,$)}this.isOutline&&(this.normalNode=this.normalNode.negate())}if(parseInt(i.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=G.mul(J),this.emissiveMap&&this.emissiveMap.isTexture===!0){let n=Q.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!==N.None&&(t=i.vec4(i.mix(w,t.xyz.mul(w),Ee),t.w)),super.setupOutput(e,t)}setupPosition(e){var n,u;let t=this.positionNode;if(this.isOutline&&this.outlineWidthMode!==N.None){(n=this.positionNode)!=null||(this.positionNode=i.positionLocal);let m=i.normalLocal.normalize(),E=me;if(this.outlineWidthMultiplyTexture&&this.outlineWidthMultiplyTexture.isTexture===!0){let h=ce.context({getUV:()=>this._animatedUVNode});E=E.mul(h)}let F=i.length(i.modelNormalMatrix.mul(m)),x=E.mul(F).mul(m);if(this.outlineWidthMode===N.WorldCoordinates)this.positionNode=this.positionNode.add(x);else if(this.outlineWidthMode===N.ScreenCoordinates){let h=i.cameraProjectionMatrix.element(1).element(1);this.positionNode=this.positionNode.add(x.div(h).mul(i.positionView.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,m,E,F,x,h,A,V,W,j,I,U,_,z,k,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=(m=e.shadingShiftTexture)!=null?m:null,this.shadingShiftTextureScale=e.shadingShiftTextureScale,this.shadingToonyFactor=e.shadingToonyFactor,this.rimLightingMixFactor=e.rimLightingMixFactor,this.rimMultiplyTexture=(E=e.rimMultiplyTexture)!=null?E: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=(x=e.outlineWidthMultiplyTexture)!=null?x: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=(h=e.uvAnimationMaskTexture)!=null?h:null,this.shadeColorNode=(A=e.shadeColorNode)!=null?A:null,this.shadingShiftNode=(V=e.shadingShiftNode)!=null?V:null,this.shadingToonyNode=(W=e.shadingToonyNode)!=null?W:null,this.rimLightingMixNode=(j=e.rimLightingMixNode)!=null?j:null,this.rimMultiplyNode=(I=e.rimMultiplyNode)!=null?I:null,this.matcapNode=(U=e.matcapNode)!=null?U:null,this.parametricRimColorNode=(_=e.parametricRimColorNode)!=null?_:null,this.parametricRimLiftNode=(z=e.parametricRimLiftNode)!=null?z:null,this.parametricRimFresnelPowerNode=(k=e.parametricRimFresnelPowerNode)!=null?k: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 i.vec3(this.shadeColorNode);let e=ee;if(this.shadeMultiplyTexture&&this.shadeMultiplyTexture.isTexture===!0){let t=P.context({getUV:()=>this._animatedUVNode});e=e.mul(t)}return e}_setupShadingShiftNode(){if(this.shadingShiftNode!=null)return i.float(this.shadingShiftNode);let e=te;if(this.shadingShiftTexture&&this.shadingShiftTexture.isTexture===!0){let t=P.context({getUV:()=>this._animatedUVNode});e=e.add(t.mul(ie))}return e}_setupShadingToonyNode(){return this.shadingToonyNode!=null?i.float(this.shadingToonyNode):oe}_setupRimLightingMixNode(){return this.rimLightingMixNode!=null?i.float(this.rimLightingMixNode):re}_setupRimMultiplyNode(){return this.rimMultiplyNode!=null?i.vec3(this.rimMultiplyNode):this.rimMultiplyTexture&&this.rimMultiplyTexture.isTexture===!0?ae.context({getUV:()=>this._animatedUVNode}):i.vec3(1)}_setupMatcapNode(){return this.matcapNode!=null?i.vec3(this.matcapNode):this.matcapTexture&&this.matcapTexture.isTexture===!0?le.context({getUV:()=>i.matcapUV.mul(1,-1).add(0,1)}).mul(ne):i.vec3(0)}_setupParametricRimNode(){let e=this.parametricRimColorNode!=null?i.vec3(this.parametricRimColorNode):se,t=this.parametricRimLiftNode!=null?i.float(this.parametricRimLiftNode):de,o=this.parametricRimFresnelPowerNode!=null?i.float(this.parametricRimFresnelPowerNode):ue;return fe({parametricRimLift:t,parametricRimFresnelPower:o,parametricRimColor:e})}};
|