@realsee/five-webgpu 1.0.0-alpha.7 → 1.0.0-alpha.9

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.
Files changed (41) hide show
  1. package/docs/classes/index.FiveRenderer.html +2 -2
  2. package/five/index.js +111 -37
  3. package/five/index.mjs +1082 -729
  4. package/five/renderer/compute-renderers/binned/binned-core.d.ts +46 -0
  5. package/five/renderer/compute-renderers/binned/binned-pipelines.d.ts +10 -0
  6. package/five/renderer/compute-renderers/binned/shaders/classify.d.ts +2 -0
  7. package/five/renderer/compute-renderers/binned/shaders/coop.d.ts +2 -0
  8. package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +14 -38
  9. package/five/renderer/compute-renderers/shaders/lib/color.d.ts +2 -0
  10. package/five/renderer/compute-renderers/shaders/lib/cull.d.ts +2 -0
  11. package/five/renderer/compute-renderers/shaders/lib/encode.d.ts +2 -0
  12. package/five/renderer/compute-renderers/shaders/lib/point-setup.d.ts +2 -0
  13. package/five/renderer/compute-renderers/shaders/lib/point-size.d.ts +2 -0
  14. package/five/renderer/compute-renderers/shaders/lib/raster.d.ts +2 -0
  15. package/five/renderer/compute-renderers/shaders/lib/size-class.d.ts +2 -0
  16. package/five/renderer/compute-renderers/shaders/lib/tile-bindings.d.ts +2 -0
  17. package/five/renderer/compute-renderers/uniform-layout.d.ts +23 -0
  18. package/five/renderer/five-renderer.d.ts +2 -0
  19. package/gltf-loader/index.js +3 -3
  20. package/gltf-loader/index.mjs +3 -3
  21. package/line/index.js +3 -3
  22. package/line/index.mjs +3 -3
  23. package/package.json +1 -1
  24. package/plugins/index.js +2 -2
  25. package/plugins/index.mjs +2 -2
  26. package/react/index.js +2 -2
  27. package/react/index.mjs +2 -2
  28. package/sticker/index.js +3 -3
  29. package/sticker/index.mjs +3 -3
  30. package/umd/five-gltf-loader.js +3 -3
  31. package/umd/five-line.js +3 -3
  32. package/umd/five-plugins.js +2 -2
  33. package/umd/five-react.js +2 -2
  34. package/umd/five-sticker.js +3 -3
  35. package/umd/five-vfx.js +2 -2
  36. package/umd/five.js +131 -57
  37. package/vfx/index.js +2 -2
  38. package/vfx/index.mjs +2 -2
  39. package/work-downloader/index.js +2 -2
  40. package/work-downloader/index.mjs +2 -2
  41. /package/five/renderer/compute-renderers/{shaders/rasterize.d.ts → binned/shaders/args-builder.d.ts} +0 -0
