@realsee/five-webgpu 1.0.0-alpha.8 → 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.
- package/docs/classes/index.FiveRenderer.html +2 -2
- package/five/index.js +111 -37
- package/five/index.mjs +1067 -721
- package/five/renderer/compute-renderers/binned/binned-core.d.ts +46 -0
- package/five/renderer/compute-renderers/binned/binned-pipelines.d.ts +10 -0
- package/five/renderer/compute-renderers/binned/shaders/classify.d.ts +2 -0
- package/five/renderer/compute-renderers/binned/shaders/coop.d.ts +2 -0
- package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +12 -38
- package/five/renderer/compute-renderers/shaders/lib/color.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/cull.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/encode.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/point-setup.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/point-size.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/raster.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/size-class.d.ts +2 -0
- package/five/renderer/compute-renderers/shaders/lib/tile-bindings.d.ts +2 -0
- package/five/renderer/compute-renderers/uniform-layout.d.ts +23 -0
- package/five/renderer/five-renderer.d.ts +2 -0
- package/gltf-loader/index.js +3 -3
- package/gltf-loader/index.mjs +3 -3
- package/line/index.js +3 -3
- package/line/index.mjs +3 -3
- package/package.json +1 -1
- package/plugins/index.js +2 -2
- package/plugins/index.mjs +2 -2
- package/react/index.js +2 -2
- package/react/index.mjs +2 -2
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +3 -3
- package/umd/five-gltf-loader.js +3 -3
- package/umd/five-line.js +3 -3
- package/umd/five-plugins.js +2 -2
- package/umd/five-react.js +2 -2
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +2 -2
- package/umd/five.js +131 -57
- package/vfx/index.js +2 -2
- package/vfx/index.mjs +2 -2
- package/work-downloader/index.js +2 -2
- package/work-downloader/index.mjs +2 -2
- /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;
|
|
@@ -3,7 +3,7 @@ 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 {
|
|
@@ -20,44 +20,12 @@ export declare class PointCloudComputeRenderer {
|
|
|
20
20
|
private frameUniformBuffer;
|
|
21
21
|
private displayParamsBuffer;
|
|
22
22
|
private clearPipeline;
|
|
23
|
-
private rasterizePipeline;
|
|
24
23
|
private fullscreenQuadPipeline;
|
|
24
|
+
private tileBindGroupLayout;
|
|
25
25
|
private clearBindGroup;
|
|
26
26
|
private rasterizeBindGroup;
|
|
27
27
|
private displayBindGroup;
|
|
28
28
|
private pointCount;
|
|
29
|
-
private static readonly FRAME_UNIFORM_SIZE;
|
|
30
|
-
private static readonly TILE_UNIFORM_SIZE;
|
|
31
|
-
private static readonly OFFSET_VIEW_PROJ;
|
|
32
|
-
private static readonly OFFSET_SCREEN_WIDTH;
|
|
33
|
-
private static readonly OFFSET_SCREEN_HEIGHT;
|
|
34
|
-
private static readonly OFFSET_POINT_SIZE_MODE;
|
|
35
|
-
/** pointAttenPack: mix(-proj[2][3]), scale(2/proj[1][1]), pad, pad */
|
|
36
|
-
private static readonly OFFSET_POINT_ATTEN_PACK;
|
|
37
|
-
/** viewZRow: viewMatrix 第三行,用于 mvPosition.z */
|
|
38
|
-
private static readonly OFFSET_VIEW_Z_ROW;
|
|
39
|
-
private static readonly OFFSET_POINT_SCALE;
|
|
40
|
-
private static readonly OFFSET_POINT_MIN_PIXEL;
|
|
41
|
-
private static readonly OFFSET_POINT_MAX_PIXEL;
|
|
42
|
-
private static readonly OFFSET_PIXEL_RATIO;
|
|
43
|
-
private static readonly OFFSET_RESOLUTION_Y;
|
|
44
|
-
private static readonly OFFSET_POINT_PIXEL_HARD_MAX;
|
|
45
|
-
private static readonly OFFSET_POINT_SHAPE;
|
|
46
|
-
/** 与 rasterize.wgsl FrameUniforms 连续布局一致(无 per-tile model/bbox) */
|
|
47
|
-
private static readonly OFFSET_CAMERA_WORLD;
|
|
48
|
-
private static readonly OFFSET_CAMERA_FORWARD;
|
|
49
|
-
private static readonly OFFSET_CONSTANT_COLOR;
|
|
50
|
-
private static readonly OFFSET_COLOR_GAIN;
|
|
51
|
-
private static readonly OFFSET_STYLE_PACK;
|
|
52
|
-
private static readonly OFFSET_FLOOR_PACK;
|
|
53
|
-
private static readonly OFFSET_CLIP0_INV;
|
|
54
|
-
private static readonly OFFSET_CLIP0_META;
|
|
55
|
-
private static readonly OFFSET_CLIP1_INV;
|
|
56
|
-
private static readonly OFFSET_CLIP1_META;
|
|
57
|
-
private static readonly OFFSET_TILE_MODEL;
|
|
58
|
-
private static readonly OFFSET_TILE_BBOX_MIN;
|
|
59
|
-
private static readonly OFFSET_TILE_BBOX_MAX;
|
|
60
|
-
private static readonly OFFSET_TILE_PACK;
|
|
61
29
|
private readonly frameUniformScratch;
|
|
62
30
|
private readonly tileUniformScratch;
|
|
63
31
|
private readonly pointSizeUniformState;
|
|
@@ -66,8 +34,10 @@ export declare class PointCloudComputeRenderer {
|
|
|
66
34
|
private gradientSampler;
|
|
67
35
|
private fullscreenQuadPipelineAdditive;
|
|
68
36
|
private ready;
|
|
69
|
-
|
|
70
|
-
|
|
37
|
+
private binnedCore;
|
|
38
|
+
/** 本帧 viewProj,用于计算 tile mvp */
|
|
39
|
+
private readonly frameViewProj;
|
|
40
|
+
private readonly tileMvpScratch;
|
|
71
41
|
/**
|
|
72
42
|
* tile 级 GPU 资源缓存:用强引用 Map 而非 WeakMap,配合 PBMPointCloud.dispose
|
|
73
43
|
* 派发的 'dispose' 事件主动销毁 buffer,确保 tile 卸载后内存立即归还。
|
|
@@ -95,6 +65,8 @@ export declare class PointCloudComputeRenderer {
|
|
|
95
65
|
}, rasterResources?: {
|
|
96
66
|
gradientView: GPUTextureView;
|
|
97
67
|
}): void;
|
|
68
|
+
/** 每帧编码 tile 之前调用:按本帧总点数准备分桶资源 */
|
|
69
|
+
prepareFrame(totalPointCount: number): void;
|
|
98
70
|
/**
|
|
99
71
|
* 每帧调用一次:写入共享 frame uniform(viewProj、屏幕、点大小、相机、材质、裁切)。
|
|
100
72
|
*/
|
|
@@ -118,6 +90,8 @@ export declare class PointCloudComputeRenderer {
|
|
|
118
90
|
/** 与 five vertex.glsl 中 ATTENUATION 分支一致,避免透视/正交 matrixLerp 时 clip.w 失真。 */
|
|
119
91
|
private writePointAttenuationUniforms;
|
|
120
92
|
private writeFrameUniformsDataView;
|
|
93
|
+
/** 写入尺寸分类阈值与桶容量 */
|
|
94
|
+
private writeRasterUniforms;
|
|
121
95
|
private writeTileUniformsDataView;
|
|
122
96
|
/**
|
|
123
97
|
* 调整 framebuffer 大小并更新屏幕尺寸 uniform。
|
|
@@ -126,12 +100,12 @@ export declare class PointCloudComputeRenderer {
|
|
|
126
100
|
resize(width: number, height: number): void;
|
|
127
101
|
/** 写入 clear:可并入同一 compute pass,与其它 rasterize dispatch 一起提交。 */
|
|
128
102
|
encodeFramebufferClear(computePass: GPUComputePassEncoder): void;
|
|
129
|
-
/**
|
|
103
|
+
/** 为当前 tile 追加一次分类 dispatch(需先 setPointCloud + writeTileUniform)。 */
|
|
130
104
|
encodeRasterize(computePass: GPUComputePassEncoder): void;
|
|
131
105
|
encodeFramebufferDisplay(renderPass: GPURenderPassEncoder, options?: {
|
|
132
106
|
additive?: boolean;
|
|
133
107
|
}): void;
|
|
134
|
-
/** 单帧:clear +
|
|
108
|
+
/** 单帧:clear + 各 tile 分类 + 协作光栅 + display,一次 queue.submit。 */
|
|
135
109
|
submitMergedPointCloudFrame(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView, rasterizeSteps: (computePass: GPUComputePassEncoder) => void, options?: {
|
|
136
110
|
clear?: boolean;
|
|
137
111
|
display?: boolean;
|
|
@@ -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 重复绘制。
|
package/gltf-loader/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five-webgpu
|
|
4
|
-
* Generated: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
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;
|
package/gltf-loader/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five-webgpu
|
|
4
|
-
* Generated: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
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: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
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: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
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
package/plugins/index.js
CHANGED
package/plugins/index.mjs
CHANGED
package/react/index.js
CHANGED
package/react/index.mjs
CHANGED
package/sticker/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five-webgpu
|
|
4
|
-
* Generated: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
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: 2026/10/
|
|
5
|
-
* Version: 1.0.0-alpha.
|
|
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.
|
|
314
|
+
return "1.0.0-alpha.9";
|
|
315
315
|
}
|
|
316
316
|
constructor(t, n, r) {
|
|
317
317
|
let a = new e.MeshBasicMaterial();
|