@takram/three-geospatial 0.4.0 → 0.5.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/build/index.cjs +1 -1
  3. package/build/index.cjs.map +1 -1
  4. package/build/index.js +1109 -2108
  5. package/build/index.js.map +1 -1
  6. package/build/r3f.cjs +1 -1
  7. package/build/r3f.cjs.map +1 -1
  8. package/build/r3f.js +1 -1
  9. package/build/shaders.cjs +4 -4
  10. package/build/shaders.js +7 -7
  11. package/build/shared.cjs +1 -1
  12. package/build/shared.cjs.map +1 -1
  13. package/build/shared.js +8 -210
  14. package/build/shared.js.map +1 -1
  15. package/build/shared2.cjs +2 -0
  16. package/build/shared2.cjs.map +1 -0
  17. package/build/shared2.js +224 -0
  18. package/build/shared2.js.map +1 -0
  19. package/build/shared3.cjs +2 -0
  20. package/build/shared3.cjs.map +1 -0
  21. package/build/shared3.js +13 -0
  22. package/build/shared3.js.map +1 -0
  23. package/build/webgpu.cjs +2 -0
  24. package/build/webgpu.cjs.map +1 -0
  25. package/build/webgpu.js +1336 -0
  26. package/build/webgpu.js.map +1 -0
  27. package/package.json +14 -9
  28. package/src/Ellipsoid.ts +17 -0
  29. package/src/EllipsoidGeometry.ts +2 -2
  30. package/src/QuadGeometry.ts +14 -0
  31. package/src/bufferGeometry.ts +1 -1
  32. package/src/capabilities.ts +12 -3
  33. package/src/decorators.ts +2 -2
  34. package/src/index.ts +2 -2
  35. package/src/shaders/depth.glsl +3 -3
  36. package/src/types.ts +2 -0
  37. package/src/unrollLoops.ts +1 -1
  38. package/src/webgpu/DownsampleThresholdNode.ts +40 -0
  39. package/src/webgpu/DualMipmapFilterNode.ts +130 -0
  40. package/src/webgpu/FilterNode.ts +93 -0
  41. package/src/webgpu/FnLayout.ts +86 -0
  42. package/src/webgpu/FnVar.ts +26 -0
  43. package/src/webgpu/GaussianBlurNode.ts +129 -0
  44. package/src/webgpu/HighpVelocityNode.ts +115 -0
  45. package/src/webgpu/KawaseBlurNode.ts +76 -0
  46. package/src/webgpu/LensFlareNode.ts +128 -0
  47. package/src/webgpu/LensGhostNode.ts +62 -0
  48. package/src/webgpu/LensGlareNode.ts +318 -0
  49. package/src/webgpu/LensHaloNode.ts +99 -0
  50. package/src/webgpu/MipmapBlurNode.ts +113 -0
  51. package/src/webgpu/MipmapSurfaceBlurNode.ts +140 -0
  52. package/src/webgpu/OutputTexture3DNode.ts +34 -0
  53. package/src/webgpu/OutputTextureNode.ts +33 -0
  54. package/src/webgpu/RTTextureNode.ts +132 -0
  55. package/src/webgpu/SeparableFilterNode.ts +98 -0
  56. package/src/webgpu/SingleFilterNode.ts +80 -0
  57. package/src/webgpu/TemporalAntialiasNode.ts +571 -0
  58. package/src/webgpu/accessors.ts +67 -0
  59. package/src/webgpu/debug.ts +86 -0
  60. package/src/webgpu/generators.ts +40 -0
  61. package/src/webgpu/index.ts +21 -0
  62. package/src/webgpu/internals.ts +37 -0
  63. package/src/webgpu/math.ts +81 -0
  64. package/src/webgpu/node.ts +100 -0
  65. package/src/webgpu/sampling.ts +103 -0
  66. package/src/webgpu/transformations.ts +106 -0
  67. package/src/webgpu/utils.ts +13 -0
  68. package/types/Ellipsoid.d.ts +3 -0
  69. package/types/QuadGeometry.d.ts +4 -0
  70. package/types/bufferGeometry.d.ts +1 -1
  71. package/types/capabilities.d.ts +2 -1
  72. package/types/index.d.ts +2 -2
  73. package/types/types.d.ts +1 -0
  74. package/types/webgpu/DownsampleThresholdNode.d.ts +11 -0
  75. package/types/webgpu/DualMipmapFilterNode.d.ts +21 -0
  76. package/types/webgpu/FilterNode.d.ts +17 -0
  77. package/types/webgpu/FnLayout.d.ts +21 -0
  78. package/types/webgpu/FnVar.d.ts +6 -0
  79. package/types/webgpu/GaussianBlurNode.d.ts +10 -0
  80. package/types/webgpu/HighpVelocityNode.d.ts +18 -0
  81. package/types/webgpu/KawaseBlurNode.d.ts +10 -0
  82. package/types/webgpu/LensFlareNode.d.ts +25 -0
  83. package/types/webgpu/LensGhostNode.d.ts +8 -0
  84. package/types/webgpu/LensGlareNode.d.ts +32 -0
  85. package/types/webgpu/LensHaloNode.d.ts +11 -0
  86. package/types/webgpu/MipmapBlurNode.d.ts +12 -0
  87. package/types/webgpu/MipmapSurfaceBlurNode.d.ts +11 -0
  88. package/types/webgpu/OutputTexture3DNode.d.ts +11 -0
  89. package/types/webgpu/OutputTextureNode.d.ts +11 -0
  90. package/types/webgpu/RTTextureNode.d.ts +23 -0
  91. package/types/webgpu/SeparableFilterNode.d.ts +20 -0
  92. package/types/webgpu/SingleFilterNode.d.ts +17 -0
  93. package/types/webgpu/TemporalAntialiasNode.d.ts +56 -0
  94. package/types/webgpu/accessors.d.ts +10 -0
  95. package/types/webgpu/debug.d.ts +7 -0
  96. package/types/webgpu/generators.d.ts +4 -0
  97. package/types/webgpu/index.d.ts +21 -0
  98. package/types/webgpu/internals.d.ts +3 -0
  99. package/types/webgpu/math.d.ts +4 -0
  100. package/types/webgpu/node.d.ts +33 -0
  101. package/types/webgpu/sampling.d.ts +2 -0
  102. package/types/webgpu/transformations.d.ts +12 -0
  103. package/types/webgpu/utils.d.ts +3 -0
  104. package/src/assertions.ts +0 -1
  105. package/types/assertions.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu.js","sources":["../src/webgpu/accessors.ts","../src/webgpu/debug.ts","../src/webgpu/OutputTextureNode.ts","../src/webgpu/FilterNode.ts","../src/webgpu/DualMipmapFilterNode.ts","../src/webgpu/MipmapBlurNode.ts","../src/webgpu/SingleFilterNode.ts","../src/webgpu/DownsampleThresholdNode.ts","../src/webgpu/FnLayout.ts","../src/webgpu/FnVar.ts","../src/webgpu/SeparableFilterNode.ts","../src/webgpu/GaussianBlurNode.ts","../src/webgpu/generators.ts","../src/webgpu/HighpVelocityNode.ts","../src/webgpu/KawaseBlurNode.ts","../src/webgpu/LensGhostNode.ts","../src/webgpu/RTTextureNode.ts","../src/webgpu/LensGlareNode.ts","../src/webgpu/LensHaloNode.ts","../src/webgpu/MipmapSurfaceBlurNode.ts","../src/webgpu/utils.ts","../src/webgpu/LensFlareNode.ts","../src/webgpu/math.ts","../src/webgpu/node.ts","../src/webgpu/OutputTexture3DNode.ts","../src/webgpu/sampling.ts","../src/webgpu/internals.ts","../src/webgpu/transformations.ts","../src/webgpu/TemporalAntialiasNode.ts"],"sourcesContent":null,"names":["caches","getCache","object","name","callback","cache","projectionMatrix","camera","reference","viewMatrix","inverseProjectionMatrix","inverseViewMatrix","cameraPositionWorld","uniform","Vector3","_","value","cameraNear","cameraFar","debugShader","renderer","mesh","Scene","Camera","result","error","debugFragmentNode","material","Mesh","QuadGeometry","debugVertexNode","debugNode","node","NodeMaterial","vec4","positionGeometry","hookFunction","target","args","OutputTextureNode","TextureNode","owner","texture","builder","outputTexture","nodeObject","FilterNode","TempNode","inputNode","NodeUpdateType","renderTarget","RenderTarget","HalfFloatType","RGBAFormat","LinearFilter","typeName","invariant","outputNode","resetRendererState","restoreRendererState","RendererUtils","DualMipmapFilterNode","QuadMesh","Vector2","levels","i","width","height","resolutionScale","w","h","downsampleRTs","upsampleRTs","inputTexelSize","downsampleNode","originalTexture","downsampleMaterial","upsampleMaterial","downsampleRT","upsampleRT","mipmapBlurDownsample","texelSize","center","uv","offset1","offset2","uv01","uv02","uv03","uv04","uv05","vec2","uv06","uv07","uv08","uv09","uv10","uv11","uv12","add","mipmapBlurUpsample","offset","uv1","uv2","uv3","uv4","uv5","uv6","uv7","uv8","MipmapBlurNode","mipmapBlur","SingleFilterNode","DownsampleThresholdNode","thresholdLevel","thresholdRange","outputColor","outputLuminance","luminance","scale","smoothstep","downsampleThreshold","transformType","type","FnLayout","typeOnly","layout","Fn","input","FnVar","SeparableFilterNode","horizontalRT","verticalRT","direction","getCoefficients","n","row0","row1","y","x","createGaussianKernel","kernelSize","edgeBias","coefficients","mid","sum","a","b","weights","offsets","linearWeights","linearOffsets","j","offset0","weight0","weight1","weight","linearWeightSum","GaussianBlurNode","offsetSize","output","gaussianBlur","interleavedGradientNoise","seed","dithering","screenCoordinate","time","noise","vec3","equirectGrid","lineWidth","count","equirectUV","deltaUV","fwidth","distance","abs","mask","HighpVelocityNode","Matrix4","current","previous","matrices","matrix","currentClip","positionLocal","previousClip","positionPrevious","currentNDC","previousNDC","sub","highpVelocity","KawaseBlurNode","kawaseBlur","LensGhostNode","intensity","sampleGhost","color","suv","d","uvNode","createRenderTarget","sizeScratch","RTTextureNode","size","rtTexture","convertToTexture","textureNode","createSpikeTexture","canvas","context","gradient","CanvasTexture","instanceStruct","struct","LensGlareNode","StorageBufferAttribute","instancedArray","MeshBasicNodeMaterial","AdditiveBlending","PlaneGeometry","PerspectiveCamera","hash","tileWidth","tileHeight","bufferCount","inputWidth","inputHeight","computeNode","counterBuffer","aspectRatio","outputWidth","outputHeight","arrayBuffer","spikePairCount","instanceBuffer","outputTexelSize","counterStorage","storage","tileSize","uvec2","If","globalId","Return","inputColor","inputLuminance","countBefore","atomicAdd","instance","phi","angle","spikeNode","luminanceThreshold","sizeScale","geometryRatio","instanceIndex","sin","cos","rotation","mat3","positionNDC","luminanceScale","position","spikeTexture","SRGBColorSpace","LensHaloNode","chromaticAberration","cubicRingMask","radius","thickness","v","min","mul","sampleHalo","fract","wuv","clampToBorder","MipmapSurfaceBlurNode","innerWeight","outerWeight","mix","mipmapSurfaceBlur","isWebGPU","NodeBuilder","LensFlareNode","thresholdNode","blurNode","ghostNode","haloNode","bloomNode","featuresNode","glareNode","threshold","blur","bloom","glare","lensFlare","raySphereIntersection","rayOrigin","rayDirection","dot","c","discriminant","intersection","Q","sqrt","raySpheresIntersectionsStruct","raySpheresIntersections","radii","near","far","rayEllipsoidIntersection","ro","rd","intersections","nodes","float","int","uint","bool","ivec2","bvec2","ivec3","uvec3","bvec3","ivec4","uvec4","bvec4","mat2","mat4","OutputTexture3DNode","Texture3DNode","outputTexture3D","textureBicubic","sharpness","textureSize","centerPosition","f","f2","f3","cf","w0","w1","w2","w3","w12","tc12","centerColor","tc0","tc3","textureCatmullRom","offset12","texPos0","texPos3","texPos12","halton","index","base","fraction","haltonOffsets","depthToViewZ","depth","perspective","logarithmic","logarithmicDepthToViewZ","perspectiveDepthToViewZ","orthographicDepthToViewZ","logarithmicToPerspectiveDepth","viewZ","viewZToPerspectiveDepth","perspectiveToLogarithmicDepth","viewZToLogarithmicDepth","screenToPositionView","ndc","turboCoeffs","turbo","depthToColor","options","equirectToDirectionWorld","lambda","PI2","PI","cosPhi","isSupportedCamera","clipAABB","history","minColor","maxColor","pClip","eClip","vClip","absUnit","maxUnit","max","select","varianceOffsets","varianceClipping","coord","gamma","moment1","moment2","neighbor","N","mean","variance","neighborOffsets","closestDepthStruct","getClosestDepth","depthNode","inputCoord","offsetCoord","emptyDepthTexture","DepthTexture","TemporalAntialiasNode","velocityNodeImmutable","velocityNode","velocity","resolveRT","historyRT","dx","dy","getPreviousDepth","screenUV","currentColor","closestDepth","closestCoord","velocityConfidence","prevUV","prevDepth","expectedDepth","depthConfidence","step","confidence","uvWeight","and","depthWeight","historyColor","clippedColor","velocityAbsTexel","screenSize","subpixelCorrection","temporalAlpha","onBeforePostProcessing","resolveMaterial","copyMaterial","temporalAntialias"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takram/three-geospatial",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Provides fundamental functions for rendering GIS data in Three.js and R3F",
