@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,331 @@
1
+ import {
2
+ Matrix4,
3
+ Vector2
4
+ } from 'three';
5
+
6
+ /**
7
+ * @module SSAOShader
8
+ * @three_import import { SSAOShader } from 'three/addons/shaders/SSAOShader.js';
9
+ */
10
+
11
+ /**
12
+ * SSAO shader.
13
+ *
14
+ * References:
15
+ * - {@link http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html}
16
+ * - {@link https://learnopengl.com/Advanced-Lighting/SSAO}
17
+ * - {@link https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl}
18
+ *
19
+ * @constant
20
+ * @type {ShaderMaterial~Shader}
21
+ */
22
+ const SSAOShader = {
23
+
24
+ name: 'SSAOShader',
25
+
26
+ defines: {
27
+ 'PERSPECTIVE_CAMERA': 1,
28
+ 'KERNEL_SIZE': 32
29
+ },
30
+
31
+ uniforms: {
32
+
33
+ 'tNormal': { value: null },
34
+ 'tDepth': { value: null },
35
+ 'tNoise': { value: null },
36
+ 'kernel': { value: null },
37
+ 'cameraNear': { value: null },
38
+ 'cameraFar': { value: null },
39
+ 'resolution': { value: new Vector2() },
40
+ 'cameraProjectionMatrix': { value: new Matrix4() },
41
+ 'cameraInverseProjectionMatrix': { value: new Matrix4() },
42
+ 'kernelRadius': { value: 8 },
43
+ 'minDistance': { value: 0.005 },
44
+ 'maxDistance': { value: 0.05 },
45
+
46
+ },
47
+
48
+ vertexShader: /* glsl */`
49
+
50
+ varying vec2 vUv;
51
+
52
+ void main() {
53
+
54
+ vUv = uv;
55
+
56
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
57
+
58
+ }`,
59
+
60
+ fragmentShader: /* glsl */`
61
+ uniform highp sampler2D tNormal;
62
+ uniform highp sampler2D tDepth;
63
+ uniform sampler2D tNoise;
64
+
65
+ uniform vec3 kernel[ KERNEL_SIZE ];
66
+
67
+ uniform vec2 resolution;
68
+
69
+ uniform float cameraNear;
70
+ uniform float cameraFar;
71
+ uniform mat4 cameraProjectionMatrix;
72
+ uniform mat4 cameraInverseProjectionMatrix;
73
+
74
+ uniform float kernelRadius;
75
+ uniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference
76
+ uniform float maxDistance; // avoid the influence of fragments which are too far away
77
+
78
+ varying vec2 vUv;
79
+
80
+ #include <packing>
81
+
82
+ #ifdef USE_REVERSED_DEPTH_BUFFER
83
+
84
+ const float depthThreshold = 0.0;
85
+
86
+ #else
87
+
88
+ const float depthThreshold = 1.0;
89
+
90
+ #endif
91
+
92
+ float getDepth( const in vec2 screenPosition ) {
93
+
94
+ return texture2D( tDepth, screenPosition ).x;
95
+
96
+ }
97
+
98
+ float getLinearDepth( const in vec2 screenPosition ) {
99
+
100
+ #if PERSPECTIVE_CAMERA == 1
101
+
102
+ float fragCoordZ = texture2D( tDepth, screenPosition ).x;
103
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
104
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
105
+
106
+ #else
107
+
108
+ return texture2D( tDepth, screenPosition ).x;
109
+
110
+ #endif
111
+
112
+ }
113
+
114
+ float getViewZ( const in float depth ) {
115
+
116
+ #if PERSPECTIVE_CAMERA == 1
117
+
118
+ return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
119
+
120
+ #else
121
+
122
+ return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
123
+
124
+ #endif
125
+
126
+ }
127
+
128
+ vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {
129
+
130
+ float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];
131
+
132
+ vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );
133
+
134
+ clipPosition *= clipW; // unprojection.
135
+
136
+ return ( cameraInverseProjectionMatrix * clipPosition ).xyz;
137
+
138
+ }
139
+
140
+ vec3 getViewNormal( const in vec2 screenPosition ) {
141
+
142
+ return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );
143
+
144
+ }
145
+
146
+ void main() {
147
+
148
+ float depth = getDepth( vUv );
149
+
150
+ if ( depth == depthThreshold ) {
151
+
152
+ gl_FragColor = vec4( 1.0 ); // don't influence background
153
+
154
+ } else {
155
+
156
+ float viewZ = getViewZ( depth );
157
+
158
+ vec3 viewPosition = getViewPosition( vUv, depth, viewZ );
159
+ vec3 viewNormal = getViewNormal( vUv );
160
+
161
+ vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
162
+ vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
163
+
164
+ // compute matrix used to reorient a kernel vector
165
+
166
+ vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );
167
+ vec3 bitangent = cross( viewNormal, tangent );
168
+ mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );
169
+
170
+ float occlusion = 0.0;
171
+
172
+ for ( int i = 0; i < KERNEL_SIZE; i ++ ) {
173
+
174
+ vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space
175
+ vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point
176
+
177
+ vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC
178
+ samplePointNDC /= samplePointNDC.w;
179
+
180
+ vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates
181
+
182
+ float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture
183
+ float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value
184
+ float delta = sampleDepth - realDepth;
185
+
186
+ if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion
187
+
188
+ occlusion += 1.0;
189
+
190
+ }
191
+
192
+ }
193
+
194
+ occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );
195
+
196
+ gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );
197
+
198
+ }
199
+
200
+ }`
201
+
202
+ };
203
+
204
+ /**
205
+ * SSAO depth shader.
206
+ *
207
+ * @constant
208
+ * @type {ShaderMaterial~Shader}
209
+ */
210
+ const SSAODepthShader = {
211
+
212
+ name: 'SSAODepthShader',
213
+
214
+ defines: {
215
+ 'PERSPECTIVE_CAMERA': 1
216
+ },
217
+
218
+ uniforms: {
219
+
220
+ 'tDepth': { value: null },
221
+ 'cameraNear': { value: null },
222
+ 'cameraFar': { value: null },
223
+
224
+ },
225
+
226
+ vertexShader:
227
+
228
+ `varying vec2 vUv;
229
+
230
+ void main() {
231
+
232
+ vUv = uv;
233
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
234
+
235
+ }`,
236
+
237
+ fragmentShader:
238
+
239
+ `uniform sampler2D tDepth;
240
+
241
+ uniform float cameraNear;
242
+ uniform float cameraFar;
243
+
244
+ varying vec2 vUv;
245
+
246
+ #include <packing>
247
+
248
+ float getLinearDepth( const in vec2 screenPosition ) {
249
+
250
+ #if PERSPECTIVE_CAMERA == 1
251
+
252
+ float fragCoordZ = texture2D( tDepth, screenPosition ).x;
253
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
254
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
255
+
256
+ #else
257
+
258
+ return texture2D( tDepth, screenPosition ).x;
259
+
260
+ #endif
261
+
262
+ }
263
+
264
+ void main() {
265
+
266
+ float depth = getLinearDepth( vUv );
267
+ gl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );
268
+
269
+ }`
270
+
271
+ };
272
+
273
+ /**
274
+ * SSAO blur shader.
275
+ *
276
+ * @constant
277
+ * @type {Object}
278
+ */
279
+ const SSAOBlurShader = {
280
+
281
+ name: 'SSAOBlurShader',
282
+
283
+ uniforms: {
284
+
285
+ 'tDiffuse': { value: null },
286
+ 'resolution': { value: new Vector2() }
287
+
288
+ },
289
+
290
+ vertexShader:
291
+
292
+ `varying vec2 vUv;
293
+
294
+ void main() {
295
+
296
+ vUv = uv;
297
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
298
+
299
+ }`,
300
+
301
+ fragmentShader:
302
+
303
+ `uniform sampler2D tDiffuse;
304
+
305
+ uniform vec2 resolution;
306
+
307
+ varying vec2 vUv;
308
+
309
+ void main() {
310
+
311
+ vec2 texelSize = ( 1.0 / resolution );
312
+ float result = 0.0;
313
+
314
+ for ( int i = - 2; i <= 2; i ++ ) {
315
+
316
+ for ( int j = - 2; j <= 2; j ++ ) {
317
+
318
+ vec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;
319
+ result += texture2D( tDiffuse, vUv + offset ).r;
320
+
321
+ }
322
+
323
+ }
324
+
325
+ gl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );
326
+
327
+ }`
328
+
329
+ };
330
+
331
+ export { SSAOShader, SSAODepthShader, SSAOBlurShader };
@@ -0,0 +1,396 @@
1
+ import {
2
+ Matrix4,
3
+ Vector2
4
+ } from 'three';
5
+
6
+
7
+ /**
8
+ * A collection of shaders used for SSR.
9
+ *
10
+ * References:
11
+ * - [3D Game Shaders For Beginners, Screen Space Reflection (SSR)](https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html).
12
+ *
13
+ * @module SSRShader
14
+ * @three_import import * as SSRShader from 'three/addons/shaders/SSRShader.js';
15
+ */
16
+
17
+ /**
18
+ * SSR shader.
19
+ *
20
+ * @constant
21
+ * @type {ShaderMaterial~Shader}
22
+ */
23
+ const SSRShader = {
24
+
25
+ name: 'SSRShader',
26
+
27
+ defines: {
28
+ MAX_STEP: 0,
29
+ PERSPECTIVE_CAMERA: true,
30
+ DISTANCE_ATTENUATION: true,
31
+ FRESNEL: true,
32
+ INFINITE_THICK: false,
33
+ SELECTIVE: false,
34
+ },
35
+
36
+ uniforms: {
37
+
38
+ 'tDiffuse': { value: null },
39
+ 'tNormal': { value: null },
40
+ 'tMetalness': { value: null },
41
+ 'tDepth': { value: null },
42
+ 'cameraNear': { value: null },
43
+ 'cameraFar': { value: null },
44
+ 'resolution': { value: new Vector2() },
45
+ 'cameraProjectionMatrix': { value: new Matrix4() },
46
+ 'cameraInverseProjectionMatrix': { value: new Matrix4() },
47
+ 'opacity': { value: .5 },
48
+ 'maxDistance': { value: 180 },
49
+ 'cameraRange': { value: 0 },
50
+ 'thickness': { value: .018 }
51
+
52
+ },
53
+
54
+ vertexShader: /* glsl */`
55
+
56
+ varying vec2 vUv;
57
+
58
+ void main() {
59
+
60
+ vUv = uv;
61
+
62
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
63
+
64
+ }
65
+
66
+ `,
67
+
68
+ fragmentShader: /* glsl */`
69
+ // precision highp float;
70
+ precision highp sampler2D;
71
+ varying vec2 vUv;
72
+ uniform sampler2D tDepth;
73
+ uniform sampler2D tNormal;
74
+ uniform sampler2D tMetalness;
75
+ uniform sampler2D tDiffuse;
76
+ uniform float cameraRange;
77
+ uniform vec2 resolution;
78
+ uniform float opacity;
79
+ uniform float cameraNear;
80
+ uniform float cameraFar;
81
+ uniform float maxDistance;
82
+ uniform float thickness;
83
+ uniform mat4 cameraProjectionMatrix;
84
+ uniform mat4 cameraInverseProjectionMatrix;
85
+ #include <packing>
86
+ float pointToLineDistance(vec3 x0, vec3 x1, vec3 x2) {
87
+ //x0: point, x1: linePointA, x2: linePointB
88
+ //https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
89
+ return length(cross(x0-x1,x0-x2))/length(x2-x1);
90
+ }
91
+ float pointPlaneDistance(vec3 point,vec3 planePoint,vec3 planeNormal){
92
+ // https://mathworld.wolfram.com/Point-PlaneDistance.html
93
+ //// https://en.wikipedia.org/wiki/Plane_(geometry)
94
+ //// http://paulbourke.net/geometry/pointlineplane/
95
+ float a=planeNormal.x,b=planeNormal.y,c=planeNormal.z;
96
+ float x0=point.x,y0=point.y,z0=point.z;
97
+ float x=planePoint.x,y=planePoint.y,z=planePoint.z;
98
+ float d=-(a*x+b*y+c*z);
99
+ float distance=a*x0+b*y0+c*z0+d;
100
+ return distance;
101
+ }
102
+ float getDepth( const in vec2 uv ) {
103
+ return texture2D( tDepth, uv ).x;
104
+ }
105
+ float getViewZ( const in float depth ) {
106
+ #ifdef PERSPECTIVE_CAMERA
107
+ return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
108
+ #else
109
+ return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
110
+ #endif
111
+ }
112
+ vec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {
113
+ vec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc
114
+ clipPosition *= clipW; //clip
115
+ return ( cameraInverseProjectionMatrix * clipPosition ).xyz;//view
116
+ }
117
+ vec3 getViewNormal( const in vec2 uv ) {
118
+ return unpackRGBToNormal( texture2D( tNormal, uv ).xyz );
119
+ }
120
+ vec2 viewPositionToXY(vec3 viewPosition){
121
+ vec2 xy;
122
+ vec4 clip=cameraProjectionMatrix*vec4(viewPosition,1);
123
+ xy=clip.xy;//clip
124
+ float clipW=clip.w;
125
+ xy/=clipW;//NDC
126
+ xy=(xy+1.)/2.;//uv
127
+ xy*=resolution;//screen
128
+ return xy;
129
+ }
130
+ void main(){
131
+ #ifdef SELECTIVE
132
+ float metalness=texture2D(tMetalness,vUv).r;
133
+ if(metalness==0.) return;
134
+ #endif
135
+
136
+ float depth = getDepth( vUv );
137
+ float viewZ = getViewZ( depth );
138
+ if(-viewZ>=cameraFar) return;
139
+
140
+ float clipW = cameraProjectionMatrix[2][3] * viewZ+cameraProjectionMatrix[3][3];
141
+ vec3 viewPosition=getViewPosition( vUv, depth, clipW );
142
+
143
+ vec2 d0=gl_FragCoord.xy;
144
+ vec2 d1;
145
+
146
+ vec3 viewNormal=getViewNormal( vUv );
147
+
148
+ #ifdef PERSPECTIVE_CAMERA
149
+ vec3 viewIncidentDir=normalize(viewPosition);
150
+ vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);
151
+ #else
152
+ vec3 viewIncidentDir=vec3(0,0,-1);
153
+ vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);
154
+ #endif
155
+
156
+ float maxReflectRayLen=maxDistance/dot(-viewIncidentDir,viewNormal);
157
+ // dot(a,b)==length(a)*length(b)*cos(theta) // https://www.mathsisfun.com/algebra/vectors-dot-product.html
158
+ // if(a.isNormalized&&b.isNormalized) dot(a,b)==cos(theta)
159
+ // maxDistance/maxReflectRayLen=cos(theta)
160
+ // maxDistance/maxReflectRayLen==dot(a,b)
161
+ // maxReflectRayLen==maxDistance/dot(a,b)
162
+
163
+ vec3 d1viewPosition=viewPosition+viewReflectDir*maxReflectRayLen;
164
+ #ifdef PERSPECTIVE_CAMERA
165
+ if(d1viewPosition.z>-cameraNear){
166
+ //https://tutorial.math.lamar.edu/Classes/CalcIII/EqnsOfLines.aspx
167
+ float t=(-cameraNear-viewPosition.z)/viewReflectDir.z;
168
+ d1viewPosition=viewPosition+viewReflectDir*t;
169
+ }
170
+ #endif
171
+ d1=viewPositionToXY(d1viewPosition);
172
+
173
+ float xLen=d1.x-d0.x;
174
+ float yLen=d1.y-d0.y;
175
+ float totalStep=max(abs(xLen),abs(yLen));
176
+ float xSpan=xLen/totalStep;
177
+ float ySpan=yLen/totalStep;
178
+ float sStep=1./totalStep;
179
+ float s=sStep; // start at sStep since loop starts at i=1
180
+ for(float i=1.;i<float(MAX_STEP);i++){
181
+ if(i>=totalStep) break;
182
+ vec2 xy=vec2(d0.x+i*xSpan,d0.y+i*ySpan);
183
+ if(xy.x<0.||xy.x>resolution.x||xy.y<0.||xy.y>resolution.y) break;
184
+ vec2 uv=xy/resolution;
185
+
186
+ float d = getDepth(uv);
187
+ float vZ = getViewZ( d );
188
+ if(-vZ>=cameraFar) continue;
189
+ float cW = cameraProjectionMatrix[2][3] * vZ+cameraProjectionMatrix[3][3];
190
+ vec3 vP=getViewPosition( uv, d, cW );
191
+
192
+ #ifdef PERSPECTIVE_CAMERA
193
+ // https://comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf
194
+ float recipVPZ=1./viewPosition.z;
195
+ float viewReflectRayZ=1./(recipVPZ+s*(1./d1viewPosition.z-recipVPZ));
196
+ #else
197
+ float viewReflectRayZ=viewPosition.z+s*(d1viewPosition.z-viewPosition.z);
198
+ #endif
199
+
200
+ // if(viewReflectRayZ>vZ) continue; // will cause "npm run make-screenshot webgl_postprocessing_ssr" high probability hang.
201
+ // https://github.com/mrdoob/three.js/pull/21539#issuecomment-821061164
202
+ if(viewReflectRayZ<=vZ){
203
+
204
+ bool hit;
205
+ #ifdef INFINITE_THICK
206
+ hit=true;
207
+ #else
208
+ float away=pointToLineDistance(vP,viewPosition,d1viewPosition);
209
+
210
+ float minThickness;
211
+ vec2 xyNeighbor=xy;
212
+ xyNeighbor.x+=1.;
213
+ vec2 uvNeighbor=xyNeighbor/resolution;
214
+ vec3 vPNeighbor=getViewPosition(uvNeighbor,d,cW);
215
+ minThickness=vPNeighbor.x-vP.x;
216
+ minThickness*=3.;
217
+ float tk=max(minThickness,thickness);
218
+
219
+ hit=away<=tk;
220
+ #endif
221
+
222
+ if(hit){
223
+ vec3 vN=getViewNormal( uv );
224
+ if(dot(viewReflectDir,vN)>=0.) break; // treat backfaces as opaque
225
+ float distance=pointPlaneDistance(vP,viewPosition,viewNormal);
226
+ if(distance>maxDistance) break;
227
+ float op=opacity;
228
+ #ifdef DISTANCE_ATTENUATION
229
+ float ratio=1.-(distance/maxDistance);
230
+ float attenuation=ratio*ratio;
231
+ op=opacity*attenuation;
232
+ #endif
233
+ #ifdef FRESNEL
234
+ float fresnelCoe=(dot(viewIncidentDir,viewReflectDir)+1.)/2.;
235
+ op*=fresnelCoe;
236
+ #endif
237
+ vec4 reflectColor=texture2D(tDiffuse,uv);
238
+ gl_FragColor.xyz=reflectColor.xyz;
239
+ gl_FragColor.a=op;
240
+ break;
241
+ }
242
+ }
243
+ s+=sStep;
244
+ }
245
+ }
246
+ `
247
+
248
+ };
249
+
250
+ /**
251
+ * SSR Depth shader.
252
+ *
253
+ * @constant
254
+ * @type {ShaderMaterial~Shader}
255
+ */
256
+ const SSRDepthShader = {
257
+
258
+ name: 'SSRDepthShader',
259
+
260
+ defines: {
261
+ 'PERSPECTIVE_CAMERA': 1
262
+ },
263
+
264
+ uniforms: {
265
+
266
+ 'tDepth': { value: null },
267
+ 'cameraNear': { value: null },
268
+ 'cameraFar': { value: null },
269
+
270
+ },
271
+
272
+ vertexShader: /* glsl */`
273
+
274
+ varying vec2 vUv;
275
+
276
+ void main() {
277
+
278
+ vUv = uv;
279
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
280
+
281
+ }
282
+
283
+ `,
284
+
285
+ fragmentShader: /* glsl */`
286
+
287
+ uniform sampler2D tDepth;
288
+
289
+ uniform float cameraNear;
290
+ uniform float cameraFar;
291
+
292
+ varying vec2 vUv;
293
+
294
+ #include <packing>
295
+
296
+ float getLinearDepth( const in vec2 uv ) {
297
+
298
+ #if PERSPECTIVE_CAMERA == 1
299
+
300
+ float fragCoordZ = texture2D( tDepth, uv ).x;
301
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
302
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
303
+
304
+ #else
305
+
306
+ return texture2D( tDepth, uv ).x;
307
+
308
+ #endif
309
+
310
+ }
311
+
312
+ void main() {
313
+
314
+ float depth = getLinearDepth( vUv );
315
+ float d = 1.0 - depth;
316
+ // d=(d-.999)*1000.;
317
+ gl_FragColor = vec4( vec3( d ), 1.0 );
318
+
319
+ }
320
+
321
+ `
322
+
323
+ };
324
+
325
+ /**
326
+ * SSR Blur shader.
327
+ *
328
+ * @constant
329
+ * @type {ShaderMaterial~Shader}
330
+ */
331
+ const SSRBlurShader = {
332
+
333
+ name: 'SSRBlurShader',
334
+
335
+ uniforms: {
336
+
337
+ 'tDiffuse': { value: null },
338
+ 'resolution': { value: new Vector2() },
339
+ 'opacity': { value: .5 },
340
+
341
+ },
342
+
343
+ vertexShader: /* glsl */`
344
+
345
+ varying vec2 vUv;
346
+
347
+ void main() {
348
+
349
+ vUv = uv;
350
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
351
+
352
+ }
353
+
354
+ `,
355
+
356
+ fragmentShader: /* glsl */`
357
+
358
+ uniform sampler2D tDiffuse;
359
+ uniform vec2 resolution;
360
+ varying vec2 vUv;
361
+ void main() {
362
+ //reverse engineering from PhotoShop blur filter, then change coefficient
363
+
364
+ vec2 texelSize = ( 1.0 / resolution );
365
+
366
+ vec4 c=texture2D(tDiffuse,vUv);
367
+
368
+ vec2 offset;
369
+
370
+ offset=(vec2(-1,0))*texelSize;
371
+ vec4 cl=texture2D(tDiffuse,vUv+offset);
372
+
373
+ offset=(vec2(1,0))*texelSize;
374
+ vec4 cr=texture2D(tDiffuse,vUv+offset);
375
+
376
+ offset=(vec2(0,-1))*texelSize;
377
+ vec4 cb=texture2D(tDiffuse,vUv+offset);
378
+
379
+ offset=(vec2(0,1))*texelSize;
380
+ vec4 ct=texture2D(tDiffuse,vUv+offset);
381
+
382
+ // float coeCenter=.5;
383
+ // float coeSide=.125;
384
+ float coeCenter=.2;
385
+ float coeSide=.2;
386
+ float a=c.a*coeCenter+cl.a*coeSide+cr.a*coeSide+cb.a*coeSide+ct.a*coeSide;
387
+ vec3 rgb=(c.rgb*c.a*coeCenter+cl.rgb*cl.a*coeSide+cr.rgb*cr.a*coeSide+cb.rgb*cb.a*coeSide+ct.rgb*ct.a*coeSide)/a;
388
+ gl_FragColor=vec4(rgb,a);
389
+
390
+ }
391
+ `
392
+
393
+
394
+ };
395
+
396
+ export { SSRShader, SSRDepthShader, SSRBlurShader };