@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,992 @@
1
+ import {
2
+ BufferGeometry,
3
+ FileLoader,
4
+ BufferAttribute,
5
+ Float32BufferAttribute,
6
+ Int8BufferAttribute,
7
+ Int16BufferAttribute,
8
+ Int32BufferAttribute,
9
+ Loader,
10
+ Uint8BufferAttribute,
11
+ Uint16BufferAttribute,
12
+ Uint32BufferAttribute,
13
+ Color,
14
+ SRGBColorSpace
15
+ } from 'three';
16
+
17
+ const _color = new Color();
18
+
19
+ /**
20
+ * A loader for PLY the PLY format (known as the Polygon
21
+ * File Format or the Stanford Triangle Format).
22
+ *
23
+ * Limitations:
24
+ * - ASCII decoding assumes file is UTF-8.
25
+ *
26
+ * ```js
27
+ * const loader = new PLYLoader();
28
+ * const geometry = await loader.loadAsync( './models/ply/ascii/dolphins.ply' );
29
+ * scene.add( new THREE.Mesh( geometry ) );
30
+ * ```
31
+ *
32
+ * @augments Loader
33
+ * @three_import import { PLYLoader } from 'three/addons/loaders/PLYLoader.js';
34
+ */
35
+ class PLYLoader extends Loader {
36
+
37
+ /**
38
+ * Constructs a new PLY loader.
39
+ *
40
+ * @param {LoadingManager} [manager] - The loading manager.
41
+ */
42
+ constructor( manager ) {
43
+
44
+ super( manager );
45
+
46
+ // internals
47
+
48
+ this.propertyNameMapping = {};
49
+ this.customPropertyMapping = {};
50
+
51
+ }
52
+
53
+ /**
54
+ * Starts loading from the given URL and passes the loaded PLY asset
55
+ * to the `onLoad()` callback.
56
+ *
57
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
58
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
59
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
60
+ * @param {onErrorCallback} onError - Executed when errors occur.
61
+ */
62
+ load( url, onLoad, onProgress, onError ) {
63
+
64
+ const scope = this;
65
+
66
+ const loader = new FileLoader( this.manager );
67
+ loader.setPriority( this.priority );
68
+ loader.setCache( this.cache );
69
+ loader.setPath( this.path );
70
+ loader.setResponseType( 'arraybuffer' );
71
+ loader.setRequestHeader( this.requestHeader );
72
+ loader.setWithCredentials( this.withCredentials );
73
+ loader.load( url, function ( text ) {
74
+
75
+ try {
76
+
77
+ onLoad( scope.parse( text ) );
78
+
79
+ } catch ( e ) {
80
+
81
+ if ( onError ) {
82
+
83
+ onError( e );
84
+
85
+ } else {
86
+
87
+ console.error( e );
88
+
89
+ }
90
+
91
+ scope.manager.itemError( url );
92
+
93
+ }
94
+
95
+ }, onProgress, onError );
96
+
97
+ }
98
+
99
+ /**
100
+ * Sets a property name mapping that maps default property names
101
+ * to custom ones. For example, the following maps the properties
102
+ * “diffuse_(red|green|blue)” in the file to standard color names.
103
+ *
104
+ * ```js
105
+ * loader.setPropertyNameMapping( {
106
+ * diffuse_red: 'red',
107
+ * diffuse_green: 'green',
108
+ * diffuse_blue: 'blue'
109
+ * } );
110
+ * ```
111
+ *
112
+ * @param {Object} mapping - The mapping dictionary.
113
+ */
114
+ setPropertyNameMapping( mapping ) {
115
+
116
+ this.propertyNameMapping = mapping;
117
+
118
+ }
119
+
120
+ /**
121
+ * Custom properties outside of the defaults for position, uv, normal
122
+ * and color attributes can be added using the setCustomPropertyNameMapping method.
123
+ * For example, the following maps the element properties “custom_property_a”
124
+ * and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
125
+ * Attribute item sizes are set from the number of element properties in the property array.
126
+ *
127
+ * ```js
128
+ * loader.setCustomPropertyNameMapping( {
129
+ * customAttribute: ['custom_property_a', 'custom_property_b'],
130
+ * } );
131
+ * ```
132
+ * @param {Object} mapping - The mapping dictionary.
133
+ */
134
+ setCustomPropertyNameMapping( mapping ) {
135
+
136
+ this.customPropertyMapping = mapping;
137
+
138
+ }
139
+
140
+ /**
141
+ * Parses the given PLY data and returns the resulting geometry.
142
+ *
143
+ * @param {ArrayBuffer} data - The raw PLY data as an array buffer.
144
+ * @return {BufferGeometry} The parsed geometry.
145
+ */
146
+ parse( data ) {
147
+
148
+ function parseHeader( data, headerLength = 0 ) {
149
+
150
+ const patternHeader = /^ply([\s\S]*)end_header(\r\n|\r|\n)/;
151
+ let headerText = '';
152
+ const result = patternHeader.exec( data );
153
+
154
+ if ( result !== null ) {
155
+
156
+ headerText = result[ 1 ];
157
+
158
+ }
159
+
160
+ const header = {
161
+ comments: [],
162
+ elements: [],
163
+ headerLength: headerLength,
164
+ objInfo: ''
165
+ };
166
+
167
+ const lines = headerText.split( /\r\n|\r|\n/ );
168
+ let currentElement;
169
+
170
+ function make_ply_element_property( propertyValues, propertyNameMapping ) {
171
+
172
+ const property = { type: propertyValues[ 0 ] };
173
+
174
+ if ( property.type === 'list' ) {
175
+
176
+ property.name = propertyValues[ 3 ];
177
+ property.countType = propertyValues[ 1 ];
178
+ property.itemType = propertyValues[ 2 ];
179
+
180
+ } else {
181
+
182
+ property.name = propertyValues[ 1 ];
183
+
184
+ }
185
+
186
+ if ( property.name in propertyNameMapping ) {
187
+
188
+ property.name = propertyNameMapping[ property.name ];
189
+
190
+ }
191
+
192
+ return property;
193
+
194
+ }
195
+
196
+ for ( let i = 0; i < lines.length; i ++ ) {
197
+
198
+ let line = lines[ i ];
199
+ line = line.trim();
200
+
201
+ if ( line === '' ) continue;
202
+
203
+ const lineValues = line.split( /\s+/ );
204
+ const lineType = lineValues.shift();
205
+ line = lineValues.join( ' ' );
206
+
207
+ switch ( lineType ) {
208
+
209
+ case 'format':
210
+
211
+ header.format = lineValues[ 0 ];
212
+ header.version = lineValues[ 1 ];
213
+
214
+ break;
215
+
216
+ case 'comment':
217
+
218
+ header.comments.push( line );
219
+
220
+ break;
221
+
222
+ case 'element':
223
+
224
+ if ( currentElement !== undefined ) {
225
+
226
+ header.elements.push( currentElement );
227
+
228
+ }
229
+
230
+ currentElement = {};
231
+ currentElement.name = lineValues[ 0 ];
232
+ currentElement.count = parseInt( lineValues[ 1 ] );
233
+ currentElement.properties = [];
234
+
235
+ break;
236
+
237
+ case 'property':
238
+
239
+ currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) );
240
+
241
+ break;
242
+
243
+ case 'obj_info':
244
+
245
+ header.objInfo = line;
246
+
247
+ break;
248
+
249
+
250
+ default:
251
+
252
+ console.log( 'unhandled', lineType, lineValues );
253
+
254
+ }
255
+
256
+ }
257
+
258
+ if ( currentElement !== undefined ) {
259
+
260
+ header.elements.push( currentElement );
261
+
262
+ }
263
+
264
+ return header;
265
+
266
+ }
267
+
268
+ function parseASCIINumber( n, type ) {
269
+
270
+ switch ( type ) {
271
+
272
+ case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint':
273
+ case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32':
274
+
275
+ return parseInt( n );
276
+
277
+ case 'float': case 'double': case 'float32': case 'float64':
278
+
279
+ return parseFloat( n );
280
+
281
+ }
282
+
283
+ }
284
+
285
+ function parseASCIIElement( properties, tokens ) {
286
+
287
+ const element = {};
288
+
289
+ for ( let i = 0; i < properties.length; i ++ ) {
290
+
291
+ if ( tokens.empty() ) return null;
292
+
293
+ if ( properties[ i ].type === 'list' ) {
294
+
295
+ const list = [];
296
+ const n = parseASCIINumber( tokens.next(), properties[ i ].countType );
297
+
298
+ for ( let j = 0; j < n; j ++ ) {
299
+
300
+ if ( tokens.empty() ) return null;
301
+
302
+ list.push( parseASCIINumber( tokens.next(), properties[ i ].itemType ) );
303
+
304
+ }
305
+
306
+ element[ properties[ i ].name ] = list;
307
+
308
+ } else {
309
+
310
+ element[ properties[ i ].name ] = parseASCIINumber( tokens.next(), properties[ i ].type );
311
+
312
+ }
313
+
314
+ }
315
+
316
+ return element;
317
+
318
+ }
319
+
320
+ function createBuffer() {
321
+
322
+ const buffer = {
323
+ indices: [],
324
+ vertices: [],
325
+ normals: [],
326
+ uvs: [],
327
+ faceVertexUvs: [],
328
+ colors: [],
329
+ faceVertexColors: [],
330
+ descriptors: {}
331
+ };
332
+
333
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
334
+
335
+ buffer[ customProperty ] = [];
336
+
337
+ }
338
+
339
+ return buffer;
340
+
341
+ }
342
+
343
+
344
+ function getBufferAttributeClass( type ) {
345
+
346
+ switch ( type ) {
347
+
348
+ case 'int8': case 'char': return Int8BufferAttribute;
349
+ case 'uint8': case 'uchar': return Uint8BufferAttribute;
350
+ case 'int16': case 'short': return Int16BufferAttribute;
351
+ case 'uint16': case 'ushort': return Uint16BufferAttribute;
352
+ case 'int32': case 'int': return Int32BufferAttribute;
353
+ case 'uint32': case 'uint': return Uint32BufferAttribute;
354
+ case 'float32': case 'float': return Float32BufferAttribute;
355
+ case 'float64': case 'double': return Float64BufferAttribute;
356
+
357
+ }
358
+
359
+ }
360
+
361
+ function getColorScale( type ) {
362
+
363
+ switch ( type ) {
364
+
365
+ case 'uchar': case 'uint8': return 1 / 255;
366
+ case 'ushort': case 'uint16': return 1 / 65535;
367
+ case 'float': case 'float32':
368
+ case 'double': case 'float64': return 1;
369
+ default: return 1 / 255;
370
+
371
+ }
372
+
373
+ }
374
+
375
+ function isFloatType( type ) {
376
+
377
+ return type === 'float' || type === 'float32' || type === 'double' || type === 'float64';
378
+
379
+ }
380
+
381
+ function getAttributeDescriptor( properties ) {
382
+
383
+ function findProperty( names ) {
384
+
385
+ for ( const name of names ) {
386
+
387
+ const property = properties.find( p => p.name === name );
388
+ if ( property ) return property;
389
+
390
+ }
391
+
392
+ return null;
393
+
394
+ }
395
+
396
+ // property lookup
397
+
398
+ const x = findProperty( [ 'x', 'px', 'posx' ] );
399
+ const y = findProperty( [ 'y', 'py', 'posy' ] );
400
+ const z = findProperty( [ 'z', 'pz', 'posz' ] );
401
+ const nx = findProperty( [ 'nx', 'normalx' ] );
402
+ const ny = findProperty( [ 'ny', 'normaly' ] );
403
+ const nz = findProperty( [ 'nz', 'normalz' ] );
404
+ const s = findProperty( [ 's', 'u', 'texture_u', 'tx' ] );
405
+ const t = findProperty( [ 't', 'v', 'texture_v', 'ty' ] );
406
+ const r = findProperty( [ 'red', 'diffuse_red', 'r', 'diffuse_r' ] );
407
+ const g = findProperty( [ 'green', 'diffuse_green', 'g', 'diffuse_g' ] );
408
+ const b = findProperty( [ 'blue', 'diffuse_blue', 'b', 'diffuse_b' ] );
409
+ const texcoord = findProperty( [ 'texcoord' ] );
410
+
411
+ // custom property lookup
412
+
413
+ const custom = {};
414
+
415
+ for ( const customAttr of Object.keys( scope.customPropertyMapping ) ) {
416
+
417
+ const propNames = scope.customPropertyMapping[ customAttr ];
418
+ const matched = propNames.map( name => properties.find( p => p.name === name ) );
419
+ const types = matched.filter( p => p ).map( p => p.type );
420
+ const uniform = types.length > 0 && types.every( type => type === types[ 0 ] );
421
+
422
+ custom[ customAttr ] = {
423
+ type: uniform ? types[ 0 ] : 'float32',
424
+ usage: matched.every( p => p !== undefined ),
425
+ };
426
+
427
+ }
428
+
429
+ // build descriptor
430
+
431
+ return {
432
+ position: {
433
+ names: [ x ? x.name : 'x', y ? y.name : 'y', z ? z.name : 'z' ],
434
+ type: x ? x.type : 'float32',
435
+ usage: !! ( x && y && z ),
436
+ },
437
+ normal: {
438
+ names: [ nx ? nx.name : 'nx', ny ? ny.name : 'ny', nz ? nz.name : 'nz' ],
439
+ type: nx ? nx.type : 'float32',
440
+ usage: !! ( nx && ny && nz ),
441
+ },
442
+ uv: {
443
+ names: [ s ? s.name : 's', t ? t.name : 't' ],
444
+ type: s ? s.type : 'float32',
445
+ usage: !! ( s && t ),
446
+ },
447
+ texcoord: {
448
+ type: texcoord ? texcoord.itemType : 'float32',
449
+ usage: !! texcoord,
450
+ },
451
+ color: {
452
+ names: [ r ? r.name : 'red', g ? g.name : 'green', b ? b.name : 'blue' ],
453
+ type: r ? r.type : 'uchar',
454
+ usage: !! ( r && g && b ),
455
+ },
456
+ custom: custom,
457
+ };
458
+
459
+ }
460
+
461
+ function parseASCII( data, header ) {
462
+
463
+ // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
464
+
465
+ const buffer = createBuffer();
466
+
467
+ const patternBody = /end_header\s+(\S[\s\S]*\S|\S)\s*$/;
468
+ let body, matches;
469
+
470
+ if ( ( matches = patternBody.exec( data ) ) !== null ) {
471
+
472
+ body = matches[ 1 ].split( /\s+/ );
473
+
474
+ } else {
475
+
476
+ body = [ ];
477
+
478
+ }
479
+
480
+ const tokens = new ArrayStream( body );
481
+
482
+ loop: for ( let i = 0; i < header.elements.length; i ++ ) {
483
+
484
+ const elementDesc = header.elements[ i ];
485
+ const attributeDescriptor = getAttributeDescriptor( elementDesc.properties );
486
+ buffer.descriptors[ elementDesc.name ] = attributeDescriptor;
487
+
488
+ for ( let j = 0; j < elementDesc.count; j ++ ) {
489
+
490
+ const element = parseASCIIElement( elementDesc.properties, tokens );
491
+
492
+ if ( ! element ) break loop;
493
+
494
+ handleElement( buffer, elementDesc.name, element, attributeDescriptor );
495
+
496
+ }
497
+
498
+ }
499
+
500
+ return postProcess( buffer );
501
+
502
+ }
503
+
504
+ function postProcess( buffer ) {
505
+
506
+ let geometry = new BufferGeometry();
507
+
508
+ const vertexDescriptor = buffer.descriptors.vertex;
509
+
510
+ // mandatory buffer data
511
+
512
+ if ( buffer.indices.length > 0 ) {
513
+
514
+ geometry.setIndex( buffer.indices );
515
+
516
+ }
517
+
518
+ const PositionClass = getBufferAttributeClass( vertexDescriptor ? vertexDescriptor.position.type : 'float32' );
519
+ geometry.setAttribute( 'position', new PositionClass( buffer.vertices, 3 ) );
520
+
521
+ // optional buffer data
522
+
523
+ if ( buffer.normals.length > 0 ) {
524
+
525
+ const NormalClass = getBufferAttributeClass( vertexDescriptor.normal.type );
526
+ geometry.setAttribute( 'normal', new NormalClass( buffer.normals, 3 ) );
527
+
528
+ }
529
+
530
+ if ( buffer.uvs.length > 0 ) {
531
+
532
+ const UvClass = getBufferAttributeClass( vertexDescriptor.uv.type );
533
+ geometry.setAttribute( 'uv', new UvClass( buffer.uvs, 2 ) );
534
+
535
+ }
536
+
537
+ if ( buffer.colors.length > 0 ) {
538
+
539
+ const colorType = vertexDescriptor.color.type;
540
+ const normalized = ! isFloatType( colorType );
541
+
542
+ const ColorClass = getBufferAttributeClass( colorType );
543
+ geometry.setAttribute( 'color', new ColorClass( buffer.colors, 3, normalized ) );
544
+
545
+ }
546
+
547
+ // custom buffer data
548
+
549
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
550
+
551
+ if ( buffer[ customProperty ].length > 0 ) {
552
+
553
+ const CustomClass = getBufferAttributeClass( vertexDescriptor.custom[ customProperty ].type );
554
+ geometry.setAttribute( customProperty, new CustomClass( buffer[ customProperty ], scope.customPropertyMapping[ customProperty ].length ) );
555
+
556
+ }
557
+
558
+ }
559
+
560
+ if ( buffer.faceVertexUvs.length > 0 || buffer.faceVertexColors.length > 0 ) {
561
+
562
+ geometry = geometry.toNonIndexed();
563
+
564
+ if ( buffer.faceVertexUvs.length > 0 ) {
565
+
566
+ const UvClass = getBufferAttributeClass( buffer.descriptors.face.texcoord.type );
567
+ geometry.setAttribute( 'uv', new UvClass( buffer.faceVertexUvs, 2 ) );
568
+
569
+ }
570
+
571
+ if ( buffer.faceVertexColors.length > 0 ) {
572
+
573
+ const colorType = buffer.descriptors.face.color.type;
574
+ const normalized = ! isFloatType( colorType );
575
+
576
+ const ColorClass = getBufferAttributeClass( colorType );
577
+ geometry.setAttribute( 'color', new ColorClass( buffer.faceVertexColors, 3, normalized ) );
578
+
579
+ }
580
+
581
+ }
582
+
583
+ geometry.computeBoundingSphere();
584
+
585
+ return geometry;
586
+
587
+ }
588
+
589
+ function handleElement( buffer, elementName, element, attributeDescriptor ) {
590
+
591
+ if ( elementName === 'vertex' ) {
592
+
593
+ const { position, normal, uv, color } = attributeDescriptor;
594
+
595
+ if ( position.usage ) {
596
+
597
+ buffer.vertices.push(
598
+ element[ position.names[ 0 ] ],
599
+ element[ position.names[ 1 ] ],
600
+ element[ position.names[ 2 ] ]
601
+ );
602
+
603
+ }
604
+
605
+ if ( normal.usage ) {
606
+
607
+ buffer.normals.push(
608
+ element[ normal.names[ 0 ] ],
609
+ element[ normal.names[ 1 ] ],
610
+ element[ normal.names[ 2 ] ]
611
+ );
612
+
613
+ }
614
+
615
+ if ( uv.usage ) {
616
+
617
+ buffer.uvs.push(
618
+ element[ uv.names[ 0 ] ],
619
+ element[ uv.names[ 1 ] ]
620
+ );
621
+
622
+ }
623
+
624
+ if ( color.usage ) {
625
+
626
+ const scale = getColorScale( color.type );
627
+ const isFloat = isFloatType( color.type );
628
+
629
+ // convert to float for color space conversion
630
+
631
+ _color.setRGB(
632
+ element[ color.names[ 0 ] ] * scale,
633
+ element[ color.names[ 1 ] ] * scale,
634
+ element[ color.names[ 2 ] ] * scale,
635
+ SRGBColorSpace
636
+ );
637
+
638
+ // convert back to original type
639
+
640
+ const invScale = 1 / scale;
641
+
642
+ buffer.colors.push(
643
+ isFloat ? _color.r : Math.round( _color.r * invScale ),
644
+ isFloat ? _color.g : Math.round( _color.g * invScale ),
645
+ isFloat ? _color.b : Math.round( _color.b * invScale )
646
+ );
647
+
648
+ }
649
+
650
+ for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
651
+
652
+ for ( const elementProperty of scope.customPropertyMapping[ customProperty ] ) {
653
+
654
+ buffer[ customProperty ].push( element[ elementProperty ] );
655
+
656
+ }
657
+
658
+ }
659
+
660
+ } else if ( elementName === 'face' ) {
661
+
662
+ const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
663
+ const texcoord = element.texcoord;
664
+
665
+ if ( vertex_indices.length === 3 ) {
666
+
667
+ buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
668
+
669
+ if ( texcoord && texcoord.length === 6 ) {
670
+
671
+ buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
672
+ buffer.faceVertexUvs.push( texcoord[ 2 ], texcoord[ 3 ] );
673
+ buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
674
+
675
+ }
676
+
677
+ } else if ( vertex_indices.length === 4 ) {
678
+
679
+ // according to the spec, quads need to be split along a specific rule
680
+ // 4 0 1 2 3 results in 0,1,2 and 0,2,3
681
+
682
+ buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
683
+ buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 2 ], vertex_indices[ 3 ] );
684
+
685
+ if ( texcoord && texcoord.length === 8 ) {
686
+
687
+ buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
688
+ buffer.faceVertexUvs.push( texcoord[ 2 ], texcoord[ 3 ] );
689
+ buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
690
+ buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
691
+ buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
692
+ buffer.faceVertexUvs.push( texcoord[ 6 ], texcoord[ 7 ] );
693
+
694
+ }
695
+
696
+ }
697
+
698
+ // face colors
699
+
700
+ const { color } = attributeDescriptor;
701
+
702
+ if ( color.usage ) {
703
+
704
+ // convert to float for color space conversion
705
+
706
+ const scale = getColorScale( color.type );
707
+
708
+ _color.setRGB(
709
+ element[ color.names[ 0 ] ] * scale,
710
+ element[ color.names[ 1 ] ] * scale,
711
+ element[ color.names[ 2 ] ] * scale,
712
+ SRGBColorSpace
713
+ );
714
+
715
+ // convert back to original type
716
+
717
+ const invScale = 1 / scale;
718
+
719
+ const r = _color.r * invScale;
720
+ const g = _color.g * invScale;
721
+ const b = _color.b * invScale;
722
+
723
+ buffer.faceVertexColors.push( r, g, b );
724
+ buffer.faceVertexColors.push( r, g, b );
725
+ buffer.faceVertexColors.push( r, g, b );
726
+
727
+ if ( vertex_indices.length === 4 ) {
728
+
729
+ buffer.faceVertexColors.push( r, g, b );
730
+ buffer.faceVertexColors.push( r, g, b );
731
+ buffer.faceVertexColors.push( r, g, b );
732
+
733
+ }
734
+
735
+ }
736
+
737
+ }
738
+
739
+ }
740
+
741
+ function binaryReadElement( at, properties ) {
742
+
743
+ const element = {};
744
+ let read = 0;
745
+
746
+ for ( let i = 0; i < properties.length; i ++ ) {
747
+
748
+ const property = properties[ i ];
749
+ const valueReader = property.valueReader;
750
+
751
+ if ( property.type === 'list' ) {
752
+
753
+ const list = [];
754
+
755
+ const n = property.countReader.read( at + read );
756
+ read += property.countReader.size;
757
+
758
+ for ( let j = 0; j < n; j ++ ) {
759
+
760
+ list.push( valueReader.read( at + read ) );
761
+ read += valueReader.size;
762
+
763
+ }
764
+
765
+ element[ property.name ] = list;
766
+
767
+ } else {
768
+
769
+ element[ property.name ] = valueReader.read( at + read );
770
+ read += valueReader.size;
771
+
772
+ }
773
+
774
+ }
775
+
776
+ return [ element, read ];
777
+
778
+ }
779
+
780
+ function setPropertyBinaryReaders( properties, body, little_endian ) {
781
+
782
+ function getBinaryReader( dataview, type, little_endian ) {
783
+
784
+ switch ( type ) {
785
+
786
+ // correspondences for non-specific length types here match rply:
787
+ case 'int8': case 'char': return { read: ( at ) => {
788
+
789
+ return dataview.getInt8( at );
790
+
791
+ }, size: 1 };
792
+ case 'uint8': case 'uchar': return { read: ( at ) => {
793
+
794
+ return dataview.getUint8( at );
795
+
796
+ }, size: 1 };
797
+ case 'int16': case 'short': return { read: ( at ) => {
798
+
799
+ return dataview.getInt16( at, little_endian );
800
+
801
+ }, size: 2 };
802
+ case 'uint16': case 'ushort': return { read: ( at ) => {
803
+
804
+ return dataview.getUint16( at, little_endian );
805
+
806
+ }, size: 2 };
807
+ case 'int32': case 'int': return { read: ( at ) => {
808
+
809
+ return dataview.getInt32( at, little_endian );
810
+
811
+ }, size: 4 };
812
+ case 'uint32': case 'uint': return { read: ( at ) => {
813
+
814
+ return dataview.getUint32( at, little_endian );
815
+
816
+ }, size: 4 };
817
+ case 'float32': case 'float': return { read: ( at ) => {
818
+
819
+ return dataview.getFloat32( at, little_endian );
820
+
821
+ }, size: 4 };
822
+ case 'float64': case 'double': return { read: ( at ) => {
823
+
824
+ return dataview.getFloat64( at, little_endian );
825
+
826
+ }, size: 8 };
827
+
828
+ }
829
+
830
+ }
831
+
832
+ for ( let i = 0, l = properties.length; i < l; i ++ ) {
833
+
834
+ const property = properties[ i ];
835
+
836
+ if ( property.type === 'list' ) {
837
+
838
+ property.countReader = getBinaryReader( body, property.countType, little_endian );
839
+ property.valueReader = getBinaryReader( body, property.itemType, little_endian );
840
+
841
+ } else {
842
+
843
+ property.valueReader = getBinaryReader( body, property.type, little_endian );
844
+
845
+ }
846
+
847
+ }
848
+
849
+ }
850
+
851
+ function parseBinary( data, header ) {
852
+
853
+ const buffer = createBuffer();
854
+
855
+ const little_endian = ( header.format === 'binary_little_endian' );
856
+ const body = new DataView( data, header.headerLength );
857
+ let result, loc = 0;
858
+
859
+ for ( let currentElement = 0; currentElement < header.elements.length; currentElement ++ ) {
860
+
861
+ const elementDesc = header.elements[ currentElement ];
862
+ const properties = elementDesc.properties;
863
+ const attributeDescriptor = getAttributeDescriptor( properties );
864
+ buffer.descriptors[ elementDesc.name ] = attributeDescriptor;
865
+
866
+ setPropertyBinaryReaders( properties, body, little_endian );
867
+
868
+ for ( let currentElementCount = 0; currentElementCount < elementDesc.count; currentElementCount ++ ) {
869
+
870
+ result = binaryReadElement( loc, properties );
871
+ loc += result[ 1 ];
872
+ const element = result[ 0 ];
873
+
874
+ handleElement( buffer, elementDesc.name, element, attributeDescriptor );
875
+
876
+ }
877
+
878
+ }
879
+
880
+ return postProcess( buffer );
881
+
882
+ }
883
+
884
+ function extractHeaderText( bytes ) {
885
+
886
+ let i = 0;
887
+ let cont = true;
888
+
889
+ let line = '';
890
+ const lines = [];
891
+
892
+ const startLine = new TextDecoder().decode( bytes.subarray( 0, 5 ) );
893
+ const hasCRNL = /^ply\r\n/.test( startLine );
894
+
895
+ do {
896
+
897
+ const c = String.fromCharCode( bytes[ i ++ ] );
898
+
899
+ if ( c !== '\n' && c !== '\r' ) {
900
+
901
+ line += c;
902
+
903
+ } else {
904
+
905
+ if ( line === 'end_header' ) cont = false;
906
+ if ( line !== '' ) {
907
+
908
+ lines.push( line );
909
+ line = '';
910
+
911
+ }
912
+
913
+ }
914
+
915
+ } while ( cont && i < bytes.length );
916
+
917
+ // ascii section using \r\n as line endings
918
+ if ( hasCRNL === true ) i ++;
919
+
920
+ return { headerText: lines.join( '\r' ) + '\r', headerLength: i };
921
+
922
+ }
923
+
924
+ //
925
+
926
+ let geometry;
927
+ const scope = this;
928
+
929
+ if ( data instanceof ArrayBuffer ) {
930
+
931
+ const bytes = new Uint8Array( data );
932
+ const { headerText, headerLength } = extractHeaderText( bytes );
933
+ const header = parseHeader( headerText, headerLength );
934
+
935
+ if ( header.format === 'ascii' ) {
936
+
937
+ const text = new TextDecoder().decode( bytes );
938
+
939
+ geometry = parseASCII( text, header );
940
+
941
+ } else {
942
+
943
+ geometry = parseBinary( data, header );
944
+
945
+ }
946
+
947
+ } else {
948
+
949
+ geometry = parseASCII( data, parseHeader( data ) );
950
+
951
+ }
952
+
953
+ return geometry;
954
+
955
+ }
956
+
957
+ }
958
+
959
+ class Float64BufferAttribute extends BufferAttribute {
960
+
961
+ constructor( array, itemSize, normalized ) {
962
+
963
+ super( new Float64Array( array ), itemSize, normalized );
964
+
965
+ }
966
+
967
+ }
968
+
969
+ class ArrayStream {
970
+
971
+ constructor( arr ) {
972
+
973
+ this.arr = arr;
974
+ this.i = 0;
975
+
976
+ }
977
+
978
+ empty() {
979
+
980
+ return this.i >= this.arr.length;
981
+
982
+ }
983
+
984
+ next() {
985
+
986
+ return this.arr[ this.i ++ ];
987
+
988
+ }
989
+
990
+ }
991
+
992
+ export { PLYLoader };