@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
3 lines (2 loc) • 2.25 kB
JavaScript
const e={id:"KHR_materials_dielectric",async applyMaterial(e,t){const r=e._rawMatDef?.extensions;if(!r)return null;const a=r.KHR_materials_ior,o=r.KHR_materials_specular,s=r.KHR_materials_volume,i=r.KHR_materials_transmission,c=r.KHR_materials_dispersion;if(!(a||o||s||i||c))return null;const[n,l,u,p]=await Promise.all([t._texture(o?.specularTexture,!1),t._texture(o?.specularColorTexture,!1),t._texture(s?.thicknessTexture,!1),t._texture(i?.transmissionTexture,!1)]),f={},m={};if(a){const e="number"==typeof a.ior?a.ior:1.5;1.5!==e&&(f.metallicF0Factor=((e-1)/(e+1))**2/.04,f.specularWeight=1,f._hasReflExt=!0),m.refraction={indexOfRefraction:e}}if(o&&("number"==typeof o.specularFactor&&(Math.abs(o.specularFactor-1)>1e-6?(f.metallicF0Factor=o.specularFactor,f.specularWeight=o.specularFactor,f._hasReflExt=!0):(delete f.metallicF0Factor,delete f.specularWeight)),Array.isArray(o.specularColorFactor)&&3===o.specularColorFactor.length&&(1===o.specularColorFactor[0]&&1===o.specularColorFactor[1]&&1===o.specularColorFactor[2]||(f.metallicReflectanceColor=[o.specularColorFactor[0],o.specularColorFactor[1],o.specularColorFactor[2]],f._hasReflExt=!0)),n&&(f.metallicReflectanceTexture=n,f.useOnlyMetallicFromMetallicReflectanceTexture=!0),l&&(f.reflectanceTexture=l)),s){const e="number"==typeof s.thicknessFactor?s.thicknessFactor:0;(e>0||u)&&(m.thickness={min:0,max:e||1,useGlTFChannel:!0,...u?{texture:u}:void 0});const t=Array.isArray(s.attenuationColor)&&3===s.attenuationColor.length?s.attenuationColor:void 0,r="number"==typeof s.attenuationDistance?s.attenuationDistance:void 0;t||void 0!==r?m.tint={...t?{color:t}:void 0,...void 0!==r?{atDistance:r}:void 0}:m.thickness&&(m.tint={color:[1,1,1],atDistance:1})}if(i){const e="number"==typeof i.transmissionFactor?i.transmissionFactor:0;if(e>0||p){f.transmissive=!0;const t={...m.refraction??{},intensity:e,useThicknessAsDepth:!!m.thickness,...p?{texture:p}:void 0};m.refraction=t}}return c&&"number"==typeof c.dispersion&&c.dispersion>0&&m.refraction&&m.thickness&&(m.refraction={...m.refraction,dispersion:20/c.dispersion}),Object.keys(m).length>0&&(f.subsurface=m),Object.keys(f).length>0?f:null}};export{e as default};
//# sourceMappingURL=gltf-ext-dielectric-DkXfHyka.esm.min.js.map