@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,108 @@
1
+ import {
2
+ InstancedInterleavedBuffer,
3
+ InterleavedBufferAttribute,
4
+ Mesh,
5
+ Vector3,
6
+ Vector4
7
+ } from 'three';
8
+ import { LineSegmentsGeometry } from './LineSegmentsGeometry.js';
9
+ import { LineMaterial } from './LineMaterial.js';
10
+
11
+ const _start = new Vector3();
12
+ const _end = new Vector3();
13
+ const _viewport = new Vector4();
14
+
15
+ /**
16
+ * A class for creating wireframes based on wide lines.
17
+ *
18
+ * This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
19
+ * import the class from `lines/webgpu/Wireframe.js`.
20
+ *
21
+ * ```js
22
+ * const geometry = new THREE.IcosahedronGeometry();
23
+ * const wireframeGeometry = new WireframeGeometry2( geo );
24
+ *
25
+ * const wireframe = new Wireframe( wireframeGeometry, material );
26
+ * scene.add( wireframe );
27
+ * ```
28
+ *
29
+ * @augments Mesh
30
+ * @three_import import { Wireframe } from 'three/addons/lines/Wireframe.js';
31
+ */
32
+ class Wireframe extends Mesh {
33
+
34
+ /**
35
+ * Constructs a new wireframe.
36
+ *
37
+ * @param {LineSegmentsGeometry} [geometry] - The line geometry.
38
+ * @param {LineMaterial} [material] - The line material.
39
+ */
40
+ constructor( geometry = new LineSegmentsGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) {
41
+
42
+ super( geometry, material );
43
+
44
+ /**
45
+ * This flag can be used for type testing.
46
+ *
47
+ * @type {boolean}
48
+ * @readonly
49
+ * @default true
50
+ */
51
+ this.isWireframe = true;
52
+
53
+ this.type = 'Wireframe';
54
+
55
+ }
56
+
57
+ /**
58
+ * Computes an array of distance values which are necessary for rendering dashed lines.
59
+ * For each vertex in the geometry, the method calculates the cumulative length from the
60
+ * current point to the very beginning of the line.
61
+ *
62
+ * @return {Wireframe} A reference to this instance.
63
+ */
64
+ computeLineDistances() {
65
+
66
+ // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
67
+
68
+ const geometry = this.geometry;
69
+
70
+ const instanceStart = geometry.attributes.instanceStart;
71
+ const instanceEnd = geometry.attributes.instanceEnd;
72
+ const lineDistances = new Float32Array( 2 * instanceStart.count );
73
+
74
+ for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
75
+
76
+ _start.fromBufferAttribute( instanceStart, i );
77
+ _end.fromBufferAttribute( instanceEnd, i );
78
+
79
+ lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];
80
+ lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
81
+
82
+ }
83
+
84
+ const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
85
+
86
+ geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
87
+ geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
88
+
89
+ return this;
90
+
91
+ }
92
+
93
+ onBeforeRender( renderer ) {
94
+
95
+ const uniforms = this.material.uniforms;
96
+
97
+ if ( uniforms && uniforms.resolution ) {
98
+
99
+ renderer.getViewport( _viewport );
100
+ this.material.uniforms.resolution.value.set( _viewport.z, _viewport.w );
101
+
102
+ }
103
+
104
+ }
105
+
106
+ }
107
+
108
+ export { Wireframe };
@@ -0,0 +1,49 @@
1
+ import {
2
+ WireframeGeometry
3
+ } from 'three';
4
+ import { LineSegmentsGeometry } from './LineSegmentsGeometry.js';
5
+
6
+ /**
7
+ * A special type of line segments geometry intended for wireframe rendering.
8
+ *
9
+ * This is used in {@link Wireframe} to describe the shape.
10
+ *
11
+ * ```js
12
+ * const geometry = new THREE.IcosahedronGeometry();
13
+ * const wireframeGeometry = new WireframeGeometry2( geo );
14
+ * ```
15
+ *
16
+ * @augments LineSegmentsGeometry
17
+ * @three_import import { WireframeGeometry2 } from 'three/addons/lines/WireframeGeometry2.js';
18
+ */
19
+ class WireframeGeometry2 extends LineSegmentsGeometry {
20
+
21
+ /**
22
+ * Constructs a new wireframe geometry.
23
+ *
24
+ * @param {BufferGeometry} [geometry] - The geometry to render the wireframe for.
25
+ */
26
+ constructor( geometry ) {
27
+
28
+ super();
29
+
30
+ /**
31
+ * This flag can be used for type testing.
32
+ *
33
+ * @type {boolean}
34
+ * @readonly
35
+ * @default true
36
+ */
37
+ this.isWireframeGeometry2 = true;
38
+
39
+ this.type = 'WireframeGeometry2';
40
+
41
+ this.fromWireframeGeometry( new WireframeGeometry( geometry ) );
42
+
43
+ // set colors, maybe
44
+
45
+ }
46
+
47
+ }
48
+
49
+ export { WireframeGeometry2 };
@@ -0,0 +1,46 @@
1
+ import { Line2NodeMaterial } from 'three/webgpu';
2
+
3
+ import { LineSegments2 } from './LineSegments2.js';
4
+ import { LineGeometry } from '../LineGeometry.js';
5
+
6
+ /**
7
+ * A polyline drawn between vertices.
8
+ *
9
+ * This adds functionality beyond {@link Line}, like arbitrary line width and changing width to
10
+ * be in world units.It extends {@link LineSegments2}, simplifying constructing segments from a
11
+ * chain of points.
12
+ *
13
+ * This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
14
+ * import the class from `lines/Line2.js`.
15
+ *
16
+ * @augments LineSegments2
17
+ * @three_import import { Line2 } from 'three/addons/lines/webgpu/Line2.js';
18
+ */
19
+ class Line2 extends LineSegments2 {
20
+
21
+ /**
22
+ * Constructs a new wide line.
23
+ *
24
+ * @param {LineGeometry} [geometry] - The line geometry.
25
+ * @param {Line2NodeMaterial} [material] - The line material.
26
+ */
27
+ constructor( geometry = new LineGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
28
+
29
+ super( geometry, material );
30
+
31
+ /**
32
+ * This flag can be used for type testing.
33
+ *
34
+ * @type {boolean}
35
+ * @readonly
36
+ * @default true
37
+ */
38
+ this.isLine2 = true;
39
+
40
+ this.type = 'Line2';
41
+
42
+ }
43
+
44
+ }
45
+
46
+ export { Line2 };
@@ -0,0 +1,419 @@
1
+ import {
2
+ Box3,
3
+ InstancedInterleavedBuffer,
4
+ InterleavedBufferAttribute,
5
+ Line3,
6
+ MathUtils,
7
+ Matrix4,
8
+ Mesh,
9
+ Sphere,
10
+ Vector3,
11
+ Vector4,
12
+ Line2NodeMaterial,
13
+ Vector2
14
+ } from 'three/webgpu';
15
+ import { LineSegmentsGeometry } from '../LineSegmentsGeometry.js';
16
+
17
+ const _start = new Vector3();
18
+ const _end = new Vector3();
19
+
20
+ const _start4 = new Vector4();
21
+ const _end4 = new Vector4();
22
+
23
+ const _ssOrigin = new Vector4();
24
+ const _ssOrigin3 = new Vector3();
25
+ const _mvMatrix = new Matrix4();
26
+ const _line = new Line3();
27
+ const _closestPoint = new Vector3();
28
+
29
+ const _box = new Box3();
30
+ const _sphere = new Sphere();
31
+ const _clipToWorldVector = new Vector4();
32
+ const _viewport = new Vector4();
33
+
34
+ let _ray, _lineWidth;
35
+
36
+ // Returns the margin required to expand by in world space given the distance from the camera,
37
+ // line width, resolution, and camera projection
38
+ function getWorldSpaceHalfWidth( camera, distance, resolution ) {
39
+
40
+ // transform into clip space, adjust the x and y values by the pixel width offset, then
41
+ // transform back into world space to get world offset. Note clip space is [-1, 1] so full
42
+ // width does not need to be halved.
43
+ _clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
44
+ _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
45
+ _clipToWorldVector.x = _lineWidth / resolution.width;
46
+ _clipToWorldVector.y = _lineWidth / resolution.height;
47
+ _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
48
+ _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
49
+
50
+ return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
51
+
52
+ }
53
+
54
+ function raycastWorldUnits( lineSegments, intersects ) {
55
+
56
+ const matrixWorld = lineSegments.matrixWorld;
57
+ const geometry = lineSegments.geometry;
58
+ const instanceStart = geometry.attributes.instanceStart;
59
+ const instanceEnd = geometry.attributes.instanceEnd;
60
+ const segmentCount = Math.min( geometry.instanceCount, instanceStart.count );
61
+
62
+ for ( let i = 0, l = segmentCount; i < l; i ++ ) {
63
+
64
+ _line.start.fromBufferAttribute( instanceStart, i );
65
+ _line.end.fromBufferAttribute( instanceEnd, i );
66
+
67
+ _line.applyMatrix4( matrixWorld );
68
+
69
+ const pointOnLine = new Vector3();
70
+ const point = new Vector3();
71
+
72
+ _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
73
+ const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;
74
+
75
+ if ( isInside ) {
76
+
77
+ intersects.push( {
78
+ point,
79
+ pointOnLine,
80
+ distance: _ray.origin.distanceTo( point ),
81
+ object: lineSegments,
82
+ face: null,
83
+ faceIndex: i,
84
+ uv: null,
85
+ uv1: null,
86
+ } );
87
+
88
+ }
89
+
90
+ }
91
+
92
+ }
93
+
94
+ function raycastScreenSpace( lineSegments, camera, intersects ) {
95
+
96
+ const projectionMatrix = camera.projectionMatrix;
97
+ const matrixWorld = lineSegments.matrixWorld;
98
+
99
+ const resolution = lineSegments._resolution;
100
+
101
+ const geometry = lineSegments.geometry;
102
+ const instanceStart = geometry.attributes.instanceStart;
103
+ const instanceEnd = geometry.attributes.instanceEnd;
104
+ const segmentCount = Math.min( geometry.instanceCount, instanceStart.count );
105
+
106
+ const near = - camera.near;
107
+
108
+ //
109
+
110
+ // pick a point 1 unit out along the ray to avoid the ray origin
111
+ // sitting at the camera origin which will cause "w" to be 0 when
112
+ // applying the projection matrix.
113
+ _ray.at( 1, _ssOrigin );
114
+
115
+ // ndc space [ - 1.0, 1.0 ]
116
+ _ssOrigin.w = 1;
117
+ _ssOrigin.applyMatrix4( camera.matrixWorldInverse );
118
+ _ssOrigin.applyMatrix4( projectionMatrix );
119
+ _ssOrigin.multiplyScalar( 1 / _ssOrigin.w );
120
+
121
+ // screen space
122
+ _ssOrigin.x *= resolution.x / 2;
123
+ _ssOrigin.y *= resolution.y / 2;
124
+ _ssOrigin.z = 0;
125
+
126
+ _ssOrigin3.copy( _ssOrigin );
127
+
128
+ _mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );
129
+
130
+ for ( let i = 0, l = segmentCount; i < l; i ++ ) {
131
+
132
+ _start4.fromBufferAttribute( instanceStart, i );
133
+ _end4.fromBufferAttribute( instanceEnd, i );
134
+
135
+ _start4.w = 1;
136
+ _end4.w = 1;
137
+
138
+ // camera space
139
+ _start4.applyMatrix4( _mvMatrix );
140
+ _end4.applyMatrix4( _mvMatrix );
141
+
142
+ // skip the segment if it's entirely behind the camera
143
+ const isBehindCameraNear = _start4.z > near && _end4.z > near;
144
+ if ( isBehindCameraNear ) {
145
+
146
+ continue;
147
+
148
+ }
149
+
150
+ // trim the segment if it extends behind camera near
151
+ if ( _start4.z > near ) {
152
+
153
+ const deltaDist = _start4.z - _end4.z;
154
+ const t = ( _start4.z - near ) / deltaDist;
155
+ _start4.lerp( _end4, t );
156
+
157
+ } else if ( _end4.z > near ) {
158
+
159
+ const deltaDist = _end4.z - _start4.z;
160
+ const t = ( _end4.z - near ) / deltaDist;
161
+ _end4.lerp( _start4, t );
162
+
163
+ }
164
+
165
+ // clip space
166
+ _start4.applyMatrix4( projectionMatrix );
167
+ _end4.applyMatrix4( projectionMatrix );
168
+
169
+ // ndc space [ - 1.0, 1.0 ]
170
+ _start4.multiplyScalar( 1 / _start4.w );
171
+ _end4.multiplyScalar( 1 / _end4.w );
172
+
173
+ // screen space
174
+ _start4.x *= resolution.x / 2;
175
+ _start4.y *= resolution.y / 2;
176
+
177
+ _end4.x *= resolution.x / 2;
178
+ _end4.y *= resolution.y / 2;
179
+
180
+ // create 2d segment
181
+ _line.start.copy( _start4 );
182
+ _line.start.z = 0;
183
+
184
+ _line.end.copy( _end4 );
185
+ _line.end.z = 0;
186
+
187
+ // get closest point on ray to segment
188
+ const param = _line.closestPointToPointParameter( _ssOrigin3, true );
189
+ _line.at( param, _closestPoint );
190
+
191
+ // check if the intersection point is within clip space
192
+ const zPos = MathUtils.lerp( _start4.z, _end4.z, param );
193
+ const isInClipSpace = zPos >= - 1 && zPos <= 1;
194
+
195
+ const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5;
196
+
197
+ if ( isInClipSpace && isInside ) {
198
+
199
+ _line.start.fromBufferAttribute( instanceStart, i );
200
+ _line.end.fromBufferAttribute( instanceEnd, i );
201
+
202
+ _line.start.applyMatrix4( matrixWorld );
203
+ _line.end.applyMatrix4( matrixWorld );
204
+
205
+ const pointOnLine = new Vector3();
206
+ const point = new Vector3();
207
+
208
+ _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
209
+
210
+ intersects.push( {
211
+ point: point,
212
+ pointOnLine: pointOnLine,
213
+ distance: _ray.origin.distanceTo( point ),
214
+ object: lineSegments,
215
+ face: null,
216
+ faceIndex: i,
217
+ uv: null,
218
+ uv1: null,
219
+ } );
220
+
221
+ }
222
+
223
+ }
224
+
225
+ }
226
+
227
+ /**
228
+ * A series of lines drawn between pairs of vertices.
229
+ *
230
+ * This adds functionality beyond {@link LineSegments}, like arbitrary line width and changing width
231
+ * to be in world units. {@link Line2} extends this object, forming a polyline instead of individual
232
+ * segments.
233
+ *
234
+ * This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
235
+ * import the class from `lines/LineSegments2.js`.
236
+ *
237
+ * @augments Mesh
238
+ * @three_import import { LineSegments2 } from 'three/addons/lines/webgpu/LineSegments2.js';
239
+ */
240
+ class LineSegments2 extends Mesh {
241
+
242
+ /**
243
+ * Constructs a new wide line.
244
+ *
245
+ * @param {LineSegmentsGeometry} [geometry] - The line geometry.
246
+ * @param {Line2NodeMaterial} [material] - The line material.
247
+ */
248
+ constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
249
+
250
+ super( geometry, material );
251
+
252
+ /**
253
+ * This flag can be used for type testing.
254
+ *
255
+ * @type {boolean}
256
+ * @readonly
257
+ * @default true
258
+ */
259
+ this.isLineSegments2 = true;
260
+
261
+ this.type = 'LineSegments2';
262
+
263
+ this._resolution = new Vector2();
264
+
265
+ }
266
+
267
+ /**
268
+ * Computes an array of distance values which are necessary for rendering dashed lines.
269
+ * For each vertex in the geometry, the method calculates the cumulative length from the
270
+ * current point to the very beginning of the line.
271
+ *
272
+ * @return {LineSegments2} A reference to this instance.
273
+ */
274
+ computeLineDistances() {
275
+
276
+ // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
277
+
278
+ const geometry = this.geometry;
279
+
280
+ const instanceStart = geometry.attributes.instanceStart;
281
+ const instanceEnd = geometry.attributes.instanceEnd;
282
+ const lineDistances = new Float32Array( 2 * instanceStart.count );
283
+
284
+ for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
285
+
286
+ _start.fromBufferAttribute( instanceStart, i );
287
+ _end.fromBufferAttribute( instanceEnd, i );
288
+
289
+ lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];
290
+ lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
291
+
292
+ }
293
+
294
+ const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
295
+
296
+ geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
297
+ geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
298
+
299
+ return this;
300
+
301
+ }
302
+
303
+ onBeforeRender( renderer ) {
304
+
305
+ renderer.getViewport( _viewport );
306
+ this._resolution.set( _viewport.z, _viewport.w );
307
+
308
+ }
309
+
310
+ /**
311
+ * Computes intersection points between a casted ray and this instance.
312
+ *
313
+ * @param {Raycaster} raycaster - The raycaster.
314
+ * @param {Array<Object>} intersects - The target array that holds the intersection points.
315
+ */
316
+ raycast( raycaster, intersects ) {
317
+
318
+ const worldUnits = this.material.worldUnits;
319
+ const camera = raycaster.camera;
320
+
321
+ if ( camera === null && ! worldUnits ) {
322
+
323
+ console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' );
324
+
325
+ }
326
+
327
+ // early out if no resolution has been set (line was not rendered yet)
328
+
329
+ if ( worldUnits === false && ( this._resolution.x === 0 || this._resolution.y === 0 ) ) {
330
+
331
+ return;
332
+
333
+ }
334
+
335
+ const threshold = ( raycaster.params.Line2 !== undefined ) ? raycaster.params.Line2.threshold || 0 : 0;
336
+
337
+ _ray = raycaster.ray;
338
+
339
+ const matrixWorld = this.matrixWorld;
340
+ const geometry = this.geometry;
341
+ const material = this.material;
342
+
343
+ _lineWidth = material.linewidth + threshold;
344
+
345
+ // check if we intersect the sphere bounds
346
+ if ( geometry.boundingSphere === null ) {
347
+
348
+ geometry.computeBoundingSphere();
349
+
350
+ }
351
+
352
+ _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
353
+
354
+ // increase the sphere bounds by the worst case line screen space width
355
+ let sphereMargin;
356
+ if ( worldUnits ) {
357
+
358
+ sphereMargin = _lineWidth * 0.5;
359
+
360
+ } else {
361
+
362
+ const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
363
+ sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this._resolution );
364
+
365
+ }
366
+
367
+ _sphere.radius += sphereMargin;
368
+
369
+ if ( _ray.intersectsSphere( _sphere ) === false ) {
370
+
371
+ return;
372
+
373
+ }
374
+
375
+ // check if we intersect the box bounds
376
+ if ( geometry.boundingBox === null ) {
377
+
378
+ geometry.computeBoundingBox();
379
+
380
+ }
381
+
382
+ _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
383
+
384
+ // increase the box bounds by the worst case line width
385
+ let boxMargin;
386
+ if ( worldUnits ) {
387
+
388
+ boxMargin = _lineWidth * 0.5;
389
+
390
+ } else {
391
+
392
+ const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
393
+ boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this._resolution );
394
+
395
+ }
396
+
397
+ _box.expandByScalar( boxMargin );
398
+
399
+ if ( _ray.intersectsBox( _box ) === false ) {
400
+
401
+ return;
402
+
403
+ }
404
+
405
+ if ( worldUnits ) {
406
+
407
+ raycastWorldUnits( this, intersects );
408
+
409
+ } else {
410
+
411
+ raycastScreenSpace( this, camera, intersects );
412
+
413
+ }
414
+
415
+ }
416
+
417
+ }
418
+
419
+ export { LineSegments2 };
@@ -0,0 +1,86 @@
1
+ import {
2
+ InstancedInterleavedBuffer,
3
+ InterleavedBufferAttribute,
4
+ Line2NodeMaterial,
5
+ Mesh,
6
+ Vector3
7
+ } from 'three/webgpu';
8
+
9
+ import { LineSegmentsGeometry } from '../LineSegmentsGeometry.js';
10
+
11
+ const _start = new Vector3();
12
+ const _end = new Vector3();
13
+
14
+ /**
15
+ * A class for creating wireframes based on wide lines.
16
+ *
17
+ * This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
18
+ * import the class from `lines/Wireframe.js`.
19
+ *
20
+ * @augments Mesh
21
+ * @three_import import { Wireframe } from 'three/addons/lines/webgpu/Wireframe.js';
22
+ */
23
+ class Wireframe extends Mesh {
24
+
25
+ /**
26
+ * Constructs a new wireframe.
27
+ *
28
+ * @param {LineSegmentsGeometry} [geometry] - The line geometry.
29
+ * @param {Line2NodeMaterial} [material] - The line material.
30
+ */
31
+ constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
32
+
33
+ super( geometry, material );
34
+
35
+ /**
36
+ * This flag can be used for type testing.
37
+ *
38
+ * @type {boolean}
39
+ * @readonly
40
+ * @default true
41
+ */
42
+ this.isWireframe = true;
43
+
44
+ this.type = 'Wireframe';
45
+
46
+ }
47
+
48
+ /**
49
+ * Computes an array of distance values which are necessary for rendering dashed lines.
50
+ * For each vertex in the geometry, the method calculates the cumulative length from the
51
+ * current point to the very beginning of the line.
52
+ *
53
+ * @return {Wireframe} A reference to this instance.
54
+ */
55
+ computeLineDistances() {
56
+
57
+ // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
58
+
59
+ const geometry = this.geometry;
60
+
61
+ const instanceStart = geometry.attributes.instanceStart;
62
+ const instanceEnd = geometry.attributes.instanceEnd;
63
+ const lineDistances = new Float32Array( 2 * instanceStart.count );
64
+
65
+ for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
66
+
67
+ _start.fromBufferAttribute( instanceStart, i );
68
+ _end.fromBufferAttribute( instanceEnd, i );
69
+
70
+ lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];
71
+ lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
72
+
73
+ }
74
+
75
+ const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
76
+
77
+ geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
78
+ geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
79
+
80
+ return this;
81
+
82
+ }
83
+
84
+ }
85
+
86
+ export { Wireframe };