5
5
  "keywords": [
6
6
  "three",
@@ -20,19 +20,24 @@
20
20
  "type": "module",
21
21
  "exports": {
22
22
  ".": {
23
+ "types": "./types/index.d.ts",
23
24
  "import": "./build/index.js",
24
- "require": "./build/index.cjs",
25
- "types": "./types/index.d.ts"
25
+ "require": "./build/index.cjs"
26
26
  },
27
27
  "./r3f": {
28
+ "types": "./types/r3f/index.d.ts",
28
29
  "import": "./build/r3f.js",
29
- "require": "./build/r3f.cjs",
30
- "types": "./types/r3f/index.d.ts"
30
+ "require": "./build/r3f.cjs"
31
31
  },
32
32
  "./shaders": {
33
+ "types": "./types/shaders/index.d.ts",
33
34
  "import": "./build/shaders.js",
34
- "require": "./build/shaders.cjs",
35
- "types": "./types/shaders/index.d.ts"
35
+ "require": "./build/shaders.cjs"
36
+ },
37
+ "./webgpu": {
38
+ "types": "./types/webgpu/index.d.ts",
39
+ "import": "./build/webgpu.js",
40
+ "require": "./build/webgpu.cjs"
36
41
  }
37
42
  },
38
43
  "main": "./build/index.cjs",
@@ -48,10 +53,10 @@
48
53
  "README.md"
49
54
  ],
