potree-core 2.0.11 → 2.0.12

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.
@@ -0,0 +1,25 @@
1
+ import { Matrix4, RawShaderMaterial, Texture } from 'three';
2
+ import { IUniform } from './types';
3
+ export interface IEyeDomeLightingMaterialUniforms {
4
+ [name: string]: IUniform<any>;
5
+ screenWidth: IUniform<number>;
6
+ screenHeight: IUniform<number>;
7
+ edlStrength: IUniform<number>;
8
+ radius: IUniform<number>;
9
+ opacity: IUniform<number>;
10
+ neighbours: IUniform<Float32Array>;
11
+ uProj: IUniform<Float32Array>;
12
+ colorMap: IUniform<Texture | null>;
13
+ }
14
+ export declare class EyeDomeLightingMaterial extends RawShaderMaterial {
15
+ uniforms: IEyeDomeLightingMaterialUniforms;
16
+ private _neighbourCount;
17
+ private neighboursArray;
18
+ constructor();
19
+ get neighbourCount(): number;
20
+ set neighbourCount(value: number);
21
+ private initializeNeighboursArray;
22
+ private getDefines;
23
+ updateShaderSource(): void;
24
+ setProjectionMatrix(projectionMatrix: Matrix4): void;
25
+ }
@@ -1,6 +1,7 @@
1
1
  export * from './blur-material';
2
2
  export * from './clipping';
3
3
  export * from './enums';
4
+ export * from './eye-dome-lighting-material';
4
5
  export * from './point-cloud-material';
5
6
  export * from './texture-generation';
6
7
  export * from './types';
@@ -0,0 +1,25 @@
1
+ import { Camera, Object3D, WebGLRenderer } from 'three';
2
+ import { PointCloudOctree } from '../point-cloud-octree';
3
+ export type EDLPassParams = {
4
+ renderer: WebGLRenderer;
5
+ scene: Object3D;
6
+ camera: Camera;
7
+ pointClouds?: PointCloudOctree[];
8
+ pointCloudLayer?: number;
9
+ };
10
+ export declare class EDLPass {
11
+ edlStrength: number;
12
+ radius: number;
13
+ opacity: number;
14
+ neighbourCount: number;
15
+ private rtEDL;
16
+ private rtTypeChecked;
17
+ private edlMaterial;
18
+ private screenPass;
19
+ private size;
20
+ constructor();
21
+ private ensureRenderTargetType;
22
+ dispose(): void;
23
+ private resizeToRenderer;
24
+ render(params: EDLPassParams): void;
25
+ }
@@ -0,0 +1,83 @@
1
+ import { Camera, Object3D, WebGLRenderer } from 'three';
2
+ import { PointCloudOctree } from '../point-cloud-octree';
3
+ import { Potree } from '../potree';
4
+ import { IVisibilityUpdateResult } from '../types';
5
+ /**
6
+ * Configuration for Eye-Dome Lighting (EDL) rendering.
7
+ *
8
+ * Note: EDL is a multi-pass / post-process effect (render default layer 0 (non-pointcloud), render point clouds to an offscreen target,
9
+ * then composite). Therefore it cannot be expressed as a single `renderer.render(scene, camera)` call.
10
+ */
11
+ export type PotreeRendererEDLOptions = {
12
+ enabled: boolean;
13
+ /** Defaults to 1 so layer 0 can remain reserved for non-pointcloud content in the first pass. */
14
+ pointCloudLayer?: number;
15
+ strength?: number;
16
+ radius?: number;
17
+ opacity?: number;
18
+ neighbourCount?: number;
19
+ };
20
+ /**
21
+ * Options for {@link PotreeRenderer}.
22
+ *
23
+ * This is intentionally additive and does not change existing Potree APIs.
24
+ */
25
+ export type PotreeRendererOptions = {
26
+ edl?: PotreeRendererEDLOptions;
27
+ };
28
+ /**
29
+ * Parameters required to render a frame.
30
+ */
31
+ export type PotreeRendererRenderParams = {
32
+ renderer: WebGLRenderer;
33
+ scene: Object3D;
34
+ camera: Camera;
35
+ pointClouds?: PointCloudOctree[];
36
+ };
37
+ /**
38
+ * Thin helper that renders Potree point clouds.
39
+ *
40
+ * Why this exists:
41
+ * - Without EDL, users typically do: `potree.updatePointClouds(...)` then `renderer.render(scene, camera)`.
42
+ * - With EDL enabled, users previously had to manually:
43
+ * 1) keep point-cloud objects on a dedicated layer, and
44
+ * 2) run `EDLPass.render(...)` instead of `renderer.render(...)`.
45
+ *
46
+ * `PotreeRenderer` keeps that wiring in one place while preserving backward compatibility.
47
+ */
48
+ export declare class PotreeRenderer {
49
+ private edlPass;
50
+ private edlOptions;
51
+ private lastPointClouds;
52
+ private overriddenMaterials;
53
+ private overriddenLayerMasks;
54
+ constructor(options?: PotreeRendererOptions);
55
+ /** Releases internally owned GPU resources (render targets). */
56
+ dispose(): void;
57
+ /**
58
+ * Enables/disables EDL and updates EDL parameters.
59
+ *
60
+ * This method is safe to call at runtime (e.g. toggling EDL on/off).
61
+ */
62
+ setEDL(options: PotreeRendererEDLOptions): void;
63
+ private setLayerMaskRecursive;
64
+ /**
65
+ * Ensures all point-cloud objects (including newly created child nodes) are on the provided layer.
66
+ * Side effect: overwrites `Object3D.layers` for the point cloud subtree.
67
+ *
68
+ * When EDL is enabled, layer separation is required so we can render:
69
+ * - non-pointcloud content first (layer 0), then
70
+ * - point clouds on a dedicated layer into an offscreen target.
71
+ */
72
+ syncPointCloudLayers(pointClouds: PointCloudOctree[], layer: number): void;
73
+ private applyEDLState;
74
+ /**
75
+ * Renders a frame.
76
+ *
77
+ * - EDL disabled: calls `renderer.render(scene, camera)`.
78
+ * - EDL enabled: runs the EDL multi-pass pipeline via {@link EDLPass}.
79
+ */
80
+ render(params: PotreeRendererRenderParams): void;
81
+ /** Convenience helper: `updatePointClouds()` followed by {@link render}. */
82
+ updateAndRender(potree: Potree, pointClouds: PointCloudOctree[], camera: Camera, renderer: WebGLRenderer, scene: Object3D): IVisibilityUpdateResult;
83
+ }
@@ -0,0 +1,11 @@
1
+ import { RawShaderMaterial, WebGLRenderer, WebGLRenderTarget } from 'three';
2
+ export declare class ScreenPass {
3
+ private scene;
4
+ private camera;
5
+ private quad;
6
+ private geometry;
7
+ private placeholderMaterial;
8
+ constructor();
9
+ dispose(): void;
10
+ render(renderer: WebGLRenderer, material: RawShaderMaterial, target?: WebGLRenderTarget | null): void;
11
+ }
@@ -0,0 +1,16 @@
1
+ export class BinaryHeap<T>
2
+ {
3
+ constructor(scoreFunction: (node: T)=> number);
4
+
5
+ push(node: T): void;
6
+
7
+ pop(): T | undefined;
8
+
9
+ remove(node: T): void;
10
+
11
+ size(): number;
12
+
13
+ bubbleUp(n: number): void;
14
+
15
+ sinkDown(n: number): void;
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "potree-core",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "description": "Potree wrapper for three.js applications",
5
5
  "repository": {
6
6
  "type": "git",