@realsee/five 6.8.0-alpha.17 → 6.8.0-alpha.18
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/docs/documents/api.html +15 -15
- package/docs/documents/features_flowing-light-2d-pass.html +6 -6
- package/docs/documents/features_flowing-light-3d-pass.html +6 -6
- package/docs/documents/features_gaussian-blur-pass.html +5 -5
- package/five/index.js +144 -665
- package/five/index.mjs +26212 -32253
- package/five/thirdparty/hammer.d.ts +371 -255
- package/five/thirdparty/jsrsasign.d.ts +5 -20
- package/gltf-loader/index.js +9 -9
- package/gltf-loader/index.mjs +1351 -1451
- package/line/index.js +4 -4
- package/line/index.mjs +334 -513
- package/package.json +2 -2
- package/plugins/index.js +17 -21
- package/plugins/index.mjs +3342 -4245
- package/react/index.js +3 -3
- package/react/index.mjs +572 -783
- package/shader-lib/index.js +13 -14
- package/shader-lib/index.mjs +424 -824
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +102 -142
- package/umd/five-gltf-loader.js +9 -9
- package/umd/five-line.js +4 -4
- package/umd/five-plugins.js +17 -21
- package/umd/five-react.js +3 -3
- package/umd/five-shader-lib.js +13 -14
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +21 -21
- package/umd/five-vue.js +3 -3
- package/umd/five.js +139 -660
- package/vfx/index.js +21 -21
- package/vfx/index.mjs +454 -910
- package/vue/index.js +3 -3
- package/vue/index.mjs +309 -301
- package/work-downloader/index.js +3 -3
- package/work-downloader/index.mjs +317 -556
- /package/five/assets/{realsee-pmg-data-url.d.ts → realsee-png-data-url.d.ts} +0 -0
package/shader-lib/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five
|
|
4
|
-
* Generated: 3/
|
|
5
|
-
* Version: 6.8.0-alpha.
|
|
4
|
+
* Generated: 3/17/2026
|
|
5
|
+
* Version: 6.8.0-alpha.18
|
|
6
6
|
* Terms:
|
|
7
7
|
* Realsee SDK License Agreement
|
|
8
8
|
* Update: July 28, 2021
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
* No amendment to or modification of this Agreement will be binding unless in
|
|
253
253
|
* writing and signed by Realsee. You and Realsee hereto confirm that this
|
|
254
254
|
* Agreement and all related documents shall be drafted in English.
|
|
255
|
-
*/
|
|
255
|
+
*/Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@realsee/five`),l=require(`three`);l=s(l);var u={type:[`pointcloud`],fragment:{mainBefore:`
|
|
256
256
|
#if defined(USE_PLANE_DISTANCE)
|
|
257
257
|
struct Plane {
|
|
258
258
|
vec3 normal;
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
uniform float evennessPlaneConstant;
|
|
264
264
|
uniform float evennessPlaneDepth;
|
|
265
265
|
#endif
|
|
266
|
-
`,
|
|
266
|
+
`,mainStart:``,mainEnd:`
|
|
267
267
|
#if defined(USE_PLANE_DISTANCE)
|
|
268
268
|
|
|
269
269
|
bool inside = true;
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
#endif
|
|
286
|
-
|
|
286
|
+
`},uniforms:{evennessPlaneNormal:new l.Uniform(new l.Vector3),evennessPlaneConstant:new l.Uniform(0),evennessPlanes:new l.Uniform([]),evennessPlaneDepth:new l.Uniform(0)},defines:{USE_PLANE_DISTANCE:!1}},d=class extends c.CustomShader{constructor(){super(u),Object.defineProperties(this,{evennessPlane:{get(){return{depth:this.uniforms.evennessPlaneDepth.value,points:this.uniforms.evennessPoints.value}},set(e){let{points:t,depth:n}=e,r=!1;if(t.length!==0&&t.length%4==0){r=!0;let e=t[0],i=t[1],a=t[2],o=t[3],s=new l.Vector3().subVectors(i,e),c=new l.Vector3().subVectors(a,e),u=new l.Vector3().crossVectors(s,c).normalize(),d=-u.dot(e),f=n,p=e.clone().add(u.clone().negate().multiplyScalar(f)),m=e.clone().add(u.clone().multiplyScalar(f)),h=i.clone().add(u.clone().negate().multiplyScalar(f)),g=i.clone().add(u.clone().multiplyScalar(f)),_=a.clone().add(u.clone().negate().multiplyScalar(f)),v=a.clone().add(u.clone().multiplyScalar(f)),y=o.clone().add(u.clone().negate().multiplyScalar(f)),b=o.clone().add(u.clone().multiplyScalar(f)),x=new l.Plane().setFromCoplanarPoints(m,g,v),S=new l.Plane().setFromCoplanarPoints(_,h,p),C=new l.Plane().setFromCoplanarPoints(g,m,p),w=new l.Plane().setFromCoplanarPoints(y,b,v),T=new l.Plane().setFromCoplanarPoints(v,g,h),E=new l.Plane().setFromCoplanarPoints(p,m,b);this.uniforms.evennessPlanes.value=[{normal:x.normal,constant:x.constant},{normal:S.normal,constant:S.constant},{normal:C.normal,constant:C.constant},{normal:w.normal,constant:w.constant},{normal:T.normal,constant:T.constant},{normal:E.normal,constant:E.constant}],this.uniforms.evennessPlaneDepth.value=n,this.uniforms.evennessPlaneNormal.value=u,this.uniforms.evennessPlaneConstant.value=d}this.defines.USE_PLANE_DISTANCE=r,this.needsUpdate=!0}}}),this.evennessPlane={depth:0,points:[]}}},f=`
|
|
287
287
|
#if NUM_SWEEP_OBJECTS > 0
|
|
288
288
|
uniform float sweepProgress;
|
|
289
289
|
uniform float sweepRange;
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
};
|
|
297
297
|
uniform SWEEP_OBJECT sweepBoxs[NUM_SWEEP_OBJECTS];
|
|
298
298
|
#endif
|
|
299
|
-
|
|
299
|
+
`,p=`
|
|
300
300
|
|
|
301
301
|
#if NUM_SWEEP_OBJECTS > 0
|
|
302
302
|
#pragma unroll_loop_start
|
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
}
|
|
330
330
|
#pragma unroll_loop_end
|
|
331
331
|
#endif
|
|
332
|
-
`,
|
|
332
|
+
`,m=``,h=class extends c.CustomShader{constructor(){super({type:[`basic`,`phong`,`pointcloud`],fragment:{mainBefore:f,mainStart:m,mainEnd:p},uniforms:{sweepProgress:new l.Uniform(0),sweepRange:new l.Uniform(0),sweepBoxs:new l.Uniform([]),interval:new l.Uniform(.04),threshold:new l.Uniform(.002)},defines:{NUM_SWEEP_OBJECTS:0}}),Object.defineProperties(this,{sweepBoxs:{get(){return this.uniforms.sweepBoxs.value},set(e){let t=e.length;t>0&&(this.defines.NUM_SWEEP_OBJECTS=t,this.needsUpdate=!0,this.uniforms.sweepBoxs.value=e)}}}),this.sweepBoxs=[]}onBeforeCompile(e,t){let n=String(this.sweepBoxs.length);e.vertexShader=e.vertexShader.replace(/NUM_SWEEP_OBJECTS/g,n),e.fragmentShader=e.fragmentShader.replace(/NUM_SWEEP_OBJECTS/g,n)}},g=`
|
|
333
333
|
uniform float pointCloudExpand_progress;
|
|
334
334
|
|
|
335
335
|
vec4 pointCloudExpand_permute(vec4 x) { return mod(((x * 34.0) + 1.0) * x, 289.0); }
|
|
@@ -402,7 +402,7 @@ float pointCloudExpand_gln_simplex(vec3 v) {
|
|
|
402
402
|
m = m * m;
|
|
403
403
|
return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
|
|
404
404
|
}
|
|
405
|
-
`,
|
|
405
|
+
`,_=`
|
|
406
406
|
float pointCloudExpand_sizeScale = 1.0;
|
|
407
407
|
float pointCloudExpand_sizeBasis = 0.0;
|
|
408
408
|
vec4 pointCloudExpand_basis = vec4((modelBoundingMax + modelBoundingMin) / 2.0, 1.0);
|
|
@@ -416,8 +416,7 @@ float pointCloudExpand_progress2 = step(pointCloudExpand_progress, 1.0 - pointCl
|
|
|
416
416
|
pointCloudExpand_sizeBasis = mix(0.1 * step(abs(pointCloudExpand_noise), 0.5 / pointCloudExpand_boundingRadius), pointCloudExpand_sizeBasis, pointCloudExpand_progress2);
|
|
417
417
|
gl_PointSize = gl_PointSize * pointCloudExpand_sizeScale + pointCloudExpand_sizeBasis;
|
|
418
418
|
vPointSize = gl_PointSize;
|
|
419
|
-
`,
|
|
420
|
-
`,I=typeof self!="undefined"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",U],{type:"text/javascript;charset=utf-8"});function ee(a){let n;try{if(n=I&&(self.URL||self.webkitURL).createObjectURL(I),!n)throw"";const e=new Worker(n,{name:a==null?void 0:a.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(n)}),e}catch(e){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(U),{name:a==null?void 0:a.name})}}var ne=(function(){function a(n,e){this.disposed=!1,this.pool=e,this.workerCreator=n,this.queue=[],this.workers=[],this.workerResolvers=[],this.workerStatus=0}return a.prototype.setWorkerCreator=function(n){this.workerCreator=n},a.prototype.initWorker=function(n){if(!this.workerCreator)throw new Error("workerCreator is not defined");if(!this.workers[n]){var e=this.workerCreator(n);e.addEventListener("message",this.onMessage.bind(this,n)),this.workers[n]=e}},a.prototype.getIdleWorker=function(){for(var n=0;n<this.pool;n++)if(!(this.workerStatus&1<<n))return n;return-1},a.prototype.onMessage=function(n,e){var o=this.workerResolvers[n];if(e.data&&"$$error"in e.data?o==null||o.reject(e.data.$$error):o==null||o.resolve(e.data),this.workerResolvers[n]=void 0,this.queue.length){var t=this.queue.shift(),r=t.resolve,s=t.reject,f=t.input,c=t.transfer;this.workerResolvers[n]={resolve:r,reject:s},this.workers[n].postMessage(f,c)}else this.workerStatus^=1<<n},a.prototype.postMessage=function(n,e){var o=this;return e===void 0&&(e=[]),new Promise(function(t,r){if(o.disposed){r(new Error("disposed"));return}var s=o.getIdleWorker();s!==-1?(o.initWorker(s),o.workerStatus|=1<<s,o.workerResolvers[s]={resolve:t,reject:r},o.workers[s].postMessage(n,e)):o.queue.push({resolve:t,reject:r,input:n,transfer:e})})},a.prototype.dispose=function(){this.disposed=!0,this.workers.forEach(function(n){n.terminate()}),this.workers.length=0,this.workerResolvers.forEach(function(n){n==null||n.reject(new Error("disposed"))}),this.workerResolvers.length=0,this.queue.forEach(function(n){n.reject(new Error("disposed"))}),this.queue.length=0,this.workerStatus=0},a})();function oe(a){if(a.length<3)throw new Error("At least 3 points are required to compute alignment matrix");var n=a[0],e=a[1],o=a[2],t=new l.Vector3().subVectors(e,n),r=new l.Vector3().subVectors(o,n),s=new l.Vector3().crossVectors(t,r);if(s.lengthSq()<1e-4)for(var f=3;f<a.length&&(o=a[f],r=new l.Vector3().subVectors(o,n),s=new l.Vector3().crossVectors(t,r),!(s.lengthSq()>=1e-4));f++);if(s.lengthSq()<1e-4)throw new Error("All points are collinear, cannot compute normal");s.normalize();var c=new l.Vector3;a.forEach(function(w){return c.add(w)}),c.divideScalar(a.length);var i=new l.Vector3(0,1,0),u=new l.Quaternion,d=s.dot(i);if(!(Math.abs(d-1)<1e-4))if(Math.abs(d+1)<1e-4){var h=new l.Vector3(1,0,0);u.setFromAxisAngle(h,Math.PI)}else{var h=new l.Vector3().crossVectors(s,i).normalize(),m=Math.acos(d);u.setFromAxisAngle(h,m)}var y=new l.Matrix4().makeTranslation(-c.x,-c.y,-c.z),p=new l.Matrix4().makeRotationFromQuaternion(u),g=new l.Matrix4;g.multiplyMatrices(p,y);var v=a.map(function(w){var C=w.clone().applyMatrix4(g);return[C.x,C.z]});if(v.length>0){var x=v[0],P=v[v.length-1];(x[0]!==P[0]||x[1]!==P[1])&&v.push([x[0],x[1]])}return{transformMatrix:g,points2D:v}}var te=`
|
|
419
|
+
`,v=class extends c.CustomShader{constructor(){super({type:[`pointcloud`],vertex:{mainBefore:g,mainEnd:_},uniforms:{pointCloudExpand_progress:new l.Uniform(0)}})}get progress(){return this.uniforms.pointCloudExpand_progress.value}set progress(e){this.uniforms.pointCloudExpand_progress.value=e}};function y(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}var b="(function(){function e(e){onmessage=t=>{Promise.resolve(t.data).then(t=>e(t)).then(({output:e,transfer:t})=>postMessage(e,t)).catch(e=>postMessage({$$error:e}))}}function t(e,t,n){let r=new OffscreenCanvas(t,n).getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);r.clearRect(0,0,t,n),r.fillStyle=`rgba(0,0,0,1.0)`,r.beginPath();let i=e[0][0],a=e[0][0],o=e[0][1],s=e[0][1];e.forEach(e=>{let t=e[0],n=e[1];i=Math.min(i,t),a=Math.max(a,t),o=Math.min(o,n),s=Math.max(s,n)});let c=a-i,l=s-o,u=c>=l?t/c:t/l;return e.map(e=>[e[0]-i,e[1]-o]).map(e=>[e[0]*u,e[1]*u]).forEach((e,t)=>{let[n,i]=e;t===0?r.moveTo(n,i):r.lineTo(n,i)}),r.closePath(),r.fill(),r.getImageData(0,0,t,n)}function n(e,n,r){let i=new ImageData(n,r),a=e.map(e=>t(e.polygon,e.width,e.height));for(let e=0;e<n;e++)for(let t=0;t<r;t++){let r=0,o=0,s=0;for(let i=0;i<a.length;i++)if(a[i].data[(e+t*n)*4+3]===255){let e=i%8,t=Math.floor(i/8);t===0?r|=1<<e:t===1?o|=1<<e:t===2&&(s|=1<<e)}let c=(e+t*n)*4;i.data[c]=r,i.data[c+1]=o,i.data[c+2]=s,i.data[c+3]=255}return i}e(e=>Promise.resolve(e).then(({canvasDataList:e,width:t,height:r})=>{let i=n(e,t,r);return{output:{imageData:i},transfer:[i.data.buffer]}}))})();",x=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,b],{type:`text/javascript;charset=utf-8`});function S(e){let t;try{if(t=x&&(self.URL||self.webkitURL).createObjectURL(x),!t)throw``;let n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(b),{name:e==null?void 0:e.name})}}var C=class{constructor(e,t){this.disposed=!1,this.pool=t,this.workerCreator=e,this.queue=[],this.workers=[],this.workerResolvers=[],this.workerStatus=0}setWorkerCreator(e){this.workerCreator=e}initWorker(e){if(!this.workerCreator)throw Error(`workerCreator is not defined`);if(!this.workers[e]){let t=this.workerCreator(e);t.addEventListener(`message`,this.onMessage.bind(this,e)),this.workers[e]=t}}getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}onMessage(e,t){let n=this.workerResolvers[e];if(t.data&&`$$error`in t.data?n==null||n.reject(t.data.$$error):n==null||n.resolve(t.data),this.workerResolvers[e]=void 0,this.queue.length){let{resolve:t,reject:n,input:r,transfer:i}=this.queue.shift();this.workerResolvers[e]={resolve:t,reject:n},this.workers[e].postMessage(r,i)}else this.workerStatus^=1<<e}postMessage(e,t=[]){return new Promise((n,r)=>{if(this.disposed){r(Error(`disposed`));return}let i=this.getIdleWorker();i===-1?this.queue.push({resolve:n,reject:r,input:e,transfer:t}):(this.initWorker(i),this.workerStatus|=1<<i,this.workerResolvers[i]={resolve:n,reject:r},this.workers[i].postMessage(e,t))})}dispose(){this.disposed=!0,this.workers.forEach(e=>{e.terminate()}),this.workers.length=0,this.workerResolvers.forEach(e=>{e==null||e.reject(Error(`disposed`))}),this.workerResolvers.length=0,this.queue.forEach(e=>{e.reject(Error(`disposed`))}),this.queue.length=0,this.workerStatus=0}};function w(e){if(e.length<3)throw Error(`At least 3 points are required to compute alignment matrix`);let t=e[0],n=e[1],r=e[2],i=new l.Vector3().subVectors(n,t),a=new l.Vector3().subVectors(r,t),o=new l.Vector3().crossVectors(i,a);if(o.lengthSq()<1e-4)for(let n=3;n<e.length&&(r=e[n],a=new l.Vector3().subVectors(r,t),o=new l.Vector3().crossVectors(i,a),!(o.lengthSq()>=1e-4));n++);if(o.lengthSq()<1e-4)throw Error(`All points are collinear, cannot compute normal`);o.normalize();let s=new l.Vector3;e.forEach(e=>s.add(e)),s.divideScalar(e.length);let c=new l.Vector3(0,1,0),u=new l.Quaternion,d=o.dot(c);if(!(Math.abs(d-1)<1e-4))if(Math.abs(d+1)<1e-4){let e=new l.Vector3(1,0,0);u.setFromAxisAngle(e,Math.PI)}else{let e=new l.Vector3().crossVectors(o,c).normalize(),t=Math.acos(d);u.setFromAxisAngle(e,t)}let f=new l.Matrix4().makeTranslation(-s.x,-s.y,-s.z),p=new l.Matrix4().makeRotationFromQuaternion(u),m=new l.Matrix4;m.multiplyMatrices(p,f);let h=e.map(e=>{let t=e.clone().applyMatrix4(m);return[t.x,t.z]});if(h.length>0){let e=h[0],t=h[h.length-1];(e[0]!==t[0]||e[1]!==t[1])&&h.push([e[0],e[1]])}return{transformMatrix:m,points2D:h}}var T=`
|
|
421
420
|
uniform sampler2D polygonTexture;
|
|
422
421
|
|
|
423
422
|
struct PolygonClipper {
|
|
@@ -432,7 +431,7 @@ vPointSize = gl_PointSize;
|
|
|
432
431
|
#if NUM_POLYGON_CLIPPER > 0
|
|
433
432
|
uniform PolygonClipper polygonClippers[NUM_POLYGON_CLIPPER];
|
|
434
433
|
#endif
|
|
435
|
-
`,
|
|
434
|
+
`,E=`
|
|
436
435
|
|
|
437
436
|
for(int i = 0; i < NUM_POLYGON_CLIPPER; i++){
|
|
438
437
|
PolygonClipper polygonClipper = polygonClippers[i];
|
|
@@ -509,7 +508,7 @@ vPointSize = gl_PointSize;
|
|
|
509
508
|
}
|
|
510
509
|
}
|
|
511
510
|
|
|
512
|
-
`,
|
|
511
|
+
`,D=class{constructor(){this.canvasCache=new Map,this.canvas=document.createElement(`canvas`),this.canvas.width=512,this.canvas.height=512,this.polygonTexture=new l.CanvasTexture(this.canvas),this.polygonCount=0}setSize(e){this.canvas.width=e,this.canvas.height=e}generatePolygonCanvas(e){let t=JSON.stringify(e);if(this.canvasCache.has(t))return this.canvasCache.get(t);{let n=document.createElement(`canvas`);n.width=this.canvas.width,n.height=this.canvas.height;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);if(this.polygonCount>=24)throw Error(`polygon count exceed 24, please clear the canvas`);r.clearRect(0,0,this.canvas.width,this.canvas.height),r.fillStyle=`rgba(0,0,0,1.0)`,r.beginPath();let i=e[0][0],a=e[0][0],o=e[0][1],s=e[0][1];e.forEach(e=>{let t=e[0],n=e[1];i=Math.min(i,t),a=Math.max(a,t),o=Math.min(o,n),s=Math.max(s,n)});let c=a-i,l=s-o,u=this.canvas.width,d=c>=l?u/c:u/l;return e.map(e=>[e[0]-i,e[1]-o]).map(e=>[e[0]*d,e[1]*d]).forEach((e,t)=>{let[n,i]=e;t===0?r.moveTo(n,i):r.lineTo(n,i)}),r.closePath(),r.fill(),this.polygonCount++,this.canvasCache.set(t,n),n}}static generatePolygonGeometry(e,t){let n=new l.BufferGeometry,r=e.slice(0,-1),i=r.map(e=>[e[0],0,e[1]]),a=r.map(e=>[e[0],t,e[1]]),o=[...i,...a],s=r.length,c=[];for(let e=1;e<s-1;e++)c.push(0,e,e+1);for(let e=1;e<s-1;e++)c.push(s,s+e,s+e+1);for(let e=0;e<s;e++){let t=(e+1)%s;c.push(e,t,s+e),c.push(t,s+t,s+e)}return n.setAttribute(`position`,new l.Float32BufferAttribute(o.flat(),3)),n.setIndex(c),n.computeVertexNormals(),n}generatePolygonTexture(e){let t=this.canvas.getContext(`2d`,{willReadFrequently:!0});if(!t)throw Error(`Failed to get canvas context`);let n=t.createImageData(this.canvas.width,this.canvas.height);for(let t=0;t<this.canvas.width;t++)for(let r=0;r<this.canvas.height;r++){let i=0,a=0,o=0;for(let n=0;n<e.length;n++){let s=e[n].getContext(`2d`,{willReadFrequently:!0});if(!s)throw Error(`Failed to get canvas context`);if(s.getImageData(t,r,1,1).data[3]===255){let e=n%8,t=Math.floor(n/8);t===0?i|=1<<e:t===1?a|=1<<e:t===2&&(o|=1<<e)}}let s=(t+r*this.canvas.width)*4;n.data[s]=i,n.data[s+1]=a,n.data[s+2]=o,n.data[s+3]=255}return t.putImageData(n,0,0),new l.CanvasTexture(this.canvas)}},O=class extends c.CustomShader{constructor(e=512){super({type:[`basic`,`phong`,`pointcloud`],fragment:{mainBefore:T,mainEnd:E},uniforms:{polygonClippers:new l.Uniform([]),polygonTexture:new l.Uniform(null)}}),this._polygonClippers=[],this.polygonGenerater=new D,this._radio=512,this.radio=e,this.workerPool=new C(()=>new S,1)}setPolygonClippersAsync(e){return y(this,void 0,void 0,function*(){this._polygonClippers=e;let t=this.uniforms;t.polygonClippers.value=e.map(e=>{let t=new l.Matrix4().getInverse(e.polygonTransform),n=e.polygonHeight,r=e.cutOutSide,i=e.polygon,a=e.floorIndex===void 0?-1:e.floorIndex,o=i[0][0],s=i[0][0],c=i[0][1],u=i[0][1];return i.forEach(e=>{let t=e[0],n=e[1];o=Math.min(o,t),s=Math.max(s,t),c=Math.min(c,n),u=Math.max(u,n)}),{polygonTransformInverse:t,polygonHeight:n,minPos:new l.Vector2(o,c),polygonScale:s-o>=u-c?s-o:u-c,cutOutSide:r,floorIndex:a}});let n=e.map(e=>({polygon:e.polygon,width:this.polygonGenerater.canvas.width,height:this.polygonGenerater.canvas.height})),r=yield this.workerPool.postMessage({canvasDataList:n,width:this.polygonGenerater.canvas.width,height:this.polygonGenerater.canvas.height}),i=document.createElement(`canvas`);i.width=this.polygonGenerater.canvas.width,i.height=this.polygonGenerater.canvas.height;let a=i.getContext(`2d`);if(a){a.putImageData(r.imageData,0,0);let e=new l.CanvasTexture(i);e.minFilter=l.NearestFilter,e.magFilter=l.NearestFilter,this.uniforms.polygonTexture.value=e,this.needsUpdate=!0}})}get polygonClippers(){return this._polygonClippers}set polygonClippers(e){this._polygonClippers=e}get radio(){return this._radio}set radio(e){this._radio=e,this.polygonGenerater.setSize(e)}dispose(){this.workerPool.dispose()}onBeforeCompile(e,t){let n=String(this.polygonClippers.length);e.vertexShader=e.vertexShader.replace(/NUM_POLYGON_CLIPPER/g,n),e.fragmentShader=e.fragmentShader.replace(/NUM_POLYGON_CLIPPER/g,n)}},k=`
|
|
513
512
|
#if NUM_SHINE_OBJECTS > 0
|
|
514
513
|
uniform float shineProgress;
|
|
515
514
|
struct SHINE_OBJECT {
|
|
@@ -518,7 +517,7 @@ vPointSize = gl_PointSize;
|
|
|
518
517
|
};
|
|
519
518
|
uniform SHINE_OBJECT shineBoxes[NUM_SHINE_OBJECTS];
|
|
520
519
|
#endif
|
|
521
|
-
`,
|
|
520
|
+
`,A=`
|
|
522
521
|
#if NUM_SHINE_OBJECTS > 0
|
|
523
522
|
#pragma unroll_loop_start
|
|
524
523
|
for ( int i = 0; i < NUM_SHINE_OBJECTS; i ++ ) {
|
|
@@ -534,4 +533,4 @@ vPointSize = gl_PointSize;
|
|
|
534
533
|
}
|
|
535
534
|
#pragma unroll_loop_end
|
|
536
535
|
#endif
|
|
537
|
-
`,
|
|
536
|
+
`,j=``,M=class extends c.CustomShader{constructor(){super({type:[`basic`,`phong`,`none`],fragment:{mainBefore:k,mainStart:j,mainEnd:A},uniforms:{shineProgress:new l.Uniform(0),shineBoxes:new l.Uniform([])},defines:{NUM_SHINE_OBJECTS:0}}),Object.defineProperties(this,{shineBoxes:{get(){return this.uniforms.shineBoxes.value},set(e){let t=e.length;t>0&&(this.defines.NUM_SHINE_OBJECTS=t,this.uniforms.shineBoxes.value=e)}}}),this.shineBoxes=[]}onBeforeCompile(e,t){let n=String(this.shineBoxes.length);e.vertexShader=e.vertexShader.replace(/NUM_SHINE_OBJECTS/g,n),e.fragmentShader=e.fragmentShader.replace(/NUM_SHINE_OBJECTS/g,n)}};exports.EvenessPlaneShader=d,exports.PointCloudExpandShader=v,exports.PolygonCuterShader=O,exports.PolygonGenerater=D,exports.ShineModelShader=M,exports.SweepModelShader=h,exports.computeAlignmentMatrix=w;
|