@realsee/five-webgpu 1.0.0-alpha.3 → 1.0.0-alpha.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.
Files changed (137) hide show
  1. package/docs/assets/hierarchy.js +1 -1
  2. package/docs/assets/navigation.js +1 -1
  3. package/docs/assets/search.js +1 -1
  4. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  5. package/docs/classes/index.BoundingMesh.html +1 -1
  6. package/docs/classes/index.Camera.html +1 -1
  7. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  8. package/docs/classes/index.Five.html +38 -38
  9. package/docs/classes/index.FivePass.html +1 -1
  10. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  11. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  12. package/docs/classes/index.FlowingLight3DPass.html +1 -1
  13. package/docs/classes/index.GaussianBlurPass.html +1 -1
  14. package/docs/classes/index.InternalWebGPURenderer.html +13 -2
  15. package/docs/classes/index.Model.html +1 -1
  16. package/docs/classes/index.ModelScene.html +1 -1
  17. package/docs/classes/index.NetworkSubscribe.html +1 -1
  18. package/docs/classes/index.PBMCustomNode.html +57 -0
  19. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +1 -1
  20. package/docs/classes/index.PBMGaussianSplattingObject.html +1 -1
  21. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +1 -1
  22. package/docs/classes/index.PBMGroup.html +1 -1
  23. package/docs/classes/index.PBMMesh.html +1 -1
  24. package/docs/classes/index.PBMMeshBasicMaterial.html +11 -3
  25. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +23 -5
  26. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +11 -3
  27. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +23 -5
  28. package/docs/classes/index.PBMMeshPhongMaterial.html +11 -3
  29. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +23 -5
  30. package/docs/classes/index.PBMMeshPhysicalMaterial.html +11 -3
  31. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +23 -5
  32. package/docs/classes/index.PBMPanoFilter.html +8 -8
  33. package/docs/classes/index.PBMPointCloud.html +1 -1
  34. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  35. package/docs/classes/index.PBMUpdateable.html +1 -1
  36. package/docs/classes/index.PanoCircleMesh.html +1 -1
  37. package/docs/classes/index.PanoCircleMeshCustom.html +1 -1
  38. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  39. package/docs/classes/index.Parameter.html +58 -51
  40. package/docs/classes/index.Scene.html +1 -1
  41. package/docs/classes/index.Subscribe.html +1 -1
  42. package/docs/classes/index.Tile3D.html +1 -1
  43. package/docs/classes/index.TileNode.html +1 -1
  44. package/docs/classes/index.TrajectoryNode.html +1 -1
  45. package/docs/classes/index.WorkResolvedObserver.html +1 -1
  46. package/docs/functions/index.customNodesCacheKey.html +3 -0
  47. package/docs/hierarchy.html +1 -1
  48. package/docs/interfaces/index.AddableObject.html +1 -1
  49. package/docs/interfaces/index.AjaxOptions.html +1 -1
  50. package/docs/interfaces/index.BaseEvent.html +1 -1
  51. package/docs/interfaces/index.EventCallback.html +1 -1
  52. package/docs/interfaces/index.GestureEvent.html +1 -1
  53. package/docs/interfaces/index.IPBMMaterial.html +10 -2
  54. package/docs/interfaces/index.ImageOptions.html +1 -1
  55. package/docs/interfaces/index.IntersectEvent.html +1 -1
  56. package/docs/interfaces/index.IntersectMesh.html +1 -1
  57. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  58. package/docs/interfaces/index.Intersection.html +1 -1
  59. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +1 -1
  60. package/docs/interfaces/index.ModeChangeEvent.html +1 -1
  61. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  62. package/docs/interfaces/index.ModelEvent.html +1 -1
  63. package/docs/interfaces/index.ModelSceneEvent.html +1 -1
  64. package/docs/interfaces/index.ModelTileEvent.html +1 -1
  65. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  66. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  67. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  68. package/docs/interfaces/index.NetworkOptions.html +1 -1
  69. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  70. package/docs/interfaces/index.NetworkResourceEvent.html +1 -1
  71. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  72. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  73. package/docs/interfaces/index.ObjectEvent.html +1 -1
  74. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  75. package/docs/interfaces/index.PBMCustomNodeContext.html +39 -0
  76. package/docs/interfaces/index.PBMCustomNodeOptions.html +10 -0
  77. package/docs/interfaces/index.PBMCustomNodePanoContext.html +13 -0
  78. package/docs/interfaces/index.PBMCustomNodeSlots.html +31 -0
  79. package/docs/interfaces/index.PBMHDRConfig.html +2 -2
  80. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  81. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  82. package/docs/interfaces/index.PBMPanoPicture.html +8 -8
  83. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  84. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  85. package/docs/interfaces/index.PanoEvent.html +1 -1
  86. package/docs/interfaces/index.PanoTextureEvent.html +1 -1
  87. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +1 -1
  88. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  89. package/docs/interfaces/index.ParameterMaterialValue.html +43 -36
  90. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  91. package/docs/interfaces/index.ParameterValue.html +57 -50
  92. package/docs/interfaces/index.Pose.html +1 -1
  93. package/docs/interfaces/index.RenderEvent.html +1 -1
  94. package/docs/interfaces/index.ResolvedParameterValue.html +57 -50
  95. package/docs/interfaces/index.State.html +1 -1
  96. package/docs/interfaces/index.StateEvent.html +1 -1
  97. package/docs/interfaces/index.TextureOptions.html +1 -1
  98. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  99. package/docs/interfaces/index.ViewLayer.html +1 -1
  100. package/docs/interfaces/index.WorkCubeImage.html +1 -1
  101. package/docs/interfaces/index.WorkImage.html +1 -1
  102. package/docs/interfaces/index.WorkObserver.html +1 -1
  103. package/docs/interfaces/index.WorkTile.html +1 -1
  104. package/docs/interfaces/index.WorksEvent.html +1 -1
  105. package/docs/interfaces/index.XRControllerEvent.html +1 -1
  106. package/docs/interfaces/index.XRGestureEvent.html +1 -1
  107. package/docs/interfaces/index.XRSessionEvent.html +1 -1
  108. package/docs/modules/index.html +1 -1
  109. package/docs/types/index.PBMColorStyle.html +1 -1
  110. package/docs/types/index.PBMCustomNodeTargetType.html +2 -0
  111. package/docs/types/index.PBMPointBack.html +1 -1
  112. package/docs/types/index.PBMPointShape.html +1 -1
  113. package/docs/types/index.PBMPointSize.html +1 -1
  114. package/docs/types/index.PBMRoofStyle.html +6 -0
  115. package/docs/types/index.ParseOptions.html +1 -1
  116. package/five/core/internalWebGPURenderer.d.ts +16 -0
  117. package/five/core/tiling.d.ts +17 -0
  118. package/five/index.js +29 -29
  119. package/five/index.mjs +2900 -2615
  120. package/five/model/index.d.ts +1 -1
  121. package/five/model/materials/nodes/pbmMeshBasicNodeMaterial.d.ts +2 -0
  122. package/five/model/materials/nodes/pbmMeshPanoOnlyNodeMaterial.d.ts +2 -0
  123. package/five/model/materials/nodes/pbmMeshPhongNodeMaterial.d.ts +2 -0
  124. package/five/model/materials/nodes/pbmMeshPhysicalNodeMaterial.d.ts +2 -0
  125. package/five/model/materials/pbmMaterial.d.ts +175 -0
  126. package/five/model/materials/tsl/defines.d.ts +2 -1
  127. package/five/model/materials/tsl/outputBuilder.d.ts +8 -4
  128. package/five/model/parameter.d.ts +15 -1
  129. package/five/utils/ktx2.d.ts +3 -3
  130. package/package.json +1 -1
  131. package/plugins/index.js +2 -2
  132. package/plugins/index.mjs +2 -2
  133. package/react/index.js +2 -2
  134. package/react/index.mjs +2 -2
  135. package/umd/five-plugins.js +2 -2
  136. package/umd/five-react.js +2 -2
  137. package/umd/five.js +67 -67
