@lampdotdev/lamp 0.0.0-stage → 0.35.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 (464) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +357 -2
  3. package/Resources/Devices/roku.json +410 -0
  4. package/Resources/Devices/xbox-one.json +367 -0
  5. package/Resources/GameKit/NOTICE.md +63 -0
  6. package/Resources/GameKit/apple/LampPage.swift +1646 -0
  7. package/Resources/GameKit/apple/LampPlayer.swift +46 -0
  8. package/Resources/GameKit/apple/LampWebApp.swift +63 -0
  9. package/Resources/GameKit/apple/LampWebGame.swift +87 -0
  10. package/Resources/GameKit/apple/Native.swift +12 -0
  11. package/Resources/GameKit/build.sh +55 -0
  12. package/Resources/GameKit/lamp_game.h +116 -0
  13. package/Resources/GameKit/lamp_host.h +19 -0
  14. package/Resources/GameKit/lamp_kit.cpp +61 -0
  15. package/Resources/GameKit/lamp_sound.cpp +455 -0
  16. package/Resources/GameKit/lamp_xbox.cpp +374 -0
  17. package/Resources/GameKit/libraries/HandmadeMath.h +3940 -0
  18. package/Resources/GameKit/libraries/cgltf.h +7240 -0
  19. package/Resources/GameKit/libraries/dr_mp3.h +5430 -0
  20. package/Resources/GameKit/libraries/dr_wav.h +9209 -0
  21. package/Resources/GameKit/libraries/sokol_debugtext.h +4754 -0
  22. package/Resources/GameKit/libraries/sokol_gfx.h +29558 -0
  23. package/Resources/GameKit/libraries/sokol_gl.h +4538 -0
  24. package/Resources/GameKit/libraries/sokol_log.h +335 -0
  25. package/Resources/GameKit/libraries/sokol_shape.h +1531 -0
  26. package/Resources/GameKit/libraries/stb_image.h +7988 -0
  27. package/Resources/GameKit/libraries/stb_vorbis.c +5584 -0
  28. package/Resources/GameKit/scaffold/Game/game.cpp +142 -0
  29. package/Resources/GameKit/scaffold/Game/scene.glsl +49 -0
  30. package/Resources/GameKit/scaffold-web/Web/game.js +31 -0
  31. package/Resources/GameKit/scaffold-web/Web/index.html +13 -0
  32. package/Resources/GameKit/scaffold-web/Web/making.js +33 -0
  33. package/Resources/GameKit/scaffold-web/Web/world.js +33 -0
  34. package/Resources/GameKit/web/lamp-game.js +3036 -0
  35. package/Resources/GameKit/web/lamp-phaser.js +128 -0
  36. package/Resources/WebHost/App.exe +0 -0
  37. package/Resources/WebHost/Microsoft.Web.WebView2.Core.dll +0 -0
  38. package/Resources/WebHost/WebView2-LICENSE.txt +27 -0
  39. package/Resources/WebHost/lamp_controllers.h +1506 -0
  40. package/Resources/WebHost/lamp_web_host.cpp +1173 -0
  41. package/Resources/WebLibraries/earlier.txt +318 -0
  42. package/Resources/WebLibraries/phaser/LICENSE.md +20 -0
  43. package/Resources/WebLibraries/phaser/NOTICE.md +2 -0
  44. package/Resources/WebLibraries/phaser/phaser.esm.min.js +1 -0
  45. package/Resources/WebLibraries/qrcode/LICENSE +21 -0
  46. package/Resources/WebLibraries/qrcode/NOTICE.md +4 -0
  47. package/Resources/WebLibraries/qrcode/qrcode.js +2297 -0
  48. package/Resources/WebLibraries/rapier/LICENSE +201 -0
  49. package/Resources/WebLibraries/rapier/NOTICE.md +3 -0
  50. package/Resources/WebLibraries/rapier/rapier.js +2 -0
  51. package/Resources/WebLibraries/three/LICENSE +21 -0
  52. package/Resources/WebLibraries/three/NOTICE.md +4 -0
  53. package/Resources/WebLibraries/three/addons/animation/AnimationClipCreator.js +168 -0
  54. package/Resources/WebLibraries/three/addons/animation/CCDIKSolver.js +607 -0
  55. package/Resources/WebLibraries/three/addons/controls/ArcballControls.js +3543 -0
  56. package/Resources/WebLibraries/three/addons/controls/DragControls.js +452 -0
  57. package/Resources/WebLibraries/three/addons/controls/FirstPersonControls.js +512 -0
  58. package/Resources/WebLibraries/three/addons/controls/FlyControls.js +384 -0
  59. package/Resources/WebLibraries/three/addons/controls/MapControls.js +116 -0
  60. package/Resources/WebLibraries/three/addons/controls/OrbitControls.js +1985 -0
  61. package/Resources/WebLibraries/three/addons/controls/PointerLockControls.js +264 -0
  62. package/Resources/WebLibraries/three/addons/controls/TrackballControls.js +1106 -0
  63. package/Resources/WebLibraries/three/addons/controls/TransformControls.js +2003 -0
  64. package/Resources/WebLibraries/three/addons/curves/CurveExtras.js +694 -0
  65. package/Resources/WebLibraries/three/addons/curves/NURBSCurve.js +169 -0
  66. package/Resources/WebLibraries/three/addons/curves/NURBSSurface.js +98 -0
  67. package/Resources/WebLibraries/three/addons/curves/NURBSUtils.js +532 -0
  68. package/Resources/WebLibraries/three/addons/curves/NURBSVolume.js +82 -0
  69. package/Resources/WebLibraries/three/addons/effects/AnaglyphEffect.js +274 -0
  70. package/Resources/WebLibraries/three/addons/effects/AsciiEffect.js +323 -0
  71. package/Resources/WebLibraries/three/addons/effects/OutlineEffect.js +489 -0
  72. package/Resources/WebLibraries/three/addons/effects/ParallaxBarrierEffect.js +155 -0
  73. package/Resources/WebLibraries/three/addons/effects/StereoEffect.js +91 -0
  74. package/Resources/WebLibraries/three/addons/environments/ColorEnvironment.js +59 -0
  75. package/Resources/WebLibraries/three/addons/environments/DebugEnvironment.js +102 -0
  76. package/Resources/WebLibraries/three/addons/environments/RoomEnvironment.js +185 -0
  77. package/Resources/WebLibraries/three/addons/geometries/BoxLineGeometry.js +92 -0
  78. package/Resources/WebLibraries/three/addons/geometries/ConvexGeometry.js +72 -0
  79. package/Resources/WebLibraries/three/addons/geometries/DecalGeometry.js +420 -0
  80. package/Resources/WebLibraries/three/addons/geometries/LoftGeometry.js +355 -0
  81. package/Resources/WebLibraries/three/addons/geometries/ParametricFunctions.js +100 -0
  82. package/Resources/WebLibraries/three/addons/geometries/ParametricGeometry.js +172 -0
  83. package/Resources/WebLibraries/three/addons/geometries/RoundedBoxGeometry.js +216 -0
  84. package/Resources/WebLibraries/three/addons/geometries/TeapotGeometry.js +689 -0
  85. package/Resources/WebLibraries/three/addons/geometries/TextGeometry.js +102 -0
  86. package/Resources/WebLibraries/three/addons/helpers/AnimationPathHelper.js +302 -0
  87. package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelper.js +166 -0
  88. package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelperWebGL.js +221 -0
  89. package/Resources/WebLibraries/three/addons/helpers/LightProbeHelper.js +166 -0
  90. package/Resources/WebLibraries/three/addons/helpers/LightProbeHelperGPU.js +102 -0
  91. package/Resources/WebLibraries/three/addons/helpers/OctreeHelper.js +109 -0
  92. package/Resources/WebLibraries/three/addons/helpers/PositionalAudioHelper.js +169 -0
  93. package/Resources/WebLibraries/three/addons/helpers/RapierHelper.js +59 -0
  94. package/Resources/WebLibraries/three/addons/helpers/RectAreaLightHelper.js +118 -0
  95. package/Resources/WebLibraries/three/addons/helpers/TextureHelper.js +265 -0
  96. package/Resources/WebLibraries/three/addons/helpers/TextureHelperGPU.js +214 -0
  97. package/Resources/WebLibraries/three/addons/helpers/VertexNormalsHelper.js +155 -0
  98. package/Resources/WebLibraries/three/addons/helpers/VertexTangentsHelper.js +133 -0
  99. package/Resources/WebLibraries/three/addons/helpers/ViewHelper.js +529 -0
  100. package/Resources/WebLibraries/three/addons/interactive/HTMLMesh.js +617 -0
  101. package/Resources/WebLibraries/three/addons/interactive/InteractiveGroup.js +224 -0
  102. package/Resources/WebLibraries/three/addons/interactive/SelectionBox.js +324 -0
  103. package/Resources/WebLibraries/three/addons/interactive/SelectionHelper.js +150 -0
  104. package/Resources/WebLibraries/three/addons/libs/fflate.module.js +2699 -0
  105. package/Resources/WebLibraries/three/addons/libs/lil-gui.module.min.js +8 -0
  106. package/Resources/WebLibraries/three/addons/libs/meshopt_decoder.module.js +196 -0
  107. package/Resources/WebLibraries/three/addons/libs/potpack.module.js +125 -0
  108. package/Resources/WebLibraries/three/addons/libs/stats.module.js +167 -0
  109. package/Resources/WebLibraries/three/addons/libs/tween.module.js +876 -0
  110. package/Resources/WebLibraries/three/addons/lighting/ClusteredLighting.js +153 -0
  111. package/Resources/WebLibraries/three/addons/lighting/DynamicLighting.js +82 -0
  112. package/Resources/WebLibraries/three/addons/lighting/LightMapper.js +295 -0
  113. package/Resources/WebLibraries/three/addons/lighting/LightProbeGrid.js +923 -0
  114. package/Resources/WebLibraries/three/addons/lighting/LightProbeGridUtils.js +107 -0
  115. package/Resources/WebLibraries/three/addons/lighting/LightProbeGridWebGL.js +846 -0
  116. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIConeTracer.js +243 -0
  117. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIIrradiance.js +43 -0
  118. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGINode.js +617 -0
  119. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGISceneCollector.js +793 -0
  120. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIVolume.js +1440 -0
  121. package/Resources/WebLibraries/three/addons/lights/LightProbeGenerator.js +337 -0
  122. package/Resources/WebLibraries/three/addons/lights/RectAreaLightTexturesLib.js +127 -0
  123. package/Resources/WebLibraries/three/addons/lights/RectAreaLightUniformsLib.js +40 -0
  124. package/Resources/WebLibraries/three/addons/lights/SunLight.js +100 -0
  125. package/Resources/WebLibraries/three/addons/lights/SunLightNode.js +56 -0
  126. package/Resources/WebLibraries/three/addons/lights/SunLightShadow.js +319 -0
  127. package/Resources/WebLibraries/three/addons/lights/SunShadowNode.js +312 -0
  128. package/Resources/WebLibraries/three/addons/lines/Line2.js +56 -0
  129. package/Resources/WebLibraries/three/addons/lines/LineGeometry.js +157 -0
  130. package/Resources/WebLibraries/three/addons/lines/LineMaterial.js +742 -0
  131. package/Resources/WebLibraries/three/addons/lines/LineSegments2.js +434 -0
  132. package/Resources/WebLibraries/three/addons/lines/LineSegmentsGeometry.js +298 -0
  133. package/Resources/WebLibraries/three/addons/lines/Wireframe.js +108 -0
  134. package/Resources/WebLibraries/three/addons/lines/WireframeGeometry2.js +49 -0
  135. package/Resources/WebLibraries/three/addons/lines/webgpu/Line2.js +46 -0
  136. package/Resources/WebLibraries/three/addons/lines/webgpu/LineSegments2.js +419 -0
  137. package/Resources/WebLibraries/three/addons/lines/webgpu/Wireframe.js +86 -0
  138. package/Resources/WebLibraries/three/addons/loaders/EXRLoader.js +3411 -0
  139. package/Resources/WebLibraries/three/addons/loaders/FBXLoader.js +4660 -0
  140. package/Resources/WebLibraries/three/addons/loaders/FontLoader.js +262 -0
  141. package/Resources/WebLibraries/three/addons/loaders/GLTFLoader.js +5006 -0
  142. package/Resources/WebLibraries/three/addons/loaders/HDRLoader.js +463 -0
  143. package/Resources/WebLibraries/three/addons/loaders/MTLLoader.js +601 -0
  144. package/Resources/WebLibraries/three/addons/loaders/OBJLoader.js +961 -0
  145. package/Resources/WebLibraries/three/addons/loaders/PLYLoader.js +992 -0
  146. package/Resources/WebLibraries/three/addons/loaders/RGBELoader.js +18 -0
  147. package/Resources/WebLibraries/three/addons/loaders/STLLoader.js +423 -0
  148. package/Resources/WebLibraries/three/addons/loaders/SVGLoader.js +3297 -0
  149. package/Resources/WebLibraries/three/addons/loaders/TGALoader.js +539 -0
  150. package/Resources/WebLibraries/three/addons/loaders/UltraHDRLoader.js +757 -0
  151. package/Resources/WebLibraries/three/addons/math/Capsule.js +159 -0
  152. package/Resources/WebLibraries/three/addons/math/ColorConverter.js +62 -0
  153. package/Resources/WebLibraries/three/addons/math/ColorSpaces.js +147 -0
  154. package/Resources/WebLibraries/three/addons/math/ConvexHull.js +1695 -0
  155. package/Resources/WebLibraries/three/addons/math/ImprovedNoise.js +88 -0
  156. package/Resources/WebLibraries/three/addons/math/Lut.js +317 -0
  157. package/Resources/WebLibraries/three/addons/math/MeshSurfaceSampler.js +315 -0
  158. package/Resources/WebLibraries/three/addons/math/OBB.js +535 -0
  159. package/Resources/WebLibraries/three/addons/math/Octree.js +825 -0
  160. package/Resources/WebLibraries/three/addons/math/SimplexNoise.js +470 -0
  161. package/Resources/WebLibraries/three/addons/misc/ConvexObjectBreaker.js +539 -0
  162. package/Resources/WebLibraries/three/addons/misc/GPUComputationRenderer.js +508 -0
  163. package/Resources/WebLibraries/three/addons/misc/Gyroscope.js +78 -0
  164. package/Resources/WebLibraries/three/addons/misc/MorphAnimMesh.js +119 -0
  165. package/Resources/WebLibraries/three/addons/misc/MorphBlendMesh.js +425 -0
  166. package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMap.js +370 -0
  167. package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMapGPU.js +322 -0
  168. package/Resources/WebLibraries/three/addons/misc/RollerCoaster.js +661 -0
  169. package/Resources/WebLibraries/three/addons/misc/Sculptor.js +1679 -0
  170. package/Resources/WebLibraries/three/addons/misc/SculptorMesh.js +1504 -0
  171. package/Resources/WebLibraries/three/addons/misc/SculptorTools.js +1180 -0
  172. package/Resources/WebLibraries/three/addons/misc/SculptorUtils.js +345 -0
  173. package/Resources/WebLibraries/three/addons/misc/TileCreasedNormalsPlugin.js +270 -0
  174. package/Resources/WebLibraries/three/addons/misc/TubePainter.js +611 -0
  175. package/Resources/WebLibraries/three/addons/misc/Volume.js +520 -0
  176. package/Resources/WebLibraries/three/addons/misc/VolumeSlice.js +275 -0
  177. package/Resources/WebLibraries/three/addons/modifiers/CurveModifier.js +374 -0
  178. package/Resources/WebLibraries/three/addons/modifiers/CurveModifierGPU.js +256 -0
  179. package/Resources/WebLibraries/three/addons/modifiers/EdgeSplitModifier.js +299 -0
  180. package/Resources/WebLibraries/three/addons/modifiers/TessellateModifier.js +340 -0
  181. package/Resources/WebLibraries/three/addons/objects/GroundedSkybox.js +69 -0
  182. package/Resources/WebLibraries/three/addons/objects/Lensflare.js +489 -0
  183. package/Resources/WebLibraries/three/addons/objects/LensflareMesh.js +376 -0
  184. package/Resources/WebLibraries/three/addons/objects/MarchingCubes.js +1261 -0
  185. package/Resources/WebLibraries/three/addons/objects/Reflector.js +390 -0
  186. package/Resources/WebLibraries/three/addons/objects/ReflectorForSSRPass.js +393 -0
  187. package/Resources/WebLibraries/three/addons/objects/Refractor.js +389 -0
  188. package/Resources/WebLibraries/three/addons/objects/ShadowMesh.js +130 -0
  189. package/Resources/WebLibraries/three/addons/objects/Sky.js +342 -0
  190. package/Resources/WebLibraries/three/addons/objects/SkyMesh.js +403 -0
  191. package/Resources/WebLibraries/three/addons/objects/Water.js +374 -0
  192. package/Resources/WebLibraries/three/addons/objects/Water2.js +403 -0
  193. package/Resources/WebLibraries/three/addons/objects/Water2Mesh.js +199 -0
  194. package/Resources/WebLibraries/three/addons/objects/WaterMesh.js +194 -0
  195. package/Resources/WebLibraries/three/addons/postprocessing/AfterimagePass.js +187 -0
  196. package/Resources/WebLibraries/three/addons/postprocessing/BloomPass.js +274 -0
  197. package/Resources/WebLibraries/three/addons/postprocessing/BokehPass.js +218 -0
  198. package/Resources/WebLibraries/three/addons/postprocessing/ClearPass.js +97 -0
  199. package/Resources/WebLibraries/three/addons/postprocessing/CubeTexturePass.js +146 -0
  200. package/Resources/WebLibraries/three/addons/postprocessing/DotScreenPass.js +114 -0
  201. package/Resources/WebLibraries/three/addons/postprocessing/EffectComposer.js +365 -0
  202. package/Resources/WebLibraries/three/addons/postprocessing/FXAAPass.js +40 -0
  203. package/Resources/WebLibraries/three/addons/postprocessing/FilmPass.js +113 -0
  204. package/Resources/WebLibraries/three/addons/postprocessing/GTAOPass.js +735 -0
  205. package/Resources/WebLibraries/three/addons/postprocessing/GlitchPass.js +177 -0
  206. package/Resources/WebLibraries/three/addons/postprocessing/HalftonePass.js +134 -0
  207. package/Resources/WebLibraries/three/addons/postprocessing/LUTPass.js +138 -0
  208. package/Resources/WebLibraries/three/addons/postprocessing/MaskPass.js +195 -0
  209. package/Resources/WebLibraries/three/addons/postprocessing/OutlinePass.js +776 -0
  210. package/Resources/WebLibraries/three/addons/postprocessing/OutputPass.js +148 -0
  211. package/Resources/WebLibraries/three/addons/postprocessing/Pass.js +191 -0
  212. package/Resources/WebLibraries/three/addons/postprocessing/RenderPass.js +193 -0
  213. package/Resources/WebLibraries/three/addons/postprocessing/RenderPixelatedPass.js +314 -0
  214. package/Resources/WebLibraries/three/addons/postprocessing/RenderTransitionPass.js +267 -0
  215. package/Resources/WebLibraries/three/addons/postprocessing/SAOPass.js +407 -0
  216. package/Resources/WebLibraries/three/addons/postprocessing/SMAAPass.js +230 -0
  217. package/Resources/WebLibraries/three/addons/postprocessing/SSAARenderPass.js +313 -0
  218. package/Resources/WebLibraries/three/addons/postprocessing/SSAOPass.js +527 -0
  219. package/Resources/WebLibraries/three/addons/postprocessing/SSRPass.js +858 -0
  220. package/Resources/WebLibraries/three/addons/postprocessing/SavePass.js +132 -0
  221. package/Resources/WebLibraries/three/addons/postprocessing/ShaderPass.js +135 -0
  222. package/Resources/WebLibraries/three/addons/postprocessing/TAARenderPass.js +243 -0
  223. package/Resources/WebLibraries/three/addons/postprocessing/TexturePass.js +131 -0
  224. package/Resources/WebLibraries/three/addons/postprocessing/UnrealBloomPass.js +541 -0
  225. package/Resources/WebLibraries/three/addons/shaders/ACESFilmicToneMappingShader.js +96 -0
  226. package/Resources/WebLibraries/three/addons/shaders/AfterimageShader.js +63 -0
  227. package/Resources/WebLibraries/three/addons/shaders/BasicShader.js +36 -0
  228. package/Resources/WebLibraries/three/addons/shaders/BleachBypassShader.js +68 -0
  229. package/Resources/WebLibraries/three/addons/shaders/BlendShader.js +56 -0
  230. package/Resources/WebLibraries/three/addons/shaders/BokehShader.js +151 -0
  231. package/Resources/WebLibraries/three/addons/shaders/BokehShader2.js +404 -0
  232. package/Resources/WebLibraries/three/addons/shaders/BrightnessContrastShader.js +62 -0
  233. package/Resources/WebLibraries/three/addons/shaders/ColorCorrectionShader.js +59 -0
  234. package/Resources/WebLibraries/three/addons/shaders/ColorifyShader.js +57 -0
  235. package/Resources/WebLibraries/three/addons/shaders/ConvolutionShader.js +74 -0
  236. package/Resources/WebLibraries/three/addons/shaders/CopyShader.js +52 -0
  237. package/Resources/WebLibraries/three/addons/shaders/DOFMipMapShader.js +63 -0
  238. package/Resources/WebLibraries/three/addons/shaders/DepthLimitedBlurShader.js +183 -0
  239. package/Resources/WebLibraries/three/addons/shaders/DigitalGlitch.js +104 -0
  240. package/Resources/WebLibraries/three/addons/shaders/DotScreenShader.js +75 -0
  241. package/Resources/WebLibraries/three/addons/shaders/ExposureShader.js +51 -0
  242. package/Resources/WebLibraries/three/addons/shaders/FXAAShader.js +298 -0
  243. package/Resources/WebLibraries/three/addons/shaders/FilmShader.js +73 -0
  244. package/Resources/WebLibraries/three/addons/shaders/FocusShader.js +94 -0
  245. package/Resources/WebLibraries/three/addons/shaders/FreiChenShader.js +103 -0
  246. package/Resources/WebLibraries/three/addons/shaders/GTAOShader.js +437 -0
  247. package/Resources/WebLibraries/three/addons/shaders/GammaCorrectionShader.js +52 -0
  248. package/Resources/WebLibraries/three/addons/shaders/HalftoneShader.js +332 -0
  249. package/Resources/WebLibraries/three/addons/shaders/HorizontalBlurShader.js +68 -0
  250. package/Resources/WebLibraries/three/addons/shaders/HorizontalTiltShiftShader.js +70 -0
  251. package/Resources/WebLibraries/three/addons/shaders/HueSaturationShader.js +74 -0
  252. package/Resources/WebLibraries/three/addons/shaders/KaleidoShader.js +65 -0
  253. package/Resources/WebLibraries/three/addons/shaders/LuminosityHighPassShader.js +68 -0
  254. package/Resources/WebLibraries/three/addons/shaders/LuminosityShader.js +54 -0
  255. package/Resources/WebLibraries/three/addons/shaders/MirrorShader.js +62 -0
  256. package/Resources/WebLibraries/three/addons/shaders/NormalMapShader.js +60 -0
  257. package/Resources/WebLibraries/three/addons/shaders/OutputShader.js +103 -0
  258. package/Resources/WebLibraries/three/addons/shaders/PoissonDenoiseShader.js +230 -0
  259. package/Resources/WebLibraries/three/addons/shaders/RGBShiftShader.js +61 -0
  260. package/Resources/WebLibraries/three/addons/shaders/SAOShader.js +201 -0
  261. package/Resources/WebLibraries/three/addons/shaders/SMAAShader.js +489 -0
  262. package/Resources/WebLibraries/three/addons/shaders/SSAOShader.js +331 -0
  263. package/Resources/WebLibraries/three/addons/shaders/SSRShader.js +396 -0
  264. package/Resources/WebLibraries/three/addons/shaders/SepiaShader.js +57 -0
  265. package/Resources/WebLibraries/three/addons/shaders/SobelOperatorShader.js +98 -0
  266. package/Resources/WebLibraries/three/addons/shaders/SubsurfaceScatteringShader.js +95 -0
  267. package/Resources/WebLibraries/three/addons/shaders/TechnicolorShader.js +51 -0
  268. package/Resources/WebLibraries/three/addons/shaders/ToonShader.js +349 -0
  269. package/Resources/WebLibraries/three/addons/shaders/TriangleBlurShader.js +79 -0
  270. package/Resources/WebLibraries/three/addons/shaders/UnpackDepthRGBAShader.js +60 -0
  271. package/Resources/WebLibraries/three/addons/shaders/VelocityShader.js +137 -0
  272. package/Resources/WebLibraries/three/addons/shaders/VerticalBlurShader.js +66 -0
  273. package/Resources/WebLibraries/three/addons/shaders/VerticalTiltShiftShader.js +70 -0
  274. package/Resources/WebLibraries/three/addons/shaders/VignetteShader.js +56 -0
  275. package/Resources/WebLibraries/three/addons/shaders/VolumeShader.js +285 -0
  276. package/Resources/WebLibraries/three/addons/shaders/WaterRefractionShader.js +106 -0
  277. package/Resources/WebLibraries/three/addons/textures/FlakesTexture.js +54 -0
  278. package/Resources/WebLibraries/three/addons/tsl/WebGLNodesHandler.js +607 -0
  279. package/Resources/WebLibraries/three/addons/tsl/display/AfterImageNode.js +256 -0
  280. package/Resources/WebLibraries/three/addons/tsl/display/AnaglyphPassNode.js +550 -0
  281. package/Resources/WebLibraries/three/addons/tsl/display/BilateralBlurNode.js +377 -0
  282. package/Resources/WebLibraries/three/addons/tsl/display/BleachBypass.js +33 -0
  283. package/Resources/WebLibraries/three/addons/tsl/display/BloomNode.js +599 -0
  284. package/Resources/WebLibraries/three/addons/tsl/display/CRT.js +150 -0
  285. package/Resources/WebLibraries/three/addons/tsl/display/ChromaticAberrationNode.js +163 -0
  286. package/Resources/WebLibraries/three/addons/tsl/display/DenoiseNode.js +354 -0
  287. package/Resources/WebLibraries/three/addons/tsl/display/DepthOfFieldNode.js +572 -0
  288. package/Resources/WebLibraries/three/addons/tsl/display/DotScreenNode.js +104 -0
  289. package/Resources/WebLibraries/three/addons/tsl/display/FSR1Node.js +481 -0
  290. package/Resources/WebLibraries/three/addons/tsl/display/FXAANode.js +357 -0
  291. package/Resources/WebLibraries/three/addons/tsl/display/FilmNode.js +101 -0
  292. package/Resources/WebLibraries/three/addons/tsl/display/GTAONode.js +727 -0
  293. package/Resources/WebLibraries/three/addons/tsl/display/GaussianBlurNode.js +412 -0
  294. package/Resources/WebLibraries/three/addons/tsl/display/GodraysNode.js +604 -0
  295. package/Resources/WebLibraries/three/addons/tsl/display/ImportanceSampledEnvironment.js +564 -0
  296. package/Resources/WebLibraries/three/addons/tsl/display/LensflareNode.js +282 -0
  297. package/Resources/WebLibraries/three/addons/tsl/display/Lut3DNode.js +109 -0
  298. package/Resources/WebLibraries/three/addons/tsl/display/MotionBlur.js +33 -0
  299. package/Resources/WebLibraries/three/addons/tsl/display/OITPassNode.js +341 -0
  300. package/Resources/WebLibraries/three/addons/tsl/display/OutlineNode.js +916 -0
  301. package/Resources/WebLibraries/three/addons/tsl/display/ParallaxBarrierPassNode.js +90 -0
  302. package/Resources/WebLibraries/three/addons/tsl/display/PixelationPassNode.js +227 -0
  303. package/Resources/WebLibraries/three/addons/tsl/display/RGBShiftNode.js +96 -0
  304. package/Resources/WebLibraries/three/addons/tsl/display/RecurrentDenoiseNode.js +812 -0
  305. package/Resources/WebLibraries/three/addons/tsl/display/RetroPassNode.js +263 -0
  306. package/Resources/WebLibraries/three/addons/tsl/display/SMAANode.js +729 -0
  307. package/Resources/WebLibraries/three/addons/tsl/display/SSAAPassNode.js +344 -0
  308. package/Resources/WebLibraries/three/addons/tsl/display/SSAONode.js +422 -0
  309. package/Resources/WebLibraries/three/addons/tsl/display/SSGINode.js +698 -0
  310. package/Resources/WebLibraries/three/addons/tsl/display/SSRNode.js +1430 -0
  311. package/Resources/WebLibraries/three/addons/tsl/display/SSSNode.js +479 -0
  312. package/Resources/WebLibraries/three/addons/tsl/display/Sepia.js +24 -0
  313. package/Resources/WebLibraries/three/addons/tsl/display/Shape.js +29 -0
  314. package/Resources/WebLibraries/three/addons/tsl/display/SharpenNode.js +284 -0
  315. package/Resources/WebLibraries/three/addons/tsl/display/SobelOperatorNode.js +168 -0
  316. package/Resources/WebLibraries/three/addons/tsl/display/StereoCompositePassNode.js +190 -0
  317. package/Resources/WebLibraries/three/addons/tsl/display/StereoPassNode.js +117 -0
  318. package/Resources/WebLibraries/three/addons/tsl/display/TAAUNode.js +700 -0
  319. package/Resources/WebLibraries/three/addons/tsl/display/TRAANode.js +609 -0
  320. package/Resources/WebLibraries/three/addons/tsl/display/TemporalReprojectNode.js +1024 -0
  321. package/Resources/WebLibraries/three/addons/tsl/display/TransitionNode.js +141 -0
  322. package/Resources/WebLibraries/three/addons/tsl/display/boxBlur.js +65 -0
  323. package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlend.js +80 -0
  324. package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlur.js +63 -0
  325. package/Resources/WebLibraries/three/addons/tsl/display/hashBlur.js +55 -0
  326. package/Resources/WebLibraries/three/addons/tsl/display/lensDirt.js +30 -0
  327. package/Resources/WebLibraries/three/addons/tsl/display/radialBlur.js +68 -0
  328. package/Resources/WebLibraries/three/addons/tsl/lighting/ClusteredLightsNode.js +994 -0
  329. package/Resources/WebLibraries/three/addons/tsl/lighting/DynamicLightsNode.js +201 -0
  330. package/Resources/WebLibraries/three/addons/tsl/lighting/LightProbeGridNode.js +183 -0
  331. package/Resources/WebLibraries/three/addons/tsl/lighting/data/AmbientLightDataNode.js +67 -0
  332. package/Resources/WebLibraries/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +117 -0
  333. package/Resources/WebLibraries/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +105 -0
  334. package/Resources/WebLibraries/three/addons/tsl/lighting/data/PointLightDataNode.js +140 -0
  335. package/Resources/WebLibraries/three/addons/tsl/lighting/data/SpotLightDataNode.js +167 -0
  336. package/Resources/WebLibraries/three/addons/tsl/math/Bayer.js +84 -0
  337. package/Resources/WebLibraries/three/addons/tsl/math/curlNoise.js +107 -0
  338. package/Resources/WebLibraries/three/addons/tsl/math/voronoiNoise.js +112 -0
  339. package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNode.js +542 -0
  340. package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNodeHelper.js +212 -0
  341. package/Resources/WebLibraries/three/addons/tsl/utils/GroundedSkybox.js +62 -0
  342. package/Resources/WebLibraries/three/addons/tsl/utils/RNoise.js +51 -0
  343. package/Resources/WebLibraries/three/addons/tsl/utils/Raymarching.js +70 -0
  344. package/Resources/WebLibraries/three/addons/tsl/utils/SoftParticles.js +53 -0
  345. package/Resources/WebLibraries/three/addons/tsl/utils/SpecularHelpers.js +302 -0
  346. package/Resources/WebLibraries/three/addons/tsl/utils/TAAUtils.js +184 -0
  347. package/Resources/WebLibraries/three/addons/utils/BufferGeometryUtils.js +1523 -0
  348. package/Resources/WebLibraries/three/addons/utils/CameraUtils.js +82 -0
  349. package/Resources/WebLibraries/three/addons/utils/ColorUtils.js +76 -0
  350. package/Resources/WebLibraries/three/addons/utils/GaussianSplatUtils.js +229 -0
  351. package/Resources/WebLibraries/three/addons/utils/GeometryCompressionUtils.js +547 -0
  352. package/Resources/WebLibraries/three/addons/utils/GeometryUtils.js +226 -0
  353. package/Resources/WebLibraries/three/addons/utils/LDrawUtils.js +211 -0
  354. package/Resources/WebLibraries/three/addons/utils/SceneOptimizer.js +459 -0
  355. package/Resources/WebLibraries/three/addons/utils/SceneUtils.js +363 -0
  356. package/Resources/WebLibraries/three/addons/utils/ShadowMapViewer.js +244 -0
  357. package/Resources/WebLibraries/three/addons/utils/ShadowMapViewerGPU.js +233 -0
  358. package/Resources/WebLibraries/three/addons/utils/SkeletonUtils.js +496 -0
  359. package/Resources/WebLibraries/three/addons/utils/SortUtils.js +175 -0
  360. package/Resources/WebLibraries/three/addons/utils/UVsDebug.js +173 -0
  361. package/Resources/WebLibraries/three/addons/utils/WebGLTextureUtils.js +115 -0
  362. package/Resources/WebLibraries/three/addons/utils/WebGPUTextureUtils.js +81 -0
  363. package/Resources/WebLibraries/three/addons/utils/WorkerPool.js +167 -0
  364. package/Resources/WebLibraries/three/addons/utils/unwrapUVs.js +865 -0
  365. package/Resources/WebLibraries/three/three.core.js +61162 -0
  366. package/Resources/WebLibraries/three/three.module.js +19537 -0
  367. package/Resources/WebLibraries/three/three.tsl.js +41903 -0
  368. package/Resources/WebLibraries/three/three.webgpu.js +53714 -0
  369. package/Resources/skills/2d-game/SKILL.md +305 -0
  370. package/Resources/skills/3d-game/SKILL.md +274 -0
  371. package/Resources/skills/accounts/SKILL.md +41 -0
  372. package/Resources/skills/android-design/SKILL.md +159 -0
  373. package/Resources/skills/app-ai/SKILL.md +154 -0
  374. package/Resources/skills/app-intents/SKILL.md +31 -0
  375. package/Resources/skills/app-kinds/SKILL.md +122 -0
  376. package/Resources/skills/apple-watch/SKILL.md +43 -0
  377. package/Resources/skills/assets/SKILL.md +183 -0
  378. package/Resources/skills/building-blocks/SKILL.md +97 -0
  379. package/Resources/skills/device-control/SKILL.md +56 -0
  380. package/Resources/skills/device-integrations/SKILL.md +278 -0
  381. package/Resources/skills/finder-files/SKILL.md +19 -0
  382. package/Resources/skills/game/SKILL.md +414 -0
  383. package/Resources/skills/game-3d/SKILL.md +12 -0
  384. package/Resources/skills/game-art/SKILL.md +11 -0
  385. package/Resources/skills/game-feel/SKILL.md +13 -0
  386. package/Resources/skills/game-levels/SKILL.md +12 -0
  387. package/Resources/skills/game-live/SKILL.md +12 -0
  388. package/Resources/skills/game-physics/SKILL.md +13 -0
  389. package/Resources/skills/game-playtest/SKILL.md +26 -0
  390. package/Resources/skills/game-ui/SKILL.md +278 -0
  391. package/Resources/skills/github-projects/SKILL.md +59 -0
  392. package/Resources/skills/icloud-sync/SKILL.md +30 -0
  393. package/Resources/skills/iphone-hardware/SKILL.md +57 -0
  394. package/Resources/skills/iphone-widgets/SKILL.md +53 -0
  395. package/Resources/skills/lg-developer-mode/SKILL.md +152 -0
  396. package/Resources/skills/mac-widgets/SKILL.md +60 -0
  397. package/Resources/skills/maps/SKILL.md +8 -0
  398. package/Resources/skills/menu-bar/SKILL.md +36 -0
  399. package/Resources/skills/more-apps/SKILL.md +53 -0
  400. package/Resources/skills/phone-controllers/SKILL.md +79 -0
  401. package/Resources/skills/phone-pages/SKILL.md +173 -0
  402. package/Resources/skills/roku-developer-mode/SKILL.md +106 -0
  403. package/Resources/skills/scene-3d/SKILL.md +27 -0
  404. package/Resources/skills/scripting/SKILL.md +17 -0
  405. package/Resources/skills/share-extension/SKILL.md +22 -0
  406. package/Resources/skills/tv-design/SKILL.md +72 -0
  407. package/Resources/skills/web-app/SKILL.md +136 -0
  408. package/Resources/skills/web-game/SKILL.md +95 -0
  409. package/Resources/skills/web-or-native/SKILL.md +103 -0
  410. package/Resources/skills/wish-links/SKILL.md +156 -0
  411. package/THIRD_PARTY_NOTICES.md +170 -0
  412. package/cli/android.mjs +941 -0
  413. package/cli/browser.mjs +268 -0
  414. package/cli/calls.mjs +390 -0
  415. package/cli/dev.mjs +773 -0
  416. package/cli/devices.mjs +984 -0
  417. package/cli/lamp.mjs +1016 -0
  418. package/cli/lampapp.mjs +332 -0
  419. package/cli/lamps/android-host/LampPageGateway.kt +345 -0
  420. package/cli/lamps/android-host/app/build.gradle.kts +40 -0
  421. package/cli/lamps/android-host/build.gradle.kts +4 -0
  422. package/cli/lamps/android-host/game/AndroidManifest.xml +33 -0
  423. package/cli/lamps/android-host/game/MainActivity.kt +173 -0
  424. package/cli/lamps/android-host/gradle/libs.versions.toml +39 -0
  425. package/cli/lamps/android-host/gradle.properties +8 -0
  426. package/cli/lamps/android-host/page/AndroidManifest.xml +35 -0
  427. package/cli/lamps/android-host/page/MainActivity.kt +193 -0
  428. package/cli/lamps/android-host/settings.gradle.kts +30 -0
  429. package/cli/lamps/android-host/tools.json +43 -0
  430. package/cli/lamps/lamp-controllers.js +2 -0
  431. package/cli/lamps/lamp-for-games.js +6863 -0
  432. package/cli/lamps/lamp.js +7023 -0
  433. package/cli/lamps/mac-starter/.lamp/meta.json +1 -0
  434. package/cli/lamps/mac-starter/APP.md +12 -0
  435. package/cli/lamps/mac-starter/Package.swift +8 -0
  436. package/cli/lamps/mac-starter/Sources/App.swift +11 -0
  437. package/cli/lamps/mac-starter/Sources/ContentView.swift +17 -0
  438. package/cli/lamps/mac-starter/Sources/LampSupport.swift +18097 -0
  439. package/cli/lamps/mac-starter/build.sh +336 -0
  440. package/cli/lamps/mac-starter/gitignore +3 -0
  441. package/cli/lamps/mac-starter/lamp-starter.json +6 -0
  442. package/cli/lamps/web-starter/APP.md +8 -0
  443. package/cli/lamps/web-starter/app.js +1 -0
  444. package/cli/lamps/web-starter/index.html +17 -0
  445. package/cli/lamps/web-starter/lamp-starter.json +5 -0
  446. package/cli/lamps/web-starter/lamp.js +7023 -0
  447. package/cli/lamps/web-starter/style.css +25 -0
  448. package/cli/link.mjs +138 -0
  449. package/cli/mac.mjs +621 -0
  450. package/cli/mdns.mjs +205 -0
  451. package/cli/msix.mjs +413 -0
  452. package/cli/network.mjs +209 -0
  453. package/cli/outside.mjs +140 -0
  454. package/cli/page.js +165 -0
  455. package/cli/place.mjs +298 -0
  456. package/cli/png.mjs +184 -0
  457. package/cli/share.mjs +202 -0
  458. package/cli/skill/SKILL.md +255 -0
  459. package/cli/skills.mjs +71 -0
  460. package/cli/state.mjs +173 -0
  461. package/cli/update.mjs +57 -0
  462. package/package.json +20 -4
  463. package/site/lib/quota.js +59 -0
  464. package/site/lib/shared-wishes.js +996 -0
