@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,355 @@
1
+ import {
2
+ BufferGeometry,
3
+ Float32BufferAttribute,
4
+ ShapeUtils,
5
+ Vector2,
6
+ Vector3
7
+ } from 'three';
8
+
9
+ const _vector = /*@__PURE__*/ new Vector3();
10
+
11
+ /**
12
+ * This class can be used to generate a geometry by lofting (skinning) a surface
13
+ * through a series of cross sections. Each section is an array of points in 3D
14
+ * space and all sections must have the same number of points.
15
+ *
16
+ * `LoftGeometry` is the general case of geometries like {@link LatheGeometry}
17
+ * (which revolves a fixed profile around an axis) or {@link TubeGeometry}
18
+ * (which sweeps a circular section along a path): the sections can have any
19
+ * shape, and can change shape, size, position and orientation from one
20
+ * section to the next.
21
+ *
22
+ * Sections wind around the loft so the resulting face normals point outwards
23
+ * when each section is ordered counterclockwise as seen from the end of the
24
+ * loft, looking back towards the start. If the surface appears inside out,
25
+ * reverse the point order of each section.
26
+ *
27
+ * ```js
28
+ * const sections = [];
29
+ *
30
+ * for ( let i = 0; i <= 10; i ++ ) {
31
+ *
32
+ * const points = [];
33
+ * const radius = 2 + Math.sin( i * 0.8 );
34
+ *
35
+ * for ( let j = 0; j < 32; j ++ ) {
36
+ *
37
+ * const angle = j / 32 * Math.PI * 2;
38
+ * points.push( new THREE.Vector3( Math.sin( angle ) * radius, i, Math.cos( angle ) * radius ) );
39
+ *
40
+ * }
41
+ *
42
+ * sections.push( points );
43
+ *
44
+ * }
45
+ *
46
+ * const geometry = new LoftGeometry( sections, { capStart: true, capEnd: true } );
47
+ * const material = new THREE.MeshStandardMaterial( { color: 0x00ff00 } );
48
+ * const mesh = new THREE.Mesh( geometry, material );
49
+ * scene.add( mesh );
50
+ * ```
51
+ *
52
+ * @augments BufferGeometry
53
+ * @three_import import { LoftGeometry } from 'three/addons/geometries/LoftGeometry.js';
54
+ */
55
+ class LoftGeometry extends BufferGeometry {
56
+
57
+ /**
58
+ * Constructs a new loft geometry.
59
+ *
60
+ * @param {Array<Array<Vector3>>} sections - The cross sections to skin. At least
61
+ * two sections are required and all sections must have the same number of points.
62
+ * @param {Object} [options={}] - The loft options.
63
+ * @param {boolean} [options.closed=true] - Whether each section is treated as a
64
+ * closed ring (e.g. a fuselage) or an open strip (e.g. a ribbon).
65
+ * @param {boolean} [options.capStart=false] - Whether the first section is closed
66
+ * with a cap or not.
67
+ * @param {boolean} [options.capEnd=false] - Whether the last section is closed
68
+ * with a cap or not.
69
+ */
70
+ constructor( sections = [], options = {} ) {
71
+
72
+ super();
73
+
74
+ this.type = 'LoftGeometry';
75
+
76
+ const { closed = true, capStart = false, capEnd = false } = options;
77
+
78
+ /**
79
+ * Holds the constructor parameters that have been
80
+ * used to generate the geometry. Any modification
81
+ * after instantiation does not change the geometry.
82
+ *
83
+ * @type {Object}
84
+ */
85
+ this.parameters = {
86
+ sections: sections,
87
+ closed: closed,
88
+ capStart: capStart,
89
+ capEnd: capEnd
90
+ };
91
+
92
+ const rows = sections.length;
93
+
94
+ if ( rows < 2 ) {
95
+
96
+ console.error( 'THREE.LoftGeometry: At least two sections are required.' );
97
+ return;
98
+
99
+ }
100
+
101
+ const columns = sections[ 0 ].length;
102
+
103
+ for ( let i = 1; i < rows; i ++ ) {
104
+
105
+ if ( sections[ i ].length !== columns ) {
106
+
107
+ console.error( 'THREE.LoftGeometry: All sections must have the same number of points.' );
108
+ return;
109
+
110
+ }
111
+
112
+ }
113
+
114
+ // closed sections repeat their first point so the surface can wrap
115
+ // around with continuous uvs
116
+
117
+ const pointsPerRow = closed ? columns + 1 : columns;
118
+
119
+ // buffers
120
+
121
+ const indices = [];
122
+ const vertices = [];
123
+ const uvs = [];
124
+
125
+ // uvs follow arc length so uneven sections and points map evenly
126
+
127
+ const rowU = [ 0 ];
128
+
129
+ for ( let i = 1; i < rows; i ++ ) {
130
+
131
+ let distance = 0;
132
+
133
+ for ( let j = 0; j < columns; j ++ ) {
134
+
135
+ distance += sections[ i ][ j ].distanceTo( sections[ i - 1 ][ j ] );
136
+
137
+ }
138
+
139
+ rowU.push( rowU[ i - 1 ] + distance / columns );
140
+
141
+ }
142
+
143
+ const totalU = rowU[ rows - 1 ];
144
+
145
+ // generate vertices and uvs
146
+
147
+ for ( let i = 0; i < rows; i ++ ) {
148
+
149
+ const section = sections[ i ];
150
+
151
+ // distance around the section
152
+
153
+ const colV = [ 0 ];
154
+
155
+ for ( let j = 1; j < pointsPerRow; j ++ ) {
156
+
157
+ colV.push( colV[ j - 1 ] + section[ j % columns ].distanceTo( section[ ( j - 1 ) % columns ] ) );
158
+
159
+ }
160
+
161
+ const totalV = colV[ pointsPerRow - 1 ];
162
+
163
+ for ( let j = 0; j < pointsPerRow; j ++ ) {
164
+
165
+ const point = section[ j % columns ];
166
+
167
+ vertices.push( point.x, point.y, point.z );
168
+ uvs.push(
169
+ totalU > 0 ? rowU[ i ] / totalU : i / ( rows - 1 ),
170
+ totalV > 0 ? colV[ j ] / totalV : j / ( pointsPerRow - 1 )
171
+ );
172
+
173
+ }
174
+
175
+ }
176
+
177
+ // generate indices
178
+
179
+ for ( let i = 0; i < rows - 1; i ++ ) {
180
+
181
+ for ( let j = 0; j < pointsPerRow - 1; j ++ ) {
182
+
183
+ const a = i * pointsPerRow + j;
184
+ const b = i * pointsPerRow + j + 1;
185
+ const c = ( i + 1 ) * pointsPerRow + j + 1;
186
+ const d = ( i + 1 ) * pointsPerRow + j;
187
+
188
+ // faces one and two
189
+
190
+ indices.push( a, b, d );
191
+ indices.push( b, c, d );
192
+
193
+ }
194
+
195
+ }
196
+
197
+ // generate caps
198
+
199
+ if ( capStart === true ) generateCap( 0 );
200
+ if ( capEnd === true ) generateCap( rows - 1 );
201
+
202
+ // build geometry
203
+
204
+ this.setIndex( indices );
205
+ this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
206
+ this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );
207
+ this.computeVertexNormals();
208
+
209
+ // the seam vertices of closed sections are duplicated so their computed
210
+ // normals must be averaged to achieve smooth shading across the seam
211
+
212
+ if ( closed === true ) {
213
+
214
+ const normals = this.getAttribute( 'normal' );
215
+
216
+ for ( let i = 0; i < rows; i ++ ) {
217
+
218
+ const a = i * pointsPerRow;
219
+ const b = i * pointsPerRow + ( pointsPerRow - 1 );
220
+
221
+ _vector.set(
222
+ normals.getX( a ) + normals.getX( b ),
223
+ normals.getY( a ) + normals.getY( b ),
224
+ normals.getZ( a ) + normals.getZ( b )
225
+ ).normalize();
226
+
227
+ normals.setXYZ( a, _vector.x, _vector.y, _vector.z );
228
+ normals.setXYZ( b, _vector.x, _vector.y, _vector.z );
229
+
230
+ }
231
+
232
+ }
233
+
234
+ function generateCap( sectionIndex ) {
235
+
236
+ const section = sections[ sectionIndex ];
237
+
238
+ // compute the centroid of the section and the normal of its plane
239
+ // via Newell's method
240
+
241
+ const centroid = new Vector3();
242
+ const normal = new Vector3();
243
+
244
+ for ( let i = 0; i < columns; i ++ ) {
245
+
246
+ const p = section[ i ];
247
+ const q = section[ ( i + 1 ) % columns ];
248
+
249
+ centroid.add( p );
250
+
251
+ normal.x += ( p.y - q.y ) * ( p.z + q.z );
252
+ normal.y += ( p.z - q.z ) * ( p.x + q.x );
253
+ normal.z += ( p.x - q.x ) * ( p.y + q.y );
254
+
255
+ }
256
+
257
+ centroid.divideScalar( columns );
258
+ normal.normalize();
259
+
260
+ // make sure the cap faces away from the rest of the surface
261
+
262
+ const neighbor = sections[ sectionIndex === 0 ? 1 : rows - 2 ];
263
+
264
+ _vector.set( 0, 0, 0 );
265
+
266
+ for ( let i = 0; i < columns; i ++ ) _vector.add( neighbor[ i ] );
267
+
268
+ _vector.divideScalar( columns ).sub( centroid );
269
+
270
+ if ( normal.dot( _vector ) > 0 ) normal.negate();
271
+
272
+ // project the section onto the cap plane
273
+
274
+ const tangent = new Vector3( 1, 0, 0 );
275
+
276
+ if ( Math.abs( normal.x ) > 0.9 ) tangent.set( 0, 1, 0 );
277
+
278
+ const bitangent = new Vector3().crossVectors( normal, tangent ).normalize();
279
+ tangent.crossVectors( bitangent, normal );
280
+
281
+ const contour = [];
282
+ const points = section.slice();
283
+
284
+ for ( let i = 0; i < columns; i ++ ) {
285
+
286
+ _vector.subVectors( points[ i ], centroid );
287
+ contour.push( new Vector2( _vector.dot( tangent ), _vector.dot( bitangent ) ) );
288
+
289
+ }
290
+
291
+ // triangulateShape() expects contours in counterclockwise order
292
+
293
+ if ( ShapeUtils.isClockWise( contour ) === true ) {
294
+
295
+ contour.reverse();
296
+ points.reverse();
297
+
298
+ }
299
+
300
+ const faces = ShapeUtils.triangulateShape( contour, [] );
301
+
302
+ // compute the bounding box of the contour for uv generation
303
+
304
+ const min = new Vector2( Infinity, Infinity );
305
+ const max = new Vector2( - Infinity, - Infinity );
306
+
307
+ for ( let i = 0; i < columns; i ++ ) {
308
+
309
+ min.min( contour[ i ] );
310
+ max.max( contour[ i ] );
311
+
312
+ }
313
+
314
+ const width = Math.max( max.x - min.x, Number.EPSILON );
315
+ const height = Math.max( max.y - min.y, Number.EPSILON );
316
+
317
+ // generate vertices, uvs and indices; cap vertices are not shared
318
+ // with the wall so the cap is flat shaded with a hard edge
319
+
320
+ const indexOffset = vertices.length / 3;
321
+
322
+ for ( let i = 0; i < columns; i ++ ) {
323
+
324
+ const point = points[ i ];
325
+
326
+ vertices.push( point.x, point.y, point.z );
327
+ uvs.push( ( contour[ i ].x - min.x ) / width, ( contour[ i ].y - min.y ) / height );
328
+
329
+ }
330
+
331
+ for ( let i = 0; i < faces.length; i ++ ) {
332
+
333
+ const face = faces[ i ];
334
+
335
+ indices.push( indexOffset + face[ 0 ], indexOffset + face[ 1 ], indexOffset + face[ 2 ] );
336
+
337
+ }
338
+
339
+ }
340
+
341
+ }
342
+
343
+ copy( source ) {
344
+
345
+ super.copy( source );
346
+
347
+ this.parameters = Object.assign( {}, source.parameters );
348
+
349
+ return this;
350
+
351
+ }
352
+
353
+ }
354
+
355
+ export { LoftGeometry };
@@ -0,0 +1,100 @@
1
+
2
+ /**
3
+ * @module ParametricFunctions
4
+ * @three_import import * as ParametricFunctions from 'three/addons/geometries/ParametricFunctions.js';
5
+ */
6
+
7
+ /**
8
+ * A parametric function representing the Klein bottle.
9
+ *
10
+ * @param {number} v - The `v` coordinate on the surface in the range `[0,1]`.
11
+ * @param {number} u - The `u` coordinate on the surface in the range `[0,1]`.
12
+ * @param {Vector3} target - The target vector that is used to store the method's result.
13
+ */
14
+ function klein( v, u, target ) {
15
+
16
+ u *= Math.PI;
17
+ v *= 2 * Math.PI;
18
+
19
+ u = u * 2;
20
+ let x, z;
21
+ if ( u < Math.PI ) {
22
+
23
+ x = 3 * Math.cos( u ) * ( 1 + Math.sin( u ) ) + ( 2 * ( 1 - Math.cos( u ) / 2 ) ) * Math.cos( u ) * Math.cos( v );
24
+ z = - 8 * Math.sin( u ) - 2 * ( 1 - Math.cos( u ) / 2 ) * Math.sin( u ) * Math.cos( v );
25
+
26
+ } else {
27
+
28
+ x = 3 * Math.cos( u ) * ( 1 + Math.sin( u ) ) + ( 2 * ( 1 - Math.cos( u ) / 2 ) ) * Math.cos( v + Math.PI );
29
+ z = - 8 * Math.sin( u );
30
+
31
+ }
32
+
33
+ const y = - 2 * ( 1 - Math.cos( u ) / 2 ) * Math.sin( v );
34
+
35
+ target.set( x, y, z );
36
+
37
+ }
38
+
39
+ /**
40
+ * A parametric function representing a flat plane.
41
+ *
42
+ * @param {number} u - The `u` coordinate on the surface in the range `[0,1]`.
43
+ * @param {number} v - The `v` coordinate on the surface in the range `[0,1]`.
44
+ * @param {Vector3} target - The target vector that is used to store the method's result.
45
+ */
46
+ function plane( u, v, target ) {
47
+
48
+ target.set( u, 0, v );
49
+
50
+ }
51
+
52
+ /**
53
+ * A parametric function representing a flat mobius strip.
54
+ *
55
+ * @param {number} u - The `u` coordinate on the surface in the range `[0,1]`.
56
+ * @param {number} t - The `v` coordinate on the surface in the range `[0,1]`.
57
+ * @param {Vector3} target - The target vector that is used to store the method's result.
58
+ */
59
+ function mobius( u, t, target ) {
60
+
61
+ // http://www.wolframalpha.com/input/?i=M%C3%B6bius+strip+parametric+equations&lk=1&a=ClashPrefs_*Surface.MoebiusStrip.SurfaceProperty.ParametricEquations-
62
+ u = u - 0.5;
63
+ const v = 2 * Math.PI * t;
64
+
65
+ const a = 2;
66
+
67
+ const x = Math.cos( v ) * ( a + u * Math.cos( v / 2 ) );
68
+ const y = Math.sin( v ) * ( a + u * Math.cos( v / 2 ) );
69
+ const z = u * Math.sin( v / 2 );
70
+
71
+ target.set( x, y, z );
72
+
73
+ }
74
+
75
+ /**
76
+ * A parametric function representing a volumetric mobius strip.
77
+ *
78
+ * @param {number} u - The `u` coordinate on the surface in the range `[0,1]`.
79
+ * @param {number} t - The `v` coordinate on the surface in the range `[0,1]`.
80
+ * @param {Vector3} target - The target vector that is used to store the method's result.
81
+ */
82
+ function mobius3d( u, t, target ) {
83
+
84
+ u *= Math.PI;
85
+ t *= 2 * Math.PI;
86
+
87
+ u = u * 2;
88
+ const phi = u / 2;
89
+ const major = 2.25, a = 0.125, b = 0.65;
90
+
91
+ let x = a * Math.cos( t ) * Math.cos( phi ) - b * Math.sin( t ) * Math.sin( phi );
92
+ const z = a * Math.cos( t ) * Math.sin( phi ) + b * Math.sin( t ) * Math.cos( phi );
93
+ const y = ( major + x ) * Math.sin( u );
94
+ x = ( major + x ) * Math.cos( u );
95
+
96
+ target.set( x, y, z );
97
+
98
+ }
99
+
100
+ export { klein, plane, mobius, mobius3d };
@@ -0,0 +1,172 @@
1
+ import {
2
+ BufferGeometry,
3
+ Float32BufferAttribute,
4
+ Vector3
5
+ } from 'three';
6
+
7
+ /**
8
+ * This class can be used to generate a geometry based on a parametric surface.
9
+ *
10
+ * Reference: [Mesh Generation with Python](https://prideout.net/blog/old/blog/index.html@p=44.html)
11
+ *
12
+ * ```js
13
+ * const geometry = new ParametricGeometry( klein, 25, 25 );
14
+ * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
15
+ * const klein = new THREE.Mesh( geometry, material );
16
+ * scene.add( klein );
17
+ * ```
18
+ *
19
+ * @augments BufferGeometry
20
+ * @three_import import { ParametricGeometry } from 'three/addons/geometries/ParametricGeometry.js';
21
+ */
22
+ class ParametricGeometry extends BufferGeometry {
23
+
24
+ /**
25
+ * Constructs a new parametric geometry.
26
+ *
27
+ * @param {ParametricGeometry~Func} func - The parametric function. Default is a function that generates a curved plane surface.
28
+ * @param {number} [slices=8] - The number of slices to use for the parametric function.
29
+ * @param {number} [stacks=8] - The stacks of slices to use for the parametric function.
30
+ */
31
+ constructor( func = ( u, v, target ) => target.set( u, v, Math.cos( u ) * Math.sin( v ) ), slices = 8, stacks = 8 ) {
32
+
33
+ super();
34
+
35
+ this.type = 'ParametricGeometry';
36
+
37
+ /**
38
+ * Holds the constructor parameters that have been
39
+ * used to generate the geometry. Any modification
40
+ * after instantiation does not change the geometry.
41
+ *
42
+ * @type {Object}
43
+ */
44
+ this.parameters = {
45
+ func: func,
46
+ slices: slices,
47
+ stacks: stacks
48
+ };
49
+
50
+ // buffers
51
+
52
+ const indices = [];
53
+ const vertices = [];
54
+ const normals = [];
55
+ const uvs = [];
56
+
57
+ const EPS = 0.00001;
58
+
59
+ const normal = new Vector3();
60
+
61
+ const p0 = new Vector3(), p1 = new Vector3();
62
+ const pu = new Vector3(), pv = new Vector3();
63
+
64
+ // generate vertices, normals and uvs
65
+
66
+ const sliceCount = slices + 1;
67
+
68
+ for ( let i = 0; i <= stacks; i ++ ) {
69
+
70
+ const v = i / stacks;
71
+
72
+ for ( let j = 0; j <= slices; j ++ ) {
73
+
74
+ const u = j / slices;
75
+
76
+ // vertex
77
+
78
+ func( u, v, p0 );
79
+ vertices.push( p0.x, p0.y, p0.z );
80
+
81
+ // normal
82
+
83
+ // approximate tangent vectors via finite differences
84
+
85
+ if ( u - EPS >= 0 ) {
86
+
87
+ func( u - EPS, v, p1 );
88
+ pu.subVectors( p0, p1 );
89
+
90
+ } else {
91
+
92
+ func( u + EPS, v, p1 );
93
+ pu.subVectors( p1, p0 );
94
+
95
+ }
96
+
97
+ if ( v - EPS >= 0 ) {
98
+
99
+ func( u, v - EPS, p1 );
100
+ pv.subVectors( p0, p1 );
101
+
102
+ } else {
103
+
104
+ func( u, v + EPS, p1 );
105
+ pv.subVectors( p1, p0 );
106
+
107
+ }
108
+
109
+ // cross product of tangent vectors returns surface normal
110
+
111
+ normal.crossVectors( pu, pv ).normalize();
112
+ normals.push( normal.x, normal.y, normal.z );
113
+
114
+ // uv
115
+
116
+ uvs.push( u, v );
117
+
118
+ }
119
+
120
+ }
121
+
122
+ // generate indices
123
+
124
+ for ( let i = 0; i < stacks; i ++ ) {
125
+
126
+ for ( let j = 0; j < slices; j ++ ) {
127
+
128
+ const a = i * sliceCount + j;
129
+ const b = i * sliceCount + j + 1;
130
+ const c = ( i + 1 ) * sliceCount + j + 1;
131
+ const d = ( i + 1 ) * sliceCount + j;
132
+
133
+ // faces one and two
134
+
135
+ indices.push( a, b, d );
136
+ indices.push( b, c, d );
137
+
138
+ }
139
+
140
+ }
141
+
142
+ // build geometry
143
+
144
+ this.setIndex( indices );
145
+ this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
146
+ this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );
147
+ this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );
148
+
149
+ }
150
+
151
+ copy( source ) {
152
+
153
+ super.copy( source );
154
+
155
+ this.parameters = Object.assign( {}, source.parameters );
156
+
157
+ return this;
158
+
159
+ }
160
+
161
+ }
162
+
163
+ /**
164
+ * Parametric function definition of `ParametricGeometry`.
165
+ *
166
+ * @callback ParametricGeometry~Func
167
+ * @param {number} u - The `u` coordinate on the surface in the range `[0,1]`.
168
+ * @param {number} v - The `v` coordinate on the surface in the range `[0,1]`.
169
+ * @param {Vector3} target - The target vector that is used to store the method's result.
170
+ */
171
+
172
+ export { ParametricGeometry };