@@ -5,7 +5,7 @@ export { PBMGaussianSplattingObject as PBMGSObject, } from "./objects/pbmGaussia
5
5
  export { PBMPointCloud, type PointCloudData, } from "./objects/pbmPointCloud";
6
6
  export { PBMGaussianSplattingRenderMesh, } from "./objects/pbmGaussianSplattingRenderMesh";
7
7
  export { PBMGaussianSplattingNodeMaterial, } from "./materials/pbmGaussianSplattingNodeMaterial";
8
- export { PBMUpdateable, PBMPanoFilter, type IPBMMaterial, type PBMPanoFilterValue, type PBMAlphaMode, type PBMClipperParameter, type PBMColorStyle, type PBMFloorStyle, type PBMPanoPicture, type PBMHDRConfig, type PBMPanoDepth, type PBMPointBack, type PBMPointCloudShaderType, type PBMPointShape, type PBMPointSize, type PBMRefinedScreen, type PBMTransition, } from "./materials/pbmMaterial";
8
+ export { PBMUpdateable, PBMPanoFilter, PBMCustomNode, customNodesCacheKey, type IPBMMaterial, type PBMPanoFilterValue, type PBMAlphaMode, type PBMClipperParameter, type PBMColorStyle, type PBMFloorStyle, type PBMRoofStyle, type PBMPanoPicture, type PBMHDRConfig, type PBMPanoDepth, type PBMPointBack, type PBMPointCloudShaderType, type PBMPointShape, type PBMPointSize, type PBMRefinedScreen, type PBMTransition, type PBMCustomNodeSlots, type PBMCustomNodeTargetType, type PBMCustomNodeOptions, type PBMCustomNodeContext, type PBMCustomNodePanoContext, } from "./materials/pbmMaterial";
9
9
  export { type PBMMeshMaterial, PBMMeshBasicMaterial, PBMMeshPhongMaterial, PBMMeshPhysicalMaterial, PBMMeshPanoOnlyMaterial } from './materials/pbmMeshMaterial';