50
55
  "dependencies": {
51
- "@petamoriken/float16": "^3.9.1",
56
+ "@petamoriken/float16": "^3.9.3",
52
57
  "three-stdlib": "2.36.0",
53
58
  "tiny-invariant": "^1.3.3",
54
- "type-fest": "^4.33.0"
59
+ "type-fest": "^4.41.0"
55
60
  },
56
61
  "peerDependencies": {
57
62
  "@react-three/fiber": ">=9.0.4",
package/src/Ellipsoid.ts CHANGED
@@ -10,6 +10,7 @@ const vectorScratch1 = /*#__PURE__*/ new Vector3()
10
10
  const vectorScratch2 = /*#__PURE__*/ new Vector3()
11
11
  const vectorScratch3 = /*#__PURE__*/ new Vector3()
12
12
 
13
+ // TODO: Define by major axis and reciprocal of flattening.
13
14
  export class Ellipsoid {
14
15
  static readonly WGS84 = /*#__PURE__*/ new Ellipsoid(
15
16
  6378137,
@@ -23,14 +24,30 @@ export class Ellipsoid {
23
24
  this.radii = new Vector3(x, y, z)
24
25
  }
25
26
 
27
+ // TODO: Rename to semiMinorAxis
26
28
  get minimumRadius(): number {
27
29
  return Math.min(this.radii.x, this.radii.y, this.radii.z)
28
30
  }
29
31
 
32
+ // TODO: Rename to semiMajorAxis
30
33
  get maximumRadius(): number {
31
34
  return Math.max(this.radii.x, this.radii.y, this.radii.z)
32
35
  }
33
36
 
37
+ get flattening(): number {
38
+ return 1 - this.minimumRadius / this.maximumRadius
39
+ }
40
+
41
+ get eccentricity(): number {
42
+ return Math.sqrt(this.eccentricitySquared)
43
+ }
44
+
45
+ get eccentricitySquared(): number {
46
+ const a2 = this.maximumRadius ** 2
47
+ const b2 = this.minimumRadius ** 2
48
+ return (a2 - b2) / a2
49
+ }
50
+
34
51
  reciprocalRadii(result = new Vector3()): Vector3 {
35
52
  const { x, y, z } = this.radii
36
53
  return result.set(1 / x, 1 / y, 1 / z)
@@ -7,7 +7,7 @@ export interface EllipsoidGeometryParameters {
7
7
  }
8
8
 
9
9
  export class EllipsoidGeometry extends BufferGeometry {
10
- readonly type = 'EllipsoidGeometry'
10
+ override readonly type = 'EllipsoidGeometry'
11
11
 
12
12
  parameters: EllipsoidGeometryParameters
13
13
 
@@ -99,7 +99,7 @@ export class EllipsoidGeometry extends BufferGeometry {
99
99
  this.setAttribute('uv', new BufferAttribute(uvs, 2))
100
100
  }
101
101
 
102
- copy(source: EllipsoidGeometry): this {
102
+ override copy(source: EllipsoidGeometry): this {
103
103
  super.copy(source)
104
104
  this.parameters = { ...source.parameters }
105
105
  return this
@@ -0,0 +1,14 @@
1
+ import { BufferGeometry, Float32BufferAttribute, Sphere, Vector3 } from 'three'
2
+
3
+ export class QuadGeometry extends BufferGeometry {
4
+ constructor() {
5
+ super()
6
+ this.boundingSphere = new Sphere()
7
+ this.boundingSphere.set(new Vector3(), Infinity)
8
+ this.setAttribute(
9
+ 'position',
10
+ new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)
11
+ )
12
+ this.setAttribute('uv', new Float32BufferAttribute([0, -1, 0, 1, 2, 1], 2))
13
+ }
14
+ }
@@ -34,7 +34,7 @@ export interface BufferGeometryLike {
34
34
 
35
35
  export function toBufferGeometryLike(
36
36
  geometry: BufferGeometry
37
- ): [BufferGeometryLike, ArrayBuffer[]] {
37
+ ): [BufferGeometryLike, ArrayBufferLike[]] {
38
38
  const { attributes, index, boundingBox, boundingSphere } = geometry
39
39
  return [
40
40
  { attributes, index, boundingBox, boundingSphere },
@@ -1,5 +1,14 @@
1
- import type { WebGLRenderer } from 'three'
1
+ import { WebGLRenderer } from 'three'
2
+ import type { Renderer } from 'three/webgpu'
2
3
 
3
- export function isFloatLinearSupported(renderer: WebGLRenderer): boolean {
4
- return renderer.getContext().getExtension('OES_texture_float_linear') != null
4
+ export function isFloatLinearSupported(
5
+ renderer: Renderer | WebGLRenderer
6
+ ): boolean {
7
+ return renderer instanceof WebGLRenderer
8
+ ? renderer.getContext().getExtension('OES_texture_float_linear') != null
9
+ : ((
10
+ renderer.backend as (typeof renderer)['backend'] & {
11
+ hasFeature?: (name: string) => boolean
12
+ }
13
+ ).hasFeature?.('float32-filterable') ?? false)
5
14
  }
package/src/decorators.ts CHANGED
@@ -76,7 +76,7 @@ export function defineInt(
76
76
  enumerable: true,
77
77
  get(this: Extract<T, Material>): number {
78
78
  const value = this.defines?.[name]
79
- return value != null ? parseInt(value) : 0
79
+ return value != null ? parseInt(value, 10) : 0
80
80
  },
81
81
  set(this: Extract<T, Material>, value: number) {
82
82
  const prevValue = this[propertyKey]
@@ -92,7 +92,7 @@ export function defineInt(
92
92
  enumerable: true,
93
93
  get(this: Extract<T, EffectLike>): number {
94
94
  const value = this.defines.get(name)
95
- return value != null ? parseInt(value) : 0
95
+ return value != null ? parseInt(value, 10) : 0
96
96
  },
97
97
  set(this: Extract<T, EffectLike>, value: number) {
98
98
  const prevValue = this[propertyKey]
package/src/index.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './ArrayBufferLoader'
2
- export * from './assertions'
3
2
  export * from './bufferGeometry'
4
3
  export * from './capabilities'
5
4
  export * from './constants'
@@ -13,6 +12,7 @@ export * from './EXRTextureLoader'
13
12
  export * from './Geodetic'
14
13
  export * from './math'
15
14
  export * from './PointOfView'
15
+ export * from './QuadGeometry'
16
16
  export * from './Rectangle'
17
17
  export * from './resolveIncludes'
18
18
  export * from './STBNLoader'
@@ -21,5 +21,5 @@ export * from './TilingScheme'
21
21
  export * from './typedArray'
22
22
  export * from './TypedArrayLoader'
23
23
  export * from './typedArrayParsers'
24
- export type * from './types'
24
+ export * from './types'
25
25
  export * from './unrollLoops'
@@ -1,14 +1,14 @@
1
1
  // cSpell:words logdepthbuf
2
2
 
3
3
  float reverseLogDepth(const float depth, const float near, const float far) {
4
- #ifdef USE_LOGDEPTHBUF
4
+ #if defined(USE_LOGDEPTHBUF) || defined(USE_LOGARITHMIC_DEPTH_BUFFER)
5
5
  float d = pow(2.0, depth * log2(far + 1.0)) - 1.0;
6
6
  float a = far / (far - near);
7
7
  float b = far * near / (near - far);
8
8
  return a + b / d;
9
- #else // USE_LOGDEPTHBUF
9
+ #else // defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(USE_LOGARITHMIC_DEPTH_BUFFER)
10
10
  return depth;
11
- #endif // USE_LOGDEPTHBUF
11
+ #endif // defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(USE_LOGARITHMIC_DEPTH_BUFFER)
12
12
  }
13
13
 
14
14
  float linearizeDepth(const float depth, const float near, const float far) {
package/src/types.ts CHANGED
@@ -8,3 +8,5 @@ export type UniformMap<T> = Omit<Map<string, Uniform>, 'get'> & {
8
8
  }
9
9
 
10
10
  export type AnyFloatType = typeof FloatType | typeof HalfFloatType
11
+
12
+ export function reinterpretType<T>(value: unknown): asserts value is T {}
@@ -10,7 +10,7 @@ function loopReplacer(
10
10
  snippet: string
11
11
  ): string {
12
12
  let string = ''
13
- for (let i = parseInt(start); i < parseInt(end); ++i) {
13
+ for (let i = parseInt(start, 10); i < parseInt(end, 10); ++i) {
14
14
  string += snippet
15
15
  .replace(/\[\s*i\s*\]/g, '[' + i + ']')
16
16
  .replace(/UNROLLED_LOOP_INDEX/g, `${i}`)
@@ -0,0 +1,40 @@
1
+ import { luminance, nodeObject, smoothstep, uniform, vec4 } from 'three/tsl'
2
+ import type { TextureNode } from 'three/webgpu'
3
+ import invariant from 'tiny-invariant'
4
+
5
+ import { mipmapBlurDownsample } from './MipmapBlurNode'
6
+ import type { Node, NodeObject } from './node'
7
+ import { SingleFilterNode } from './SingleFilterNode'
8
+
9
+ export class DownsampleThresholdNode extends SingleFilterNode {
10
+ static override get type(): string {
11
+ return 'DownsampleThresholdNode'
12
+ }
13
+
14
+ thresholdLevel = uniform(5)
15
+ thresholdRange = uniform(1)
16
+
17
+ constructor(inputNode?: TextureNode | null) {
18
+ super(inputNode)
19
+ this.resolutionScale = 0.5
20
+ }
21
+
22
+ protected override setupOutputNode(): Node {
23
+ const { inputNode, thresholdLevel, thresholdRange, inputTexelSize } = this
24
+ invariant(inputNode != null)
25
+
26
+ const outputColor = mipmapBlurDownsample(inputNode, inputTexelSize)
27
+ const outputLuminance = luminance(outputColor.rgb)
28
+ const scale = smoothstep(
29
+ thresholdLevel,
30
+ thresholdLevel.add(thresholdRange),
31
+ outputLuminance
32
+ )
33
+ return vec4(outputColor.rgb, outputLuminance).mul(scale)
34
+ }
35
+ }
36
+
37
+ export const downsampleThreshold = (
38
+ ...args: ConstructorParameters<typeof DownsampleThresholdNode>
39
+ ): NodeObject<DownsampleThresholdNode> =>
40
+ nodeObject(new DownsampleThresholdNode(...args))
@@ -0,0 +1,130 @@
1
+ import { Vector2, type RenderTarget } from 'three'
2
+ import { texture, uniform } from 'three/tsl'
3
+ import {
4
+ NodeMaterial,
5
+ QuadMesh,
6
+ RendererUtils,
7
+ type NodeBuilder,
8
+ type NodeFrame,
9
+ type TextureNode
10
+ } from 'three/webgpu'
11
+ import invariant from 'tiny-invariant'
12
+
13
+ import { FilterNode } from './FilterNode'
14
+ import type { Node } from './node'
15
+
16
+ const { resetRendererState, restoreRendererState } = RendererUtils
17
+
18
+ export abstract class DualMipmapFilterNode extends FilterNode {
19
+ private readonly downsampleRTs: RenderTarget[] = []
20
+ private readonly upsampleRTs: RenderTarget[] = []
21
+ private readonly downsampleMaterial = new NodeMaterial()
22
+ private readonly upsampleMaterial = new NodeMaterial()
23
+ private readonly mesh = new QuadMesh()
24
+ private rendererState?: RendererUtils.RendererState
25
+
26
+ protected readonly inputTexelSize = uniform(new Vector2())
27
+ protected readonly downsampleNode = texture(null)
28
+
29
+ constructor(inputNode: TextureNode | null | undefined, levels: number) {
30
+ super(inputNode)
31
+
32
+ for (let i = 0; i < levels; ++i) {
33
+ this.downsampleRTs[i] = this.createRenderTarget(`Downsample${i}`)
34
+ if (i < levels - 1) {
35
+ this.upsampleRTs[i] = this.createRenderTarget(`Upsample${i}`)
36
+ }
37
+ }
38
+ this.outputTexture = this.upsampleRTs[0].texture
39
+ }
40
+
41
+ setSize(width: number, height: number): this {
42
+ const { resolutionScale } = this
43
+ let w = Math.max(Math.round(width * resolutionScale), 1)
44
+ let h = Math.max(Math.round(height * resolutionScale), 1)
45
+
46
+ const { downsampleRTs, upsampleRTs } = this
47
+ for (let i = 0; i < downsampleRTs.length; ++i) {
48
+ w = Math.max(Math.round(w / 2), 1)
49
+ h = Math.max(Math.round(h / 2), 1)
50
+ downsampleRTs[i].setSize(w, h)
51
+ if (i < upsampleRTs.length) {
52
+ upsampleRTs[i].setSize(w, h)
53
+ }
54
+ }
55
+ return this
56
+ }
57
+
58
+ override updateBefore({ renderer }: NodeFrame): void {
59
+ if (renderer == null) {
60
+ return
61
+ }
62
+ const {
63
+ downsampleRTs,
64
+ upsampleRTs,
65
+ mesh,
66
+ inputNode,
67
+ inputTexelSize,
68
+ downsampleNode
69
+ } = this
70
+ invariant(inputNode != null)
71
+
72
+ const { width, height } = inputNode.value
73
+ this.setSize(width, height)
74
+
75
+ const originalTexture = inputNode.value
76
+ this.rendererState = resetRendererState(renderer, this.rendererState)
77
+
78
+ mesh.material = this.downsampleMaterial
79
+ for (const renderTarget of downsampleRTs) {
80
+ const { width, height } = inputNode.value
81
+ inputTexelSize.value.set(1 / width, 1 / height)
82
+ renderer.setRenderTarget(renderTarget)
83
+ mesh.render(renderer)
84
+ inputNode.value = renderTarget.texture
85
+ }
86
+
87
+ mesh.material = this.upsampleMaterial
88
+ for (let i = upsampleRTs.length - 1; i >= 0; --i) {
89
+ const renderTarget = upsampleRTs[i]
90
+ const { width, height } = inputNode.value
91
+ inputTexelSize.value.set(1 / width, 1 / height)
92
+ downsampleNode.value = downsampleRTs[i].texture
93
+ renderer.setRenderTarget(renderTarget)
94
+ mesh.render(renderer)
95
+ inputNode.value = renderTarget.texture
96
+ }
97
+
98
+ restoreRendererState(renderer, this.rendererState)
99
+ inputNode.value = originalTexture
100
+ }
101
+
102
+ protected abstract setupDownsampleNode(builder: NodeBuilder): Node
103
+ protected abstract setupUpsampleNode(builder: NodeBuilder): Node
104
+
105
+ override setup(builder: NodeBuilder): unknown {
106
+ const { inputNode } = this
107
+ invariant(inputNode != null)
108
+
109
+ const { downsampleMaterial, upsampleMaterial } = this
110
+ downsampleMaterial.fragmentNode = this.setupDownsampleNode(builder)
111
+ upsampleMaterial.fragmentNode = this.setupUpsampleNode(builder)
112
+ downsampleMaterial.needsUpdate = true
113
+ upsampleMaterial.needsUpdate = true
114
+
115
+ return super.setup(builder)
116
+ }
117
+
118
+ override dispose(): void {
119
+ for (const downsampleRT of this.downsampleRTs) {
120
+ downsampleRT.dispose()
121
+ }
122
+ for (const upsampleRT of this.upsampleRTs) {
123
+ upsampleRT.dispose()
124
+ }
125
+ this.downsampleMaterial.dispose()
126
+ this.upsampleMaterial.dispose()
127
+ this.mesh.geometry.dispose()
128
+ super.dispose()
129
+ }
130
+ }
@@ -0,0 +1,93 @@
1
+ import {
2
+ HalfFloatType,
3
+ LinearFilter,
4
+ RenderTarget,
5
+ RGBAFormat,
6
+ type Texture
7
+ } from 'three'
8
+ import {
9
+ NodeUpdateType,
10
+ TempNode,
11
+ type NodeBuilder,
12
+ type TextureNode
13
+ } from 'three/webgpu'
14
+ import invariant from 'tiny-invariant'
15
+
16
+ import { outputTexture } from './OutputTextureNode'
17
+
18
+ // Represents a node that applies a shader on the input texture and outputs
19
+ // another texture of the same dimensions regardless of the drawing buffer size.
20
+ export abstract class FilterNode extends TempNode {
21
+ static override get type(): string {
22
+ return 'FilterNode'
23
+ }
24
+
25
+ inputNode?: TextureNode | null
26
+ resolutionScale = 1
27
+
28
+ private textureNode?: TextureNode
29
+ private readonly renderTargets: RenderTarget[] = []
30
+
31
+ constructor(inputNode?: TextureNode | null) {
32
+ super('vec4')
33
+ this.inputNode = inputNode
34
+ this.updateBeforeType = NodeUpdateType.FRAME
35
+ }
36
+
37
+ protected createRenderTarget(name?: string): RenderTarget {
38
+ const renderTarget = new RenderTarget(1, 1, {
39
+ depthBuffer: false,
40
+ type: HalfFloatType,
41
+ format: RGBAFormat
42
+ })
43
+ const texture = renderTarget.texture
44
+ texture.minFilter = LinearFilter
45
+ texture.magFilter = LinearFilter
46
+ texture.generateMipmaps = false
47
+
48
+ const typeName = (this.constructor as typeof FilterNode).type
49
+ texture.name = name != null ? `${typeName}.${name}` : typeName
50
+
51
+ this.renderTargets.push(renderTarget)
52
+ return renderTarget
53
+ }
54
+
55
+ getTextureNode(): TextureNode {
56
+ invariant(
57
+ this.textureNode != null,
58
+ 'outputTexture must be specified before getTextureNode() is called.'
59
+ )
60
+ return this.textureNode
61
+ }
62
+
63
+ protected get outputTexture(): Texture | null {
64
+ return this.textureNode?.value ?? null
65
+ }
66
+
67
+ protected set outputTexture(value: Texture | null) {
68
+ this.textureNode = value != null ? outputTexture(this, value) : undefined
69
+ }
70
+
71
+ abstract setSize(width: number, height: number): this
72
+
73
+ override setup(builder: NodeBuilder): unknown {
74
+ const { inputNode, textureNode: outputNode } = this
75
+ invariant(
76
+ inputNode != null,
77
+ 'inputNode must be specified before being setup.'
78
+ )
79
+ invariant(
80
+ outputNode != null,
81
+ 'outputTexture must be specified before being setup.'
82
+ )
83
+ outputNode.uvNode = inputNode.uvNode
84
+ return outputNode
85
+ }
86
+
87
+ override dispose(): void {
88
+ for (const renderTarget of this.renderTargets) {
89
+ renderTarget.dispose()
90
+ }
91
+ super.dispose()
92
+ }
93
+ }