@takram/three-geospatial 0.8.0 → 0.9.0
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/CHANGELOG.md +23 -0
- package/build/index.cjs +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.js +580 -598
- package/build/index.js.map +1 -1
- package/build/r3f.cjs +1 -1
- package/build/r3f.js +1 -1
- package/build/shared2.cjs +1 -1
- package/build/shared2.cjs.map +1 -1
- package/build/shared2.js +27 -212
- package/build/shared2.js.map +1 -1
- package/build/shared3.cjs +1 -1
- package/build/shared3.cjs.map +1 -1
- package/build/shared3.js +213 -8
- package/build/shared3.js.map +1 -1
- package/build/webgpu.cjs +6 -1
- package/build/webgpu.cjs.map +1 -1
- package/build/webgpu.js +993 -807
- package/build/webgpu.js.map +1 -1
- package/package.json +1 -1
- package/src/PointOfView.ts +12 -5
- package/src/STBNLoader.ts +41 -19
- package/src/webgpu/CascadedShadowMapsNode.ts +48 -0
- package/src/webgpu/DualMipmapFilterNode.ts +8 -4
- package/src/webgpu/FilterNode.ts +3 -2
- package/src/webgpu/FnLayout.ts +17 -16
- package/src/webgpu/HighpVelocityNode.ts +2 -2
- package/src/webgpu/LensFlareNode.ts +1 -1
- package/src/webgpu/LensGlareNode.ts +26 -26
- package/src/webgpu/LensHaloNode.ts +2 -1
- package/src/webgpu/STBNTextureNode.ts +58 -0
- package/src/webgpu/ScreenSpaceShadowNode.ts +30 -35
- package/src/webgpu/SeparableFilterNode.ts +8 -5
- package/src/webgpu/SingleFilterNode.ts +5 -2
- package/src/webgpu/StorageTexture3DNode.ts +30 -0
- package/src/webgpu/TemporalAntialiasNode.ts +50 -31
- package/src/webgpu/accessors.ts +75 -36
- package/src/webgpu/debug.ts +38 -47
- package/src/webgpu/events.ts +18 -0
- package/src/webgpu/index.ts +4 -0
- package/src/webgpu/math.ts +116 -15
- package/src/webgpu/sampling.ts +39 -5
- package/src/webgpu/transformations.ts +71 -44
- package/types/PointOfView.d.ts +1 -1
- package/types/STBNLoader.d.ts +3 -4
- package/types/webgpu/CascadedShadowMapsNode.d.ts +13 -0
- package/types/webgpu/DualMipmapFilterNode.d.ts +1 -2
- package/types/webgpu/FnLayout.d.ts +4 -4
- package/types/webgpu/LensGlareNode.d.ts +1 -1
- package/types/webgpu/STBNTextureNode.d.ts +9 -0
- package/types/webgpu/ScreenSpaceShadowNode.d.ts +2 -4
- package/types/webgpu/SeparableFilterNode.d.ts +2 -3
- package/types/webgpu/SingleFilterNode.d.ts +1 -2
- package/types/webgpu/StorageTexture3DNode.d.ts +9 -0
- package/types/webgpu/TemporalAntialiasNode.d.ts +1 -1
- package/types/webgpu/accessors.d.ts +9 -8
- package/types/webgpu/debug.d.ts +4 -3
- package/types/webgpu/events.d.ts +3 -0
- package/types/webgpu/index.d.ts +4 -0
- package/types/webgpu/math.d.ts +3 -0
- package/types/webgpu/sampling.d.ts +2 -1
- package/types/webgpu/transformations.d.ts +7 -10
package/src/webgpu/sampling.ts
CHANGED
|
@@ -1,16 +1,50 @@
|
|
|
1
|
-
import { add, sub,
|
|
2
|
-
import type { TextureNode } from 'three/webgpu'
|
|
1
|
+
import { add, ivec2, ivec4, sub, uv, vec2, vec4 } from 'three/tsl'
|
|
2
|
+
import type { ConstNode, TextureNode } from 'three/webgpu'
|
|
3
3
|
|
|
4
|
+
import { reinterpretType } from '../types'
|
|
4
5
|
import { FnVar } from './FnVar'
|
|
5
6
|
import type { Node } from './node'
|
|
6
7
|
|
|
8
|
+
const components = ['x', 'y', 'z', 'w'] as const
|
|
9
|
+
|
|
10
|
+
// WORKAROUND: TextureNode doesn't have gather() yet.
|
|
11
|
+
// See: https://www.w3.org/TR/WGSL/#texturegather
|
|
12
|
+
export const textureGather = /*#__PURE__*/ FnVar(
|
|
13
|
+
(
|
|
14
|
+
textureNode: TextureNode,
|
|
15
|
+
uvNode: Node<'vec2'>,
|
|
16
|
+
component = 0
|
|
17
|
+
): Node<'vec4'> => {
|
|
18
|
+
let componentValue
|
|
19
|
+
if (typeof component === 'number') {
|
|
20
|
+
componentValue = component
|
|
21
|
+
} else if ((component as any)?.isConstNode === true) {
|
|
22
|
+
reinterpretType<ConstNode<number>>(component)
|
|
23
|
+
componentValue = component.value
|
|
24
|
+
} else {
|
|
25
|
+
throw new Error('Component must be a constant.')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const size = textureNode.size()
|
|
29
|
+
const coord = ivec2(uvNode.mul(size).sub(0.5).floor()).toConst()
|
|
30
|
+
const i = ivec4(coord, coord.add(1)).toConst()
|
|
31
|
+
const c = components[componentValue] // element() fails for depth textures
|
|
32
|
+
return vec4(
|
|
33
|
+
textureNode.load(i.xw)[c], // min, max
|
|
34
|
+
textureNode.load(i.zw)[c], // max, max
|
|
35
|
+
textureNode.load(i.zy)[c], // max, min
|
|
36
|
+
textureNode.load(i.xy)[c] // min, min
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
|
|
7
41
|
// 9-taps version of Catmull-Rom sampling.
|
|
8
42
|
// Reference: https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1
|
|
9
43
|
export const textureCatmullRom = /*#__PURE__*/ FnVar(
|
|
10
|
-
(textureNode: TextureNode,
|
|
11
|
-
const size = vec2(
|
|
44
|
+
(textureNode: TextureNode, uvNode: Node<'vec2'> = uv()): Node<'vec4'> => {
|
|
45
|
+
const size = vec2(textureNode.size())
|
|
12
46
|
const texelSize = size.reciprocal()
|
|
13
|
-
const position =
|
|
47
|
+
const position = uvNode.mul(size)
|
|
14
48
|
const centerPosition = position.sub(0.5).floor().add(0.5)
|
|
15
49
|
|
|
16
50
|
// Compute the fractional offset from our starting texel to our original
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { Camera } from 'three'
|
|
1
2
|
import {
|
|
3
|
+
cameraFar as cameraFarTSL,
|
|
4
|
+
cameraNear as cameraNearTSL,
|
|
2
5
|
cos,
|
|
3
6
|
int,
|
|
4
7
|
logarithmicDepthToViewZ,
|
|
@@ -14,44 +17,54 @@ import {
|
|
|
14
17
|
viewZToPerspectiveDepth
|
|
15
18
|
} from 'three/tsl'
|
|
16
19
|
|
|
20
|
+
import { cameraFar, cameraNear } from './accessors'
|
|
21
|
+
import { FnLayout } from './FnLayout'
|
|
22
|
+
import { FnVar } from './FnVar'
|
|
17
23
|
import type { Node } from './node'
|
|
18
24
|
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
export const depthToViewZ = /*#__PURE__*/ FnVar(
|
|
26
|
+
(
|
|
27
|
+
depth: Node<'float'>,
|
|
28
|
+
camera?: Camera | null,
|
|
29
|
+
near?: Node<'float'> | null,
|
|
30
|
+
far?: Node<'float'> | null
|
|
31
|
+
) =>
|
|
32
|
+
(builder): Node<'float'> => {
|
|
33
|
+
near ??= cameraNear(camera)
|
|
34
|
+
far ??= cameraFar(camera)
|
|
35
|
+
const perspective = camera?.isPerspectiveCamera === true
|
|
36
|
+
const logarithmic = builder.renderer.logarithmicDepthBuffer
|
|
37
|
+
return logarithmic
|
|
38
|
+
? logarithmicDepthToViewZ(depth, near, far)
|
|
39
|
+
: perspective
|
|
40
|
+
? perspectiveDepthToViewZ(depth, near, far)
|
|
41
|
+
: orthographicDepthToViewZ(depth, near, far)
|
|
42
|
+
}
|
|
43
|
+
)
|
|
36
44
|
|
|
37
45
|
export const logarithmicToPerspectiveDepth = (
|
|
38
46
|
depth: Node<'float'>,
|
|
39
|
-
near
|
|
40
|
-
far
|
|
47
|
+
near?: Node<'float'> | null,
|
|
48
|
+
far?: Node<'float'> | null
|
|
41
49
|
): Node<'float'> => {
|
|
50
|
+
near ??= cameraNearTSL
|
|
51
|
+
far ??= cameraFarTSL
|
|
42
52
|
const viewZ = logarithmicDepthToViewZ(depth, near, far)
|
|
43
53
|
return viewZToPerspectiveDepth(viewZ, near, far)
|
|
44
54
|
}
|
|
45
55
|
|
|
46
56
|
export const perspectiveToLogarithmicDepth = (
|
|
47
57
|
depth: Node<'float'>,
|
|
48
|
-
near
|
|
49
|
-
far
|
|
58
|
+
near?: Node<'float'> | null,
|
|
59
|
+
far?: Node<'float'> | null
|
|
50
60
|
): Node<'float'> => {
|
|
61
|
+
near ??= cameraNearTSL
|
|
62
|
+
far ??= cameraFarTSL
|
|
51
63
|
const viewZ = perspectiveDepthToViewZ(depth, near, far)
|
|
52
64
|
return viewZToLogarithmicDepth(viewZ, near, far)
|
|
53
65
|
}
|
|
54
66
|
|
|
67
|
+
// TODO: Reconsider interface
|
|
55
68
|
export const screenToPositionView = (
|
|
56
69
|
uv: Node<'vec2'>,
|
|
57
70
|
depth: Node<'float'>,
|
|
@@ -68,34 +81,48 @@ export const screenToPositionView = (
|
|
|
68
81
|
|
|
69
82
|
// A fifth-order polynomial approximation of Turbo color map.
|
|
70
83
|
// See: https://observablehq.com/@mbostock/turbo
|
|
71
|
-
const turboCoeffs = [
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
const turboCoeffs: ReadonlyArray<[number, number, number]> = [
|
|
85
|
+
[58.1375, 2.7747, 26.8183],
|
|
86
|
+
[-150.5666, 4.2109, -88.5066],
|
|
87
|
+
[130.5887, -14.0195, 109.0745],
|
|
88
|
+
[-42.3277, 4.8052, -60.1097],
|
|
89
|
+
[4.5974, 2.1856, 12.5925],
|
|
90
|
+
[0.1357, 0.0914, 0.1067]
|
|
78
91
|
]
|
|
79
92
|
|
|
80
|
-
export const turbo = (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
93
|
+
export const turbo = /*#__PURE__*/ FnLayout({
|
|
94
|
+
name: 'turbo',
|
|
95
|
+
type: 'vec3',
|
|
96
|
+
inputs: [{ name: 'x', type: 'float' }]
|
|
97
|
+
})(([x]) => {
|
|
98
|
+
const y = vec3(...turboCoeffs[0]).toVar()
|
|
99
|
+
for (let i = 1; i < turboCoeffs.length; ++i) {
|
|
100
|
+
y.assign(vec3(...turboCoeffs[i]).add(x.mul(y)))
|
|
101
|
+
}
|
|
102
|
+
return y
|
|
103
|
+
})
|
|
85
104
|
|
|
86
|
-
export const depthToColor = (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
export const depthToColor = FnVar(
|
|
106
|
+
(
|
|
107
|
+
depth: Node<'float'>,
|
|
108
|
+
camera?: Camera,
|
|
109
|
+
near?: Node<'float'>,
|
|
110
|
+
far?: Node<'float'>
|
|
111
|
+
): Node<'vec3'> => {
|
|
112
|
+
near ??= cameraNear(camera)
|
|
113
|
+
far ??= cameraFar(camera)
|
|
114
|
+
const viewZ = depthToViewZ(depth, camera, near, far)
|
|
115
|
+
return turbo(viewZToLogarithmicDepth(viewZ, near, far))
|
|
116
|
+
}
|
|
117
|
+
)
|
|
95
118
|
|
|
96
|
-
export const equirectToDirectionWorld = (
|
|
119
|
+
export const equirectToDirectionWorld = /*#__PURE__*/ FnLayout({
|
|
120
|
+
name: 'equirectToDirectionWorld',
|
|
121
|
+
type: 'vec3',
|
|
122
|
+
inputs: [{ name: 'uv', type: 'vec2' }]
|
|
123
|
+
})(([uv]) => {
|
|
97
124
|
const lambda = sub(0.5, uv.x).mul(PI2)
|
|
98
125
|
const phi = sub(uv.y, 0.5).mul(PI)
|
|
99
126
|
const cosPhi = cos(phi)
|
|
100
127
|
return vec3(cosPhi.mul(cos(lambda)), sin(phi), cosPhi.mul(sin(lambda)))
|
|
101
|
-
}
|
|
128
|
+
})
|
package/types/PointOfView.d.ts
CHANGED
|
@@ -15,5 +15,5 @@ export declare class PointOfView {
|
|
|
15
15
|
copy(other: PointOfView): this;
|
|
16
16
|
equals(other: PointOfView): boolean;
|
|
17
17
|
decompose(target: Vector3, eye: Vector3, quaternion: Quaternion, up?: Vector3, ellipsoid?: Ellipsoid): void;
|
|
18
|
-
setFromCamera(camera: Camera, ellipsoid?: Ellipsoid): this | undefined;
|
|
18
|
+
setFromCamera(camera: Camera, ellipsoid?: Ellipsoid, target?: Vector3): this | undefined;
|
|
19
19
|
}
|
package/types/STBNLoader.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Data3DTexture,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
constructor(manager?: LoadingManager);
|
|
1
|
+
import { Data3DTexture, Loader } from 'three';
|
|
2
|
+
export declare class STBNLoader extends Loader<Data3DTexture> {
|
|
3
|
+
load(url: string, onLoad?: (data: Data3DTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (error: unknown) => void): Data3DTexture;
|
|
5
4
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DirectionalLight, PerspectiveCamera, Vector2 } from 'three';
|
|
2
|
+
import { CSMShadowNode } from 'three/examples/jsm/csm/CSMShadowNode.js';
|
|
3
|
+
import { NodeFrame } from 'three/webgpu';
|
|
4
|
+
declare module 'three/examples/jsm/csm/CSMShadowNode.js' {
|
|
5
|
+
interface CSMShadowNode {
|
|
6
|
+
_cascades: Vector2[];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare class CascadedShadowMapsNode extends CSMShadowNode {
|
|
10
|
+
camera: PerspectiveCamera;
|
|
11
|
+
light: DirectionalLight;
|
|
12
|
+
updateBefore(frame: NodeFrame): void;
|
|
13
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Vector2 } from 'three';
|
|
2
1
|
import { NodeBuilder, NodeFrame, TextureNode } from 'three/webgpu';
|
|
3
2
|
import { FilterNode } from './FilterNode';
|
|
4
3
|
import { Node } from './node';
|
|
@@ -9,7 +8,7 @@ export declare abstract class DualMipmapFilterNode extends FilterNode {
|
|
|
9
8
|
private readonly upsampleMaterial;
|
|
10
9
|
private readonly mesh;
|
|
11
10
|
private rendererState?;
|
|
12
|
-
protected readonly inputTexelSize: import('three/webgpu').UniformNode<Vector2>;
|
|
11
|
+
protected readonly inputTexelSize: import('three/webgpu').UniformNode<import('three').Vector2>;
|
|
13
12
|
protected readonly downsampleNode: TextureNode;
|
|
14
13
|
constructor(inputNode: TextureNode | null | undefined, levels: number);
|
|
15
14
|
setSize(width: number, height: number): this;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ProxiedTuple, ShaderCallNodeInternal, ShaderNodeFn
|
|
2
|
-
import { NodeBuilder
|
|
1
|
+
import { ProxiedTuple, ShaderCallNodeInternal, ShaderNodeFn } from 'three/src/nodes/TSL.js';
|
|
2
|
+
import { NodeBuilder } from 'three/webgpu';
|
|
3
3
|
import { Node, NodeType } from './node';
|
|
4
|
-
type FnLayoutType = NodeType |
|
|
4
|
+
type FnLayoutType = NodeType | (new (...args: any[]) => any) | ((...args: any[]) => any);
|
|
5
5
|
export interface FnLayoutInput<T extends FnLayoutType = FnLayoutType> {
|
|
6
6
|
name: string;
|
|
7
7
|
type: T;
|
|
@@ -12,7 +12,7 @@ export interface FnLayout<T extends FnLayoutType, Inputs extends readonly FnLayo
|
|
|
12
12
|
type: T;
|
|
13
13
|
inputs?: Inputs;
|
|
14
14
|
}
|
|
15
|
-
type InferNodeObject<T extends FnLayoutType> = T extends NodeType ? Node<T> : T extends
|
|
15
|
+
type InferNodeObject<T extends FnLayoutType> = T extends NodeType ? Node<T> : T extends new (...args: any[]) => any ? InstanceType<T> : T extends (...args: any[]) => any ? ReturnType<T> : never;
|
|
16
16
|
type InferNodeObjects<Inputs extends readonly FnLayoutInput[]> = {
|
|
17
17
|
[K in keyof Inputs]: Inputs[K] extends FnLayoutInput<infer T> ? InferNodeObject<T> : never;
|
|
18
18
|
};
|
|
@@ -10,7 +10,7 @@ export declare class LensGlareNode extends FilterNode {
|
|
|
10
10
|
sizeScale: import('three/webgpu').UniformNode<Vector2>;
|
|
11
11
|
luminanceThreshold: import('three/webgpu').UniformNode<number>;
|
|
12
12
|
private computeNode?;
|
|
13
|
-
private readonly
|
|
13
|
+
private readonly indirectBuffer;
|
|
14
14
|
private instanceBuffer;
|
|
15
15
|
private readonly renderTarget;
|
|
16
16
|
private readonly material;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Texture3DNode, NodeBuilder } from 'three/webgpu';
|
|
2
|
+
export declare class STBNTextureNode extends Texture3DNode {
|
|
3
|
+
url: string;
|
|
4
|
+
constructor();
|
|
5
|
+
customCacheKey(): number;
|
|
6
|
+
setup(builder: NodeBuilder): unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare const stbnTexture: STBNTextureNode;
|
|
9
|
+
export declare const stbn: import('three/src/nodes/TSL.js').ShaderCallNodeInternal;
|
|
@@ -14,21 +14,19 @@ export declare class ScreenSpaceShadowNode extends TempNode {
|
|
|
14
14
|
shadowContrast: import('three/webgpu').UniformNode<number>;
|
|
15
15
|
shadowIntensity: import('three/webgpu').UniformNode<number>;
|
|
16
16
|
bilinearThreshold: import('three/webgpu').UniformNode<number>;
|
|
17
|
-
nearDepth: import('three/webgpu').UniformNode<number>;
|
|
18
|
-
farDepth: import('three/webgpu').UniformNode<number>;
|
|
19
17
|
private readonly lightCoordinate;
|
|
20
18
|
private readonly dispatchOffset;
|
|
21
19
|
private readonly dispatchIndex;
|
|
22
20
|
private readonly dispatches;
|
|
23
21
|
private dispatchCount;
|
|
24
|
-
private computeNode
|
|
22
|
+
private readonly computeNode;
|
|
25
23
|
constructor(depthNode: TextureNode, camera: Camera, mainLight: DirectionalLight);
|
|
26
24
|
customCacheKey(): number;
|
|
27
25
|
getTextureNode(): TextureNode;
|
|
28
26
|
setSize(width: number, height: number): this;
|
|
29
27
|
updateBefore(frame: NodeFrame): void;
|
|
30
28
|
private updateDispatchList;
|
|
31
|
-
private
|
|
29
|
+
private createComputeNode;
|
|
32
30
|
setup(builder: NodeBuilder): unknown;
|
|
33
31
|
dispose(): void;
|
|
34
32
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Vector2 } from 'three';
|
|
2
1
|
import { NodeBuilder, NodeFrame, TextureNode } from 'three/webgpu';
|
|
3
2
|
import { FilterNode } from './FilterNode';
|
|
4
3
|
import { Node } from './node';
|
|
@@ -9,8 +8,8 @@ export declare abstract class SeparableFilterNode extends FilterNode {
|
|
|
9
8
|
private readonly material;
|
|
10
9
|
private readonly mesh;
|
|
11
10
|
private rendererState?;
|
|
12
|
-
protected readonly inputTexelSize: import('three/webgpu').UniformNode<Vector2>;
|
|
13
|
-
protected readonly direction: import('three/webgpu').UniformNode<Vector2>;
|
|
11
|
+
protected readonly inputTexelSize: import('three/webgpu').UniformNode<import('three').Vector2>;
|
|
12
|
+
protected readonly direction: import('three/webgpu').UniformNode<import('three').Vector2>;
|
|
14
13
|
constructor(inputNode?: TextureNode | null);
|
|
15
14
|
setSize(width: number, height: number): this;
|
|
16
15
|
updateBefore({ renderer }: NodeFrame): void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Vector2 } from 'three';
|
|
2
1
|
import { NodeBuilder, NodeFrame, TextureNode } from 'three/webgpu';
|
|
3
2
|
import { FilterNode } from './FilterNode';
|
|
4
3
|
import { Node } from './node';
|
|
@@ -7,7 +6,7 @@ export declare abstract class SingleFilterNode extends FilterNode {
|
|
|
7
6
|
private readonly material;
|
|
8
7
|
private readonly mesh;
|
|
9
8
|
private rendererState?;
|
|
10
|
-
protected readonly inputTexelSize: import('three/webgpu').UniformNode<Vector2>;
|
|
9
|
+
protected readonly inputTexelSize: import('three/webgpu').UniformNode<import('three').Vector2>;
|
|
11
10
|
constructor(inputNode?: TextureNode | null);
|
|
12
11
|
setSize(width: number, height: number): this;
|
|
13
12
|
updateBefore({ renderer }: NodeFrame): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { StorageTextureNode, Node, NodeBuilder } from 'three/webgpu';
|
|
2
|
+
export declare class StorageTexture3DNode extends StorageTextureNode {
|
|
3
|
+
static get type(): string;
|
|
4
|
+
getDefaultUV(): Node;
|
|
5
|
+
setUpdateMatrix(_value: boolean): void;
|
|
6
|
+
generateUV(builder: NodeBuilder, uvNode: Node): string;
|
|
7
|
+
generateOffset(builder: NodeBuilder, offsetNode: Node): string;
|
|
8
|
+
}
|
|
9
|
+
export declare const storageTexture3D: (...args: ConstructorParameters<typeof StorageTexture3DNode>) => StorageTexture3DNode;
|
|
@@ -24,7 +24,7 @@ export declare class TemporalAntialiasNode extends TempNode {
|
|
|
24
24
|
private readonly resolveMaterial;
|
|
25
25
|
private readonly mesh;
|
|
26
26
|
private rendererState?;
|
|
27
|
-
private
|
|
27
|
+
private needsSyncRenderPipeline;
|
|
28
28
|
private needsClearHistory;
|
|
29
29
|
private readonly resolveNode;
|
|
30
30
|
private readonly historyNode;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Camera, Vector3 } from 'three';
|
|
2
2
|
import { UniformNode } from 'three/webgpu';
|
|
3
3
|
import { Node } from './node';
|
|
4
|
-
export declare const projectionMatrix: (camera
|
|
5
|
-
export declare const viewMatrix: (camera
|
|
6
|
-
export declare const inverseProjectionMatrix: (camera
|
|
7
|
-
export declare const inverseViewMatrix: (camera
|
|
8
|
-
export declare const cameraPositionWorld: (camera
|
|
9
|
-
export declare const cameraNear: (camera
|
|
10
|
-
export declare const cameraFar: (camera
|
|
4
|
+
export declare const projectionMatrix: (camera?: Camera | null) => Node<"mat4">;
|
|
5
|
+
export declare const viewMatrix: (camera?: Camera | null) => Node<"mat4">;
|
|
6
|
+
export declare const inverseProjectionMatrix: (camera?: Camera | null) => Node<"mat4">;
|
|
7
|
+
export declare const inverseViewMatrix: (camera?: Camera | null) => Node<"mat4">;
|
|
8
|
+
export declare const cameraPositionWorld: (camera?: Camera | null) => UniformNode<Vector3>;
|
|
9
|
+
export declare const cameraNear: (camera?: Camera | null) => Node<"float">;
|
|
10
|
+
export declare const cameraFar: (camera?: Camera | null) => Node<"float">;
|
|
11
|
+
export declare const viewZ: import('three/webgpu').VarNode;
|
package/types/webgpu/debug.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { NodeMaterial, Node, Renderer } from 'three/webgpu';
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function debugVertexNode(renderer: Renderer, material: NodeMaterial):
|
|
4
|
-
export declare function
|
|
2
|
+
export declare function debugMaterial(renderer: Renderer, material: NodeMaterial): Promise<string | null>;
|
|
3
|
+
export declare function debugVertexNode(renderer: Renderer, material: NodeMaterial): Promise<string | null>;
|
|
4
|
+
export declare function debugFragmentNode(renderer: Renderer, material: NodeMaterial): Promise<string | null>;
|
|
5
|
+
export declare function debugNode(renderer: Renderer, node: Node): Promise<string | null>;
|
|
5
6
|
export declare function hookFunction<T, K extends keyof {
|
|
6
7
|
[K in keyof T as T[K] extends (...args: any[]) => any ? K : never]: unknown;
|
|
7
8
|
}, Args extends unknown[] = T[K] extends (...args: any[]) => any ? Parameters<T[K]> : never, Result = T[K] extends (...args: any[]) => any ? ReturnType<T[K]> : never>(target: T, name: K, callback: (...args: Args) => void): T;
|
package/types/webgpu/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from './accessors';
|
|
2
|
+
export * from './CascadedShadowMapsNode';
|
|
2
3
|
export * from './debug';
|
|
3
4
|
export * from './DownsampleThresholdNode';
|
|
5
|
+
export * from './events';
|
|
4
6
|
export * from './FnLayout';
|
|
5
7
|
export * from './FnVar';
|
|
6
8
|
export * from './GaussianBlurNode';
|
|
@@ -16,6 +18,8 @@ export * from './OutputTexture3DNode';
|
|
|
16
18
|
export * from './OutputTextureNode';
|
|
17
19
|
export * from './sampling';
|
|
18
20
|
export * from './ScreenSpaceShadowNode';
|
|
21
|
+
export * from './STBNTextureNode';
|
|
22
|
+
export * from './StorageTexture3DNode';
|
|
19
23
|
export * from './TemporalAntialiasNode';
|
|
20
24
|
export * from './transformations';
|
|
21
25
|
export * from './utils';
|
package/types/webgpu/math.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export declare const bvecNot: (...params: import('three/webgpu').Node[]) => import('three/webgpu').FunctionOverloadingNode;
|
|
2
|
+
export declare const bvecAnd: (...params: import('three/webgpu').Node[]) => import('three/webgpu').FunctionOverloadingNode;
|
|
3
|
+
export declare const bvecOr: (...params: import('three/webgpu').Node[]) => import('three/webgpu').FunctionOverloadingNode;
|
|
1
4
|
export declare const raySphereIntersection: import('three/src/nodes/TSL.js').ShaderNodeFn<[rayOrigin: number | import('three/webgpu').Node, rayDirection: number | import('three/webgpu').Node, center: number | import('three/webgpu').Node, radius: number | import('three/webgpu').Node]>;
|
|
2
5
|
export declare const raySpheresIntersectionsStruct: import('three/src/nodes/TSL.js').Struct;
|
|
3
6
|
export declare const raySpheresIntersections: import('three/src/nodes/TSL.js').ShaderNodeFn<[rayOrigin: number | import('three/webgpu').Node, rayDirection: number | import('three/webgpu').Node, center: number | import('three/webgpu').Node, radii: number | import('three/webgpu').Node]>;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const textureGather: import('three/src/nodes/TSL.js').ShaderNodeFn<[textureNode: number | import('three/webgpu').Node, uvNode: number | import('three/webgpu').Node, component?: unknown]>;
|
|
2
|
+
export declare const textureCatmullRom: import('three/src/nodes/TSL.js').ShaderNodeFn<[textureNode: number | import('three/webgpu').Node, uvNode?: number | import('three/webgpu').Node | undefined]>;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { Camera } from 'three';
|
|
1
2
|
import { Node } from './node';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
export declare const depthToViewZ: (depth: Node<"float">, near: Node<"float">, far: Node<"float">, { perspective, logarithmic }?: DepthOptions) => Node<"float">;
|
|
7
|
-
export declare const logarithmicToPerspectiveDepth: (depth: Node<"float">, near: Node<"float">, far: Node<"float">) => Node<"float">;
|
|
8
|
-
export declare const perspectiveToLogarithmicDepth: (depth: Node<"float">, near: Node<"float">, far: Node<"float">) => Node<"float">;
|
|
3
|
+
export declare const depthToViewZ: import('three/src/nodes/TSL.js').ShaderNodeFn<[depth: number | import('three/webgpu').Node, camera?: Camera | null | undefined, near?: number | import('three/webgpu').Node | null | undefined, far?: number | import('three/webgpu').Node | null | undefined]>;
|
|
4
|
+
export declare const logarithmicToPerspectiveDepth: (depth: Node<"float">, near?: Node<"float"> | null, far?: Node<"float"> | null) => Node<"float">;
|
|
5
|
+
export declare const perspectiveToLogarithmicDepth: (depth: Node<"float">, near?: Node<"float"> | null, far?: Node<"float"> | null) => Node<"float">;
|
|
9
6
|
export declare const screenToPositionView: (uv: Node<"vec2">, depth: Node<"float">, viewZ: Node<"float">, projectionMatrix: Node<"mat4">, inverseProjectionMatrix: Node<"mat4">) => Node<"vec3">;
|
|
10
|
-
export declare const turbo: (
|
|
11
|
-
export declare const depthToColor: (depth: Node
|
|
12
|
-
export declare const equirectToDirectionWorld: (
|
|
7
|
+
export declare const turbo: import('three/src/nodes/TSL.js').ShaderNodeFn<[number | import('three/webgpu').Node]>;
|
|
8
|
+
export declare const depthToColor: import('three/src/nodes/TSL.js').ShaderNodeFn<[depth: number | import('three/webgpu').Node, camera?: Camera | undefined, near?: number | import('three/webgpu').Node | undefined, far?: number | import('three/webgpu').Node | undefined]>;
|
|
9
|
+
export declare const equirectToDirectionWorld: import('three/src/nodes/TSL.js').ShaderNodeFn<[number | import('three/webgpu').Node]>;
|