10
10
  export { registerPBMMaterials, } from './materials/pbmMaterialRegister';
11
11
  export { PBMMeshBasicNodeMaterial, } from './materials/nodes/pbmMeshBasicNodeMaterial';
@@ -9,6 +9,8 @@ export declare class PBMMeshBasicNodeMaterial extends THREE.MeshBasicNodeMateria
9
9
  static get type(): string;
10
10
  readonly isPBMMeshBasicNodeMaterial = true;
11
11
  constructor(parameters?: THREE.MeshBasicNodeMaterialParameters);
12
+ customProgramCacheKey(): string;
13
+ setupVertex(builder: THREE.NodeBuilder): THREE.Node;
12
14
  setup(builder: THREE.NodeBuilder): void;
13
15
  setupObserver(builder: THREE.NodeBuilder): THREE.NodeMaterialObserver;
14
16
  }
@@ -9,6 +9,8 @@ export declare class PBMMeshPanoOnlyNodeMaterial extends THREE.MeshBasicNodeMate
9
9
  static get type(): string;
10
10
  readonly isPBMPanoOnlyNodeMaterial = true;
11
11
  constructor(parameters?: THREE.MeshBasicNodeMaterialParameters);
12
+ customProgramCacheKey(): string;
13
+ setupVertex(builder: THREE.NodeBuilder): THREE.Node;
12
14
  setup(builder: THREE.NodeBuilder): void;
13
15
  setupObserver(builder: THREE.NodeBuilder): THREE.NodeMaterialObserver;
14
16
  }
@@ -9,6 +9,8 @@ export declare class PBMMeshPhongNodeMaterial extends THREE.MeshPhongNodeMateria
9
9
  static get type(): string;
10
10
  readonly isPBMMeshPhongNodeMaterial = true;
11
11
  constructor(parameters?: THREE.MeshPhongNodeMaterialParameters);
12
+ customProgramCacheKey(): string;
13
+ setupVertex(builder: THREE.NodeBuilder): THREE.Node;
12
14
  setup(builder: THREE.NodeBuilder): void;
