@lampdotdev/lamp 0.0.0-stage → 0.36.2-nightly.16

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 (470) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +397 -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 +1813 -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/page/lamp-live.js +672 -0
  29. package/Resources/GameKit/scaffold/Game/game.cpp +142 -0
  30. package/Resources/GameKit/scaffold/Game/scene.glsl +49 -0
  31. package/Resources/GameKit/scaffold-web/Web/game.js +31 -0
  32. package/Resources/GameKit/scaffold-web/Web/index.html +13 -0
  33. package/Resources/GameKit/scaffold-web/Web/making.js +33 -0
  34. package/Resources/GameKit/scaffold-web/Web/world.js +33 -0
  35. package/Resources/GameKit/web/lamp-game.js +3042 -0
  36. package/Resources/GameKit/web/lamp-phaser.js +128 -0
  37. package/Resources/WebHost/App.exe +0 -0
  38. package/Resources/WebHost/Microsoft.Web.WebView2.Core.dll +0 -0
  39. package/Resources/WebHost/WebView2-LICENSE.txt +27 -0
  40. package/Resources/WebHost/lamp_controllers.h +1506 -0
  41. package/Resources/WebHost/lamp_web_host.cpp +1173 -0
  42. package/Resources/WebLibraries/earlier.txt +318 -0
  43. package/Resources/WebLibraries/phaser/LICENSE.md +20 -0
  44. package/Resources/WebLibraries/phaser/NOTICE.md +2 -0
  45. package/Resources/WebLibraries/phaser/phaser.esm.min.js +1 -0
  46. package/Resources/WebLibraries/qrcode/LICENSE +21 -0
  47. package/Resources/WebLibraries/qrcode/NOTICE.md +4 -0
  48. package/Resources/WebLibraries/qrcode/qrcode.js +2297 -0
  49. package/Resources/WebLibraries/rapier/LICENSE +201 -0
  50. package/Resources/WebLibraries/rapier/NOTICE.md +3 -0
  51. package/Resources/WebLibraries/rapier/rapier.js +2 -0
  52. package/Resources/WebLibraries/three/LICENSE +21 -0
  53. package/Resources/WebLibraries/three/NOTICE.md +4 -0
  54. package/Resources/WebLibraries/three/addons/animation/AnimationClipCreator.js +168 -0
  55. package/Resources/WebLibraries/three/addons/animation/CCDIKSolver.js +607 -0
  56. package/Resources/WebLibraries/three/addons/controls/ArcballControls.js +3543 -0
  57. package/Resources/WebLibraries/three/addons/controls/DragControls.js +452 -0
  58. package/Resources/WebLibraries/three/addons/controls/FirstPersonControls.js +512 -0
  59. package/Resources/WebLibraries/three/addons/controls/FlyControls.js +384 -0
  60. package/Resources/WebLibraries/three/addons/controls/MapControls.js +116 -0
  61. package/Resources/WebLibraries/three/addons/controls/OrbitControls.js +1985 -0
  62. package/Resources/WebLibraries/three/addons/controls/PointerLockControls.js +264 -0
  63. package/Resources/WebLibraries/three/addons/controls/TrackballControls.js +1106 -0
  64. package/Resources/WebLibraries/three/addons/controls/TransformControls.js +2003 -0
  65. package/Resources/WebLibraries/three/addons/curves/CurveExtras.js +694 -0
  66. package/Resources/WebLibraries/three/addons/curves/NURBSCurve.js +169 -0
  67. package/Resources/WebLibraries/three/addons/curves/NURBSSurface.js +98 -0
  68. package/Resources/WebLibraries/three/addons/curves/NURBSUtils.js +532 -0
  69. package/Resources/WebLibraries/three/addons/curves/NURBSVolume.js +82 -0
  70. package/Resources/WebLibraries/three/addons/effects/AnaglyphEffect.js +274 -0
  71. package/Resources/WebLibraries/three/addons/effects/AsciiEffect.js +323 -0
  72. package/Resources/WebLibraries/three/addons/effects/OutlineEffect.js +489 -0
  73. package/Resources/WebLibraries/three/addons/effects/ParallaxBarrierEffect.js +155 -0
  74. package/Resources/WebLibraries/three/addons/effects/StereoEffect.js +91 -0
  75. package/Resources/WebLibraries/three/addons/environments/ColorEnvironment.js +59 -0
  76. package/Resources/WebLibraries/three/addons/environments/DebugEnvironment.js +102 -0
  77. package/Resources/WebLibraries/three/addons/environments/RoomEnvironment.js +185 -0
  78. package/Resources/WebLibraries/three/addons/geometries/BoxLineGeometry.js +92 -0
  79. package/Resources/WebLibraries/three/addons/geometries/ConvexGeometry.js +72 -0
  80. package/Resources/WebLibraries/three/addons/geometries/DecalGeometry.js +420 -0
  81. package/Resources/WebLibraries/three/addons/geometries/LoftGeometry.js +355 -0
  82. package/Resources/WebLibraries/three/addons/geometries/ParametricFunctions.js +100 -0
  83. package/Resources/WebLibraries/three/addons/geometries/ParametricGeometry.js +172 -0
  84. package/Resources/WebLibraries/three/addons/geometries/RoundedBoxGeometry.js +216 -0
  85. package/Resources/WebLibraries/three/addons/geometries/TeapotGeometry.js +689 -0
  86. package/Resources/WebLibraries/three/addons/geometries/TextGeometry.js +102 -0
  87. package/Resources/WebLibraries/three/addons/helpers/AnimationPathHelper.js +302 -0
  88. package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelper.js +166 -0
  89. package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelperWebGL.js +221 -0
  90. package/Resources/WebLibraries/three/addons/helpers/LightProbeHelper.js +166 -0
  91. package/Resources/WebLibraries/three/addons/helpers/LightProbeHelperGPU.js +102 -0
  92. package/Resources/WebLibraries/three/addons/helpers/OctreeHelper.js +109 -0
  93. package/Resources/WebLibraries/three/addons/helpers/PositionalAudioHelper.js +169 -0
  94. package/Resources/WebLibraries/three/addons/helpers/RapierHelper.js +59 -0
  95. package/Resources/WebLibraries/three/addons/helpers/RectAreaLightHelper.js +118 -0
  96. package/Resources/WebLibraries/three/addons/helpers/TextureHelper.js +265 -0
  97. package/Resources/WebLibraries/three/addons/helpers/TextureHelperGPU.js +214 -0
  98. package/Resources/WebLibraries/three/addons/helpers/VertexNormalsHelper.js +155 -0
  99. package/Resources/WebLibraries/three/addons/helpers/VertexTangentsHelper.js +133 -0
  100. package/Resources/WebLibraries/three/addons/helpers/ViewHelper.js +529 -0
  101. package/Resources/WebLibraries/three/addons/interactive/HTMLMesh.js +617 -0
  102. package/Resources/WebLibraries/three/addons/interactive/InteractiveGroup.js +224 -0
  103. package/Resources/WebLibraries/three/addons/interactive/SelectionBox.js +324 -0
  104. package/Resources/WebLibraries/three/addons/interactive/SelectionHelper.js +150 -0
  105. package/Resources/WebLibraries/three/addons/libs/fflate.module.js +2699 -0
  106. package/Resources/WebLibraries/three/addons/libs/lil-gui.module.min.js +8 -0
  107. package/Resources/WebLibraries/three/addons/libs/meshopt_decoder.module.js +196 -0
  108. package/Resources/WebLibraries/three/addons/libs/potpack.module.js +125 -0
  109. package/Resources/WebLibraries/three/addons/libs/stats.module.js +167 -0
  110. package/Resources/WebLibraries/three/addons/libs/tween.module.js +876 -0
  111. package/Resources/WebLibraries/three/addons/lighting/ClusteredLighting.js +153 -0
  112. package/Resources/WebLibraries/three/addons/lighting/DynamicLighting.js +82 -0
  113. package/Resources/WebLibraries/three/addons/lighting/LightMapper.js +295 -0
  114. package/Resources/WebLibraries/three/addons/lighting/LightProbeGrid.js +923 -0
  115. package/Resources/WebLibraries/three/addons/lighting/LightProbeGridUtils.js +107 -0
  116. package/Resources/WebLibraries/three/addons/lighting/LightProbeGridWebGL.js +846 -0
  117. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIConeTracer.js +243 -0
  118. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIIrradiance.js +43 -0
  119. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGINode.js +617 -0
  120. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGISceneCollector.js +793 -0
  121. package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIVolume.js +1440 -0
  122. package/Resources/WebLibraries/three/addons/lights/LightProbeGenerator.js +337 -0
  123. package/Resources/WebLibraries/three/addons/lights/RectAreaLightTexturesLib.js +127 -0
  124. package/Resources/WebLibraries/three/addons/lights/RectAreaLightUniformsLib.js +40 -0
  125. package/Resources/WebLibraries/three/addons/lights/SunLight.js +100 -0
  126. package/Resources/WebLibraries/three/addons/lights/SunLightNode.js +56 -0
  127. package/Resources/WebLibraries/three/addons/lights/SunLightShadow.js +319 -0
  128. package/Resources/WebLibraries/three/addons/lights/SunShadowNode.js +312 -0
  129. package/Resources/WebLibraries/three/addons/lines/Line2.js +56 -0
  130. package/Resources/WebLibraries/three/addons/lines/LineGeometry.js +157 -0
  131. package/Resources/WebLibraries/three/addons/lines/LineMaterial.js +742 -0
  132. package/Resources/WebLibraries/three/addons/lines/LineSegments2.js +434 -0
  133. package/Resources/WebLibraries/three/addons/lines/LineSegmentsGeometry.js +298 -0
  134. package/Resources/WebLibraries/three/addons/lines/Wireframe.js +108 -0
  135. package/Resources/WebLibraries/three/addons/lines/WireframeGeometry2.js +49 -0
  136. package/Resources/WebLibraries/three/addons/lines/webgpu/Line2.js +46 -0
  137. package/Resources/WebLibraries/three/addons/lines/webgpu/LineSegments2.js +419 -0
  138. package/Resources/WebLibraries/three/addons/lines/webgpu/Wireframe.js +86 -0
  139. package/Resources/WebLibraries/three/addons/loaders/EXRLoader.js +3411 -0
  140. package/Resources/WebLibraries/three/addons/loaders/FBXLoader.js +4660 -0
  141. package/Resources/WebLibraries/three/addons/loaders/FontLoader.js +262 -0
  142. package/Resources/WebLibraries/three/addons/loaders/GLTFLoader.js +5006 -0
  143. package/Resources/WebLibraries/three/addons/loaders/HDRLoader.js +463 -0
  144. package/Resources/WebLibraries/three/addons/loaders/MTLLoader.js +601 -0
  145. package/Resources/WebLibraries/three/addons/loaders/OBJLoader.js +961 -0
  146. package/Resources/WebLibraries/three/addons/loaders/PLYLoader.js +992 -0
  147. package/Resources/WebLibraries/three/addons/loaders/RGBELoader.js +18 -0
  148. package/Resources/WebLibraries/three/addons/loaders/STLLoader.js +423 -0
  149. package/Resources/WebLibraries/three/addons/loaders/SVGLoader.js +3297 -0
  150. package/Resources/WebLibraries/three/addons/loaders/TGALoader.js +539 -0
  151. package/Resources/WebLibraries/three/addons/loaders/UltraHDRLoader.js +757 -0
  152. package/Resources/WebLibraries/three/addons/math/Capsule.js +159 -0
  153. package/Resources/WebLibraries/three/addons/math/ColorConverter.js +62 -0
  154. package/Resources/WebLibraries/three/addons/math/ColorSpaces.js +147 -0
  155. package/Resources/WebLibraries/three/addons/math/ConvexHull.js +1695 -0
  156. package/Resources/WebLibraries/three/addons/math/ImprovedNoise.js +88 -0
  157. package/Resources/WebLibraries/three/addons/math/Lut.js +317 -0
  158. package/Resources/WebLibraries/three/addons/math/MeshSurfaceSampler.js +315 -0
  159. package/Resources/WebLibraries/three/addons/math/OBB.js +535 -0
  160. package/Resources/WebLibraries/three/addons/math/Octree.js +825 -0
  161. package/Resources/WebLibraries/three/addons/math/SimplexNoise.js +470 -0
  162. package/Resources/WebLibraries/three/addons/misc/ConvexObjectBreaker.js +539 -0
  163. package/Resources/WebLibraries/three/addons/misc/GPUComputationRenderer.js +508 -0
  164. package/Resources/WebLibraries/three/addons/misc/Gyroscope.js +78 -0
  165. package/Resources/WebLibraries/three/addons/misc/MorphAnimMesh.js +119 -0
  166. package/Resources/WebLibraries/three/addons/misc/MorphBlendMesh.js +425 -0
  167. package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMap.js +370 -0
  168. package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMapGPU.js +322 -0
  169. package/Resources/WebLibraries/three/addons/misc/RollerCoaster.js +661 -0
  170. package/Resources/WebLibraries/three/addons/misc/Sculptor.js +1679 -0
  171. package/Resources/WebLibraries/three/addons/misc/SculptorMesh.js +1504 -0
  172. package/Resources/WebLibraries/three/addons/misc/SculptorTools.js +1180 -0
  173. package/Resources/WebLibraries/three/addons/misc/SculptorUtils.js +345 -0
  174. package/Resources/WebLibraries/three/addons/misc/TileCreasedNormalsPlugin.js +270 -0
  175. package/Resources/WebLibraries/three/addons/misc/TubePainter.js +611 -0
  176. package/Resources/WebLibraries/three/addons/misc/Volume.js +520 -0
  177. package/Resources/WebLibraries/three/addons/misc/VolumeSlice.js +275 -0
  178. package/Resources/WebLibraries/three/addons/modifiers/CurveModifier.js +374 -0
  179. package/Resources/WebLibraries/three/addons/modifiers/CurveModifierGPU.js +256 -0
  180. package/Resources/WebLibraries/three/addons/modifiers/EdgeSplitModifier.js +299 -0
  181. package/Resources/WebLibraries/three/addons/modifiers/TessellateModifier.js +340 -0
  182. package/Resources/WebLibraries/three/addons/objects/GroundedSkybox.js +69 -0
  183. package/Resources/WebLibraries/three/addons/objects/Lensflare.js +489 -0
  184. package/Resources/WebLibraries/three/addons/objects/LensflareMesh.js +376 -0
  185. package/Resources/WebLibraries/three/addons/objects/MarchingCubes.js +1261 -0
  186. package/Resources/WebLibraries/three/addons/objects/Reflector.js +390 -0
  187. package/Resources/WebLibraries/three/addons/objects/ReflectorForSSRPass.js +393 -0
  188. package/Resources/WebLibraries/three/addons/objects/Refractor.js +389 -0
  189. package/Resources/WebLibraries/three/addons/objects/ShadowMesh.js +130 -0
  190. package/Resources/WebLibraries/three/addons/objects/Sky.js +342 -0
  191. package/Resources/WebLibraries/three/addons/objects/SkyMesh.js +403 -0
  192. package/Resources/WebLibraries/three/addons/objects/Water.js +374 -0
  193. package/Resources/WebLibraries/three/addons/objects/Water2.js +403 -0
  194. package/Resources/WebLibraries/three/addons/objects/Water2Mesh.js +199 -0
  195. package/Resources/WebLibraries/three/addons/objects/WaterMesh.js +194 -0
  196. package/Resources/WebLibraries/three/addons/postprocessing/AfterimagePass.js +187 -0
  197. package/Resources/WebLibraries/three/addons/postprocessing/BloomPass.js +274 -0
  198. package/Resources/WebLibraries/three/addons/postprocessing/BokehPass.js +218 -0
  199. package/Resources/WebLibraries/three/addons/postprocessing/ClearPass.js +97 -0
  200. package/Resources/WebLibraries/three/addons/postprocessing/CubeTexturePass.js +146 -0
  201. package/Resources/WebLibraries/three/addons/postprocessing/DotScreenPass.js +114 -0
  202. package/Resources/WebLibraries/three/addons/postprocessing/EffectComposer.js +365 -0
  203. package/Resources/WebLibraries/three/addons/postprocessing/FXAAPass.js +40 -0
  204. package/Resources/WebLibraries/three/addons/postprocessing/FilmPass.js +113 -0
  205. package/Resources/WebLibraries/three/addons/postprocessing/GTAOPass.js +735 -0
  206. package/Resources/WebLibraries/three/addons/postprocessing/GlitchPass.js +177 -0
  207. package/Resources/WebLibraries/three/addons/postprocessing/HalftonePass.js +134 -0
  208. package/Resources/WebLibraries/three/addons/postprocessing/LUTPass.js +138 -0
  209. package/Resources/WebLibraries/three/addons/postprocessing/MaskPass.js +195 -0
  210. package/Resources/WebLibraries/three/addons/postprocessing/OutlinePass.js +776 -0
  211. package/Resources/WebLibraries/three/addons/postprocessing/OutputPass.js +148 -0
  212. package/Resources/WebLibraries/three/addons/postprocessing/Pass.js +191 -0
  213. package/Resources/WebLibraries/three/addons/postprocessing/RenderPass.js +193 -0
  214. package/Resources/WebLibraries/three/addons/postprocessing/RenderPixelatedPass.js +314 -0
  215. package/Resources/WebLibraries/three/addons/postprocessing/RenderTransitionPass.js +267 -0
  216. package/Resources/WebLibraries/three/addons/postprocessing/SAOPass.js +407 -0
  217. package/Resources/WebLibraries/three/addons/postprocessing/SMAAPass.js +230 -0
  218. package/Resources/WebLibraries/three/addons/postprocessing/SSAARenderPass.js +313 -0
  219. package/Resources/WebLibraries/three/addons/postprocessing/SSAOPass.js +527 -0
  220. package/Resources/WebLibraries/three/addons/postprocessing/SSRPass.js +858 -0
  221. package/Resources/WebLibraries/three/addons/postprocessing/SavePass.js +132 -0
  222. package/Resources/WebLibraries/three/addons/postprocessing/ShaderPass.js +135 -0
  223. package/Resources/WebLibraries/three/addons/postprocessing/TAARenderPass.js +243 -0
  224. package/Resources/WebLibraries/three/addons/postprocessing/TexturePass.js +131 -0
  225. package/Resources/WebLibraries/three/addons/postprocessing/UnrealBloomPass.js +541 -0
  226. package/Resources/WebLibraries/three/addons/shaders/ACESFilmicToneMappingShader.js +96 -0
  227. package/Resources/WebLibraries/three/addons/shaders/AfterimageShader.js +63 -0
  228. package/Resources/WebLibraries/three/addons/shaders/BasicShader.js +36 -0
  229. package/Resources/WebLibraries/three/addons/shaders/BleachBypassShader.js +68 -0
  230. package/Resources/WebLibraries/three/addons/shaders/BlendShader.js +56 -0
  231. package/Resources/WebLibraries/three/addons/shaders/BokehShader.js +151 -0
  232. package/Resources/WebLibraries/three/addons/shaders/BokehShader2.js +404 -0
  233. package/Resources/WebLibraries/three/addons/shaders/BrightnessContrastShader.js +62 -0
  234. package/Resources/WebLibraries/three/addons/shaders/ColorCorrectionShader.js +59 -0
  235. package/Resources/WebLibraries/three/addons/shaders/ColorifyShader.js +57 -0
  236. package/Resources/WebLibraries/three/addons/shaders/ConvolutionShader.js +74 -0
  237. package/Resources/WebLibraries/three/addons/shaders/CopyShader.js +52 -0
  238. package/Resources/WebLibraries/three/addons/shaders/DOFMipMapShader.js +63 -0
  239. package/Resources/WebLibraries/three/addons/shaders/DepthLimitedBlurShader.js +183 -0
  240. package/Resources/WebLibraries/three/addons/shaders/DigitalGlitch.js +104 -0
  241. package/Resources/WebLibraries/three/addons/shaders/DotScreenShader.js +75 -0
  242. package/Resources/WebLibraries/three/addons/shaders/ExposureShader.js +51 -0
  243. package/Resources/WebLibraries/three/addons/shaders/FXAAShader.js +298 -0
  244. package/Resources/WebLibraries/three/addons/shaders/FilmShader.js +73 -0
  245. package/Resources/WebLibraries/three/addons/shaders/FocusShader.js +94 -0
  246. package/Resources/WebLibraries/three/addons/shaders/FreiChenShader.js +103 -0
  247. package/Resources/WebLibraries/three/addons/shaders/GTAOShader.js +437 -0
  248. package/Resources/WebLibraries/three/addons/shaders/GammaCorrectionShader.js +52 -0
  249. package/Resources/WebLibraries/three/addons/shaders/HalftoneShader.js +332 -0
  250. package/Resources/WebLibraries/three/addons/shaders/HorizontalBlurShader.js +68 -0
  251. package/Resources/WebLibraries/three/addons/shaders/HorizontalTiltShiftShader.js +70 -0
  252. package/Resources/WebLibraries/three/addons/shaders/HueSaturationShader.js +74 -0
  253. package/Resources/WebLibraries/three/addons/shaders/KaleidoShader.js +65 -0
  254. package/Resources/WebLibraries/three/addons/shaders/LuminosityHighPassShader.js +68 -0
  255. package/Resources/WebLibraries/three/addons/shaders/LuminosityShader.js +54 -0
  256. package/Resources/WebLibraries/three/addons/shaders/MirrorShader.js +62 -0
  257. package/Resources/WebLibraries/three/addons/shaders/NormalMapShader.js +60 -0
  258. package/Resources/WebLibraries/three/addons/shaders/OutputShader.js +103 -0
  259. package/Resources/WebLibraries/three/addons/shaders/PoissonDenoiseShader.js +230 -0
  260. package/Resources/WebLibraries/three/addons/shaders/RGBShiftShader.js +61 -0
  261. package/Resources/WebLibraries/three/addons/shaders/SAOShader.js +201 -0
  262. package/Resources/WebLibraries/three/addons/shaders/SMAAShader.js +489 -0
  263. package/Resources/WebLibraries/three/addons/shaders/SSAOShader.js +331 -0
  264. package/Resources/WebLibraries/three/addons/shaders/SSRShader.js +396 -0
  265. package/Resources/WebLibraries/three/addons/shaders/SepiaShader.js +57 -0
  266. package/Resources/WebLibraries/three/addons/shaders/SobelOperatorShader.js +98 -0
  267. package/Resources/WebLibraries/three/addons/shaders/SubsurfaceScatteringShader.js +95 -0
  268. package/Resources/WebLibraries/three/addons/shaders/TechnicolorShader.js +51 -0
  269. package/Resources/WebLibraries/three/addons/shaders/ToonShader.js +349 -0
  270. package/Resources/WebLibraries/three/addons/shaders/TriangleBlurShader.js +79 -0
  271. package/Resources/WebLibraries/three/addons/shaders/UnpackDepthRGBAShader.js +60 -0
  272. package/Resources/WebLibraries/three/addons/shaders/VelocityShader.js +137 -0
  273. package/Resources/WebLibraries/three/addons/shaders/VerticalBlurShader.js +66 -0
  274. package/Resources/WebLibraries/three/addons/shaders/VerticalTiltShiftShader.js +70 -0
  275. package/Resources/WebLibraries/three/addons/shaders/VignetteShader.js +56 -0
  276. package/Resources/WebLibraries/three/addons/shaders/VolumeShader.js +285 -0
  277. package/Resources/WebLibraries/three/addons/shaders/WaterRefractionShader.js +106 -0
  278. package/Resources/WebLibraries/three/addons/textures/FlakesTexture.js +54 -0
  279. package/Resources/WebLibraries/three/addons/tsl/WebGLNodesHandler.js +607 -0
  280. package/Resources/WebLibraries/three/addons/tsl/display/AfterImageNode.js +256 -0
  281. package/Resources/WebLibraries/three/addons/tsl/display/AnaglyphPassNode.js +550 -0
  282. package/Resources/WebLibraries/three/addons/tsl/display/BilateralBlurNode.js +377 -0
  283. package/Resources/WebLibraries/three/addons/tsl/display/BleachBypass.js +33 -0
  284. package/Resources/WebLibraries/three/addons/tsl/display/BloomNode.js +599 -0
  285. package/Resources/WebLibraries/three/addons/tsl/display/CRT.js +150 -0
  286. package/Resources/WebLibraries/three/addons/tsl/display/ChromaticAberrationNode.js +163 -0
  287. package/Resources/WebLibraries/three/addons/tsl/display/DenoiseNode.js +354 -0
  288. package/Resources/WebLibraries/three/addons/tsl/display/DepthOfFieldNode.js +572 -0
  289. package/Resources/WebLibraries/three/addons/tsl/display/DotScreenNode.js +104 -0
  290. package/Resources/WebLibraries/three/addons/tsl/display/FSR1Node.js +481 -0
  291. package/Resources/WebLibraries/three/addons/tsl/display/FXAANode.js +357 -0
  292. package/Resources/WebLibraries/three/addons/tsl/display/FilmNode.js +101 -0
  293. package/Resources/WebLibraries/three/addons/tsl/display/GTAONode.js +727 -0
  294. package/Resources/WebLibraries/three/addons/tsl/display/GaussianBlurNode.js +412 -0
  295. package/Resources/WebLibraries/three/addons/tsl/display/GodraysNode.js +604 -0
  296. package/Resources/WebLibraries/three/addons/tsl/display/ImportanceSampledEnvironment.js +564 -0
  297. package/Resources/WebLibraries/three/addons/tsl/display/LensflareNode.js +282 -0
  298. package/Resources/WebLibraries/three/addons/tsl/display/Lut3DNode.js +109 -0
  299. package/Resources/WebLibraries/three/addons/tsl/display/MotionBlur.js +33 -0
  300. package/Resources/WebLibraries/three/addons/tsl/display/OITPassNode.js +341 -0
  301. package/Resources/WebLibraries/three/addons/tsl/display/OutlineNode.js +916 -0
  302. package/Resources/WebLibraries/three/addons/tsl/display/ParallaxBarrierPassNode.js +90 -0
  303. package/Resources/WebLibraries/three/addons/tsl/display/PixelationPassNode.js +227 -0
  304. package/Resources/WebLibraries/three/addons/tsl/display/RGBShiftNode.js +96 -0
  305. package/Resources/WebLibraries/three/addons/tsl/display/RecurrentDenoiseNode.js +812 -0
  306. package/Resources/WebLibraries/three/addons/tsl/display/RetroPassNode.js +263 -0
  307. package/Resources/WebLibraries/three/addons/tsl/display/SMAANode.js +729 -0
  308. package/Resources/WebLibraries/three/addons/tsl/display/SSAAPassNode.js +344 -0
  309. package/Resources/WebLibraries/three/addons/tsl/display/SSAONode.js +422 -0
  310. package/Resources/WebLibraries/three/addons/tsl/display/SSGINode.js +698 -0
  311. package/Resources/WebLibraries/three/addons/tsl/display/SSRNode.js +1430 -0
  312. package/Resources/WebLibraries/three/addons/tsl/display/SSSNode.js +479 -0
  313. package/Resources/WebLibraries/three/addons/tsl/display/Sepia.js +24 -0
  314. package/Resources/WebLibraries/three/addons/tsl/display/Shape.js +29 -0
  315. package/Resources/WebLibraries/three/addons/tsl/display/SharpenNode.js +284 -0
  316. package/Resources/WebLibraries/three/addons/tsl/display/SobelOperatorNode.js +168 -0
  317. package/Resources/WebLibraries/three/addons/tsl/display/StereoCompositePassNode.js +190 -0
  318. package/Resources/WebLibraries/three/addons/tsl/display/StereoPassNode.js +117 -0
  319. package/Resources/WebLibraries/three/addons/tsl/display/TAAUNode.js +700 -0
  320. package/Resources/WebLibraries/three/addons/tsl/display/TRAANode.js +609 -0
  321. package/Resources/WebLibraries/three/addons/tsl/display/TemporalReprojectNode.js +1024 -0
  322. package/Resources/WebLibraries/three/addons/tsl/display/TransitionNode.js +141 -0
  323. package/Resources/WebLibraries/three/addons/tsl/display/boxBlur.js +65 -0
  324. package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlend.js +80 -0
  325. package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlur.js +63 -0
  326. package/Resources/WebLibraries/three/addons/tsl/display/hashBlur.js +55 -0
  327. package/Resources/WebLibraries/three/addons/tsl/display/lensDirt.js +30 -0
  328. package/Resources/WebLibraries/three/addons/tsl/display/radialBlur.js +68 -0
  329. package/Resources/WebLibraries/three/addons/tsl/lighting/ClusteredLightsNode.js +994 -0
  330. package/Resources/WebLibraries/three/addons/tsl/lighting/DynamicLightsNode.js +201 -0
  331. package/Resources/WebLibraries/three/addons/tsl/lighting/LightProbeGridNode.js +183 -0
  332. package/Resources/WebLibraries/three/addons/tsl/lighting/data/AmbientLightDataNode.js +67 -0
  333. package/Resources/WebLibraries/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +117 -0
  334. package/Resources/WebLibraries/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +105 -0
  335. package/Resources/WebLibraries/three/addons/tsl/lighting/data/PointLightDataNode.js +140 -0
  336. package/Resources/WebLibraries/three/addons/tsl/lighting/data/SpotLightDataNode.js +167 -0
  337. package/Resources/WebLibraries/three/addons/tsl/math/Bayer.js +84 -0
  338. package/Resources/WebLibraries/three/addons/tsl/math/curlNoise.js +107 -0
  339. package/Resources/WebLibraries/three/addons/tsl/math/voronoiNoise.js +112 -0
  340. package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNode.js +542 -0
  341. package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNodeHelper.js +212 -0
  342. package/Resources/WebLibraries/three/addons/tsl/utils/GroundedSkybox.js +62 -0
  343. package/Resources/WebLibraries/three/addons/tsl/utils/RNoise.js +51 -0
  344. package/Resources/WebLibraries/three/addons/tsl/utils/Raymarching.js +70 -0
  345. package/Resources/WebLibraries/three/addons/tsl/utils/SoftParticles.js +53 -0
  346. package/Resources/WebLibraries/three/addons/tsl/utils/SpecularHelpers.js +302 -0
  347. package/Resources/WebLibraries/three/addons/tsl/utils/TAAUtils.js +184 -0
  348. package/Resources/WebLibraries/three/addons/utils/BufferGeometryUtils.js +1523 -0
  349. package/Resources/WebLibraries/three/addons/utils/CameraUtils.js +82 -0
  350. package/Resources/WebLibraries/three/addons/utils/ColorUtils.js +76 -0
  351. package/Resources/WebLibraries/three/addons/utils/GaussianSplatUtils.js +229 -0
  352. package/Resources/WebLibraries/three/addons/utils/GeometryCompressionUtils.js +547 -0
  353. package/Resources/WebLibraries/three/addons/utils/GeometryUtils.js +226 -0
  354. package/Resources/WebLibraries/three/addons/utils/LDrawUtils.js +211 -0
  355. package/Resources/WebLibraries/three/addons/utils/SceneOptimizer.js +459 -0
  356. package/Resources/WebLibraries/three/addons/utils/SceneUtils.js +363 -0
  357. package/Resources/WebLibraries/three/addons/utils/ShadowMapViewer.js +244 -0
  358. package/Resources/WebLibraries/three/addons/utils/ShadowMapViewerGPU.js +233 -0
  359. package/Resources/WebLibraries/three/addons/utils/SkeletonUtils.js +496 -0
  360. package/Resources/WebLibraries/three/addons/utils/SortUtils.js +175 -0
  361. package/Resources/WebLibraries/three/addons/utils/UVsDebug.js +173 -0
  362. package/Resources/WebLibraries/three/addons/utils/WebGLTextureUtils.js +115 -0
  363. package/Resources/WebLibraries/three/addons/utils/WebGPUTextureUtils.js +81 -0
  364. package/Resources/WebLibraries/three/addons/utils/WorkerPool.js +167 -0
  365. package/Resources/WebLibraries/three/addons/utils/unwrapUVs.js +865 -0
  366. package/Resources/WebLibraries/three/three.core.js +61162 -0
  367. package/Resources/WebLibraries/three/three.module.js +19537 -0
  368. package/Resources/WebLibraries/three/three.tsl.js +41903 -0
  369. package/Resources/WebLibraries/three/three.webgpu.js +53714 -0
  370. package/Resources/share-rules.json +64 -0
  371. package/Resources/skills/2d-game/SKILL.md +305 -0
  372. package/Resources/skills/3d-game/SKILL.md +274 -0
  373. package/Resources/skills/accounts/SKILL.md +41 -0
  374. package/Resources/skills/android-design/SKILL.md +159 -0
  375. package/Resources/skills/app-ai/SKILL.md +154 -0
  376. package/Resources/skills/app-intents/SKILL.md +31 -0
  377. package/Resources/skills/app-kinds/SKILL.md +122 -0
  378. package/Resources/skills/apple-watch/SKILL.md +43 -0
  379. package/Resources/skills/assets/SKILL.md +183 -0
  380. package/Resources/skills/building-blocks/SKILL.md +97 -0
  381. package/Resources/skills/device-control/SKILL.md +56 -0
  382. package/Resources/skills/device-integrations/SKILL.md +278 -0
  383. package/Resources/skills/finder-files/SKILL.md +19 -0
  384. package/Resources/skills/game/SKILL.md +416 -0
  385. package/Resources/skills/game-3d/SKILL.md +12 -0
  386. package/Resources/skills/game-art/SKILL.md +11 -0
  387. package/Resources/skills/game-feel/SKILL.md +13 -0
  388. package/Resources/skills/game-levels/SKILL.md +12 -0
  389. package/Resources/skills/game-live/SKILL.md +12 -0
  390. package/Resources/skills/game-physics/SKILL.md +13 -0
  391. package/Resources/skills/game-playtest/SKILL.md +26 -0
  392. package/Resources/skills/game-ui/SKILL.md +278 -0
  393. package/Resources/skills/github-projects/SKILL.md +62 -0
  394. package/Resources/skills/icloud-sync/SKILL.md +30 -0
  395. package/Resources/skills/iphone-hardware/SKILL.md +57 -0
  396. package/Resources/skills/iphone-widgets/SKILL.md +53 -0
  397. package/Resources/skills/lg-developer-mode/SKILL.md +152 -0
  398. package/Resources/skills/mac-widgets/SKILL.md +60 -0
  399. package/Resources/skills/maps/SKILL.md +8 -0
  400. package/Resources/skills/menu-bar/SKILL.md +36 -0
  401. package/Resources/skills/more-apps/SKILL.md +53 -0
  402. package/Resources/skills/phone-controllers/SKILL.md +79 -0
  403. package/Resources/skills/phone-pages/SKILL.md +173 -0
  404. package/Resources/skills/roku-developer-mode/SKILL.md +106 -0
  405. package/Resources/skills/scene-3d/SKILL.md +27 -0
  406. package/Resources/skills/scripting/SKILL.md +17 -0
  407. package/Resources/skills/share-extension/SKILL.md +22 -0
  408. package/Resources/skills/tv-design/SKILL.md +72 -0
  409. package/Resources/skills/web-app/SKILL.md +170 -0
  410. package/Resources/skills/web-game/SKILL.md +95 -0
  411. package/Resources/skills/web-or-native/SKILL.md +108 -0
  412. package/Resources/skills/wish-links/SKILL.md +156 -0
  413. package/THIRD_PARTY_NOTICES.md +170 -0
  414. package/cli/ai.mjs +237 -0
  415. package/cli/android.mjs +941 -0
  416. package/cli/app-ai.mjs +473 -0
  417. package/cli/browser.mjs +284 -0
  418. package/cli/calls.mjs +594 -0
  419. package/cli/dev.mjs +820 -0
  420. package/cli/devices.mjs +984 -0
  421. package/cli/lamp.mjs +1326 -0
  422. package/cli/lampapp.mjs +332 -0
  423. package/cli/lamps/android-host/LampPageGateway.kt +345 -0
  424. package/cli/lamps/android-host/app/build.gradle.kts +40 -0
  425. package/cli/lamps/android-host/build.gradle.kts +4 -0
  426. package/cli/lamps/android-host/game/AndroidManifest.xml +33 -0
  427. package/cli/lamps/android-host/game/MainActivity.kt +173 -0
  428. package/cli/lamps/android-host/gradle/libs.versions.toml +39 -0
  429. package/cli/lamps/android-host/gradle.properties +8 -0
  430. package/cli/lamps/android-host/page/AndroidManifest.xml +35 -0
  431. package/cli/lamps/android-host/page/MainActivity.kt +193 -0
  432. package/cli/lamps/android-host/settings.gradle.kts +30 -0
  433. package/cli/lamps/android-host/tools.json +43 -0
  434. package/cli/lamps/lamp-controllers.js +2 -0
  435. package/cli/lamps/lamp-for-games.js +6922 -0
  436. package/cli/lamps/lamp.js +7082 -0
  437. package/cli/lamps/mac-starter/.lamp/meta.json +1 -0
  438. package/cli/lamps/mac-starter/APP.md +12 -0
  439. package/cli/lamps/mac-starter/Package.swift +8 -0
  440. package/cli/lamps/mac-starter/Sources/App.swift +11 -0
  441. package/cli/lamps/mac-starter/Sources/ContentView.swift +17 -0
  442. package/cli/lamps/mac-starter/Sources/LampSupport.swift +18215 -0
  443. package/cli/lamps/mac-starter/build.sh +336 -0
  444. package/cli/lamps/mac-starter/gitignore +3 -0
  445. package/cli/lamps/mac-starter/lamp-starter.json +6 -0
  446. package/cli/lamps/web-starter/APP.md +8 -0
  447. package/cli/lamps/web-starter/app.js +1 -0
  448. package/cli/lamps/web-starter/index.html +17 -0
  449. package/cli/lamps/web-starter/lamp-starter.json +5 -0
  450. package/cli/lamps/web-starter/lamp.js +7082 -0
  451. package/cli/lamps/web-starter/style.css +25 -0
  452. package/cli/link.mjs +202 -0
  453. package/cli/local-ai.mjs +193 -0
  454. package/cli/mac.mjs +621 -0
  455. package/cli/mdns.mjs +205 -0
  456. package/cli/msix.mjs +413 -0
  457. package/cli/network.mjs +209 -0
  458. package/cli/openrouter.mjs +133 -0
  459. package/cli/outside.mjs +203 -0
  460. package/cli/page.js +317 -0
  461. package/cli/place.mjs +298 -0
  462. package/cli/png.mjs +184 -0
  463. package/cli/share.mjs +270 -0
  464. package/cli/skill/SKILL.md +280 -0
  465. package/cli/skills.mjs +71 -0
  466. package/cli/state.mjs +176 -0
  467. package/cli/update.mjs +162 -0
  468. package/package.json +20 -4
  469. package/site/lib/quota.js +59 -0
  470. package/site/lib/shared-wishes.js +1727 -0
