@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) • 23.1 kB
JavaScript
import{C as e,c5 as s,M as t,aU as r,b3 as i,ca as n,aH as a,m as o,V as l,a as h,T as p,u as c,l as u,y as m,cb as _,aP as P,o as d,q as S,s as g}from"./index-BPURObVq.esm.min.js";import{P as f,a as R}from"./postProcessRenderEffect-BTQhrmYp.esm.min.js";import{R as b,P as x}from"./prePassRenderer.pure-B6DM-kfL.esm.min.js";import{R as E,G as B}from"./geometryBufferRenderer.pure-BG473DMM.esm.min.js";import{R as A,P as T}from"./postProcessRenderPipelineManager-Im9ZJXSn.esm.min.js";class O{constructor(){this.enabled=!1,this.name="ssao2",this.texturesRequired=[e.PREPASS_NORMAL_TEXTURE_TYPE,e.PREPASS_DEPTH_TEXTURE_TYPE]}}class y extends s{_gatherImports(e,s){e?(this._webGPUReady=!0,s.push(import("./ssao2.fragment-BCwgNZlb.esm.min.js"))):s.push(import("./ssao2.fragment-BLOBpjqa.esm.min.js"))}get textureWidth(){return this._textureWidth}set textureWidth(e){this._textureWidth!==e&&(this._textureWidth=e)}get textureHeight(){return this._textureHeight}set textureHeight(e){this._textureHeight!==e&&(this._textureHeight=e)}set samples(e){this._samples=e,this.updateEffect(),this._sampleSphere=this._generateHemisphere()}get samples(){return this._samples}set normalsInWorldSpace(e){this._normalsInWorldSpace!==e&&(this._normalsInWorldSpace=e,this.updateEffect())}get normalsInWorldSpace(){return this._normalsInWorldSpace}set epsilon(e){this._epsilon=e,this.updateEffect()}get epsilon(){return this._epsilon}updateEffect(){super.updateEffect(this._getDefinesForSSAO())}constructor(e,s,r){super({...r,name:e,engine:s.getEngine(),useShaderStore:!0,useAsPostProcess:!0,fragmentShader:y.FragmentUrl,uniforms:y.Uniforms,samplers:y.Samplers,defines:"#define SSAO\n#define SAMPLES 8\n#define EPSILON 0.0001",shaderLanguage:s.getEngine().isWebGPU?1:0}),this.camera=null,this._textureWidth=0,this._textureHeight=0,this._samples=8,this.totalStrength=1,this.radius=2,this.maxZ=100,this.minZAspect=.2,this.base=0,this._epsilon=.02,this._normalsInWorldSpace=!1,this._normalWorldToViewMatrix=new t,this._normalWorldToView=new Float32Array(9),this._bits=new Uint32Array(1),this._scene=s,this._createRandomTexture(),this.updateEffect(),this._sampleSphere=this._generateHemisphere()}bind(e=!1){super.bind(e);const s=this._drawWrapper.effect,t=this.camera;if(!t)return;const i=t.getProjectionMatrix();if(s.setArray3("sampleSphere",this._sampleSphere),s.setFloat("randTextureTiles",32),s.setFloat("samplesFactor",1/this.samples),s.setFloat("totalStrength",this.totalStrength),s.setFloat2("texelSize",1/this.textureWidth,1/this.textureHeight),s.setFloat("radius",this.radius),s.setFloat("maxZ",this.maxZ),s.setFloat("minZAspect",this.minZAspect),s.setFloat("base",this.base),s.setFloat("near",t.minZ),t.mode===r.PERSPECTIVE_CAMERA){s.setMatrix3x3("depthProjection",y.PERSPECTIVE_DEPTH_PROJECTION);const e=Math.tan(t.fov/2);t.fovMode===r.FOVMODE_VERTICAL_FIXED?(s.setFloat("xViewport",e*this._scene.getEngine().getAspectRatio(t,!0)),s.setFloat("yViewport",e)):(s.setFloat("xViewport",e),s.setFloat("yViewport",e/this._scene.getEngine().getAspectRatio(t,!0)))}else{const e=this._scene.getEngine().getRenderWidth()/2,r=this._scene.getEngine().getRenderHeight()/2,i=t.orthoLeft??-e,n=t.orthoRight??e,a=t.orthoBottom??-r,o=t.orthoTop??r;s.setMatrix3x3("depthProjection",y.ORTHO_DEPTH_PROJECTION),s.setFloat4("viewport",i,n,a,o)}if(s.setMatrix("projection",i),this._normalsInWorldSpace){t.getViewMatrix().toNormalMatrix(this._normalWorldToViewMatrix);const e=this._normalWorldToViewMatrix.m,r=this._normalWorldToView;r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[4],r[4]=e[5],r[5]=e[6],r[6]=e[8],r[7]=e[9],r[8]=e[10],s.setMatrix3x3("normalWorldToView",r)}s.setTexture("randomSampler",this._randomTexture)}dispose(){this._randomTexture.dispose(),super.dispose()}_createRandomTexture(){const s=128,t=new Uint8Array(65536),r=i.Zero();for(let e=0;e<t.length;)r.set(n(0,1),n(0,1)).normalize().scaleInPlace(255),t[e++]=Math.floor(r.x),t[e++]=Math.floor(r.y),t[e++]=0,t[e++]=255;const l=a.CreateRGBATexture(t,s,s,this._scene,!1,!1,e.TEXTURE_BILINEAR_SAMPLINGMODE);l.name="SSAORandomTexture",l.wrapU=o.WRAP_ADDRESSMODE,l.wrapV=o.WRAP_ADDRESSMODE,this._randomTexture=l}_radicalInverseVdC(e){return this._bits[0]=e,this._bits[0]=(this._bits[0]<<16|this._bits[0]>>16)>>>0,this._bits[0]=(1431655765&this._bits[0])<<1|(2863311530&this._bits[0])>>>1>>>0,this._bits[0]=(858993459&this._bits[0])<<2|(3435973836&this._bits[0])>>>2>>>0,this._bits[0]=(252645135&this._bits[0])<<4|(4042322160&this._bits[0])>>>4>>>0,this._bits[0]=(16711935&this._bits[0])<<8|(4278255360&this._bits[0])>>>8>>>0,2.3283064365386963e-10*this._bits[0]}_hammersley(e,s){return[e/s,this._radicalInverseVdC(e)]}_hemisphereSampleUniform(e,s){const t=2*s*Math.PI,r=1-.85*e,i=Math.sqrt(1-r*r);return new l(Math.cos(t)*i,Math.sin(t)*i,r)}_generateHemisphere(){const e=this.samples,s=[];let t,r=0;for(;r<e;){if(e<16)t=this._hemisphereSampleUniform(Math.random(),Math.random());else{const s=this._hammersley(r,e);t=this._hemisphereSampleUniform(s[0],s[1])}s.push(t.x,t.y,t.z),r++}return s}_getDefinesForSSAO(){const e=this._epsilon??.02;let s=`#define SSAO\n#define SAMPLES ${this._samples??8}\n#define EPSILON ${e.toFixed(4)}`;return this.camera?.mode===r.ORTHOGRAPHIC_CAMERA&&(s+="\n#define ORTHOGRAPHIC_CAMERA"),this._normalsInWorldSpace&&(s+="\n#define NORMAL_WORLDSPACE"),s}}y.ORTHO_DEPTH_PROJECTION=[1,0,0,0,1,0,0,0,1],y.PERSPECTIVE_DEPTH_PROJECTION=[0,0,0,0,0,0,1,1,1],y.FragmentUrl="ssao2",y.Uniforms=["sampleSphere","samplesFactor","randTextureTiles","totalStrength","radius","base","range","projection","near","texelSize","xViewport","yViewport","viewport","maxZ","minZAspect","depthProjection","normalWorldToView"],y.Samplers=["randomSampler","depthSampler","normalSampler"];class C extends s{_gatherImports(e,s){e?(this._webGPUReady=!0,s.push(import("./ssao2.fragment-BCwgNZlb.esm.min.js"))):s.push(import("./ssao2.fragment-BLOBpjqa.esm.min.js"))}constructor(e,s=null,t,r){super({...r,name:e,engine:s||h.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:C.FragmentUrl,uniforms:C.Uniforms,samplers:C.Samplers,defines:"#define BLUR\n"+(t?"#define BLUR_H\n":"")}),this._bypassBlur=!1,this.textureSize=0,this.bilateralSamples=16,this.bilateralSoften=0,this.bilateralTolerance=0,this._expensiveBlur=!0,this._isHorizontal=t;const i=this._getDefinesForBlur(this.expensiveBlur,this.bypassBlur),n=this._getSamplersForBlur(this.bypassBlur);this.updateEffect(i,null,n)}set bypassBlur(e){const s=this._getDefinesForBlur(this.expensiveBlur,e),t=this._getSamplersForBlur(e);this.updateEffect(s,null,t),this._bypassBlur=e}get bypassBlur(){return this._bypassBlur}set expensiveBlur(e){const s=this._getDefinesForBlur(e,this._bypassBlur);this.updateEffect(s),this._expensiveBlur=e}get expensiveBlur(){return this._expensiveBlur}bind(e=!1){super.bind(e);const s=this._drawWrapper.effect;s.setFloat("outSize",this.textureSize),s.setInt("samples",this.bilateralSamples),s.setFloat("soften",this.bilateralSoften),s.setFloat("tolerance",this.bilateralTolerance)}_getSamplersForBlur(e){return e?["textureSampler"]:["textureSampler","depthSampler"]}_getDefinesForBlur(e,s){let t="#define BLUR\n";return s&&(t+="#define BLUR_BYPASS\n"),e||(t+="#define BLUR_LEGACY\n"),this._isHorizontal?t+"#define BLUR_H\n":t}}C.FragmentUrl="ssao2",C.Uniforms=["outSize","samples","soften","tolerance"],C.Samplers=["textureSampler","depthSampler"];class w extends s{_gatherImports(e,s){e?(this._webGPUReady=!0,s.push(import("./ssaoCombine.fragment-BCLoD3ME.esm.min.js"))):s.push(import("./ssaoCombine.fragment-AEbj23jP.esm.min.js"))}constructor(e,s=null,t){super({...t,name:e,engine:s||h.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:w.FragmentUrl,uniforms:w.Uniforms,samplers:w.Samplers}),this.camera=null,this.useViewportInCombineStage=!0}bind(e=!1){super.bind(e);const s=this._drawWrapper.effect;if(this.camera){const e=this.camera.viewport;this.useViewportInCombineStage?s.setVector4("viewport",p.Vector4[0].copyFromFloats(e.x,e.y,e.width,e.height)):s.setVector4("viewport",p.Vector4[0].copyFromFloats(0,0,1,1))}}}w.FragmentUrl="ssaoCombine",w.Uniforms=["viewport"],w.Samplers=["originalColor"];class I{get camera(){return this._ssaoPostProcess.camera}set camera(e){this._ssaoPostProcess.camera=e,this._ssaoCombinePostProcess.camera=e}set samples(e){this._ssaoPostProcess.samples=e}get samples(){return this._ssaoPostProcess.samples}get totalStrength(){return this._ssaoPostProcess.totalStrength}set totalStrength(e){this._ssaoPostProcess.totalStrength=e}get radius(){return this._ssaoPostProcess.radius}set radius(e){this._ssaoPostProcess.radius=e}get maxZ(){return this._ssaoPostProcess.maxZ}set maxZ(e){this._ssaoPostProcess.maxZ=e}get minZAspect(){return this._ssaoPostProcess.minZAspect}set minZAspect(e){this._ssaoPostProcess.minZAspect=e}get base(){return this._ssaoPostProcess.base}set base(e){this._ssaoPostProcess.base=e}get epsilon(){return this._ssaoPostProcess.epsilon}set epsilon(e){this._ssaoPostProcess.epsilon=e}set bypassBlur(e){this._ssaoBlurXPostProcess.bypassBlur=e,this._ssaoBlurYPostProcess.bypassBlur=e}get bypassBlur(){return this._ssaoBlurXPostProcess.bypassBlur}set expensiveBlur(e){this._ssaoBlurXPostProcess.expensiveBlur=e,this._ssaoBlurYPostProcess.expensiveBlur=e}get expensiveBlur(){return this._ssaoBlurXPostProcess.expensiveBlur}get bilateralSamples(){return this._ssaoBlurXPostProcess.bilateralSamples}set bilateralSamples(e){this._ssaoBlurXPostProcess.bilateralSamples=e,this._ssaoBlurYPostProcess.bilateralSamples=e}get bilateralSoften(){return this._ssaoBlurXPostProcess.bilateralSoften}set bilateralSoften(e){this._ssaoBlurXPostProcess.bilateralSoften=e,this._ssaoBlurYPostProcess.bilateralSoften=e}get bilateralTolerance(){return this._ssaoBlurXPostProcess.bilateralTolerance}set bilateralTolerance(e){this._ssaoBlurXPostProcess.bilateralTolerance=e,this._ssaoBlurYPostProcess.bilateralTolerance=e}get useViewportInCombineStage(){return this._ssaoCombinePostProcess.useViewportInCombineStage}set useViewportInCombineStage(e){this._ssaoCombinePostProcess.useViewportInCombineStage=e}isReady(){return this._ssaoPostProcess.isReady()&&this._ssaoBlurXPostProcess.isReady()&&this._ssaoBlurYPostProcess.isReady()&&this._ssaoCombinePostProcess.isReady()}constructor(e,s){this.name=e,this._scene=s,this._ssaoPostProcess=new y(this.name,this._scene),this._ssaoBlurXPostProcess=new C(this.name+" BlurX",this._scene.getEngine(),!0),this._ssaoBlurYPostProcess=new C(this.name+" BlurY",this._scene.getEngine(),!1),this._ssaoCombinePostProcess=new w(this.name+" Combiner",this._scene.getEngine())}dispose(){this._ssaoPostProcess?.dispose(),this._ssaoBlurXPostProcess?.dispose(),this._ssaoBlurYPostProcess?.dispose(),this._ssaoCombinePostProcess?.dispose()}}let v=(()=>{var s;let t,r,i,n,a,l,p,c,A,T,v,M,F,U,V,W,G=R,H=[],L=[],Z=[],N=[],D=[],X=[],Y=[],j=[],z=[];return s=class extends G{get totalStrength(){return this._thinSSAORenderingPipeline.totalStrength}set totalStrength(e){this._thinSSAORenderingPipeline.totalStrength=e}get maxZ(){return this._thinSSAORenderingPipeline.maxZ}set maxZ(e){this._thinSSAORenderingPipeline.maxZ=e}get minZAspect(){return this._thinSSAORenderingPipeline.minZAspect}set minZAspect(e){this._thinSSAORenderingPipeline.minZAspect=e}set epsilon(e){this._thinSSAORenderingPipeline.epsilon=e}get epsilon(){return this._thinSSAORenderingPipeline.epsilon}set samples(e){this._thinSSAORenderingPipeline.samples=e}get samples(){return this._thinSSAORenderingPipeline.samples}set textureSamples(e){this._textureSamples=e,this._prePassRenderer?this._prePassRenderer.samples=e:this._originalColorPostProcess.samples=e}get textureSamples(){return this._textureSamples}get _geometryBufferRenderer(){return this._forceGeometryBuffer?this._forcedGeometryBuffer??this._scene.geometryBufferRenderer:null}get _prePassRenderer(){return this._forceGeometryBuffer?null:this._scene.prePassRenderer}get radius(){return this._thinSSAORenderingPipeline.radius}set radius(e){this._thinSSAORenderingPipeline.radius=e}get base(){return this._thinSSAORenderingPipeline.base}set base(e){this._thinSSAORenderingPipeline.base=e}set bypassBlur(e){this._thinSSAORenderingPipeline.bypassBlur=e}get bypassBlur(){return this._thinSSAORenderingPipeline.bypassBlur}set expensiveBlur(e){this._thinSSAORenderingPipeline.expensiveBlur=e}get expensiveBlur(){return this._thinSSAORenderingPipeline.expensiveBlur}get bilateralSamples(){return this._thinSSAORenderingPipeline.bilateralSamples}set bilateralSamples(e){this._thinSSAORenderingPipeline.bilateralSamples=e}get bilateralSoften(){return this._thinSSAORenderingPipeline.bilateralSoften}set bilateralSoften(e){this._thinSSAORenderingPipeline.bilateralSoften=e}get bilateralTolerance(){return this._thinSSAORenderingPipeline.bilateralTolerance}set bilateralTolerance(e){this._thinSSAORenderingPipeline.bilateralTolerance=e}static get IsSupported(){const e=h.LastCreatedEngine;return!!e&&e._features.supportSSAO2}get useViewportInCombineStage(){return this._thinSSAORenderingPipeline.useViewportInCombineStage}set useViewportInCombineStage(e){this._thinSSAORenderingPipeline.useViewportInCombineStage=e}isReady(){return this._syncNormalsInWorldSpace(),this._thinSSAORenderingPipeline.isReady()}get scene(){return this._scene}constructor(s,t,r,i,n=!1,a=e.TEXTURETYPE_UNSIGNED_BYTE){if(b(x),E(B),super(t.getEngine(),s),this.SSAOOriginalSceneColorEffect=(u(this,H),"SSAOOriginalSceneColorEffect"),this.SSAORenderEffect="SSAORenderEffect",this.SSAOBlurHRenderEffect="SSAOBlurHRenderEffect",this.SSAOBlurVRenderEffect="SSAOBlurVRenderEffect",this.SSAOCombineRenderEffect="SSAOCombineRenderEffect",this._textureSamples=u(this,L,1),this._forcedGeometryBuffer=(u(this,Z),null),this._forceGeometryBuffer=u(this,N,!1),this._ratio=(u(this,D),u(this,X,void 0)),this._textureType=(u(this,Y),u(this,j,void 0)),this._scene=u(this,z),this._currentCameraMode=-1,this._thinSSAORenderingPipeline=new I(s,t),this._scene=t,this._ratio=r,this._textureType=a,n instanceof B?(this._forceGeometryBuffer=!0,this._forcedGeometryBuffer=n):this._forceGeometryBuffer=n,!this.isSupported)return void m.Error("The current engine does not support SSAO 2.");const l=this._ratio.ssaoRatio||r,h=this._ratio.blurRatio||r;this._forceGeometryBuffer?this._forcedGeometryBuffer||t.enableGeometryBufferRenderer():t.enablePrePassRenderer(),this._syncNormalsInWorldSpace(),this._originalColorPostProcess=new _("SSAOOriginalSceneColor",1,null,o.BILINEAR_SAMPLINGMODE,t.getEngine(),void 0,this._textureType),this._originalColorPostProcess.onBeforeRenderObservable.add(()=>{this._syncNormalsInWorldSpace();const e=this._scene.activeCamera;this._thinSSAORenderingPipeline._ssaoPostProcess.camera=e,e&&this._currentCameraMode!==e.mode&&(this._currentCameraMode=e.mode,this._thinSSAORenderingPipeline._ssaoPostProcess.updateEffect())}),this._originalColorPostProcess.samples=this.textureSamples,this._createSSAOPostProcess(1,a),this._createBlurPostProcess(l,h,this._textureType),this._createSSAOCombinePostProcess(h,this._textureType),this.addEffect(new f(t.getEngine(),this.SSAOOriginalSceneColorEffect,()=>this._originalColorPostProcess,!0)),this.addEffect(new f(t.getEngine(),this.SSAORenderEffect,()=>this._ssaoPostProcess,!0)),this.addEffect(new f(t.getEngine(),this.SSAOBlurHRenderEffect,()=>this._blurHPostProcess,!0)),this.addEffect(new f(t.getEngine(),this.SSAOBlurVRenderEffect,()=>this._blurVPostProcess,!0)),this.addEffect(new f(t.getEngine(),this.SSAOCombineRenderEffect,()=>this._ssaoCombinePostProcess,!0)),t.postProcessRenderPipelineManager.addPipeline(this),i&&t.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(s,i)}getClassName(){return"SSAO2RenderingPipeline"}dispose(e=!1){for(let e=0;e<this._scene.cameras.length;e++){const s=this._scene.cameras[e];this._originalColorPostProcess.dispose(s),this._ssaoPostProcess.dispose(s),this._blurHPostProcess.dispose(s),this._blurVPostProcess.dispose(s),this._ssaoCombinePostProcess.dispose(s)}e&&!this._forcedGeometryBuffer&&this._scene.disableGeometryBufferRenderer(),this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name,this._scene.cameras),this._scene.postProcessRenderPipelineManager.removePipeline(this._name),this._thinSSAORenderingPipeline.dispose(),super.dispose()}_syncNormalsInWorldSpace(){const e=this._forceGeometryBuffer?this._geometryBufferRenderer:this._prePassRenderer,s=!!e?.generateNormalsInWorldSpace;this._thinSSAORenderingPipeline._ssaoPostProcess.normalsInWorldSpace=s}_rebuild(){super._rebuild()}_createBlurPostProcess(e,s,t){this._blurHPostProcess=this._createBlurFilter("BlurH",e,t,!0),this._blurVPostProcess=this._createBlurFilter("BlurV",s,t,!1)}_createBlurFilter(s,t,r,i){const n=new P(s,C.FragmentUrl,{size:t,samplingMode:e.TEXTURE_BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:this._textureType,effectWrapper:i?this._thinSSAORenderingPipeline._ssaoBlurXPostProcess:this._thinSSAORenderingPipeline._ssaoBlurYPostProcess});return n.onApply=s=>{const t=this._ratio.blurRatio||this._ratio,r=i?this._originalColorPostProcess.width*t:this._originalColorPostProcess.height*t,n=i?this._originalColorPostProcess.width:this._originalColorPostProcess.height;this._thinSSAORenderingPipeline._ssaoBlurXPostProcess.textureSize=r>0?r:n,this._thinSSAORenderingPipeline._ssaoBlurYPostProcess.textureSize=r>0?r:n,this._geometryBufferRenderer?s.setTexture("depthSampler",this._geometryBufferRenderer.getGBuffer().textures[0]):this._prePassRenderer&&s.setTexture("depthSampler",this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(e.PREPASS_DEPTH_TEXTURE_TYPE)])},n.samples=this.textureSamples,n.autoClear=!1,n}_getTextureSize(){const s=this._scene.getEngine(),t=this._prePassRenderer;let r={width:s.getRenderWidth(),height:s.getRenderHeight()};if(t&&this._scene.activeCamera?._getFirstPostProcess()===this._ssaoPostProcess){const s=t.getRenderTarget();s&&s.textures&&(r=s.textures[t.getIndex(e.PREPASS_COLOR_TEXTURE_TYPE)].getSize())}else this._ssaoPostProcess.inputTexture&&(r.width=this._ssaoPostProcess.inputTexture.width,r.height=this._ssaoPostProcess.inputTexture.height);return r}_createSSAOPostProcess(s,t){this._ssaoPostProcess=new P("ssao",y.FragmentUrl,{size:s,samplingMode:e.TEXTURE_BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:t,effectWrapper:this._thinSSAORenderingPipeline._ssaoPostProcess}),this._ssaoPostProcess.autoClear=!1,this._ssaoPostProcess.onApply=s=>{this._geometryBufferRenderer?(s.setTexture("depthSampler",this._geometryBufferRenderer.getGBuffer().textures[0]),s.setTexture("normalSampler",this._geometryBufferRenderer.getGBuffer().textures[1])):this._prePassRenderer&&(s.setTexture("depthSampler",this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(e.PREPASS_DEPTH_TEXTURE_TYPE)]),s.setTexture("normalSampler",this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(e.PREPASS_NORMAL_TEXTURE_TYPE)]));const t=this._getTextureSize();this._thinSSAORenderingPipeline._ssaoPostProcess.textureWidth=t.width,this._thinSSAORenderingPipeline._ssaoPostProcess.textureHeight=t.height},this._ssaoPostProcess.samples=this.textureSamples,this._forceGeometryBuffer||(this._ssaoPostProcess._prePassEffectConfiguration=new O)}_createSSAOCombinePostProcess(s,t){this._ssaoCombinePostProcess=new P("ssaoCombine",w.FragmentUrl,{size:s,samplingMode:e.TEXTURE_BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:t,effectWrapper:this._thinSSAORenderingPipeline._ssaoCombinePostProcess}),this._ssaoCombinePostProcess.onApply=e=>{this._thinSSAORenderingPipeline._ssaoCombinePostProcess.camera=this._scene.activeCamera,e.setTextureFromPostProcessOutput("originalColor",this._originalColorPostProcess)},this._ssaoCombinePostProcess.autoClear=!1,this._ssaoCombinePostProcess.samples=this.textureSamples}serialize(){const e=d.Serialize(this);return e.customType="SSAO2RenderingPipeline",e}},(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(G[Symbol.metadata]??null):void 0;t=[g()],r=[g()],i=[g()],n=[g("epsilon")],a=[g("samples")],l=[g("textureSamples")],p=[g()],c=[g()],A=[g()],T=[g()],v=[g()],M=[g("bypassBlur")],F=[g("expensiveBlur")],U=[g()],V=[g()],W=[g()],S(s,null,t,{kind:"getter",name:"totalStrength",static:!1,private:!1,access:{has:e=>"totalStrength"in e,get:e=>e.totalStrength},metadata:e},null,H),S(s,null,r,{kind:"getter",name:"maxZ",static:!1,private:!1,access:{has:e=>"maxZ"in e,get:e=>e.maxZ},metadata:e},null,H),S(s,null,i,{kind:"getter",name:"minZAspect",static:!1,private:!1,access:{has:e=>"minZAspect"in e,get:e=>e.minZAspect},metadata:e},null,H),S(s,null,n,{kind:"setter",name:"epsilon",static:!1,private:!1,access:{has:e=>"epsilon"in e,set:(e,s)=>{e.epsilon=s}},metadata:e},null,H),S(s,null,a,{kind:"setter",name:"samples",static:!1,private:!1,access:{has:e=>"samples"in e,set:(e,s)=>{e.samples=s}},metadata:e},null,H),S(s,null,T,{kind:"getter",name:"radius",static:!1,private:!1,access:{has:e=>"radius"in e,get:e=>e.radius},metadata:e},null,H),S(s,null,v,{kind:"getter",name:"base",static:!1,private:!1,access:{has:e=>"base"in e,get:e=>e.base},metadata:e},null,H),S(s,null,M,{kind:"setter",name:"bypassBlur",static:!1,private:!1,access:{has:e=>"bypassBlur"in e,set:(e,s)=>{e.bypassBlur=s}},metadata:e},null,H),S(s,null,F,{kind:"setter",name:"expensiveBlur",static:!1,private:!1,access:{has:e=>"expensiveBlur"in e,set:(e,s)=>{e.expensiveBlur=s}},metadata:e},null,H),S(s,null,U,{kind:"getter",name:"bilateralSamples",static:!1,private:!1,access:{has:e=>"bilateralSamples"in e,get:e=>e.bilateralSamples},metadata:e},null,H),S(s,null,V,{kind:"getter",name:"bilateralSoften",static:!1,private:!1,access:{has:e=>"bilateralSoften"in e,get:e=>e.bilateralSoften},metadata:e},null,H),S(s,null,W,{kind:"getter",name:"bilateralTolerance",static:!1,private:!1,access:{has:e=>"bilateralTolerance"in e,get:e=>e.bilateralTolerance},metadata:e},null,H),S(null,null,l,{kind:"field",name:"_textureSamples",static:!1,private:!1,access:{has:e=>"_textureSamples"in e,get:e=>e._textureSamples,set:(e,s)=>{e._textureSamples=s}},metadata:e},L,Z),S(null,null,p,{kind:"field",name:"_forceGeometryBuffer",static:!1,private:!1,access:{has:e=>"_forceGeometryBuffer"in e,get:e=>e._forceGeometryBuffer,set:(e,s)=>{e._forceGeometryBuffer=s}},metadata:e},N,D),S(null,null,c,{kind:"field",name:"_ratio",static:!1,private:!1,access:{has:e=>"_ratio"in e,get:e=>e._ratio,set:(e,s)=>{e._ratio=s}},metadata:e},X,Y),S(null,null,A,{kind:"field",name:"_textureType",static:!1,private:!1,access:{has:e=>"_textureType"in e,get:e=>e._textureType,set:(e,s)=>{e._textureType=s}},metadata:e},j,z),e&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),s})(),M=!1;function F(e,s,t){return d.Parse(()=>new v(e._name,s,e._ratio,void 0,e._forceGeometryBuffer,e._textureType),e,s,t)}function U(){M||(M=!0,A(T),v.Parse=F,c("BABYLON.SSAO2RenderingPipeline",v))}U();export{U as RegisterSsao2RenderingPipeline,v as SSAO2RenderingPipeline,F as SSAO2RenderingPipelineParse};
//# sourceMappingURL=ssao2RenderingPipeline-C9Vr9XIt.esm.min.js.map