13
15
  setupObserver(builder: THREE.NodeBuilder): THREE.NodeMaterialObserver;
14
16
  }
@@ -9,6 +9,8 @@ export declare class PBMMeshPhysicalNodeMaterial extends THREE.MeshPhysicalNodeM
9
9
  static get type(): string;
10
10
  readonly isPBMMeshPhysicalNodeMaterial = true;
11
11
  constructor(parameters?: THREE.MeshPhysicalNodeMaterialParameters);
12
+ customProgramCacheKey(): string;
13
+ setupVertex(builder: THREE.NodeBuilder): THREE.Node;
12
14
  setup(builder: THREE.NodeBuilder): void;
13
15
  setupObserver(builder: THREE.NodeBuilder): THREE.NodeMaterialObserver;
14
16
  }
@@ -7,6 +7,12 @@ export type PBMPointCloudShaderType = 'pointcloud';
7
7
  export type PBMAlphaMode = 'OPAQUE' | 'MASK' | 'BLEND';
8
8
  export type PBMTransition = 'BLACK' | 'SPREAD' | 'FADE';
9
9
  export type PBMFloorStyle = 'VISIBILITY' | 'OPACITY';
10
+ /**
11
+ * 屋顶样式(仅在 vertexMarks 为 true、即模型带屋顶标记时生效)
12
+ * - AUTO: 根据相机俯仰角渐进裁切屋顶(默认,原有行为)
13
+ * - HIDE: 始终隐藏屋顶,与视角无关
14
+ */
15
+ export type PBMRoofStyle = 'AUTO' | 'HIDE';
10
16
  export type PBMColorStyle = 'RGB' | 'ALTITUDE' | 'CONSTANT';
11
17
  export type PBMPointShape = 'SQUARE' | 'CIRCLE';
12
18
  export type PBMPointSize = 'FIXED' | 'ATTENUATION';
@@ -15,6 +21,165 @@ export declare class PBMUpdateable extends Subscribe<{
15
21
  "update": () => void;
16
22
  }> {
17
23
  }