@@ -0,0 +1,508 @@
1
+ import {
2
+ ClampToEdgeWrapping,
3
+ DataTexture,
4
+ FloatType,
5
+ NearestFilter,
6
+ RGBAFormat,
7
+ ShaderMaterial,
8
+ WebGLRenderTarget
9
+ } from 'three';
10
+
11
+ import { FullScreenQuad } from '../postprocessing/Pass.js';
12
+
13
+ /**
14
+ * GPUComputationRenderer, based on SimulationRenderer by @zz85.
15
+ *
16
+ * The GPUComputationRenderer uses the concept of variables. These variables are RGBA float textures that hold 4 floats
17
+ * for each compute element (texel).
18
+ *
19
+ * Each variable has a fragment shader that defines the computation made to obtain the variable in question.
20
+ * You can use as many variables you need, and make dependencies so you can use textures of other variables in the shader
21
+ * (the sampler uniforms are added automatically) Most of the variables will need themselves as dependency.
22
+ *
23
+ * The renderer has actually two render targets per variable, to make ping-pong. Textures from the current frame are used
24
+ * as inputs to render the textures of the next frame.
25
+ *
26
+ * The render targets of the variables can be used as input textures for your visualization shaders.
27
+ *
28
+ * Variable names should be valid identifiers and should not collide with THREE GLSL used identifiers.
29
+ * a common approach could be to use 'texture' prefixing the variable name; i.e texturePosition, textureVelocity...
30
+ *
31
+ * The size of the computation (sizeX * sizeY) is defined as 'resolution' automatically in the shader. For example:
32
+ * ```
33
+ * #DEFINE resolution vec2( 1024.0, 1024.0 )
34
+ * ```
35
+ * Basic use:
36
+ * ```js
37
+ * // Initialization...
38
+ *
39
+ * // Create computation renderer
40
+ * const gpuCompute = new GPUComputationRenderer( 1024, 1024, renderer );
41
+ *
42
+ * // Create initial state float textures
43
+ * const pos0 = gpuCompute.createTexture();
44
+ * const vel0 = gpuCompute.createTexture();
45
+ * // and fill in here the texture data...
46
+ *
47
+ * // Add texture variables
48
+ * const velVar = gpuCompute.addVariable( "textureVelocity", fragmentShaderVel, vel0 );
49
+ * const posVar = gpuCompute.addVariable( "texturePosition", fragmentShaderPos, pos0 );
50
+ *
51
+ * // Add variable dependencies
52
+ * gpuCompute.setVariableDependencies( velVar, [ velVar, posVar ] );
53
+ * gpuCompute.setVariableDependencies( posVar, [ velVar, posVar ] );
54
+ *
55
+ * // Add custom uniforms
56
+ * velVar.material.uniforms.time = { value: 0.0 };
57
+ *
58
+ * // Check for completeness
59
+ * const error = gpuCompute.init();
60
+ * if ( error !== null ) {
61
+ * console.error( error );
62
+ * }
63
+ *
64
+ * // In each frame...
65
+ *
66
+ * // Compute!
67
+ * gpuCompute.compute();
68
+ *
69
+ * // Update texture uniforms in your visualization materials with the gpu renderer output
70
+ * myMaterial.uniforms.myTexture.value = gpuCompute.getCurrentRenderTarget( posVar ).texture;
71
+ *
72
+ * // Do your rendering
73
+ * renderer.render( myScene, myCamera );
74
+ * ```
75
+ *
76
+ * Also, you can use utility functions to create ShaderMaterial and perform computations (rendering between textures)
77
+ * Note that the shaders can have multiple input textures.
78
+ *
79
+ * ```js
80
+ * const myFilter1 = gpuCompute.createShaderMaterial( myFilterFragmentShader1, { theTexture: { value: null } } );
81
+ * const myFilter2 = gpuCompute.createShaderMaterial( myFilterFragmentShader2, { theTexture: { value: null } } );
82
+ *
83
+ * const inputTexture = gpuCompute.createTexture();
84
+ *
85
+ * // Fill in here inputTexture...
86
+ *
87
+ * myFilter1.uniforms.theTexture.value = inputTexture;
88
+ *
89
+ * const myRenderTarget = gpuCompute.createRenderTarget();
90
+ * myFilter2.uniforms.theTexture.value = myRenderTarget.texture;
91
+ *
92
+ * const outputRenderTarget = gpuCompute.createRenderTarget();
93
+ *
94
+ * // Now use the output texture where you want:
95
+ * myMaterial.uniforms.map.value = outputRenderTarget.texture;
96
+ *
97
+ * // And compute each frame, before rendering to screen:
98
+ * gpuCompute.doRenderTarget( myFilter1, myRenderTarget );
99
+ * gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );
100
+ * ```
101
+ *
102
+ * @three_import import { GPUComputationRenderer } from 'three/addons/misc/GPUComputationRenderer.js';
103
+ */
104
+ class GPUComputationRenderer {
105
+
106
+ /**
107
+ * Constructs a new GPU computation renderer.
108
+ *
109
+ * @param {number} sizeX - Computation problem size is always 2d: sizeX * sizeY elements.
110
+ * @param {number} sizeY - Computation problem size is always 2d: sizeX * sizeY elements.
111
+ * @param {WebGLRenderer} renderer - The renderer.
112
+ */
113
+ constructor( sizeX, sizeY, renderer ) {
114
+
115
+ this.variables = [];
116
+
117
+ this.currentTextureIndex = 0;
118
+
119
+ let dataType = FloatType;
120
+
121
+ const passThruUniforms = {
122
+ passThruTexture: { value: null }
123
+ };
124
+
125
+ const passThruShader = createShaderMaterial( getPassThroughFragmentShader(), passThruUniforms );
126
+
127
+ const quad = new FullScreenQuad( passThruShader );
128
+
129
+ /**
130
+ * Sets the data type of the internal textures.
131
+ *
132
+ * @param {(FloatType|HalfFloatType)} type - The type to set.
133
+ * @return {GPUComputationRenderer} A reference to this renderer.
134
+ */
135
+ this.setDataType = function ( type ) {
136
+
137
+ dataType = type;
138
+ return this;
139
+
140
+ };
141
+
142
+ /**
143
+ * Adds a compute variable to the renderer.
144
+ *
145
+ * @param {string} variableName - The variable name.
146
+ * @param {string} computeFragmentShader - The compute (fragment) shader source.
147
+ * @param {Texture} initialValueTexture - The initial value texture.
148
+ * @return {Object} The compute variable.
149
+ */
150
+ this.addVariable = function ( variableName, computeFragmentShader, initialValueTexture ) {
151
+
152
+ const material = this.createShaderMaterial( computeFragmentShader );
153
+
154
+ const variable = {
155
+ name: variableName,
156
+ initialValueTexture: initialValueTexture,
157
+ material: material,
158
+ dependencies: null,
159
+ renderTargets: [],
160
+ wrapS: null,
161
+ wrapT: null,
162
+ minFilter: NearestFilter,
163
+ magFilter: NearestFilter
164
+ };
165
+
166
+ this.variables.push( variable );
167
+
168
+ return variable;
169
+
170
+ };
171
+
172
+ /**
173
+ * Sets variable dependencies.
174
+ *
175
+ * @param {Object} variable - The compute variable.
176
+ * @param {Array<Object>} dependencies - Other compute variables that represents the dependencies.
177
+ */
178
+ this.setVariableDependencies = function ( variable, dependencies ) {
179
+
180
+ variable.dependencies = dependencies;
181
+
182
+ };
183
+
184
+ /**
185
+ * Initializes the renderer.
186
+ *
187
+ * @return {?string} Returns `null` if no errors are detected. Otherwise returns the error message.
188
+ */
189
+ this.init = function () {
190
+
191
+ if ( renderer.capabilities.maxVertexTextures === 0 ) {
192
+
193
+ return 'No support for vertex shader textures.';
194
+
195
+ }
196
+
197
+ for ( let i = 0; i < this.variables.length; i ++ ) {
198
+
199
+ const variable = this.variables[ i ];
200
+
201
+ // Creates rendertargets and initialize them with input texture
202
+ variable.renderTargets[ 0 ] = this.createRenderTarget( sizeX, sizeY, variable.wrapS, variable.wrapT, variable.minFilter, variable.magFilter );
203
+ variable.renderTargets[ 1 ] = this.createRenderTarget( sizeX, sizeY, variable.wrapS, variable.wrapT, variable.minFilter, variable.magFilter );
204
+ this.renderTexture( variable.initialValueTexture, variable.renderTargets[ 0 ] );
205
+ this.renderTexture( variable.initialValueTexture, variable.renderTargets[ 1 ] );
206
+
207
+ // Adds dependencies uniforms to the ShaderMaterial
208
+ const material = variable.material;
209
+ const uniforms = material.uniforms;
210
+
211
+ if ( variable.dependencies !== null ) {
212
+
213
+ for ( let d = 0; d < variable.dependencies.length; d ++ ) {
214
+
215
+ const depVar = variable.dependencies[ d ];
216
+
217
+ if ( depVar.name !== variable.name ) {
218
+
219
+ // Checks if variable exists
220
+ let found = false;
221
+
222
+ for ( let j = 0; j < this.variables.length; j ++ ) {
223
+
224
+ if ( depVar.name === this.variables[ j ].name ) {
225
+
226
+ found = true;
227
+ break;
228
+
229
+ }
230
+
231
+ }
232
+
233
+ if ( ! found ) {
234
+
235
+ return 'Variable dependency not found. Variable=' + variable.name + ', dependency=' + depVar.name;
236
+
237
+ }
238
+
239
+ }
240
+
241
+ uniforms[ depVar.name ] = { value: null };
242
+
243
+ material.fragmentShader = '\nuniform sampler2D ' + depVar.name + ';\n' + material.fragmentShader;
244
+
245
+ }
246
+
247
+ }
248
+
249
+ }
250
+
251
+ this.currentTextureIndex = 0;
252
+
253
+ return null;
254
+
255
+ };
256
+
257
+ /**
258
+ * Executes the compute. This method is usually called in the animation loop.
259
+ */
260
+ this.compute = function () {
261
+
262
+ const currentTextureIndex = this.currentTextureIndex;
263
+ const nextTextureIndex = this.currentTextureIndex === 0 ? 1 : 0;
264
+
265
+ for ( let i = 0, il = this.variables.length; i < il; i ++ ) {
266
+
267
+ const variable = this.variables[ i ];
268
+
269
+ // Sets texture dependencies uniforms
270
+ if ( variable.dependencies !== null ) {
271
+
272
+ const uniforms = variable.material.uniforms;
273
+
274
+ for ( let d = 0, dl = variable.dependencies.length; d < dl; d ++ ) {
275
+
276
+ const depVar = variable.dependencies[ d ];
277
+
278
+ uniforms[ depVar.name ].value = depVar.renderTargets[ currentTextureIndex ].texture;
279
+
280
+ }
281
+
282
+ }
283
+
284
+ // Performs the computation for this variable
285
+ this.doRenderTarget( variable.material, variable.renderTargets[ nextTextureIndex ] );
286
+
287
+ }
288
+
289
+ this.currentTextureIndex = nextTextureIndex;
290
+
291
+ };
292
+
293
+ /**
294
+ * Returns the current render target for the given compute variable.
295
+ *
296
+ * @param {Object} variable - The compute variable.
297
+ * @return {WebGLRenderTarget} The current render target.
298
+ */
299
+ this.getCurrentRenderTarget = function ( variable ) {
300
+
301
+ return variable.renderTargets[ this.currentTextureIndex ];
302
+
303
+ };
304
+
305
+ /**
306
+ * Returns the alternate render target for the given compute variable.
307
+ *
308
+ * @param {Object} variable - The compute variable.
309
+ * @return {WebGLRenderTarget} The alternate render target.
310
+ */
311
+ this.getAlternateRenderTarget = function ( variable ) {
312
+
313
+ return variable.renderTargets[ this.currentTextureIndex === 0 ? 1 : 0 ];
314
+
315
+ };
316
+
317
+ /**
318
+ * Frees all internal resources. Call this method if you don't need the
319
+ * renderer anymore.
320
+ */
321
+ this.dispose = function () {
322
+
323
+ quad.dispose();
324
+
325
+ const variables = this.variables;
326
+
327
+ for ( let i = 0; i < variables.length; i ++ ) {
328
+
329
+ const variable = variables[ i ];
330
+
331
+ if ( variable.initialValueTexture ) variable.initialValueTexture.dispose();
332
+
333
+ const renderTargets = variable.renderTargets;
334
+
335
+ for ( let j = 0; j < renderTargets.length; j ++ ) {
336
+
337
+ const renderTarget = renderTargets[ j ];
338
+ renderTarget.dispose();
339
+
340
+ }
341
+
342
+ variable.material.dispose();
343
+
344
+ }
345
+
346
+ };
347
+
348
+ function addResolutionDefine( materialShader ) {
349
+
350
+ materialShader.defines.resolution = 'vec2( ' + sizeX.toFixed( 1 ) + ', ' + sizeY.toFixed( 1 ) + ' )';
351
+
352
+ }
353
+
354
+ /**
355
+ * Adds a resolution defined for the given material shader.
356
+ *
357
+ * @param {Object} materialShader - The material shader.
358
+ */
359
+ this.addResolutionDefine = addResolutionDefine;
360
+
361
+
362
+ // The following functions can be used to compute things manually
363
+
364
+ function createShaderMaterial( computeFragmentShader, uniforms ) {
365
+
366
+ uniforms = uniforms || {};
367
+
368
+ const material = new ShaderMaterial( {
369
+ name: 'GPUComputationShader',
370
+ uniforms: uniforms,
371
+ vertexShader: getPassThroughVertexShader(),
372
+ fragmentShader: computeFragmentShader
373
+ } );
374
+
375
+ addResolutionDefine( material );
376
+
377
+ return material;
378
+
379
+ }
380
+
381
+ this.createShaderMaterial = createShaderMaterial;
382
+
383
+ /**
384
+ * Creates a new render target from the given parameters.
385
+ *
386
+ * @param {number} sizeXTexture - The width of the render target.
387
+ * @param {number} sizeYTexture - The height of the render target.
388
+ * @param {number} wrapS - The wrapS value.
389
+ * @param {number} wrapT - The wrapS value.
390
+ * @param {number} minFilter - The minFilter value.
391
+ * @param {number} magFilter - The magFilter value.
392
+ * @return {WebGLRenderTarget} The new render target.
393
+ */
394
+ this.createRenderTarget = function ( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {
395
+
396
+ sizeXTexture = sizeXTexture || sizeX;
397
+ sizeYTexture = sizeYTexture || sizeY;
398
+
399
+ wrapS = wrapS || ClampToEdgeWrapping;
400
+ wrapT = wrapT || ClampToEdgeWrapping;
401
+
402
+ minFilter = minFilter || NearestFilter;
403
+ magFilter = magFilter || NearestFilter;
404
+
405
+ const renderTarget = new WebGLRenderTarget( sizeXTexture, sizeYTexture, {
406
+ wrapS: wrapS,
407
+ wrapT: wrapT,
408
+ minFilter: minFilter,
409
+ magFilter: magFilter,
410
+ format: RGBAFormat,
411
+ type: dataType,
412
+ depthBuffer: false
413
+ } );
414
+
415
+ return renderTarget;
416
+
417
+ };
418
+
419
+ /**
420
+ * Creates a new data texture.
421
+ *
422
+ * @return {DataTexture} The new data texture.
423
+ */
424
+ this.createTexture = function () {
425
+
426
+ const data = new Float32Array( sizeX * sizeY * 4 );
427
+ const texture = new DataTexture( data, sizeX, sizeY, RGBAFormat, FloatType );
428
+ texture.needsUpdate = true;
429
+ return texture;
430
+
431
+ };
432
+
433
+ /**
434
+ * Renders the given texture into the given render target.
435
+ *
436
+ * @param {Texture} input - The input.
437
+ * @param {WebGLRenderTarget} output - The output.
438
+ */
439
+ this.renderTexture = function ( input, output ) {
440
+
441
+ passThruUniforms.passThruTexture.value = input;
442
+
443
+ this.doRenderTarget( passThruShader, output );
444
+
445
+ passThruUniforms.passThruTexture.value = null;
446
+
447
+ };
448
+
449
+
450
+ /**
451
+ * Renders the given material into the given render target
452
+ * with a full-screen pass.
453
+ *
454
+ * @param {Material} material - The material.
455
+ * @param {WebGLRenderTarget} output - The output.
456
+ */
457
+ this.doRenderTarget = function ( material, output ) {
458
+
459
+ const currentRenderTarget = renderer.getRenderTarget();
460
+
461
+ const currentXrEnabled = renderer.xr.enabled;
462
+ const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
463
+
464
+ renderer.xr.enabled = false; // Avoid camera modification
465
+ renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
466
+ quad.material = material;
467
+ renderer.setRenderTarget( output );
468
+ quad.render( renderer );
469
+ quad.material = passThruShader;
470
+
471
+ renderer.xr.enabled = currentXrEnabled;
472
+ renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
473
+
474
+ renderer.setRenderTarget( currentRenderTarget );
475
+
476
+ };
477
+
478
+ // Shaders
479
+
480
+ function getPassThroughVertexShader() {
481
+
482
+ return 'void main() {\n' +
483
+ '\n' +
484
+ ' gl_Position = vec4( position, 1.0 );\n' +
485
+ '\n' +
486
+ '}\n';
487
+
488
+ }
489
+
490
+ function getPassThroughFragmentShader() {
491
+
492
+ return 'uniform sampler2D passThruTexture;\n' +
493
+ '\n' +
494
+ 'void main() {\n' +
495
+ '\n' +
496
+ ' vec2 uv = gl_FragCoord.xy / resolution.xy;\n' +
497
+ '\n' +
498
+ ' gl_FragColor = texture2D( passThruTexture, uv );\n' +
499
+ '\n' +
500
+ '}\n';
501
+
502
+ }
503
+
504
+ }
505
+
506
+ }
507
+
508
+ export { GPUComputationRenderer };
@@ -0,0 +1,78 @@
1
+ import {
2
+ Object3D,
3
+ Quaternion,
4
+ Vector3
5
+ } from 'three';
6
+
7
+ const _translationObject = new Vector3();
8
+ const _quaternionObject = new Quaternion();
9
+ const _scaleObject = new Vector3();
10
+
11
+ const _translationWorld = new Vector3();
12
+ const _quaternionWorld = new Quaternion();
13
+ const _scaleWorld = new Vector3();
14
+
15
+ /**
16
+ * A special type of 3D object that takes a position from the scene graph hierarchy
17
+ * but uses its local rotation as world rotation. It works like real-world gyroscope -
18
+ * you can move it around using hierarchy while its orientation stays fixed with
19
+ * respect to the world.
20
+ *
21
+ * @augments Object3D
22
+ * @three_import import { Gyroscope } from 'three/addons/misc/Gyroscope.js';
23
+ */
24
+ class Gyroscope extends Object3D {
25
+
26
+ /**
27
+ * Constructs a new gyroscope.
28
+ */
29
+ constructor() {
30
+
31
+ super();
32
+
33
+ }
34
+
35
+ updateMatrixWorld( force ) {
36
+
37
+ this.matrixAutoUpdate && this.updateMatrix();
38
+
39
+ // update matrixWorld
40
+
41
+ if ( this.matrixWorldNeedsUpdate || force ) {
42
+
43
+ if ( this.parent !== null ) {
44
+
45
+ this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );
46
+
47
+ this.matrixWorld.decompose( _translationWorld, _quaternionWorld, _scaleWorld );
48
+ this.matrix.decompose( _translationObject, _quaternionObject, _scaleObject );
49
+
50
+ this.matrixWorld.compose( _translationWorld, _quaternionObject, _scaleWorld );
51
+
52
+
53
+ } else {
54
+
55
+ this.matrixWorld.copy( this.matrix );
56
+
57
+ }
58
+
59
+
60
+ this.matrixWorldNeedsUpdate = false;
61
+
62
+ force = true;
63
+
64
+ }
65
+
66
+ // update children
67
+
68
+ for ( let i = 0, l = this.children.length; i < l; i ++ ) {
69
+
70
+ this.children[ i ].updateMatrixWorld( force );
71
+
72
+ }
73
+
74
+ }
75
+
76
+ }
77
+
78
+ export { Gyroscope };
@@ -0,0 +1,119 @@
1
+ import {
2
+ AnimationClip,
3
+ AnimationMixer,
4
+ Mesh
5
+ } from 'three';
6
+
7
+ /**
8
+ * A special type of an animated mesh with a simple interface
9
+ * for animation playback. It allows to playback just one animation
10
+ * without any transitions or fading between animation changes.
11
+ *
12
+ * @augments Mesh
13
+ * @three_import import { MorphAnimMesh } from 'three/addons/misc/MorphAnimMesh.js';
14
+ */
15
+ class MorphAnimMesh extends Mesh {
16
+
17
+ /**
18
+ * Constructs a new morph anim mesh.
19
+ *
20
+ * @param {BufferGeometry} [geometry] - The mesh geometry.
21
+ * @param {Material|Array<Material>} [material] - The mesh material.
22
+ */
23
+ constructor( geometry, material ) {
24
+
25
+ super( geometry, material );
26
+
27
+ this.type = 'MorphAnimMesh';
28
+
29
+ /**
30
+ * The internal animation mixer.
31
+ *
32
+ * @type {AnimationMixer}
33
+ */
34
+ this.mixer = new AnimationMixer( this );
35
+
36
+ /**
37
+ * The current active animation action.
38
+ *
39
+ * @type {?AnimationAction}
40
+ * @default null
41
+ */
42
+ this.activeAction = null;
43
+
44
+ }
45
+
46
+ /**
47
+ * Sets the animation playback direction to "forward".
48
+ */
49
+ setDirectionForward() {
50
+
51
+ this.mixer.timeScale = 1.0;
52
+
53
+ }
54
+
55
+ /**
56
+ * Sets the animation playback direction to "backward".
57
+ */
58
+ setDirectionBackward() {
59
+
60
+ this.mixer.timeScale = - 1.0;
61
+
62
+ }
63
+
64
+ /**
65
+ * Plays the defined animation clip. The implementation assumes the animation
66
+ * clips are stored in {@link Object3D#animations} or the geometry.
67
+ *
68
+ * @param {string} label - The name of the animation clip.
69
+ * @param {number} fps - The FPS of the animation clip.
70
+ */
71
+ playAnimation( label, fps ) {
72
+
73
+ if ( this.activeAction ) {
74
+
75
+ this.activeAction.stop();
76
+ this.activeAction = null;
77
+
78
+ }
79
+
80
+ const clip = AnimationClip.findByName( this, label );
81
+
82
+ if ( clip ) {
83
+
84
+ const action = this.mixer.clipAction( clip );
85
+ action.timeScale = ( clip.tracks.length * fps ) / clip.duration;
86
+ this.activeAction = action.play();
87
+
88
+ } else {
89
+
90
+ throw new Error( 'THREE.MorphAnimMesh: animations[' + label + '] undefined in .playAnimation()' );
91
+
92
+ }
93
+
94
+ }
95
+
96
+ /**
97
+ * Updates the animations of the mesh. Must be called inside the animation loop.
98
+ *
99
+ * @param {number} delta - The delta time in seconds.
100
+ */
101
+ updateAnimation( delta ) {
102
+
103
+ this.mixer.update( delta );
104
+
105
+ }
106
+
107
+ copy( source, recursive ) {
108
+
109
+ super.copy( source, recursive );
110
+
111
+ this.mixer = new AnimationMixer( this );
112
+
113
+ return this;
114
+
115
+ }
116
+
117
+ }
118
+
119
+ export { MorphAnimMesh };