@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.17 kB
JavaScript
import{_ as e,b as a}from"./index-DFZFpUG-.esm.min.js";function s(s,t){const n=new Set,r=new WeakMap;a(o);const d={name:"shadow",engine:s,scene:t,_passes:[],async _preload(){const a=[];for(const s of t.lights){const o=s.shadowGenerator,t=o?e(o):null;o?._preloadShadowTask&&t&&(n.add(o),a.push(o._preloadShadowTask(t)))}await Promise.all(a)},record(){d._passes.length=0;for(const a of t.lights){const o=a.shadowGenerator,r=o?e(o):null;if(o?._ensureShadowTaskState&&r){n.add(o);o._ensureShadowTaskState(s,t,r)._task.record()}}},execute(){let a=0;for(const o of t.lights){const d=o.shadowGenerator,c=d?e(d):null;if(d?._ensureShadowTaskState&&d._renderShadowMap&&c){n.add(d);const e=d._shadowTaskState??null,o=d._ensureShadowTaskState(s,t,c);e&&e._casterMeshes===c&&r.get(d)===t._renderableVersion||(o._task.record(),r.set(d,t._renderableVersion)),a+=d._renderShadowMap(s,o)}}return a},dispose(){d._passes.length=0;for(const e of n){const a=e._shadowTaskState;a&&(a._task.dispose(),e._shadowTaskState=void 0)}n.clear()}};return d}async function o(e,a){await(e._preloadShadowTask?.(a))}export{s as createShadowTask};
//# sourceMappingURL=shadow-task-1nyU1EFq.esm.min.js.map