@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) • 1.2 kB
JavaScript
import{Q as a,M as o}from"./index-DFZFpUG-.esm.min.js";const n=1<<30;function l(){const a=[];for(let n=0;n<o;n++)a.push(`so_shadowMin = min(so_shadowMin, shadowFactors[${n}]);`);return{_id:"shadow-only",_uboFields:[{_name:"shadowOnlyColor",_type:"vec3<f32>"},{_name:"shadowOnlyOpacity",_type:"f32"},{_name:"shadowOnlyFalloff",_type:"f32"}],_fragmentSlots:{BC:`\n{\nvar so_shadowMin = 1.0;\n${a.join("\n")}\ncolor = material.shadowOnlyColor;\nalpha = saturate((1.0 - so_shadowMin) * material.shadowOnlyFalloff) * material.shadowOnlyOpacity;\n}\n`,FA:"finalAlpha = alpha * material.materialAlpha;"}}}function s(a,o,n){if(o.shadowOnly){if(n.has("shadowOnlyColor")){const l=n.get("shadowOnlyColor")/4,s=o.shadowOnlyColor??[0,0,0];a[l]=s[0],a[l+1]=s[1],a[l+2]=s[2]}n.has("shadowOnlyOpacity")&&(a[n.get("shadowOnlyOpacity")/4]=o.shadowOnlyOpacity??1),n.has("shadowOnlyFalloff")&&(a[n.get("shadowOnlyFalloff")/4]=o.shadowOnlyFalloff??1)}}const t={id:"shadow-only",phase:"fragment",detect:o=>o.shadowOnly?{f:a,f2:n}:{f:0,f2:0},frag:a=>a._features2&n?l():null,writeUbo:s};export{l as createShadowOnlyFragment,t as pbrExt,s as writeShadowOnlyUBO};
//# sourceMappingURL=shadow-only-fragment-q6Jo1wVp.esm.min.js.map