24
+ /** PBMCustomNode 生效的材质类型 */
25
+ export type PBMCustomNodeTargetType = 'basic' | 'phong' | 'standard' | 'panoOnly' | 'pointcloud';
26
+ /**
27
+ * 全景分支中可供自定义节点使用的节点上下文。
28
+ * 这些字段是稳定的 PBM API,业务方不需要直接依赖内部 defines.ts 路径。
29
+ */
30
+ export interface PBMCustomNodePanoContext {
31
+ /** 全景点位在世界空间中的原点 */
32
+ origin: THREE.Node<'vec3'>;
33
+ /** 当前片元对应的全景采样方向 */
34
+ sampleDirection: THREE.Node<'vec3'>;
35
+ /** SDR 全景颜色 */
36
+ sdrColor: THREE.Node<'vec3'>;
37
+ /** HDR 处理后的全景颜色 */
38
+ hdrColor: THREE.Node<'vec3'>;
39
+ /** 全景深度可信度 */
40
+ depthTrust: THREE.Node<'float'>;
41
+ }
42
+ /**
43
+ * PBMCustomNode callback 可访问的内置 TSL 节点。
44
+ *
45
+ * 注意:这里暴露的是节点表达式,不是 CPU 侧的实时数值;它们会被编译进当前材质的 shader。
46
+ */
47
+ export interface PBMCustomNodeContext {
48
+ /** 当前片元的世界空间位置 */
49
+ positionWorld: THREE.Node<'vec3'>;
50
+ /** 当前片元的视图空间位置 */
51
+ positionView: THREE.Node<'vec3'>;
52
+ /** 相机朝向(世界/模型渲染使用的 varying) */
53
+ cameraDirection: THREE.Node<'vec3'>;
54
+ /** 当前渲染分辨率 */
55
+ resolution: THREE.Node<'vec2'>;
56
+ /** 当前像素比 */
57
+ pixelRatio: THREE.Node<'float'>;
58
+ /** 模型/全景渲染参数 */
59
+ progress: THREE.Node<'float'>;
60
+ maxDisplayBoost: THREE.Node<'float'>;
61
+ modelAlpha: THREE.Node<'float'>;
62
+ colorAlpha: THREE.Node<'float'>;
63
+ brightness: THREE.Node<'float'>;
64
+ colorSaturation: THREE.Node<'float'>;
65
+ colorBrightness: THREE.Node<'float'>;
66
+ constantColor: THREE.Node<'vec3'>;
67
+ /** 楼层和屋顶状态 */
68
+ floorIndex: THREE.Node<'float'>;
69
+ shownFloorIndex: THREE.Node<'float'>;
70
+ isCurrentFloor: THREE.Node<'bool'>;
71
+ floorOpacity: THREE.Node<'float'>;
72
+ isRoof: THREE.Node<'bool'>;
73
+ isRoofCameraCut: THREE.Node<'bool'>;
74
+ isRoofModelAlphaCut: THREE.Node<'bool'>;
75
+ modelBoundingMin: THREE.Node<'vec3'>;
76
+ modelBoundingMax: THREE.Node<'vec3'>;
77
+ /** 起始/结束全景点位的采样结果 */
78
+ pano0: PBMCustomNodePanoContext;
79
+ pano1: PBMCustomNodePanoContext;
80
+ /** 点云相关参数 */
81
+ pointScale: THREE.Node<'float'>;
82
+ pointMinPixel: THREE.Node<'float'>;
83
+ pointMaxPixel: THREE.Node<'float'>;
84
+ }
85
+ /**
86
+ * 节点插槽定义
87
+ *
88
+ * 每个插槽是一个函数,接收当前管线中的节点,返回修改后的节点。
89
+ * 用户在函数中可自由使用 TSL API(uniform、attribute、Fn、数学运算等)。
90
+ */
91
+ export interface PBMCustomNodeSlots {
92
+ /**
93
+ * 模型基础颜色修改(在全景混合之前)
94
+ * - Mesh 材质:在 colorMode 处理之后、pano 混合之前调用
95
+ * - PointCloud 材质:在实例颜色读取 + HSV 调整之后调用
96
+ *
97
+ * @param color - 当前模型颜色 (vec3, linear working space)
98
+ * @returns 修改后的颜色 (vec3)
99
+ */
100
+ modelColor?: (color: THREE.Node<'vec3'>, context: PBMCustomNodeContext) => THREE.Node<'vec3'>;
101
+ /**
102
+ * 全景颜色修改(在全景采样 + HDR + filter 之后,与模型混合之前)
103
+ * 仅在启用全景贴图时生效。
104
+ *
105
+ * @param panoColor - 当前全景采样颜色 (vec3)
106
+ * @returns 修改后的全景颜色 (vec3)
107
+ */
108
+ panoColor?: (panoColor: THREE.Node<'vec3'>, context: PBMCustomNodeContext) => THREE.Node<'vec3'>;
109
+ /**
110
+ * 最终输出颜色修改(在全部管线处理完成后、return 之前)
111
+ *
112
+ * @param color - 当前最终颜色 (vec4, 含 alpha)
113
+ * @returns 修改后的最终颜色 (vec4)
114
+ */
115
+ outputColor?: (color: THREE.Node<'vec4'>, context: PBMCustomNodeContext) => THREE.Node<'vec4'>;
116
+ /**
117
+ * 自定义 discard 逻辑(在管线 discard 判断之后额外追加)
118
+ * 返回的 bool 节点为 true 时丢弃该片元。
119
+ *
120
+ * @returns 是否丢弃 (bool node)
121
+ */
122
+ discard?: (context: PBMCustomNodeContext) => THREE.Node<'bool'>;
123
+ /**
124
+ * 顶点位置偏移(世界空间)
125
+ * 在标准顶点变换之后、投影之前应用。
126
+ * 注意:PointCloud 材质中此插槽作用于 instancePosition 展开后的 view 空间。
127
+ *
128
+ * @param position - 当前世界空间位置 (vec3)
129
+ * @returns 修改后的世界空间位置 (vec3)
130
+ */
131
+ vertexPosition?: (position: THREE.Node<'vec3'>, context: PBMCustomNodeContext) => THREE.Node<'vec3'>;
132
+ }
133
+ export interface PBMCustomNodeOptions {
134
+ /** 生效的材质类型 */
135
+ type: readonly PBMCustomNodeTargetType[];
136
+ /** 节点插槽 */
137
+ slots: PBMCustomNodeSlots;
138
+ /**
139
+ * 自定义标量 uniforms(可选)。
140
+ * 登记在这里的 uniform,写其 `.value` 时会自动触发所属材质刷新(见 watchUniforms)。
141
+ * 注意:uniformArray 的数据在 `.array`/元素上,`.value` setter 捕获不到,
142
+ * 不要放进这里;这类改动请在原地修改后显式调用 {@link PBMCustomNode.markNeedsUpdate}。
143
+ */
144
+ uniforms?: Record<string, THREE.UniformNode<any, any>>;
145
+ }
146
+ export declare class PBMCustomNode extends PBMUpdateable {
147
+ readonly id: string;
148
+ /** 生效的材质类型 */
149
+ readonly type: readonly PBMCustomNodeTargetType[];
150
+ /** TSL Node 插槽 */
151
+ readonly slots: PBMCustomNodeSlots;
152
+ /**
153
+ * 登记的标量 uniforms(仅 UniformNode)。写其 `.value` 会自动触发材质刷新。
154
+ * uniformArray 请勿放这里(.value setter 捕获不到),改用 markNeedsUpdate()。
155
+ */
156
+ readonly uniforms: Record<string, THREE.UniformNode<any, any>>;
157
+ constructor(options: PBMCustomNodeOptions);
158
+ /**
159
+ * 包装登记的 uniforms:写 `.value` 时自动 emit('update'),触发所属材质刷新
160
+ * (配合 Parameter 对 customNodes 的监听 + customNodesVersion 被监视属性)。
161
+ */
162
+ private watchUniforms;
163
+ /**
164
+ * 手动标记 uniform 已变化、需要把最新值刷新到所有相关材质。
165
+ * 用于原地修改 uniformArray / Vector 等 `.value` setter 捕获不到的场景。
166
+ */
167
+ markNeedsUpdate(): void;
168
+ /**
169
+ * 判断此 CustomNode 是否对指定材质类型生效
170
+ */
171
+ appliesTo(materialType: PBMCustomNodeTargetType): boolean;
172
+ /**
173
+ * 生成用于 customProgramCacheKey 的标识字符串
174
+ * 包含 id + 目标材质类型 + 启用的 slot 名称。
175
+ */
176
+ get cacheKey(): string;
177
+ }
178
+ /**
179
+ * 生成 customNodes 数组的 customProgramCacheKey 片段。
180
+ * 在 NodeMaterial 的 customProgramCacheKey() 中调用。
181
+ */
182
+ export declare function customNodesCacheKey(customNodes: readonly PBMCustomNode[] | undefined): string;
18
183
  export interface PBMPanoFilterValue {
19
184
  saturationSaturationBias: number;
20
185
  contrastContrastBias: number;
@@ -152,6 +317,7 @@ export interface IPBMMaterial {
152
317
  floorIndex: number;
153
318
  shownFloorIndex: number;
154
319
  floorStyle: string;
320
+ roofStyle: PBMRoofStyle;
155
321
  brightness: number;
156
322
  colorSaturation: number;
157
323
  colorBrightness: number;
@@ -160,6 +326,15 @@ export interface IPBMMaterial {
160
326
  maxDisplayBoost: number;
161
327
  modelBoundingMin: THREE.Vector3;
162
328
  modelBoundingMax: THREE.Vector3;
329
+ /** 自定义节点列表(TSL Node 级别的材质扩展) */
330
+ customNodes: readonly PBMCustomNode[];
331
+ /**
332
+ * 自定义节点 uniform 的“脏计数器”。
333
+ * 被 NodeMaterialObserver 监视(见 pbmProperties):任一 customNode 的 uniform 变化时,
334
+ * Parameter 会 ++ 此值,从而让 observer 判定材质需要刷新、把最新 uniform 上传到所有材质。
335
+ * 该值不进入 shader,仅作刷新触发用。
336
+ */
337
+ customNodesVersion: number;
163
338
  }
164
339
  export type PBMPropertyKey = keyof Omit<IPBMMaterial, 'isPBMMaterial'>;
165
340
  export declare const pbmProperties: PBMPropertyKey[];
@@ -47,7 +47,8 @@ export declare const colorSaturation: THREE.Node<"float">;
47
47
  export declare const colorBrightness: THREE.Node<"float">;
48
48
  export declare const isCurrentFloor: THREE.VarNode<"bool">;
49
49
  export declare const isRoof: THREE.VarNode<"bool">;
50
- export declare const isRoofCut: THREE.VarNode<"bool">;
50
+ export declare const isRoofCameraCut: THREE.VarNode<"bool">;
51
+ export declare const isRoofModelAlphaCut: THREE.VarNode<"bool">;
51
52
  export declare const pano0Origin: THREE.VarNode<"vec3">;
52
53
  export declare const pano0SampleDirection: THREE.VarNode<"vec3">;
53
54
  export declare const pano1Origin: THREE.VarNode<"vec3">;
@@ -7,8 +7,7 @@
7
7
  * 通用工具函数(rgb2hsv, hsv2rgb, resolutionUniform, pixelRatioUniform)在 utils.ts 中。
8
8
  */
9
9
  import * as THREE from 'three/webgpu';
10
- import type { PBMTransition, PBMColorStyle } from '../pbmMaterial';
11
- import { IPBMMaterial } from '../pbmMaterial';
10
+ import type { PBMTransition, PBMColorStyle, PBMCustomNodeTargetType, IPBMMaterial } from '../pbmMaterial';
12
11
  export interface SetupPanoOutputOptions {
13
12
  useVertexMark: boolean;
14
13
  useFloorStyleVisibility: boolean;
@@ -20,7 +19,12 @@ export interface SetupPanoOutputOptions {
20
19
  colorMode: PBMColorStyle;
21
20
  transition: PBMTransition;
22
21
  }
23
- export declare function setupMeshOutput(material: THREE.NodeMaterial & IPBMMaterial, builder: THREE.NodeBuilder): void;
24
- export declare function setupMeshPanoOnlyOutput(material: THREE.NodeMaterial & IPBMMaterial, builder: THREE.NodeBuilder): void;
22
+ export declare function setupMeshOutput(material: THREE.NodeMaterial & IPBMMaterial, builder: THREE.NodeBuilder, materialType: PBMCustomNodeTargetType): void;
23
+ /**
24
+ * 在 NodeMaterial 已完成 morph/skinning/instance 等标准顶点处理后,
25
+ * 对世界空间位置应用 custom vertexPosition,再转换回裁剪空间。
26
+ */
27
+ export declare function setupMeshVertex(material: THREE.NodeMaterial & IPBMMaterial, materialType: PBMCustomNodeTargetType, baseVertex: THREE.Node): THREE.Node;
28
+ export declare function setupMeshPanoOnlyOutput(material: THREE.NodeMaterial & IPBMMaterial, builder: THREE.NodeBuilder, materialType: PBMCustomNodeTargetType): void;
25
29
  export declare function setupPointCloudVertex(material: THREE.NodeMaterial & THREE.Material & IPBMMaterial, builder: THREE.NodeBuilder): THREE.Node;
26
30
  export declare function setupPointCloudOutput(material: THREE.NodeMaterial & IPBMMaterial, builder: THREE.NodeBuilder): void;
@@ -1,5 +1,5 @@
1
1
  import * as THREE from 'three/webgpu';
2
- import { type PBMPanoPicture, type PBMPanoDepth, type PBMRefinedScreen, type PBMTransition, type PBMFloorStyle, type PBMColorStyle, type PBMClipperParameter, type PBMPanoFilter, type PBMPointShape, type PBMPointSize, type PBMPointBack } from './materials/pbmMaterial';
2
+ import { type PBMPanoPicture, type PBMPanoDepth, type PBMRefinedScreen, type PBMTransition, type PBMFloorStyle, type PBMRoofStyle, type PBMColorStyle, type PBMClipperParameter, type PBMPanoFilter, type PBMPointShape, type PBMPointSize, type PBMPointBack, type PBMCustomNode } from './materials/pbmMaterial';
3
3
  import type { TileRequestOrder } from './tile3d/types';
4
4
  import type { Camera } from '../core/camera';
5
5
  export interface ParameterMaterialValue {
@@ -31,6 +31,8 @@ export interface ParameterMaterialValue {
31
31
  opacity: number;
32
32
  /** 楼层样式 */
33
33
  floorStyle: PBMFloorStyle;
34
+ /** 屋顶样式(仅在 vertexMarks 为 true 时生效;AUTO 按视角渐切,HIDE 始终隐藏) */
35
+ roofStyle: PBMRoofStyle;
34
36
  /** 颜色样式 */
35
37
  colorStyle: PBMColorStyle;
36
38
  /** 模型颜色*/
@@ -78,6 +80,13 @@ export interface ParameterMaterialValue {
78
80
  /** 3dgs球谐阶数*/
79
81
  gaussianSplattingSHDegree: number;
80
82
  maxDisplayBoost: number;
83
+ /** 自定义节点列表(TSL Node 级别的材质扩展) */
84
+ customNodes: readonly PBMCustomNode[];
85
+ /**
86
+ * 自定义节点 uniform 的脏计数器(内部维护,无需手动设置)。
87
+ * 任一 customNode emit('update') 时自动递增,用于触发材质刷新。
88
+ */
89
+ customNodesVersion: number;
81
90
  }
82
91
  export interface ParameterTilesetValue {
83
92
  /** 模型显示最小细化层级 */
@@ -130,6 +139,11 @@ export declare class Parameter {
130
139
  resolveValue<K extends keyof ParameterValue>(name: K, ...values: Partial<ParameterValue>[]): ParameterValue[K];
131
140
  resolveValue(...baseValues: Partial<ParameterValue>[]): ResolvedParameterValue;
132
141
  private assignValue;
142
+ /**
143
+ * 递增 customNodesVersion 并 bump 参数版本,促使模型重新下发参数、
144
+ * 令 NodeMaterialObserver 检测到 customNodesVersion 变化而刷新(上传 customNode 的 uniform)。
145
+ */
146
+ private bumpCustomNodesVersion;
133
147
  set<T extends keyof ParameterValue>(name: T, value: ParameterValue[T]): this;
134
148
  set(values: Partial<ParameterValue>): this;
135
149
  reset(...names: (keyof ParameterValue)[]): this;
@@ -22,9 +22,9 @@ export declare class KTX2 {
22
22
  setTranscoderPath(transcoderPath: string): void;
23
23
  detectSupport(renderer: THREE.WebGPURenderer): this;
24
24
  init(): Promise<void>;
25
- parse(buffer: ArrayBuffer): Promise<THREE.CompressedTexture>;
26
- _createTextureFrom(transcodeResult: any): Promise<THREE.CompressedTexture<THREE.CompressedTextureImageData>>;
27
- _createTexture(buffers: ArrayBuffer[]): Promise<THREE.CompressedTexture<THREE.CompressedTextureImageData>>;
25
+ parse(buffer: ArrayBuffer): Promise<THREE.Texture>;
26
+ _createTextureFrom(transcodeResult: any): Promise<THREE.Texture<unknown>>;
27
+ _createTexture(buffers: ArrayBuffer[]): Promise<THREE.Texture<unknown>>;
28
28
  dispose(): this;
29
29
  }
30
30
  export declare const ktx2: KTX2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/five-webgpu",
3
- "version": "1.0.0-alpha.3",
3
+ "version": "1.0.0-alpha.5",
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: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
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: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
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: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
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: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/umd/five-react.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/8/11
5
- * Version: 1.0.0-alpha.3
4
+ * Generated: 8/31/2026
5
+ * Version: 1.0.0-alpha.5
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021