@@ -0,0 +1,46 @@
1
+ /** 光栅参数(像素直径):≤ SMALL 单线程绘制,≤ LARGE 按点协作,更大按 8×8 子块协作 */
2
+ export declare const RASTER_CONFIG: {
3
+ readonly smallThreshold: 8;
4
+ readonly largeThreshold: 16;
5
+ /** 桶容量 = clamp(总点数 × ratio, min, max) */
6
+ readonly bucketRatio: 0.125;
7
+ readonly bucketMin: 16384;
8
+ readonly bucketMax: number;
9
+ /** 子块容量 = clamp(桶容量 × 169 × ratio, min, max) */
10
+ readonly subBlockRatio: 0.02;
11
+ readonly subBlockMin: number;
12
+ readonly subBlockMax: number;
13
+ };
14
+ /**
15
+ * 分桶协作光栅的 GPU 资源与命令编码。
16
+ * classify 按点尺寸分类:Small 直接绘制,Medium / Large 入桶;
17
+ * 随后 coop_medium 每个 workgroup 绘制一个点,coop_large 每个 workgroup 绘制一个 8×8 子块。
18
+ */
19
+ export declare class BinnedCore {
20
+ private readonly device;
21
+ private readonly frameUniformBuffer;
22
+ private readonly pipes;
23
+ private readonly counters;
24
+ private readonly args;
25
+ private buckets;
26
+ private subBlocks;
27
+ private bucketCap;
28
+ private subBlockCap;
29
+ private classifyBG;
30
+ private argsBG;
31
+ private coopBG;
32
+ private boundFramebuffer;
33
+ constructor(device: GPUDevice, tileBindGroupLayout: GPUBindGroupLayout, frameUniformBuffer: GPUBuffer);
34
+ get bucketCapacity(): number;
35
+ get subBlockCapacity(): number;
36
+ /** 每帧编码前调用:按点数调整容量(只增不减),并保证 bind group 引用当前 framebuffer */
37
+ prepare(totalPoints: number, framebuffer: GPUBuffer): void;
38
+ encodeClearCounters(encoder: GPUCommandEncoder): void;
39
+ /** 一个 tile 的分类 dispatch */
40
+ encodeClassify(pass: GPUComputePassEncoder, tileBindGroup: GPUBindGroup, pointCount: number): void;
41
+ /** 所有 tile 分类完成后:写 indirect 参数,再协作绘制 Medium / Large 点 */
42
+ encodeCoop(pass: GPUComputePassEncoder): void;
43
+ dispose(): void;
44
+ private allocate;
45
+ private createBindGroups;
46
+ }
@@ -0,0 +1,10 @@
1
+ export interface BinnedPipelines {
2
+ readonly classifyBGL: GPUBindGroupLayout;
3
+ readonly argsBGL: GPUBindGroupLayout;
4
+ readonly coopBGL: GPUBindGroupLayout;
5
+ readonly classifier: GPUComputePipeline;
6
+ readonly argsBuilder: GPUComputePipeline;
7
+ readonly coopMedium: GPUComputePipeline;
8
+ readonly coopLarge: GPUComputePipeline;
9
+ }
10
+ export declare function createBinnedPipelines(device: GPUDevice, tileBindGroupLayout: GPUBindGroupLayout): BinnedPipelines;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -3,12 +3,14 @@ import type { PBMPointCloud } from '../../model/objects/pbmPointCloud';
3
3
  /**
4
4
  * 基于 Compute Shader 的点云渲染器
5
5
  *
6
- * 渲染管线:清除 framebuffer → 计算着色器计算点云 → 全屏四边形显示。
6
+ * 渲染管线:清除 framebuffer → 分桶协作光栅点云 → 全屏四边形显示。
7
7
  * 从调用方接收 GPUDevice(不自行请求 adapter/device)。
8
8
  */
