/*! (c) 2019-2025 pixiv Inc. - https://github.com/pixiv/three-vrm/blob/release/LICENSE */ "use strict";var dn=Object.create;var T=Object.defineProperty,pn=Object.defineProperties,Mn=Object.getOwnPropertyDescriptor,fn=Object.getOwnPropertyDescriptors,hn=Object.getOwnPropertyNames,Oe=Object.getOwnPropertySymbols,Tn=Object.getPrototypeOf,Ie=Object.prototype.hasOwnProperty,xn=Object.prototype.propertyIsEnumerable;var Ge=(t,e,n)=>e in t?T(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,d=(t,e)=>{for(var n in e||(e={}))Ie.call(e,n)&&Ge(t,n,e[n]);if(Oe)for(var n of Oe(e))xn.call(e,n)&&Ge(t,n,e[n]);return t},W=(t,e)=>pn(t,fn(e));var _n=(t,e)=>{for(var n in e)T(t,n,{get:e[n],enumerable:!0})},Ne=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of hn(e))!Ie.call(t,o)&&o!==n&&T(t,o,{get:()=>e[o],enumerable:!(r=Mn(e,o))||r.enumerable});return t};var mn=(t,e,n)=>(n=t!=null?dn(Tn(t)):{},Ne(e||!t||!t.__esModule?T(n,"default",{value:t,enumerable:!0}):n,t)),Rn=t=>Ne(T({},"__esModule",{value:!0}),t);var Pe=(t,e,n)=>new Promise((r,o)=>{var s=a=>{try{u(n.next(a))}catch(l){o(l)}},i=a=>{try{u(n.throw(a))}catch(l){o(l)}},u=a=>a.done?r(a.value):Promise.resolve(a.value).then(s,i);u((n=n.apply(t,e)).next())});var Vn={};_n(Vn,{VRMMaterialsV0CompatPlugin:()=>L});module.exports=Rn(Vn);var He=mn(require("three"),1);function M(t){return Math.pow(t,2.2)}var L=class{get name(){return"VRMMaterialsV0CompatPlugin"}constructor(e){var r;this.parser=e,this._renderQueueMapTransparent=new Map,this._renderQueueMapTransparentZWrite=new Map;let n=this.parser.json;n.extensionsUsed=(r=n.extensionsUsed)!=null?r:[],n.extensionsUsed.indexOf("KHR_texture_transform")===-1&&n.extensionsUsed.push("KHR_texture_transform")}beforeRoot(){return Pe(this,null,function*(){var o;let e=this.parser.json,n=(o=e.extensions)==null?void 0:o.VRM,r=n==null?void 0:n.materialProperties;r&&(this._populateRenderQueueMap(r),r.forEach((s,i)=>{var a,l;let u=(a=e.materials)==null?void 0:a[i];if(u==null){console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${i}] of glTF but the material doesn't exist`);return}if(s.shader==="VRM/MToon"){let c=this._parseV0MToonProperties(s,u);e.materials[i]=c}else if((l=s.shader)!=null&&l.startsWith("VRM/Unlit")){let c=this._parseV0UnlitProperties(s,u);e.materials[i]=c}else s.shader==="VRM_USE_GLTFSHADER"||console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${s.shader}`)}))})}_parseV0MToonProperties(e,n){var w,Z,O,G,I,N,P,H,k,B,D,j,z,q,K,$,X,Y,J,ee,ne,te,oe,re,se,ae,ie,ue,le,ce,de,pe,Me,fe,he,Te,xe,_e,me,Re,Ve,Fe,Ce,Le,Se,be,ge,We,ve,ye,Ae,Ee,Qe,Ue,we;let r=(Z=(w=e.keywordMap)==null?void 0:w._ALPHABLEND_ON)!=null?Z:!1,s=((O=e.floatProperties)==null?void 0:O._ZWrite)===1&&r,i=this._v0ParseRenderQueue(e),u=(I=(G=e.keywordMap)==null?void 0:G._ALPHATEST_ON)!=null?I:!1,a=r?"BLEND":u?"MASK":"OPAQUE",l=u?(P=(N=e.floatProperties)==null?void 0:N._Cutoff)!=null?P:.5:void 0,x=((k=(H=e.floatProperties)==null?void 0:H._CullMode)!=null?k:2)===0,p=this._portTextureTransform(e),S=((D=(B=e.vectorProperties)==null?void 0:B._Color)!=null?D:[1,1,1,1]).map((Ze,cn)=>cn===3?Ze:M(Ze)),f=(j=e.textureProperties)==null?void 0:j._MainTex,_=f!=null?{index:f,extensions:d({},p)}:void 0,m=(q=(z=e.floatProperties)==null?void 0:z._BumpScale)!=null?q:1,h=(K=e.textureProperties)==null?void 0:K._BumpMap,R=h!=null?{index:h,scale:m,extensions:d({},p)}:void 0,ke=((X=($=e.vectorProperties)==null?void 0:$._EmissionColor)!=null?X:[0,0,0,1]).map(M),v=(Y=e.textureProperties)==null?void 0:Y._EmissionMap,Be=v!=null?{index:v,extensions:d({},p)}:void 0,De=((ee=(J=e.vectorProperties)==null?void 0:J._ShadeColor)!=null?ee:[.97,.81,.86,1]).map(M),y=(ne=e.textureProperties)==null?void 0:ne._ShadeTexture,je=y!=null?{index:y,extensions:d({},p)}:void 0,V=(oe=(te=e.floatProperties)==null?void 0:te._ShadeShift)!=null?oe:0,F=(se=(re=e.floatProperties)==null?void 0:re._ShadeToony)!=null?se:.9;F=He.MathUtils.lerp(F,1,.5+.5*V),V=-V-(1-F);let A=(ie=(ae=e.floatProperties)==null?void 0:ae._IndirectLightIntensity)!=null?ie:.1,ze=A?1-A:void 0,b=(ue=e.textureProperties)==null?void 0:ue._SphereAdd,qe=b!=null?[1,1,1]:void 0,Ke=b!=null?{index:b}:void 0,$e=(ce=(le=e.floatProperties)==null?void 0:le._RimLightingMix)!=null?ce:0,E=(de=e.textureProperties)==null?void 0:de._RimTexture,Xe=E!=null?{index:E,extensions:d({},p)}:void 0,Ye=((Me=(pe=e.vectorProperties)==null?void 0:pe._RimColor)!=null?Me:[0,0,0,1]).map(M),Je=(he=(fe=e.floatProperties)==null?void 0:fe._RimFresnelPower)!=null?he:1,en=(xe=(Te=e.floatProperties)==null?void 0:Te._RimLift)!=null?xe:0,nn=["none","worldCoordinates","screenCoordinates"][(me=(_e=e.floatProperties)==null?void 0:_e._OutlineWidthMode)!=null?me:0],g=(Ve=(Re=e.floatProperties)==null?void 0:Re._OutlineWidth)!=null?Ve:0;g=.01*g;let Q=(Fe=e.textureProperties)==null?void 0:Fe._OutlineWidthTexture,tn=Q!=null?{index:Q,extensions:d({},p)}:void 0,on=((Le=(Ce=e.vectorProperties)==null?void 0:Ce._OutlineColor)!=null?Le:[0,0,0]).map(M),rn=((be=(Se=e.floatProperties)==null?void 0:Se._OutlineColorMode)!=null?be:0)===1?(We=(ge=e.floatProperties)==null?void 0:ge._OutlineLightingMix)!=null?We:1:0,U=(ve=e.textureProperties)==null?void 0:ve._UvAnimMaskTexture,sn=U!=null?{index:U,extensions:d({},p)}:void 0,an=(Ae=(ye=e.floatProperties)==null?void 0:ye._UvAnimScrollX)!=null?Ae:0,C=(Qe=(Ee=e.floatProperties)==null?void 0:Ee._UvAnimScrollY)!=null?Qe:0;C!=null&&(C=-C);let un=(we=(Ue=e.floatProperties)==null?void 0:Ue._UvAnimRotation)!=null?we:0,ln={specVersion:"1.0",transparentWithZWrite:s,renderQueueOffsetNumber:i,shadeColorFactor:De,shadeMultiplyTexture:je,shadingShiftFactor:V,shadingToonyFactor:F,giEqualizationFactor:ze,matcapFactor:qe,matcapTexture:Ke,rimLightingMixFactor:$e,rimMultiplyTexture:Xe,parametricRimColorFactor:Ye,parametricRimFresnelPowerFactor:Je,parametricRimLiftFactor:en,outlineWidthMode:nn,outlineWidthFactor:g,outlineWidthMultiplyTexture:tn,outlineColorFactor:on,outlineLightingMixFactor:rn,uvAnimationMaskTexture:sn,uvAnimationScrollXSpeedFactor:an,uvAnimationScrollYSpeedFactor:C,uvAnimationRotationSpeedFactor:un};return W(d({},n),{pbrMetallicRoughness:{baseColorFactor:S,baseColorTexture:_},normalTexture:R,emissiveTexture:Be,emissiveFactor:ke,alphaMode:a,alphaCutoff:l,doubleSided:x,extensions:{VRMC_materials_mtoon:ln}})}_parseV0UnlitProperties(e,n){var f,_,m,h,R;let r=e.shader==="VRM/UnlitTransparentZWrite",o=e.shader==="VRM/UnlitTransparent"||r,s=this._v0ParseRenderQueue(e),i=e.shader==="VRM/UnlitCutout",u=o?"BLEND":i?"MASK":"OPAQUE",a=i?(_=(f=e.floatProperties)==null?void 0:f._Cutoff)!=null?_:.5:void 0,l=this._portTextureTransform(e),c=((h=(m=e.vectorProperties)==null?void 0:m._Color)!=null?h:[1,1,1,1]).map(M),x=(R=e.textureProperties)==null?void 0:R._MainTex,p=x!=null?{index:x,extensions:d({},l)}:void 0,S={specVersion:"1.0",transparentWithZWrite:r,renderQueueOffsetNumber:s,shadeColorFactor:c,shadeMultiplyTexture:p};return W(d({},n),{pbrMetallicRoughness:{baseColorFactor:c,baseColorTexture:p},alphaMode:u,alphaCutoff:a,extensions:{VRMC_materials_mtoon:S}})}_portTextureTransform(e){var s,i,u,a,l;let n=(s=e.vectorProperties)==null?void 0:s._MainTex;if(n==null)return{};let r=[(i=n==null?void 0:n[0])!=null?i:0,(u=n==null?void 0:n[1])!=null?u:0],o=[(a=n==null?void 0:n[2])!=null?a:1,(l=n==null?void 0:n[3])!=null?l:1];return r[1]=1-o[1]-r[1],{KHR_texture_transform:{offset:r,scale:o}}}_v0ParseRenderQueue(e){var i,u;let n=e.shader==="VRM/UnlitTransparentZWrite",r=((i=e.keywordMap)==null?void 0:i._ALPHABLEND_ON)!=null||e.shader==="VRM/UnlitTransparent"||n,o=((u=e.floatProperties)==null?void 0:u._ZWrite)===1||n,s=0;if(r){let a=e.renderQueue;a!=null&&(o?s=this._renderQueueMapTransparentZWrite.get(a):s=this._renderQueueMapTransparent.get(a))}return s}_populateRenderQueueMap(e){let n=new Set,r=new Set;e.forEach(o=>{var a,l;let s=o.shader==="VRM/UnlitTransparentZWrite",i=((a=o.keywordMap)==null?void 0:a._ALPHABLEND_ON)!=null||o.shader==="VRM/UnlitTransparent"||s,u=((l=o.floatProperties)==null?void 0:l._ZWrite)===1||s;if(i){let c=o.renderQueue;c!=null&&(u?r.add(c):n.add(c))}}),n.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${n.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),r.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${r.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),Array.from(n).sort().forEach((o,s)=>{let i=Math.min(Math.max(s-n.size+1,-9),0);this._renderQueueMapTransparent.set(o,i)}),Array.from(r).sort().forEach((o,s)=>{let i=Math.min(Math.max(s,0),9);this._renderQueueMapTransparentZWrite.set(o,i)})}};