@jdultra/threedtiles 13.2.4 → 13.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/threedtiles.umd.js
CHANGED
|
@@ -45,7 +45,7 @@ in vec2 vUv;
|
|
|
45
45
|
|
|
46
46
|
void main() {
|
|
47
47
|
fragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
48
|
-
}`,transparent:!1,side:E.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new E.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new E.Scene;const b=new E.PlaneGeometry(1,1);this.copyQuad=new E.Mesh(b,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1}setQuality(e){const t=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=t,this.material.uniforms.beta_k.value=Math.pow(4*oc(2/t)/t,t/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01}setSplatsCPUCulling(e){this.splatsCPUCuling=e,this.material.uniforms.culling.value
|
|
48
|
+
}`,transparent:!1,side:E.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new E.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new E.Scene;const b=new E.PlaneGeometry(1,1);this.copyQuad=new E.Mesh(b,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1}setQuality(e){const t=2+2*(e=Math.max(0,Math.min(1,1-e)));this.material.uniforms.k.value=t,this.material.uniforms.beta_k.value=Math.pow(4*oc(2/t)/t,t/2),this.material.uniforms.minSplatPixelSize.value=5*e,this.material.uniforms.minOpacity.value=.01}setSplatsCPUCulling(e){this.splatsCPUCuling=e,this.material.uniforms.culling.value=!e}updateShaderParams(e){e.projectionMatrix.elements,this.renderer.getSize(this.material.uniforms.viewportPixelSize.value),this.material.uniforms.viewportPixelSize.value.multiplyScalar(this.renderer.getPixelRatio())}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.covarianceRenderTarget.dispose(),this.positionColorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.orderAttribute.array=void 0,this.geometry.dispose()}copyTex2D(e,t,a,n){this.copyMaterial2D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,o=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const s=a[2]-a[0],A=a[3]-a[1];t.viewport.set(a[0],a[1],s,A),this.renderer.setRenderTarget(t,n),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(o),this.renderer.autoClear=i}copyTex3D(e,t,a){this.copyMaterial3D.uniforms.sourceTexture.value=e;const n=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let o=0;o<a;o++)this.renderer.setRenderTarget(t,o),this.copyMaterial3D.uniforms.w.value=(o+.5)/a,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(i),this.renderer.autoClear=n}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e,t){this.worker&&(e?this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),t?(this.viewProjModel||(this.viewProjModel=new E.Matrix4),this.viewProjModel.copy(t),this.viewProjModel.multiply(uc)):this.viewProjModel=void 0,this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++})):this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:this.sortID++}))}raycast(e,t){}addSplatsTile(e,t,a,n){if(!this.worker)return;const i=this,o=e.data?e.data.array:e.array,s=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,A=e.data&&e.data.isInterleavedBuffer?e.offset:0,u=Math.ceil(o.length/(this.batchSize*s)),c=[],d=[];let l=()=>{};const h=new Float32Array(o.length/s*3),b=new Uint32Array(h.buffer,h.byteOffset,h.length);for(let f=0;f<o.length/3;f++)h[3*f]=o[f*s+A],h[3*f+1]=o[f*s+A+1],h[3*f+2]=o[f*s+A+2];l=(f,m,p)=>{const C=p*p;for(let I=0;I<h.length;I+=3){ka.set(h[I],-h[I+2],h[I+1]);const x=cc.copy(ka).sub(f.origin).dot(f.direction);x>0&&f.distanceSqToPoint(ka)<C&&m.push({distance:x,point:ka.clone(),type:"splat"})}},u>this.freeAddresses.size&&this.growTextures();for(let f=0;f<u;f++){const m=this.freeAddresses.poll();isNaN(m)&&console.log("insuficient texture size to store splats info"),c.push(m),d.push(3*m);const p=f*this.batchSize;this.addSplatsBatch(p,m,b,t,a,n)}i.worker.postMessage({method:"addBatches",insertionIndexes:d,positions:o.buffer,offset:A,stride:s,batchSize:i.batchSize},[o.buffer]);let g=!1;return{hide:()=>{g==1&&i.worker&&(i.numVisibleBatches--,g=!1,i.worker.postMessage({method:"hideBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++}))},show:f=>{if(g==0&&i.worker){i.numVisibleBatches--,g=!0;const m=i.sortID,p=C=>C>=m&&(f(),!0);i.sortListeners.push(p),i.worker.postMessage({method:"showBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++})}},remove:()=>{i.worker&&(l=void 0,i.worker.postMessage({method:"removeBatches",insertionIndexes:d,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],vpm:this.viewProjModel&&this.splatsCPUCuling?this.viewProjModel.toArray():void 0,id:i.sortID++}),c.forEach(f=>i.freeAddresses.add(f)))},sort:this.sort,raycast:l,isSplatsBatch:!0}}addSplatsBatch(e,t,a,n,i,o){const s=new Uint32Array(4*this.batchSize),A=new Uint32Array(4*this.batchSize);for(let b=t;b<t+this.batchSize;b++){const g=b-t,f=4*g,m=e+g,p=3*(e+g);if(m>=a.count)break;s[f]=a[p],s[f+1]=a[p+1],s[f+2]=a[p+2];const C=0|Math.floor(255*n.getX(m)+.5),I=0|Math.floor(255*n.getY(m)+.5),x=0|Math.floor(255*n.getZ(m)+.5),y=0|Math.floor(255*n.getW(m)+.5);s[f+3]=C|I<<8|x<<16|y<<24,A[f]=vr(i.getX(m),i.getY(m)),A[f+1]=vr(i.getZ(m),o.getX(m)),A[f+2]=vr(o.getY(m),o.getZ(m))}const u=Math.floor(t/Math.pow(this.textureSize,2)),c=Math.ceil(this.batchSize/this.textureSize),d=[0,t/this.textureSize-u*this.textureSize,this.textureSize];d.push(d[1]+c);const l=new E.DataTexture(s,this.textureSize,c,E.RGBAIntegerFormat,E.UnsignedIntType);l.internalFormat="RGBA32UI",l.generateMipmaps=!1,l.magFilter=E.NearestFilter,l.minFilter=E.NearestFilter,l.anisotropy=0,l.needsUpdate=!0,this.renderer.initTexture(l),this.copyTex2D(l,this.positionColorRenderTarget,d,u),l.dispose();const h=new E.DataTexture(A,this.textureSize,c,E.RGBAIntegerFormat,E.UnsignedIntType);h.internalFormat="RGBA32UI",h.generateMipmaps=!1,h.magFilter=E.NearestFilter,h.minFilter=E.NearestFilter,h.anisotropy=0,h.needsUpdate=!0,this.renderer.initTexture(h),this.copyTex2D(h,this.covarianceRenderTarget,d,u),h.dispose()}growTextures(){for(let n=this.maxSplats;n<this.maxSplats+this.textureSize*this.textureSize;n+=this.batchSize)this.freeAddresses.add(n);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,t=new E.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=E.UnsignedIntType,t.texture.internalFormat="RGBA32UI",t.texture.format=E.RGBAIntegerFormat,this.renderer.initRenderTarget(t),this.copyTex3D(this.positionColorRenderTarget.texture,t,this.numTextures),this.positionColorRenderTarget.dispose(),this.positionColorRenderTarget=t,this.material.uniforms.positionColorTexture.value=this.positionColorRenderTarget.texture;const a=new E.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:E.NearestFilter,minFilter:E.NearestFilter,anisotropy:0,type:E.UnsignedIntType,format:E.RGBAIntegerFormat,depthBuffer:!1,resolveDepthBuffer:!1});a.texture.type=E.UnsignedIntType,a.texture.internalFormat="RGBA32UI",a.texture.format=E.RGBAIntegerFormat,this.renderer.initRenderTarget(a),this.copyTex3D(this.covarianceRenderTarget.texture,a,this.numTextures),this.covarianceRenderTarget.dispose(),this.covarianceRenderTarget=a,this.material.uniforms.covarianceTexture.value=this.covarianceRenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function Oi(){return`
|
|
49
49
|
precision highp float;
|
|
50
50
|
precision highp int;
|
|
51
51
|
|