9
9
  export declare class PointCloudComputeRenderer {
10
10
  private device;
11
11
  private format;
12
+ /** 显示 pipeline 的 color target 格式,需与目标 RT 的 GPU 纹理格式一致 */
13
+ get colorFormat(): GPUTextureFormat;
12
14
  private width;
13
15
  private height;
14
16
  private pointBuffer;
@@ -18,44 +20,12 @@ export declare class PointCloudComputeRenderer {
18
20
  private frameUniformBuffer;
19
21
  private displayParamsBuffer;
20
22
  private clearPipeline;
21
- private rasterizePipeline;
22
23
  private fullscreenQuadPipeline;
24
+ private tileBindGroupLayout;
23
25
  private clearBindGroup;
24
26
  private rasterizeBindGroup;
25
27
  private displayBindGroup;
26
28
  private pointCount;
27
- private static readonly FRAME_UNIFORM_SIZE;
28
- private static readonly TILE_UNIFORM_SIZE;
29
- private static readonly OFFSET_VIEW_PROJ;
30
- private static readonly OFFSET_SCREEN_WIDTH;
31
- private static readonly OFFSET_SCREEN_HEIGHT;
32
- private static readonly OFFSET_POINT_SIZE_MODE;
33
- /** pointAttenPack: mix(-proj[2][3]), scale(2/proj[1][1]), pad, pad */
34
- private static readonly OFFSET_POINT_ATTEN_PACK;
35
- /** viewZRow: viewMatrix 第三行,用于 mvPosition.z */
36
- private static readonly OFFSET_VIEW_Z_ROW;
37
- private static readonly OFFSET_POINT_SCALE;
38
- private static readonly OFFSET_POINT_MIN_PIXEL;
39
- private static readonly OFFSET_POINT_MAX_PIXEL;
40
- private static readonly OFFSET_PIXEL_RATIO;
41
- private static readonly OFFSET_RESOLUTION_Y;
42
- private static readonly OFFSET_POINT_PIXEL_HARD_MAX;
43
- private static readonly OFFSET_POINT_SHAPE;
44
- /** 与 rasterize.wgsl FrameUniforms 连续布局一致(无 per-tile model/bbox) */
45
- private static readonly OFFSET_CAMERA_WORLD;
46
- private static readonly OFFSET_CAMERA_FORWARD;
47
- private static readonly OFFSET_CONSTANT_COLOR;
48
- private static readonly OFFSET_COLOR_GAIN;
49
- private static readonly OFFSET_STYLE_PACK;
50
- private static readonly OFFSET_FLOOR_PACK;
51
- private static readonly OFFSET_CLIP0_INV;
52
- private static readonly OFFSET_CLIP0_META;
53
- private static readonly OFFSET_CLIP1_INV;
54
- private static readonly OFFSET_CLIP1_META;
55
- private static readonly OFFSET_TILE_MODEL;
56
- private static readonly OFFSET_TILE_BBOX_MIN;
57
- private static readonly OFFSET_TILE_BBOX_MAX;
58
- private static readonly OFFSET_TILE_PACK;
59
29
  private readonly frameUniformScratch;
60
30
  private readonly tileUniformScratch;
61
31
  private readonly pointSizeUniformState;
@@ -64,8 +34,10 @@ export declare class PointCloudComputeRenderer {
64
34
  private gradientSampler;
65
35
  private fullscreenQuadPipelineAdditive;
66
36
  private ready;
67
- /** 同一 compute pass 内避免对 rasterize 管线重复 setPipeline(多 tile 连续 dispatch 时略减开销) */
68
- private lastBoundComputePipeline;
37
+ private binnedCore;
38
+ /** 本帧 viewProj,用于计算 tile mvp */
39
+ private readonly frameViewProj;
40
+ private readonly tileMvpScratch;
69
41
  /**
70
42
  * tile 级 GPU 资源缓存:用强引用 Map 而非 WeakMap,配合 PBMPointCloud.dispose
71
43
  * 派发的 'dispose' 事件主动销毁 buffer,确保 tile 卸载后内存立即归还。
@@ -93,6 +65,8 @@ export declare class PointCloudComputeRenderer {
93
65
  }, rasterResources?: {
94
66
  gradientView: GPUTextureView;
95
67
  }): void;
68
+ /** 每帧编码 tile 之前调用:按本帧总点数准备分桶资源 */
69
+ prepareFrame(totalPointCount: number): void;
96
70
  /**
97
71
  * 每帧调用一次:写入共享 frame uniform(viewProj、屏幕、点大小、相机、材质、裁切)。
98
72
  */
@@ -116,6 +90,8 @@ export declare class PointCloudComputeRenderer {
116
90
  /** 与 five vertex.glsl 中 ATTENUATION 分支一致,避免透视/正交 matrixLerp 时 clip.w 失真。 */
117
91
  private writePointAttenuationUniforms;
118
92
  private writeFrameUniformsDataView;
93
+ /** 写入尺寸分类阈值与桶容量 */
94
+ private writeRasterUniforms;
119
95
  private writeTileUniformsDataView;
120
96
  /**
121
97
  * 调整 framebuffer 大小并更新屏幕尺寸 uniform。
@@ -124,12 +100,12 @@ export declare class PointCloudComputeRenderer {
124
100
  resize(width: number, height: number): void;
125
101
  /** 写入 clear:可并入同一 compute pass,与其它 rasterize dispatch 一起提交。 */
126
102
  encodeFramebufferClear(computePass: GPUComputePassEncoder): void;
127
- /** 按当前 bindGroup / pointCount 追加一次 rasterize dispatch(需先 setPointCloud + writeTileUniform)。 */
103
+ /** 为当前 tile 追加一次分类 dispatch(需先 setPointCloud + writeTileUniform)。 */
128
104
  encodeRasterize(computePass: GPUComputePassEncoder): void;
129
105
  encodeFramebufferDisplay(renderPass: GPURenderPassEncoder, options?: {
130
106
  additive?: boolean;
131
107
  }): void;
132
- /** 单帧:clear + 多次 rasterize + display,一次 queue.submit(Potree 等多块场景同款思路)。 */
108
+ /** 单帧:clear + 各 tile 分类 + 协作光栅 + display,一次 queue.submit。 */
133
109
  submitMergedPointCloudFrame(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView, rasterizeSteps: (computePass: GPUComputePassEncoder) => void, options?: {
134
110
  clear?: boolean;
135
111
  display?: boolean;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,23 @@
1
+ /** 点云 compute 渲染的 uniform 布局:同时生成 TS 字节偏移与 WGSL struct 声明。 */
2
+ type WgslType = 'mat4x4<f32>' | 'vec4<f32>' | 'vec4<u32>';
3
+ type FieldTable = readonly (readonly [string, WgslType])[];
4
+ interface StructLayout<F extends FieldTable> {
5
+ readonly offsets: {
6
+ readonly [K in F[number][0]]: number;
7
+ };
8
+ readonly size: number;
9
+ readonly wgsl: string;
10
+ }
11
+ export declare const FRAME: StructLayout<readonly [readonly ["viewProj", "mat4x4<f32>"], readonly ["screenInfo", "vec4<u32>"], readonly ["pointAttenPack", "vec4<f32>"], readonly ["viewZRow", "vec4<f32>"], readonly ["sizeInfo0", "vec4<f32>"], readonly ["sizeInfo1", "vec4<u32>"], readonly ["cameraWorld", "vec4<f32>"], readonly ["cameraForward", "vec4<f32>"], readonly ["constantColor", "vec4<f32>"], readonly ["colorGain", "vec4<f32>"], readonly ["stylePack", "vec4<u32>"], readonly ["floorPack", "vec4<f32>"], readonly ["clip0Inv", "mat4x4<f32>"], readonly ["clip0Meta", "vec4<f32>"], readonly ["clip1Inv", "mat4x4<f32>"], readonly ["clip1Meta", "vec4<f32>"], readonly ["rasterParams", "vec4<f32>"], readonly ["binnedInfo", "vec4<u32>"]]>;
12
+ export declare const TILE: StructLayout<readonly [readonly ["modelMatrix", "mat4x4<f32>"], readonly ["bboxMin", "vec4<f32>"], readonly ["bboxMax", "vec4<f32>"], readonly ["tilePack", "vec4<u32>"], readonly ["mvp", "mat4x4<f32>"]]>;
13
+ export declare const BUCKET_ENTRY_BYTES = 16;
14
+ export declare const SUB_BLOCK_ENTRY_BYTES = 8;
15
+ export declare const SUB_BLOCK_SIZE = 8;
16
+ export declare const COOP_WORKGROUP_SIZE = 64;
17
+ export declare const CLASSIFY_WORKGROUP_SIZE = 256;
18
+ /** 单个 Large 点最多覆盖的子块数(96px 点 → 13×13) */
19
+ export declare const MAX_SUB_BLOCKS_PER_POINT = 169;
20
+ export declare const SUB_BLOCK_INVALID = 4294967295;
21
+ export declare const UNIFORM_WGSL: string;
22
+ export declare const BINNED_STRUCTS_WGSL = "\nstruct BucketEntry { cx: f32, cy: f32, size: f32, encoded: u32, };\nstruct SubBlockEntry { pointIndex: u32, blockXY: u32, };\nstruct Counters { medium: atomic<u32>, large: atomic<u32>, subBlock: atomic<u32>, overflow: atomic<u32>, };\n";
23
+ export {};
@@ -22,6 +22,8 @@ export declare class FiveRenderer {
22
22
  render(renderer: THREE.WebGPURenderer, scene: Scene, modelScene: ModelScene, camera: Camera, sceneUpdated: boolean): boolean;
23
23
  /** 将场景(点云 compute pass + three 场景)合成到 `compositeRenderTarget`。 */
24
24
  private renderSceneToComposite;
25
+ /** 按相机到点云世界包围盒的距离由近到远排序 */
26
+ private sortByDistance;
25
27
  /**
26
28
  * WebGPU 路径:Compute Shader 光栅化点云 → 再渲染 three 场景叠加。
27
29
  * 点云本身是 Mesh,需在 three 渲染阶段临时隐藏,避免被 NodeMaterial 重复绘制。
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -252,4 +252,4 @@
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
- */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-webgpu"),l=require("three/webgpu");l=s(l,1);var u=class extends l.Group{constructor(e){super(),this.needsRender=!0,e&&e.children.length&&this.add(...e.children),this.mixer=new l.AnimationMixer(this)}clone(){let e=super.clone(!0);return e.mixer=new l.AnimationMixer(e),e.needsRender=!0,e}};function d(e){let t=new u(e.scene);return t.position.copy(e.scene.position),t.quaternion.copy(e.scene.quaternion),t.scale.copy(e.scene.scale),Object.assign(Object.assign({},e),{scene:t,scenes:[t]})}var f=class{static get version(){return`1.0.0-alpha.7`}load(e,t,n,r){(0,c.loadGltf)(e,{modelUpAxis:`Y`,upAxis:`Y`,onDownloadProgress(e,t,r){n&&n(new ProgressEvent(`progress`,{lengthComputable:typeof r==`number`,loaded:t==null?0:t,total:r==null?0:r}))}}).then(e=>{t(d(e))}).catch(e=>{r?r(new ErrorEvent(`error`,{error:e,message:e instanceof Error?e.message:String(e)})):console.error(e)})}};exports.GLTFLoader=f,exports.GLTFObject=u;
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-webgpu"),l=require("three/webgpu");l=s(l,1);var u=class extends l.Group{constructor(e){super(),this.needsRender=!0,e&&e.children.length&&this.add(...e.children),this.mixer=new l.AnimationMixer(this)}clone(){let e=super.clone(!0);return e.mixer=new l.AnimationMixer(e),e.needsRender=!0,e}};function d(e){let t=new u(e.scene);return t.position.copy(e.scene.position),t.quaternion.copy(e.scene.quaternion),t.scale.copy(e.scene.scale),Object.assign(Object.assign({},e),{scene:t,scenes:[t]})}var f=class{static get version(){return`1.0.0-alpha.9`}load(e,t,n,r){(0,c.loadGltf)(e,{modelUpAxis:`Y`,upAxis:`Y`,onDownloadProgress(e,t,r){n&&n(new ProgressEvent(`progress`,{lengthComputable:typeof r==`number`,loaded:t==null?0:t,total:r==null?0:r}))}}).then(e=>{t(d(e))}).catch(e=>{r?r(new ErrorEvent(`error`,{error:e,message:e instanceof Error?e.message:String(e)})):console.error(e)})}};exports.GLTFLoader=f,exports.GLTFObject=u;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -275,7 +275,7 @@ function r(e) {
275
275
  }
276
276
  var i = class {
277
277
  static get version() {
278
- return "1.0.0-alpha.7";
278
+ return "1.0.0-alpha.9";
279
279
  }
280
280
  load(t, n, i, a) {
281
281
  e(t, {
package/line/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -252,4 +252,4 @@
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
- */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("three/webgpu");c=s(c,1);let l=require("three/addons/lines/webgpu/Line2.js"),u=require("three/addons/lines/webgpu/LineSegments2.js"),d=require("three/addons/lines/LineGeometry.js"),f=require("three/addons/lines/LineSegmentsGeometry.js");var p=14467195,m=8,h=2,g=20,_=null;function v(e,t){t instanceof c.Vector3?e.color.setRGB(t.x,t.y,t.z):e.color.set(t)}var y=class extends c.Object3D{static get version(){return`1.0.0-alpha.7`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new d.LineGeometry,r=new c.Line2NodeMaterial({color:p,linewidth:h,dashed:!1});r.scale=g,this.line=new l.Line2(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:p,size:m,map:_||(_=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.updatePointsPositions(n),this.updateLinePositions(n),this.needsRender=!0}updatePointsPositions(e){let t=this.points.geometry,n=t.getAttribute(`position`);n&&n.array.length===e.length?(n.array.set(e),n.needsUpdate=!0):t.setAttribute(`position`,new c.BufferAttribute(new Float32Array(e),3))}updateLinePositions(e){let t=this.line.geometry,n=t.getAttribute(`instanceStart`);if(!n||n.data.array.length!==e.length){t.setPositions(e),this.line.computeLineDistances();return}let r=n.data;r.array.set(e),r.needsUpdate=!0,t.computeBoundingBox(),t.computeBoundingSphere(),this.updateLineDistances()}updateLineDistances(){let e=this.line.geometry,t=e.getAttribute(`instanceDistanceStart`);if(!t){this.line.computeLineDistances();return}let n=e.getAttribute(`instanceStart`),r=e.getAttribute(`instanceEnd`),i=n.count,a=t.data,o=a.array,s=new c.Vector3,l=new c.Vector3;for(let e=0,t=0;e<i;e++,t+=2)s.fromBufferAttribute(n,e),l.fromBufferAttribute(r,e),o[t]=t===0?0:o[t-1],o[t+1]=o[t]+s.distanceTo(l);a.needsUpdate=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(n===`color`)v(t,r);else if(n===`dashed`)t.dashed=r;else if(n===`dashScale`)t.scale=r;else if(n===`resolution`){let e=r;this.setResolution(e.x,e.y)}else t[n]=r}this.needsRender=!0}setResolution(e,t){let n=this.line._resolution;n&&(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(y.prototype,{isFiveLine:!0}),exports.Line=y,exports.LineGeometry=d.LineGeometry,exports.LineSegmentsGeometry=f.LineSegmentsGeometry,exports.THREE_Line2=l.Line2,exports.THREE_LineSegments2=u.LineSegments2;
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("three/webgpu");c=s(c,1);let l=require("three/addons/lines/webgpu/Line2.js"),u=require("three/addons/lines/webgpu/LineSegments2.js"),d=require("three/addons/lines/LineGeometry.js"),f=require("three/addons/lines/LineSegmentsGeometry.js");var p=14467195,m=8,h=2,g=20,_=null;function v(e,t){t instanceof c.Vector3?e.color.setRGB(t.x,t.y,t.z):e.color.set(t)}var y=class extends c.Object3D{static get version(){return`1.0.0-alpha.9`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new d.LineGeometry,r=new c.Line2NodeMaterial({color:p,linewidth:h,dashed:!1});r.scale=g,this.line=new l.Line2(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:p,size:m,map:_||(_=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.updatePointsPositions(n),this.updateLinePositions(n),this.needsRender=!0}updatePointsPositions(e){let t=this.points.geometry,n=t.getAttribute(`position`);n&&n.array.length===e.length?(n.array.set(e),n.needsUpdate=!0):t.setAttribute(`position`,new c.BufferAttribute(new Float32Array(e),3))}updateLinePositions(e){let t=this.line.geometry,n=t.getAttribute(`instanceStart`);if(!n||n.data.array.length!==e.length){t.setPositions(e),this.line.computeLineDistances();return}let r=n.data;r.array.set(e),r.needsUpdate=!0,t.computeBoundingBox(),t.computeBoundingSphere(),this.updateLineDistances()}updateLineDistances(){let e=this.line.geometry,t=e.getAttribute(`instanceDistanceStart`);if(!t){this.line.computeLineDistances();return}let n=e.getAttribute(`instanceStart`),r=e.getAttribute(`instanceEnd`),i=n.count,a=t.data,o=a.array,s=new c.Vector3,l=new c.Vector3;for(let e=0,t=0;e<i;e++,t+=2)s.fromBufferAttribute(n,e),l.fromBufferAttribute(r,e),o[t]=t===0?0:o[t-1],o[t+1]=o[t]+s.distanceTo(l);a.needsUpdate=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(n===`color`)v(t,r);else if(n===`dashed`)t.dashed=r;else if(n===`dashScale`)t.scale=r;else if(n===`resolution`){let e=r;this.setResolution(e.x,e.y)}else t[n]=r}this.needsRender=!0}setResolution(e,t){let n=this.line._resolution;n&&(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(y.prototype,{isFiveLine:!0}),exports.Line=y,exports.LineGeometry=d.LineGeometry,exports.LineSegmentsGeometry=f.LineSegmentsGeometry,exports.THREE_Line2=l.Line2,exports.THREE_LineSegments2=u.LineSegments2;
package/line/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -265,7 +265,7 @@ function u(t, n) {
265
265
  }
266
266
  var d = class extends e.Object3D {
267
267
  static get version() {
268
- return "1.0.0-alpha.7";
268
+ return "1.0.0-alpha.9";
269
269
  }
270
270
  constructor(n = new e.Vector3(), i = new e.Vector3()) {
271
271
  super(), this.type = "FiveLine", this.needsRender = !0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/five-webgpu",
3
- "version": "1.0.0-alpha.7",
3
+ "version": "1.0.0-alpha.9",
4
4
  "description": "Realsee Renderer SDK",
5
5
  "author": "BEIKE REALSEE TECHNOLOGY (HK) LIMITED",
6
6
  "license": "SEE LICENSE IN TERMS.txt",
package/plugins/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/plugins/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/react/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/react/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/sticker/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -252,4 +252,4 @@
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
- */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("three/webgpu");c=s(c,1);var l=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),u=new Float32Array([0,0,1,0,0,1,1,1]),d=new Uint8Array([0,1,2,1,3,2]),f=new c.BufferGeometry;f.setAttribute(`position`,new c.BufferAttribute(l,3)),f.setAttribute(`uv`,new c.BufferAttribute(u,2)),f.setIndex(new c.BufferAttribute(d,1));var p=window,m=p.requestAnimationFrame||p.mozRequestAnimationFrame||p.webkitRequestAnimationFrame||p.msRequestAnimationFrame||(e=>setTimeout(e,16)),h=typeof performance<`u`&&performance.timing!==void 0?performance.timing.navigationStart:Date.now(),g=typeof performance<`u`?(()=>h+performance.now()):(()=>Date.now());function _(e,t){e.naturalWidth>0&&m(()=>t());let n=()=>t();return e.addEventListener(`load`,n,!1),()=>e.removeEventListener(`load`,n,!1)}function v(e,t){let n=g(),r=!1,i=()=>{r=!0,t(),g()-n<3e3?m(i):r=!1},a=()=>{n=g(),r===!1&&i()};return e.addEventListener(`timeupdate`,a,!1),()=>{e.removeEventListener(`timeupdate`,a,!1),r=!1}}function y(e,t){let n=e.dispose;e.dispose=()=>{t(),n.call(e)}}var b=class extends c.Mesh{static get version(){return`1.0.0-alpha.7`}constructor(e,t,n){let r=new c.MeshBasicMaterial;if(super(f,r),this._needsRender=!1,this.scale.set(e,t,1),typeof n==`string`){r.transparent=/\.png$/.test(n);let e=new Image;e.src=n,e.crossOrigin=``,n=e}if(n instanceof HTMLImageElement){let e=r.map=new c.Texture;e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.colorSpace=c.SRGBColorSpace,y(e,_(n,()=>{e.image=n,e.needsUpdate=!0,this._needsRender=!0}))}else if(n instanceof HTMLCanvasElement)r.map=new c.CanvasTexture(n);else if(n instanceof HTMLVideoElement){let e=r.map=new c.VideoTexture(n);e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.colorSpace=c.SRGBColorSpace,y(e,v(n,()=>{this._needsRender=!0}))}}get needsRender(){return this._needsRender}set needsRender(e){this._needsRender=e,e===!0&&this.material.map&&(this.material.map.needsUpdate=!0)}setSize(e,t){this.scale.set(e,t,1),this._needsRender=!0}setTransparent(e){this.material.transparent=e,this._needsRender=!0}locationWithIntersection(e,t=.005){let{point:n,face:r}=e;this.position.copy(n),r&&(this.position.add(r.normal.clone().setLength(t)),this.lookAt(n.clone().add(r.normal))),this._needsRender=!0}dispose(){var e;(e=this.material.map)==null||e.dispose(),this.material.dispose()}};exports.Sticker=b;
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("three/webgpu");c=s(c,1);var l=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),u=new Float32Array([0,0,1,0,0,1,1,1]),d=new Uint8Array([0,1,2,1,3,2]),f=new c.BufferGeometry;f.setAttribute(`position`,new c.BufferAttribute(l,3)),f.setAttribute(`uv`,new c.BufferAttribute(u,2)),f.setIndex(new c.BufferAttribute(d,1));var p=window,m=p.requestAnimationFrame||p.mozRequestAnimationFrame||p.webkitRequestAnimationFrame||p.msRequestAnimationFrame||(e=>setTimeout(e,16)),h=typeof performance<`u`&&performance.timing!==void 0?performance.timing.navigationStart:Date.now(),g=typeof performance<`u`?(()=>h+performance.now()):(()=>Date.now());function _(e,t){e.naturalWidth>0&&m(()=>t());let n=()=>t();return e.addEventListener(`load`,n,!1),()=>e.removeEventListener(`load`,n,!1)}function v(e,t){let n=g(),r=!1,i=()=>{r=!0,t(),g()-n<3e3?m(i):r=!1},a=()=>{n=g(),r===!1&&i()};return e.addEventListener(`timeupdate`,a,!1),()=>{e.removeEventListener(`timeupdate`,a,!1),r=!1}}function y(e,t){let n=e.dispose;e.dispose=()=>{t(),n.call(e)}}var b=class extends c.Mesh{static get version(){return`1.0.0-alpha.9`}constructor(e,t,n){let r=new c.MeshBasicMaterial;if(super(f,r),this._needsRender=!1,this.scale.set(e,t,1),typeof n==`string`){r.transparent=/\.png$/.test(n);let e=new Image;e.src=n,e.crossOrigin=``,n=e}if(n instanceof HTMLImageElement){let e=r.map=new c.Texture;e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.colorSpace=c.SRGBColorSpace,y(e,_(n,()=>{e.image=n,e.needsUpdate=!0,this._needsRender=!0}))}else if(n instanceof HTMLCanvasElement)r.map=new c.CanvasTexture(n);else if(n instanceof HTMLVideoElement){let e=r.map=new c.VideoTexture(n);e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.colorSpace=c.SRGBColorSpace,y(e,v(n,()=>{this._needsRender=!0}))}}get needsRender(){return this._needsRender}set needsRender(e){this._needsRender=e,e===!0&&this.material.map&&(this.material.map.needsUpdate=!0)}setSize(e,t){this.scale.set(e,t,1),this._needsRender=!0}setTransparent(e){this.material.transparent=e,this._needsRender=!0}locationWithIntersection(e,t=.005){let{point:n,face:r}=e;this.position.copy(n),r&&(this.position.add(r.normal.clone().setLength(t)),this.lookAt(n.clone().add(r.normal))),this._needsRender=!0}dispose(){var e;(e=this.material.map)==null||e.dispose(),this.material.dispose()}};exports.Sticker=b;
package/sticker/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 10/14/2026
5
- * Version: 1.0.0-alpha.7
4
+ * Generated: 2026/10/21
5
+ * Version: 1.0.0-alpha.9
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -311,7 +311,7 @@ function d(e, t) {
311
311
  }
312
312
  var f = class extends e.Mesh {
313
313
  static get version() {
314
- return "1.0.0-alpha.7";
314
+ return "1.0.0-alpha.9";
315
315
  }
316
316
  constructor(t, n, r) {
317
317
  let a = new e.MeshBasicMaterial();