@@ -0,0 +1,700 @@
1
+ import { HalfFloatType, Vector2, RenderTarget, RendererUtils, QuadMesh, NodeMaterial, Node, NodeUpdateType, Matrix4, DepthTexture } from 'three/webgpu';
2
+ import { exp, float, Fn, max, texture, uniform, uv, vec2, vec4, luminance, convertToTexture, passTexture, velocity, ivec2, mix, property, outputStruct, context, OnBeforeRenderPipeline, OnAfterRenderPipeline } from 'three/tsl';
3
+ import { clipAABB, computeHaltonOffsets, flickerReduction, sampleCurrentDepth, samplePreviousDepth } from '../utils/TAAUtils.js';
4
+
5
+ const _quadMesh = /*@__PURE__*/ new QuadMesh();
6
+ const _size = /*@__PURE__*/ new Vector2();
7
+
8
+ let _rendererState;
9
+
10
+
11
+ /**
12
+ * A special node that performs Temporal Anti-Aliasing Upscaling (TAAU).
13
+ *
14
+ * Like TRAA, the node accumulates jittered samples over multiple frames and
15
+ * reprojects history with motion vectors. Unlike TRAA, the input buffers
16
+ * (beauty, depth, velocity) are expected to be rendered at a lower resolution
17
+ * than the renderer's drawing buffer — typically by lowering the upstream
18
+ * pass's resolution via {@link PassNode#setResolutionScale} — and the resolve
19
+ * pass reconstructs an output-resolution image using a 9-tap Blackman-Harris
20
+ * filter (Gaussian approximation) over the jittered input samples. The result
21
+ * is an alternative to FSR2/3 that does anti-aliasing and upscaling in a
22
+ * single pass.
23
+ *
24
+ * References:
25
+ * - Karis, "High Quality Temporal Supersampling", SIGGRAPH 2014, {@link https://advances.realtimerendering.com/s2014/}
26
+ * - Riley/Arcila, FidelityFX Super Resolution 2, GDC 2022, {@link https://gpuopen.com/download/GDC_FidelityFX_Super_Resolution_2_0.pdf}
27
+ *
28
+ * Note: MSAA must be disabled when TAAU is in use.
29
+ *
30
+ * @augments Node
31
+ * @three_import import { taau } from 'three/addons/tsl/display/TAAUNode.js';
32
+ */
33
+ class TAAUNode extends Node {
34
+
35
+ static get type() {
36
+
37
+ return 'TAAUNode';
38
+
39
+ }
40
+
41
+ /**
42
+ * Constructs a new TAAU node.
43
+ *
44
+ * @param {TextureNode} beautyNode - The texture node that represents the input of the effect.
45
+ * @param {TextureNode} depthNode - A node that represents the scene's depth.
46
+ * @param {TextureNode} velocityNode - A node that represents the scene's velocity.
47
+ * @param {Camera} camera - The camera the scene is rendered with.
48
+ */
49
+ constructor( beautyNode, depthNode, velocityNode, camera ) {
50
+
51
+ super( 'vec4' );
52
+
53
+ /**
54
+ * This flag can be used for type testing.
55
+ *
56
+ * @type {boolean}
57
+ * @readonly
58
+ * @default true
59
+ */
60
+ this.isTAAUNode = true;
61
+
62
+ /**
63
+ * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
64
+ * its effect once per frame in `updateBefore()`.
65
+ *
66
+ * @type {string}
67
+ * @default 'frame'
68
+ */
69
+ this.updateBeforeType = NodeUpdateType.FRAME;
70
+
71
+ /**
72
+ * The texture node that represents the input of the effect.
73
+ *
74
+ * @type {TextureNode}
75
+ */
76
+ this.beautyNode = beautyNode;
77
+
78
+ /**
79
+ * A node that represents the scene's depth.
80
+ *
81
+ * @type {TextureNode}
82
+ */
83
+ this.depthNode = depthNode;
84
+
85
+ /**
86
+ * A node that represents the scene's velocity.
87
+ *
88
+ * @type {TextureNode}
89
+ */
90
+ this.velocityNode = velocityNode;
91
+
92
+ /**
93
+ * The camera the scene is rendered with.
94
+ *
95
+ * @type {Camera}
96
+ */
97
+ this.camera = camera;
98
+
99
+ /**
100
+ * When the difference between the current and previous depth goes above this threshold,
101
+ * the history is considered invalid.
102
+ *
103
+ * @type {number}
104
+ * @default 0.0005
105
+ */
106
+ this.depthThreshold = 0.0005;
107
+
108
+ /**
109
+ * The depth difference within the 3×3 neighborhood to consider a pixel as an edge.
110
+ *
111
+ * @type {number}
112
+ * @default 0.001
113
+ */
114
+ this.edgeDepthDiff = 0.001;
115
+
116
+ /**
117
+ * The history becomes invalid as the pixel length of the velocity approaches this value.
118
+ *
119
+ * @type {number}
120
+ * @default 128
121
+ */
122
+ this.maxVelocityLength = 128;
123
+
124
+ /**
125
+ * Baseline weight applied to the current frame in the resolve. Lower
126
+ * values produce smoother results with longer accumulation but slower
127
+ * convergence on disoccluded regions; the motion factor is added on
128
+ * top, so fast-moving pixels still respond quickly.
129
+ *
130
+ * @type {number}
131
+ * @default 0.025
132
+ */
133
+ this.currentFrameWeight = 0.025;
134
+
135
+ /**
136
+ * The jitter index selects the current camera offset value.
137
+ *
138
+ * @private
139
+ * @type {number}
140
+ * @default 0
141
+ */
142
+ this._jitterIndex = 0;
143
+
144
+ /**
145
+ * A uniform node holding the current jitter offset in input-pixel
146
+ * units. The shader needs this to know where each input sample was
147
+ * actually rendered when computing per-tap reconstruction weights.
148
+ *
149
+ * @private
150
+ * @type {UniformNode<vec2>}
151
+ */
152
+ this._jitterOffset = uniform( new Vector2() );
153
+
154
+ /**
155
+ * The render target that represents the history of frame data.
156
+ * Sized to the renderer's drawing buffer (the output resolution).
157
+ *
158
+ * @private
159
+ * @type {?RenderTarget}
160
+ */
161
+ this._historyRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType, count: 2 } );
162
+ this._historyRenderTarget.textures[ 0 ].name = 'TAAUNode.history.color';
163
+ this._historyRenderTarget.textures[ 1 ].name = 'TAAUNode.history.lock';
164
+
165
+ /**
166
+ * The render target for the resolve. Sized to the renderer's drawing
167
+ * buffer (the output resolution).
168
+ *
169
+ * @private
170
+ * @type {?RenderTarget}
171
+ */
172
+ this._resolveRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType } );
173
+ this._resolveRenderTarget.texture.name = 'TAAUNode.resolve';
174
+
175
+ /**
176
+ * Render target whose depth attachment holds the previous frame's
177
+ * depth buffer. The depth texture must be owned by a render target
178
+ * so that `copyTextureToTexture` can copy into it on the WebGL
179
+ * backend, which uses a framebuffer blit and therefore needs the
180
+ * destination depth texture to be attached to a framebuffer. This
181
+ * render target is sized independently of the history target so it
182
+ * can match the (lower-resolution) input depth texture.
183
+ *
184
+ * @private
185
+ * @type {RenderTarget}
186
+ */
187
+ this._previousDepthRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, depthTexture: new DepthTexture() } );
188
+ this._previousDepthRenderTarget.depthTexture.name = 'TAAUNode.previousDepth';
189
+
190
+ /**
191
+ * Material used for the resolve step.
192
+ *
193
+ * @private
194
+ * @type {NodeMaterial}
195
+ */
196
+ this._resolveMaterial = new NodeMaterial();
197
+ this._resolveMaterial.name = 'TAAU.resolve';
198
+
199
+ /**
200
+ * Material used to seed the history render target on resize. It
201
+ * performs a bilinear upscale of the current beauty buffer into the
202
+ * output-sized history target so that the first frames after a
203
+ * resize do not fade in from black.
204
+ *
205
+ * @private
206
+ * @type {NodeMaterial}
207
+ */
208
+ this._seedMaterial = new NodeMaterial();
209
+ this._seedMaterial.name = 'TAAU.seed';
210
+
211
+ /**
212
+ * The result of the effect is represented as a separate texture node.
213
+ *
214
+ * @private
215
+ * @type {PassTextureNode}
216
+ */
217
+ this._textureNode = passTexture( this, this._resolveRenderTarget.texture );
218
+
219
+ /**
220
+ * Used to save the original/unjittered projection matrix.
221
+ *
222
+ * @private
223
+ * @type {Matrix4}
224
+ */
225
+ this._originalProjectionMatrix = new Matrix4();
226
+
227
+ /**
228
+ * A uniform node holding the camera's near and far.
229
+ *
230
+ * @private
231
+ * @type {UniformNode<vec2>}
232
+ */
233
+ this._cameraNearFar = uniform( new Vector2() );
234
+
235
+ /**
236
+ * A uniform node holding the camera world matrix.
237
+ *
238
+ * @private
239
+ * @type {UniformNode<mat4>}
240
+ */
241
+ this._cameraWorldMatrix = uniform( new Matrix4() );
242
+
243
+ /**
244
+ * A uniform node holding the camera world matrix inverse.
245
+ *
246
+ * @private
247
+ * @type {UniformNode<mat4>}
248
+ */
249
+ this._cameraWorldMatrixInverse = uniform( new Matrix4() );
250
+
251
+ /**
252
+ * A uniform node holding the camera projection matrix inverse.
253
+ *
254
+ * @private
255
+ * @type {UniformNode<mat4>}
256
+ */
257
+ this._cameraProjectionMatrixInverse = uniform( new Matrix4() );
258
+
259
+ /**
260
+ * A uniform node holding the previous frame's view matrix.
261
+ *
262
+ * @private
263
+ * @type {UniformNode<mat4>}
264
+ */
265
+ this._previousCameraWorldMatrix = uniform( new Matrix4() );
266
+
267
+ /**
268
+ * A uniform node holding the previous frame's projection matrix inverse.
269
+ *
270
+ * @private
271
+ * @type {UniformNode<mat4>}
272
+ */
273
+ this._previousCameraProjectionMatrixInverse = uniform( new Matrix4() );
274
+
275
+ /**
276
+ * A texture node for the previous depth buffer.
277
+ *
278
+ * @private
279
+ * @type {TextureNode}
280
+ */
281
+ this._previousDepthNode = texture( this._previousDepthRenderTarget.depthTexture );
282
+
283
+ }
284
+
285
+ /**
286
+ * Returns the result of the effect as a texture node.
287
+ *
288
+ * @return {PassTextureNode} A texture node that represents the result of the effect.
289
+ */
290
+ getTextureNode() {
291
+
292
+ return this._textureNode;
293
+
294
+ }
295
+
296
+ /**
297
+ * Sets the output size of the effect (history and resolve targets). The
298
+ * previous-depth texture is sized independently in `updateBefore()` to
299
+ * track the scene's current depth texture.
300
+ *
301
+ * @param {number} outputWidth - The output width (drawing buffer width).
302
+ * @param {number} outputHeight - The output height (drawing buffer height).
303
+ */
304
+ setSize( outputWidth, outputHeight ) {
305
+
306
+ this._historyRenderTarget.setSize( outputWidth, outputHeight );
307
+ this._resolveRenderTarget.setSize( outputWidth, outputHeight );
308
+
309
+ }
310
+
311
+ /**
312
+ * Defines the TAAU's current jitter as a view offset to the scene's
313
+ * camera. The jitter is shrunk to one *output* pixel (rather than one
314
+ * input pixel) so that the halton sequence gradually fills the output
315
+ * sub-pixel grid over multiple frames.
316
+ *
317
+ * @param {number} inputWidth - The width of the input buffers the camera renders into.
318
+ * @param {number} inputHeight - The height of the input buffers the camera renders into.
319
+ */
320
+ setViewOffset( inputWidth, inputHeight ) {
321
+
322
+ // save original/unjittered projection matrix for velocity pass
323
+
324
+ this.camera.updateProjectionMatrix();
325
+ this._originalProjectionMatrix.copy( this.camera.projectionMatrix );
326
+
327
+ velocity.setProjectionMatrix( this._originalProjectionMatrix );
328
+
329
+ // The jitter range must span one output pixel (not one input pixel),
330
+ // so we shrink the input-pixel-unit offset by the ratio of input to
331
+ // output resolution.
332
+
333
+ const haltonOffset = _haltonOffsets[ this._jitterIndex ];
334
+ const jitterX = ( haltonOffset[ 0 ] - 0.5 );
335
+ const jitterY = ( haltonOffset[ 1 ] - 0.5 );
336
+
337
+ this._jitterOffset.value.set( jitterX, jitterY );
338
+
339
+ this.camera.setViewOffset(
340
+
341
+ inputWidth, inputHeight,
342
+
343
+ jitterX, jitterY,
344
+
345
+ inputWidth, inputHeight
346
+
347
+ );
348
+
349
+ }
350
+
351
+ /**
352
+ * Clears the view offset from the scene's camera.
353
+ */
354
+ clearViewOffset() {
355
+
356
+ this.camera.clearViewOffset();
357
+
358
+ velocity.setProjectionMatrix( null );
359
+
360
+ // update jitter index
361
+
362
+ this._jitterIndex ++;
363
+ this._jitterIndex = this._jitterIndex % _haltonOffsets.length;
364
+
365
+ }
366
+
367
+ /**
368
+ * This method is used to render the effect once per frame.
369
+ *
370
+ * @param {NodeFrame} frame - The current node frame.
371
+ */
372
+ updateBefore( frame ) {
373
+
374
+ const { renderer } = frame;
375
+
376
+ // store previous frame matrices before updating current ones
377
+
378
+ this._previousCameraWorldMatrix.value.copy( this._cameraWorldMatrix.value );
379
+ this._previousCameraProjectionMatrixInverse.value.copy( this._cameraProjectionMatrixInverse.value );
380
+
381
+ // update camera matrices uniforms
382
+
383
+ this._cameraNearFar.value.set( this.camera.near, this.camera.far );
384
+ this._cameraWorldMatrix.value.copy( this.camera.matrixWorld );
385
+ this._cameraWorldMatrixInverse.value.copy( this.camera.matrixWorldInverse );
386
+ this._cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );
387
+
388
+ // the output dimensions are derived from the renderer's drawing buffer
389
+
390
+ const drawingBufferSize = renderer.getDrawingBufferSize( _size );
391
+ const outputWidth = drawingBufferSize.width;
392
+ const outputHeight = drawingBufferSize.height;
393
+
394
+ //
395
+
396
+ _rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
397
+
398
+ //
399
+
400
+ const needsRestart =
401
+ this._historyRenderTarget.width !== outputWidth ||
402
+ this._historyRenderTarget.height !== outputHeight;
403
+
404
+ this.setSize( outputWidth, outputHeight );
405
+
406
+ // every time the dimensions change we need fresh history data
407
+
408
+ if ( needsRestart === true ) {
409
+
410
+ // Seed the history with a bilinear upscale of the current beauty
411
+ // buffer. Without this the first frames after a resize fade in
412
+ // from black because the history target was cleared. The seed
413
+ // material is a quad pass that samples beauty at output UVs, so
414
+ // it produces an output-sized image regardless of the input size.
415
+
416
+ renderer.setRenderTarget( this._historyRenderTarget );
417
+ _quadMesh.material = this._seedMaterial;
418
+ _quadMesh.name = 'TAAU.seed';
419
+ _quadMesh.render( renderer );
420
+ renderer.setRenderTarget( null );
421
+
422
+ }
423
+
424
+ // resolve
425
+
426
+ renderer.setRenderTarget( this._resolveRenderTarget );
427
+ _quadMesh.material = this._resolveMaterial;
428
+ _quadMesh.name = 'TAAU';
429
+ _quadMesh.render( renderer );
430
+ renderer.setRenderTarget( null );
431
+
432
+ // update history
433
+
434
+ renderer.copyTextureToTexture( this._resolveRenderTarget.texture, this._historyRenderTarget.texture );
435
+
436
+ // Copy the current scene depth into the previous-depth texture. We
437
+ // keep the destination size locked to the source's actual dimensions
438
+ // so that any one-frame timing mismatch between the scene pass's depth
439
+ // attachment and the beauty render target's bookkeeping cannot
440
+ // produce a copy with mismatched extents (which WebGPU rejects for
441
+ // depth/stencil formats).
442
+
443
+ const currentDepth = this.depthNode.value;
444
+ const srcW = currentDepth.image !== null && currentDepth.image !== undefined ? currentDepth.image.width : 0;
445
+ const srcH = currentDepth.image !== null && currentDepth.image !== undefined ? currentDepth.image.height : 0;
446
+
447
+ if ( srcW > 0 && srcH > 0 ) {
448
+
449
+ if ( this._previousDepthRenderTarget.width !== srcW || this._previousDepthRenderTarget.height !== srcH ) {
450
+
451
+ this._previousDepthRenderTarget.setSize( srcW, srcH );
452
+
453
+ }
454
+
455
+ const dstDepth = this._previousDepthRenderTarget.depthTexture;
456
+ renderer.copyTextureToTexture( currentDepth, dstDepth );
457
+
458
+ }
459
+
460
+ // restore
461
+
462
+ RendererUtils.restoreRendererState( renderer, _rendererState );
463
+
464
+ }
465
+
466
+ /**
467
+ * This method is used to setup the effect's render targets and TSL code.
468
+ *
469
+ * @param {NodeBuilder} builder - The current node builder.
470
+ * @return {PassTextureNode}
471
+ */
472
+ setup( builder ) {
473
+
474
+ this.depthNode.build( builder );
475
+ this.velocityNode.build( builder );
476
+ this.beautyNode.build( builder );
477
+
478
+ if ( builder.renderPipeline && ! builder.context.renderPipelineState.viewOffsetOwner ) {
479
+
480
+ builder.context.renderPipelineState.viewOffsetOwner = this;
481
+
482
+ OnBeforeRenderPipeline( () => {
483
+
484
+ const beautyRenderTarget = ( this.beautyNode.isRTTNode ) ? this.beautyNode.renderTarget : this.beautyNode.passNode.renderTarget;
485
+
486
+ const inputWidth = beautyRenderTarget.texture.width;
487
+ const inputHeight = beautyRenderTarget.texture.height;
488
+
489
+ this.setViewOffset( inputWidth, inputHeight );
490
+
491
+ } );
492
+
493
+ OnAfterRenderPipeline( () => {
494
+
495
+ this.clearViewOffset();
496
+
497
+ } );
498
+
499
+ }
500
+
501
+ this._previousDepthRenderTarget.depthTexture.format = this.depthNode.value.format;
502
+ this._previousDepthRenderTarget.depthTexture.type = this.depthNode.value.type;
503
+
504
+ const historyNode = texture( this._historyRenderTarget.textures[ 0 ] );
505
+ const lockNode = texture( this._historyRenderTarget.textures[ 1 ] );
506
+
507
+ // --- TAAU resolve ---
508
+ //
509
+ // For each output pixel, we map its position into input-pixel space,
510
+ // find the closest jittered input sample, and reconstruct the current
511
+ // color as a weighted sum of the 3×3 neighborhood around that sample.
512
+ // Each tap's weight is a Gaussian approximation of a Blackman-Harris
513
+ // window evaluated at the distance between the tap's (jittered)
514
+ // sample center and the output pixel center. The same neighborhood
515
+ // also supplies the moments used for variance clipping of the
516
+ // reprojected history, so no second neighborhood read is needed.
517
+
518
+ const colorOutput = property( 'vec4' );
519
+ const lockOutput = property( 'vec4' );
520
+
521
+ const outputNode = outputStruct( colorOutput, lockOutput );
522
+
523
+ const resolve = Fn( () => {
524
+
525
+ const uvNode = uv();
526
+ const inputSize = this.beautyNode.size(); // ivec2
527
+ const inputSizeF = vec2( inputSize );
528
+
529
+ // output pixel center in input-pixel coordinates
530
+
531
+ const pIn = uvNode.mul( inputSizeF );
532
+
533
+ // the input sample at integer texel (m, n) was rendered at world
534
+ // position (m + 0.5 + jitter). Solving for the closest tap gives:
535
+
536
+ const closestTapF = pIn.sub( vec2( 0.5 ).add( this._jitterOffset ) ).round();
537
+ const closestTap = ivec2( closestTapF );
538
+
539
+ // depth dilation around the closest input tap
540
+
541
+ const currentDepth = sampleCurrentDepth( this.depthNode, closestTapF, this._cameraNearFar );
542
+ const closestDepth = currentDepth.get( 'closestDepth' );
543
+ const closestPositionTexel = currentDepth.get( 'closestPositionTexel' );
544
+ const farthestDepth = currentDepth.get( 'farthestDepth' );
545
+
546
+ // reproject using the velocity sampled at the dilated depth tap
547
+
548
+ const offsetUV = this.velocityNode.load( closestPositionTexel ).xy.mul( vec2( 0.5, - 0.5 ) );
549
+ const historyUV = uvNode.sub( offsetUV );
550
+ const previousDepth = samplePreviousDepth( this._previousDepthNode, historyUV, this._previousCameraProjectionMatrixInverse, this._previousCameraWorldMatrix, this._cameraWorldMatrixInverse, this._cameraNearFar, this.camera );
551
+
552
+ // history validity
553
+
554
+ const isValidUV = historyUV.greaterThanEqual( 0 ).all().and( historyUV.lessThanEqual( 1 ).all() );
555
+ const isEdge = farthestDepth.sub( closestDepth ).greaterThan( this.edgeDepthDiff );
556
+ const isDisocclusion = closestDepth.sub( previousDepth ).greaterThan( this.depthThreshold );
557
+ const hasValidHistory = isValidUV.and( isEdge.or( isDisocclusion.not() ) );
558
+
559
+ // 9-tap Blackman-Harris (Gaussian approximation) reconstruction
560
+ // of the current frame color, plus moment accumulation for the
561
+ // variance clip of the history.
562
+
563
+ const sumColor = vec4( 0 ).toVar();
564
+ const sumWeight = float( 0 ).toVar();
565
+ const moment1 = vec4( 0 ).toVar();
566
+ const moment2 = vec4( 0 ).toVar();
567
+
568
+ const offsets = [
569
+ [ - 1, - 1 ], [ 0, - 1 ], [ 1, - 1 ],
570
+ [ - 1, 0 ], [ 0, 0 ], [ 1, 0 ],
571
+ [ - 1, 1 ], [ 0, 1 ], [ 1, 1 ]
572
+ ];
573
+
574
+ for ( const [ x, y ] of offsets ) {
575
+
576
+ const tap = closestTap.add( ivec2( x, y ) );
577
+ const tapCenter = vec2( tap ).add( vec2( 0.5 ).add( this._jitterOffset ) );
578
+ const delta = pIn.sub( tapCenter );
579
+ const d2 = delta.dot( delta );
580
+ const w = exp( d2.mul( - 2.29 ) );
581
+
582
+ // Use max() to prevent NaN values from propagating.
583
+ const c = this.beautyNode.load( tap ).max( 0 );
584
+
585
+ sumColor.addAssign( c.mul( w ) );
586
+ sumWeight.addAssign( w );
587
+
588
+ moment1.addAssign( c );
589
+ moment2.addAssign( c.pow2() );
590
+
591
+ }
592
+
593
+ const currentColor = sumColor.div( sumWeight.max( 1e-5 ) );
594
+
595
+ // variance clipping using the moments we just gathered
596
+
597
+ const N = float( offsets.length );
598
+ const mean = moment1.div( N );
599
+ const motionFactor = uvNode.sub( historyUV ).mul( inputSizeF ).length().div( this.maxVelocityLength ).saturate();
600
+ const varianceGamma = mix( 0.5, 1, motionFactor.oneMinus().pow2() );
601
+ const variance = moment2.div( N ).sub( mean.pow2() ).max( 0 ).sqrt().mul( varianceGamma );
602
+ const minColor = mean.sub( variance );
603
+ const maxColor = mean.add( variance );
604
+
605
+ const historyColor = historyNode.sample( historyUV );
606
+ const clippedHistoryColor = clipAABB( mean.clamp( minColor, maxColor ), historyColor, minColor, maxColor );
607
+
608
+ // Current weight. Under TAAU a single input frame covers less of
609
+ // the output grid, so the baseline current weight is lower than
610
+ // in standard TRAA to give the accumulator more frames to fill
611
+ // in sub-pixel detail. Motion still biases toward the current
612
+ // frame to keep disoccluded and fast-moving pixels responsive.
613
+
614
+ const currentLuma = luminance( currentColor.rgb );
615
+ const meanLuma = luminance( mean.rgb ).toConst();
616
+ const thinFeature = currentLuma.sub( meanLuma ).abs().div( meanLuma ).smoothstep( 0, 0.2 );
617
+
618
+ // Gate the lock by a two-sided depth change check. The
619
+ // existing `isDisocclusion` is one-sided (only fires when
620
+ // the scene moves farther), but new geometry appearing
621
+ // closer also makes the history stale.
622
+ const isDepthChanged = closestDepth.sub( previousDepth ).abs().greaterThan( this.depthThreshold );
623
+ const canLock = isValidUV.and( isDepthChanged.not() );
624
+ const gatedThinFeature = canLock.select( thinFeature, float( 0 ) );
625
+
626
+ const decay = isDisocclusion.select( 0, 0.5 );
627
+ const lock = max( gatedThinFeature, lockNode.r.mul( decay ) ).saturate();
628
+ const lockedHistoryColor = mix( clippedHistoryColor, historyColor, lock );
629
+
630
+ const currentWeight = float( this.currentFrameWeight ).toVar();
631
+ currentWeight.assign( hasValidHistory.select( currentWeight.add( motionFactor ).saturate(), 1 ) );
632
+
633
+ const output = flickerReduction( currentColor, lockedHistoryColor, currentWeight );
634
+
635
+ colorOutput.assign( output );
636
+ lockOutput.assign( lock );
637
+
638
+ return vec4( 0 ); // temporary solution until TSL does not complain anymore
639
+
640
+ } );
641
+
642
+ // materials
643
+
644
+ const sharedContext = context( builder.getSharedContext() );
645
+
646
+ this._resolveMaterial.contextNode = sharedContext;
647
+ this._resolveMaterial.colorNode = resolve();
648
+ this._resolveMaterial.outputNode = outputNode;
649
+
650
+ this._seedMaterial.colorNode = Fn( () => {
651
+
652
+ colorOutput.assign( this.beautyNode.sample( uv() ) );
653
+ lockOutput.assign( 0 );
654
+
655
+ return vec4( 0 );
656
+
657
+ } )();
658
+
659
+ this._seedMaterial.contextNode = sharedContext;
660
+ this._seedMaterial.outputNode = outputNode;
661
+
662
+ return this._textureNode;
663
+
664
+ }
665
+
666
+ /**
667
+ * Frees internal resources. This method should be called
668
+ * when the effect is no longer required.
669
+ */
670
+ dispose() {
671
+
672
+ super.dispose();
673
+
674
+ this._historyRenderTarget.dispose();
675
+ this._resolveRenderTarget.dispose();
676
+ this._previousDepthRenderTarget.dispose();
677
+
678
+ this._resolveMaterial.dispose();
679
+ this._seedMaterial.dispose();
680
+
681
+ }
682
+
683
+ }
684
+
685
+ export default TAAUNode;
686
+
687
+ const _haltonOffsets = /*@__PURE__*/ computeHaltonOffsets( 32 );
688
+
689
+ /**
690
+ * TSL function for creating a TAAU node for Temporal Anti-Aliasing Upscaling.
691
+ *
692
+ * @tsl
693
+ * @function
694
+ * @param {TextureNode} beautyNode - The texture node that represents the input of the effect.
695
+ * @param {TextureNode} depthNode - A node that represents the scene's depth.
696
+ * @param {TextureNode} velocityNode - A node that represents the scene's velocity.
697
+ * @param {Camera} camera - The camera the scene is rendered with.
698
+ * @returns {TAAUNode}
699
+ */
700
+ export const taau = ( beautyNode, depthNode, velocityNode, camera ) => new TAAUNode( convertToTexture( beautyNode ), depthNode, velocityNode, camera );