UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.19 kB
class e{constructor(){this.renderPasses=[],this.renderTargetMap=new Map}addRenderPass(e){e.frameUpdate();const r=e.beforePasses;for(let e=0;e<r.length;e++){const s=r[e];s.enabled&&this.addRenderPass(s)}e.enabled&&this.renderPasses.push(e);const s=e.afterPasses;for(let e=0;e<s.length;e++){const r=s[e];r.enabled&&this.addRenderPass(r)}}reset(){this.renderPasses.length=0}compile(){const e=this.renderTargetMap,r=this.renderPasses;for(let s=0;s<r.length;s++){const t=r[s],l=t.renderTarget;if(void 0!==l){const r=e.get(l);if(r){const e=t.colorArrayOps.length;for(let s=0;s<e;s++){t.colorArrayOps[s].clear||(r.colorArrayOps[s].store=!0)}t.depthStencilOps.clearDepth||(r.depthStencilOps.storeDepth=!0),t.depthStencilOps.clearStencil||(r.depthStencilOps.storeStencil=!0)}e.set(l,t)}}let s=null,t=null;for(let e=0;e<r.length;e++){const l=r[e],n=l.renderTarget,o=null==n?void 0:n.colorBuffer;if(null!=o&&o.cubemap){if(s===o){const e=t.colorArrayOps.length;for(let r=0;r<e;r++)t.colorArrayOps[r].mipmaps=!1}s=n.colorBuffer,t=l}else l.requiresCubemaps&&(s=null,t=null)}e.clear()}render(e){this.compile();const r=this.renderPasses;for(let e=0;e<r.length;e++)r[e].render()}}export{e as FrameGraph};