@anov/3d 0.0.1 → 0.0.2

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 (570) hide show
  1. package/README.md +142 -1
  2. package/dist/core/camera.d.ts +31 -4
  3. package/dist/core/camera.js +62 -52
  4. package/dist/core/control/transformControls.d.ts +12 -0
  5. package/dist/core/control/transformControls.js +72 -0
  6. package/dist/core/cssRenderer.d.ts +17 -0
  7. package/dist/core/cssRenderer.js +36 -0
  8. package/dist/core/global/global.d.ts +27 -0
  9. package/dist/core/global/global.js +72 -0
  10. package/dist/core/global/globalControl.d.ts +17 -0
  11. package/dist/core/global/globalControl.js +62 -0
  12. package/dist/core/group.d.ts +51 -6
  13. package/dist/core/group.js +124 -16
  14. package/dist/core/line.d.ts +13 -0
  15. package/dist/core/line.js +83 -0
  16. package/dist/core/mesh.d.ts +12 -7
  17. package/dist/core/mesh.js +57 -56
  18. package/dist/core/model.d.ts +11 -3
  19. package/dist/core/model.js +34 -7
  20. package/dist/core/scene.d.ts +84 -25
  21. package/dist/core/scene.js +207 -53
  22. package/dist/core/use/useScene.d.ts +10 -0
  23. package/dist/core/use/useScene.js +14 -0
  24. package/dist/core/use/useframe.d.ts +6 -0
  25. package/dist/core/use/useframe.js +11 -0
  26. package/dist/export.d.ts +41 -0
  27. package/dist/export.js +37 -0
  28. package/dist/index.d.ts +3 -6
  29. package/dist/index.js +5 -6
  30. package/dist/threeCell.d.ts +8 -0
  31. package/dist/threeCell.js +16 -0
  32. package/dist/type.d.ts +4 -3
  33. package/dist/utils/createElement.d.ts +103 -0
  34. package/dist/utils/createElement.js +145 -0
  35. package/dist/utils/createLabel.d.ts +2 -0
  36. package/dist/utils/createLabel.js +4 -0
  37. package/dist/utils/index.d.ts +36 -0
  38. package/dist/utils/index.js +76 -0
  39. package/dist/utils/line.d.ts +0 -0
  40. package/dist/utils/line.js +0 -0
  41. package/dist/utils/move.d.ts +48 -0
  42. package/dist/utils/move.js +149 -0
  43. package/examples/fonts/LICENSE +13 -0
  44. package/examples/fonts/README.md +11 -0
  45. package/examples/fonts/droid/NOTICE +190 -0
  46. package/examples/fonts/droid/README.txt +18 -0
  47. package/examples/fonts/droid/droid_sans_bold.typeface.json +1 -0
  48. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +1 -0
  49. package/examples/fonts/droid/droid_sans_regular.typeface.json +1 -0
  50. package/examples/fonts/droid/droid_serif_bold.typeface.json +1 -0
  51. package/examples/fonts/droid/droid_serif_regular.typeface.json +1 -0
  52. package/examples/fonts/gentilis_bold.typeface.json +1 -0
  53. package/examples/fonts/gentilis_regular.typeface.json +1 -0
  54. package/examples/fonts/helvetiker_bold.typeface.json +1 -0
  55. package/examples/fonts/helvetiker_regular.typeface.json +1 -0
  56. package/examples/fonts/optimer_bold.typeface.json +1 -0
  57. package/examples/fonts/optimer_regular.typeface.json +1 -0
  58. package/examples/fonts/ttf/README.md +9 -0
  59. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  60. package/examples/jsm/animation/AnimationClipCreator.js +116 -0
  61. package/examples/jsm/animation/CCDIKSolver.js +482 -0
  62. package/examples/jsm/animation/MMDAnimationHelper.js +1207 -0
  63. package/examples/jsm/animation/MMDPhysics.js +1406 -0
  64. package/examples/jsm/cameras/CinematicCamera.js +208 -0
  65. package/examples/jsm/capabilities/WebGL.js +91 -0
  66. package/examples/jsm/capabilities/WebGPU.js +53 -0
  67. package/examples/jsm/controls/ArcballControls.js +3224 -0
  68. package/examples/jsm/controls/DragControls.js +220 -0
  69. package/examples/jsm/controls/FirstPersonControls.js +325 -0
  70. package/examples/jsm/controls/FlyControls.js +300 -0
  71. package/examples/jsm/controls/MapControls.js +28 -0
  72. package/examples/jsm/controls/OrbitControls.js +1388 -0
  73. package/examples/jsm/controls/PointerLockControls.js +162 -0
  74. package/examples/jsm/controls/TrackballControls.js +828 -0
  75. package/examples/jsm/controls/TransformControls.js +1557 -0
  76. package/examples/jsm/csm/CSM.js +384 -0
  77. package/examples/jsm/csm/CSMFrustum.js +152 -0
  78. package/examples/jsm/csm/CSMHelper.js +193 -0
  79. package/examples/jsm/csm/CSMShader.js +252 -0
  80. package/examples/jsm/curves/CurveExtras.js +422 -0
  81. package/examples/jsm/curves/NURBSCurve.js +80 -0
  82. package/examples/jsm/curves/NURBSSurface.js +52 -0
  83. package/examples/jsm/curves/NURBSUtils.js +487 -0
  84. package/examples/jsm/effects/AnaglyphEffect.js +154 -0
  85. package/examples/jsm/effects/AsciiEffect.js +263 -0
  86. package/examples/jsm/effects/OutlineEffect.js +539 -0
  87. package/examples/jsm/effects/ParallaxBarrierEffect.js +119 -0
  88. package/examples/jsm/effects/PeppersGhostEffect.js +153 -0
  89. package/examples/jsm/effects/StereoEffect.js +55 -0
  90. package/examples/jsm/environments/DebugEnvironment.js +52 -0
  91. package/examples/jsm/environments/RoomEnvironment.js +148 -0
  92. package/examples/jsm/exporters/DRACOExporter.js +267 -0
  93. package/examples/jsm/exporters/EXRExporter.js +501 -0
  94. package/examples/jsm/exporters/GLTFExporter.js +3161 -0
  95. package/examples/jsm/exporters/KTX2Exporter.js +292 -0
  96. package/examples/jsm/exporters/MMDExporter.js +217 -0
  97. package/examples/jsm/exporters/OBJExporter.js +284 -0
  98. package/examples/jsm/exporters/PLYExporter.js +528 -0
  99. package/examples/jsm/exporters/STLExporter.js +199 -0
  100. package/examples/jsm/exporters/USDZExporter.js +711 -0
  101. package/examples/jsm/geometries/BoxLineGeometry.js +69 -0
  102. package/examples/jsm/geometries/ConvexGeometry.js +53 -0
  103. package/examples/jsm/geometries/DecalGeometry.js +356 -0
  104. package/examples/jsm/geometries/ParametricGeometries.js +254 -0
  105. package/examples/jsm/geometries/ParametricGeometry.js +139 -0
  106. package/examples/jsm/geometries/RoundedBoxGeometry.js +155 -0
  107. package/examples/jsm/geometries/TeapotGeometry.js +704 -0
  108. package/examples/jsm/geometries/TextGeometry.js +57 -0
  109. package/examples/jsm/helpers/LightProbeHelper.js +130 -0
  110. package/examples/jsm/helpers/OctreeHelper.js +73 -0
  111. package/examples/jsm/helpers/PositionalAudioHelper.js +109 -0
  112. package/examples/jsm/helpers/RectAreaLightHelper.js +85 -0
  113. package/examples/jsm/helpers/VertexNormalsHelper.js +96 -0
  114. package/examples/jsm/helpers/VertexTangentsHelper.js +88 -0
  115. package/examples/jsm/helpers/ViewHelper.js +333 -0
  116. package/examples/jsm/interactive/HTMLMesh.js +565 -0
  117. package/examples/jsm/interactive/InteractiveGroup.js +116 -0
  118. package/examples/jsm/interactive/SelectionBox.js +227 -0
  119. package/examples/jsm/interactive/SelectionHelper.js +104 -0
  120. package/examples/jsm/libs/ammo.wasm.js +822 -0
  121. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  122. package/examples/jsm/libs/basis/README.md +46 -0
  123. package/examples/jsm/libs/basis/basis_transcoder.js +21 -0
  124. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  125. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  126. package/examples/jsm/libs/draco/README.md +32 -0
  127. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  128. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  129. package/examples/jsm/libs/draco/draco_encoder.js +33 -0
  130. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  131. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  132. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  133. package/examples/jsm/libs/draco/gltf/draco_encoder.js +33 -0
  134. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  135. package/examples/jsm/libs/ecsy.module.js +1792 -0
  136. package/examples/jsm/libs/fflate.module.js +2474 -0
  137. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  138. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  139. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  140. package/examples/jsm/libs/meshopt_decoder.module.js +178 -0
  141. package/examples/jsm/libs/mikktspace.module.js +128 -0
  142. package/examples/jsm/libs/mmdparser.module.js +11530 -0
  143. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  144. package/examples/jsm/libs/opentype.module.js +14568 -0
  145. package/examples/jsm/libs/potpack.module.js +125 -0
  146. package/examples/jsm/libs/rhino3dm/rhino3dm.js +21 -0
  147. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +16 -0
  148. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  149. package/examples/jsm/libs/stats.module.js +167 -0
  150. package/examples/jsm/libs/tween.module.js +803 -0
  151. package/examples/jsm/libs/utif.module.js +1579 -0
  152. package/examples/jsm/libs/zstddec.module.js +1 -0
  153. package/examples/jsm/lights/IESSpotLight.js +25 -0
  154. package/examples/jsm/lights/LightProbeGenerator.js +252 -0
  155. package/examples/jsm/lights/RectAreaLightUniformsLib.js +79 -0
  156. package/examples/jsm/lines/Line2.js +19 -0
  157. package/examples/jsm/lines/LineGeometry.js +79 -0
  158. package/examples/jsm/lines/LineMaterial.js +702 -0
  159. package/examples/jsm/lines/LineSegments2.js +361 -0
  160. package/examples/jsm/lines/LineSegmentsGeometry.js +241 -0
  161. package/examples/jsm/lines/Wireframe.js +56 -0
  162. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  163. package/examples/jsm/loaders/3DMLoader.js +1497 -0
  164. package/examples/jsm/loaders/3MFLoader.js +1478 -0
  165. package/examples/jsm/loaders/AMFLoader.js +521 -0
  166. package/examples/jsm/loaders/BVHLoader.js +437 -0
  167. package/examples/jsm/loaders/ColladaLoader.js +4122 -0
  168. package/examples/jsm/loaders/DDSLoader.js +274 -0
  169. package/examples/jsm/loaders/DRACOLoader.js +612 -0
  170. package/examples/jsm/loaders/EXRLoader.js +2309 -0
  171. package/examples/jsm/loaders/FBXLoader.js +4142 -0
  172. package/examples/jsm/loaders/FontLoader.js +183 -0
  173. package/examples/jsm/loaders/GCodeLoader.js +261 -0
  174. package/examples/jsm/loaders/GLTFLoader.js +4576 -0
  175. package/examples/jsm/loaders/HDRCubeTextureLoader.js +115 -0
  176. package/examples/jsm/loaders/IESLoader.js +337 -0
  177. package/examples/jsm/loaders/KMZLoader.js +130 -0
  178. package/examples/jsm/loaders/KTX2Loader.js +868 -0
  179. package/examples/jsm/loaders/KTXLoader.js +176 -0
  180. package/examples/jsm/loaders/LDrawLoader.js +2464 -0
  181. package/examples/jsm/loaders/LUT3dlLoader.js +151 -0
  182. package/examples/jsm/loaders/LUTCubeLoader.js +153 -0
  183. package/examples/jsm/loaders/LWOLoader.js +1052 -0
  184. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  185. package/examples/jsm/loaders/LottieLoader.js +77 -0
  186. package/examples/jsm/loaders/MD2Loader.js +399 -0
  187. package/examples/jsm/loaders/MDDLoader.js +102 -0
  188. package/examples/jsm/loaders/MMDLoader.js +2273 -0
  189. package/examples/jsm/loaders/MTLLoader.js +567 -0
  190. package/examples/jsm/loaders/MaterialXLoader.js +734 -0
  191. package/examples/jsm/loaders/NRRDLoader.js +699 -0
  192. package/examples/jsm/loaders/OBJLoader.js +905 -0
  193. package/examples/jsm/loaders/PCDLoader.js +467 -0
  194. package/examples/jsm/loaders/PDBLoader.js +232 -0
  195. package/examples/jsm/loaders/PLYLoader.js +771 -0
  196. package/examples/jsm/loaders/PVRLoader.js +251 -0
  197. package/examples/jsm/loaders/RGBELoader.js +468 -0
  198. package/examples/jsm/loaders/RGBMLoader.js +1065 -0
  199. package/examples/jsm/loaders/STLLoader.js +403 -0
  200. package/examples/jsm/loaders/SVGLoader.js +3172 -0
  201. package/examples/jsm/loaders/TDSLoader.js +1124 -0
  202. package/examples/jsm/loaders/TGALoader.js +517 -0
  203. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  204. package/examples/jsm/loaders/TTFLoader.js +214 -0
  205. package/examples/jsm/loaders/TiltLoader.js +520 -0
  206. package/examples/jsm/loaders/USDZLoader.js +633 -0
  207. package/examples/jsm/loaders/VOXLoader.js +311 -0
  208. package/examples/jsm/loaders/VRMLLoader.js +3533 -0
  209. package/examples/jsm/loaders/VTKLoader.js +1163 -0
  210. package/examples/jsm/loaders/XYZLoader.js +106 -0
  211. package/examples/jsm/loaders/lwo/IFFParser.js +1218 -0
  212. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  213. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  214. package/examples/jsm/materials/MeshGouraudMaterial.js +420 -0
  215. package/examples/jsm/math/Capsule.js +137 -0
  216. package/examples/jsm/math/ColorConverter.js +36 -0
  217. package/examples/jsm/math/ConvexHull.js +1271 -0
  218. package/examples/jsm/math/ImprovedNoise.js +71 -0
  219. package/examples/jsm/math/Lut.js +204 -0
  220. package/examples/jsm/math/MeshSurfaceSampler.js +250 -0
  221. package/examples/jsm/math/OBB.js +423 -0
  222. package/examples/jsm/math/Octree.js +462 -0
  223. package/examples/jsm/math/SimplexNoise.js +444 -0
  224. package/examples/jsm/misc/ConvexObjectBreaker.js +519 -0
  225. package/examples/jsm/misc/GPUComputationRenderer.js +446 -0
  226. package/examples/jsm/misc/Gyroscope.js +66 -0
  227. package/examples/jsm/misc/MD2Character.js +276 -0
  228. package/examples/jsm/misc/MD2CharacterComplex.js +576 -0
  229. package/examples/jsm/misc/MorphAnimMesh.js +75 -0
  230. package/examples/jsm/misc/MorphBlendMesh.js +322 -0
  231. package/examples/jsm/misc/ProgressiveLightMap.js +323 -0
  232. package/examples/jsm/misc/RollerCoaster.js +566 -0
  233. package/examples/jsm/misc/TubePainter.js +205 -0
  234. package/examples/jsm/misc/Volume.js +473 -0
  235. package/examples/jsm/misc/VolumeSlice.js +229 -0
  236. package/examples/jsm/modifiers/CurveModifier.js +326 -0
  237. package/examples/jsm/modifiers/EdgeSplitModifier.js +279 -0
  238. package/examples/jsm/modifiers/SimplifyModifier.js +525 -0
  239. package/examples/jsm/modifiers/TessellateModifier.js +307 -0
  240. package/examples/jsm/nodes/Nodes.js +171 -0
  241. package/examples/jsm/nodes/accessors/BitangentNode.js +89 -0
  242. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
  243. package/examples/jsm/nodes/accessors/BufferNode.js +30 -0
  244. package/examples/jsm/nodes/accessors/CameraNode.js +98 -0
  245. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  246. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +77 -0
  247. package/examples/jsm/nodes/accessors/InstanceNode.js +71 -0
  248. package/examples/jsm/nodes/accessors/MaterialNode.js +267 -0
  249. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +39 -0
  250. package/examples/jsm/nodes/accessors/ModelNode.js +34 -0
  251. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +29 -0
  252. package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
  253. package/examples/jsm/nodes/accessors/NormalNode.js +96 -0
  254. package/examples/jsm/nodes/accessors/Object3DNode.js +150 -0
  255. package/examples/jsm/nodes/accessors/PointUVNode.js +26 -0
  256. package/examples/jsm/nodes/accessors/PositionNode.js +104 -0
  257. package/examples/jsm/nodes/accessors/ReferenceNode.js +72 -0
  258. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +35 -0
  259. package/examples/jsm/nodes/accessors/SceneNode.js +52 -0
  260. package/examples/jsm/nodes/accessors/SkinningNode.js +93 -0
  261. package/examples/jsm/nodes/accessors/StorageBufferNode.js +27 -0
  262. package/examples/jsm/nodes/accessors/TangentNode.js +103 -0
  263. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  264. package/examples/jsm/nodes/accessors/TextureNode.js +271 -0
  265. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  266. package/examples/jsm/nodes/accessors/UVNode.js +47 -0
  267. package/examples/jsm/nodes/accessors/UserDataNode.js +29 -0
  268. package/examples/jsm/nodes/code/CodeNode.js +78 -0
  269. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  270. package/examples/jsm/nodes/code/FunctionCallNode.js +96 -0
  271. package/examples/jsm/nodes/code/FunctionNode.js +127 -0
  272. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  273. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  274. package/examples/jsm/nodes/core/ArrayUniformNode.js +26 -0
  275. package/examples/jsm/nodes/core/AttributeNode.js +102 -0
  276. package/examples/jsm/nodes/core/BypassNode.js +45 -0
  277. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  278. package/examples/jsm/nodes/core/ConstNode.js +32 -0
  279. package/examples/jsm/nodes/core/ContextNode.js +61 -0
  280. package/examples/jsm/nodes/core/IndexNode.js +66 -0
  281. package/examples/jsm/nodes/core/InputNode.js +83 -0
  282. package/examples/jsm/nodes/core/LightingModel.js +15 -0
  283. package/examples/jsm/nodes/core/Node.js +454 -0
  284. package/examples/jsm/nodes/core/NodeAttribute.js +15 -0
  285. package/examples/jsm/nodes/core/NodeBuilder.js +1016 -0
  286. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  287. package/examples/jsm/nodes/core/NodeCode.js +15 -0
  288. package/examples/jsm/nodes/core/NodeFrame.js +110 -0
  289. package/examples/jsm/nodes/core/NodeFunction.js +22 -0
  290. package/examples/jsm/nodes/core/NodeFunctionInput.js +17 -0
  291. package/examples/jsm/nodes/core/NodeKeywords.js +80 -0
  292. package/examples/jsm/nodes/core/NodeParser.js +11 -0
  293. package/examples/jsm/nodes/core/NodeUniform.js +28 -0
  294. package/examples/jsm/nodes/core/NodeUtils.js +212 -0
  295. package/examples/jsm/nodes/core/NodeVar.js +14 -0
  296. package/examples/jsm/nodes/core/NodeVarying.js +17 -0
  297. package/examples/jsm/nodes/core/PropertyNode.js +61 -0
  298. package/examples/jsm/nodes/core/StackNode.js +99 -0
  299. package/examples/jsm/nodes/core/TempNode.js +58 -0
  300. package/examples/jsm/nodes/core/UniformNode.js +61 -0
  301. package/examples/jsm/nodes/core/VarNode.js +87 -0
  302. package/examples/jsm/nodes/core/VaryingNode.js +69 -0
  303. package/examples/jsm/nodes/core/constants.js +27 -0
  304. package/examples/jsm/nodes/display/BlendModeNode.js +99 -0
  305. package/examples/jsm/nodes/display/BumpMapNode.js +77 -0
  306. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +100 -0
  307. package/examples/jsm/nodes/display/ColorSpaceNode.js +108 -0
  308. package/examples/jsm/nodes/display/FrontFacingNode.js +27 -0
  309. package/examples/jsm/nodes/display/NormalMapNode.js +106 -0
  310. package/examples/jsm/nodes/display/PosterizeNode.js +32 -0
  311. package/examples/jsm/nodes/display/ToneMappingNode.js +141 -0
  312. package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
  313. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
  314. package/examples/jsm/nodes/display/ViewportNode.js +115 -0
  315. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +31 -0
  316. package/examples/jsm/nodes/display/ViewportTextureNode.js +75 -0
  317. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  318. package/examples/jsm/nodes/fog/FogNode.js +37 -0
  319. package/examples/jsm/nodes/fog/FogRangeNode.js +34 -0
  320. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +40 -0
  321. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  322. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  323. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +29 -0
  324. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  325. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  326. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +16 -0
  327. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
  328. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +20 -0
  329. package/examples/jsm/nodes/functions/PhongLightingModel.js +67 -0
  330. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +343 -0
  331. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +13 -0
  332. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  333. package/examples/jsm/nodes/geometry/RangeNode.js +104 -0
  334. package/examples/jsm/nodes/gpgpu/ComputeNode.js +85 -0
  335. package/examples/jsm/nodes/lighting/AONode.js +27 -0
  336. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  337. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +184 -0
  338. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +40 -0
  339. package/examples/jsm/nodes/lighting/EnvironmentNode.js +191 -0
  340. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +55 -0
  341. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  342. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  343. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  344. package/examples/jsm/nodes/lighting/LightingContextNode.js +102 -0
  345. package/examples/jsm/nodes/lighting/LightingNode.js +21 -0
  346. package/examples/jsm/nodes/lighting/LightsNode.js +128 -0
  347. package/examples/jsm/nodes/lighting/PointLightNode.js +68 -0
  348. package/examples/jsm/nodes/lighting/SpotLightNode.js +89 -0
  349. package/examples/jsm/nodes/loaders/NodeLoader.js +108 -0
  350. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +59 -0
  351. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  352. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +28 -0
  353. package/examples/jsm/nodes/materials/Materials.js +12 -0
  354. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +27 -0
  355. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
  356. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +40 -0
  357. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +65 -0
  358. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +128 -0
  359. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +80 -0
  360. package/examples/jsm/nodes/materials/NodeMaterial.js +536 -0
  361. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +49 -0
  362. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +103 -0
  363. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  364. package/examples/jsm/nodes/materialx/MaterialXNodes.js +68 -0
  365. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  366. package/examples/jsm/nodes/materialx/lib/mx_noise.js +618 -0
  367. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +19 -0
  368. package/examples/jsm/nodes/math/CondNode.js +86 -0
  369. package/examples/jsm/nodes/math/MathNode.js +359 -0
  370. package/examples/jsm/nodes/math/OperatorNode.js +269 -0
  371. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +152 -0
  372. package/examples/jsm/nodes/parsers/GLSLNodeParser.js +14 -0
  373. package/examples/jsm/nodes/procedural/CheckerNode.js +42 -0
  374. package/examples/jsm/nodes/shadernode/ShaderNode.js +420 -0
  375. package/examples/jsm/nodes/utils/ArrayElementNode.js +33 -0
  376. package/examples/jsm/nodes/utils/ConvertNode.js +65 -0
  377. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  378. package/examples/jsm/nodes/utils/EquirectUVNode.js +33 -0
  379. package/examples/jsm/nodes/utils/JoinNode.js +51 -0
  380. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  381. package/examples/jsm/nodes/utils/MatcapUVNode.js +30 -0
  382. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +46 -0
  383. package/examples/jsm/nodes/utils/OscNode.js +81 -0
  384. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  385. package/examples/jsm/nodes/utils/RemapNode.js +42 -0
  386. package/examples/jsm/nodes/utils/RotateUVNode.js +43 -0
  387. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  388. package/examples/jsm/nodes/utils/SplitNode.js +104 -0
  389. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +41 -0
  390. package/examples/jsm/nodes/utils/TimerNode.js +94 -0
  391. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +62 -0
  392. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  393. package/examples/jsm/objects/Lensflare.js +377 -0
  394. package/examples/jsm/objects/MarchingCubes.js +1176 -0
  395. package/examples/jsm/objects/Reflector.js +264 -0
  396. package/examples/jsm/objects/ReflectorForSSRPass.js +349 -0
  397. package/examples/jsm/objects/Refractor.js +324 -0
  398. package/examples/jsm/objects/ShadowMesh.js +80 -0
  399. package/examples/jsm/objects/Sky.js +219 -0
  400. package/examples/jsm/objects/Water.js +330 -0
  401. package/examples/jsm/objects/Water2.js +358 -0
  402. package/examples/jsm/offscreen/jank.js +45 -0
  403. package/examples/jsm/offscreen/offscreen.js +8 -0
  404. package/examples/jsm/offscreen/scene.js +86 -0
  405. package/examples/jsm/physics/AmmoPhysics.js +285 -0
  406. package/examples/jsm/physics/RapierPhysics.js +199 -0
  407. package/examples/jsm/postprocessing/AfterimagePass.js +104 -0
  408. package/examples/jsm/postprocessing/BloomPass.js +172 -0
  409. package/examples/jsm/postprocessing/BokehPass.js +140 -0
  410. package/examples/jsm/postprocessing/ClearPass.js +46 -0
  411. package/examples/jsm/postprocessing/CubeTexturePass.js +85 -0
  412. package/examples/jsm/postprocessing/DotScreenPass.js +65 -0
  413. package/examples/jsm/postprocessing/EffectComposer.js +231 -0
  414. package/examples/jsm/postprocessing/FilmPass.js +66 -0
  415. package/examples/jsm/postprocessing/GlitchPass.js +128 -0
  416. package/examples/jsm/postprocessing/HalftonePass.js +79 -0
  417. package/examples/jsm/postprocessing/LUTPass.js +173 -0
  418. package/examples/jsm/postprocessing/MaskPass.js +104 -0
  419. package/examples/jsm/postprocessing/OutlinePass.js +654 -0
  420. package/examples/jsm/postprocessing/OutputPass.js +91 -0
  421. package/examples/jsm/postprocessing/Pass.js +84 -0
  422. package/examples/jsm/postprocessing/RenderPass.js +81 -0
  423. package/examples/jsm/postprocessing/RenderPixelatedPass.js +235 -0
  424. package/examples/jsm/postprocessing/SAOPass.js +411 -0
  425. package/examples/jsm/postprocessing/SMAAPass.js +201 -0
  426. package/examples/jsm/postprocessing/SSAARenderPass.js +228 -0
  427. package/examples/jsm/postprocessing/SSAOPass.js +440 -0
  428. package/examples/jsm/postprocessing/SSRPass.js +641 -0
  429. package/examples/jsm/postprocessing/SavePass.js +79 -0
  430. package/examples/jsm/postprocessing/ShaderPass.js +77 -0
  431. package/examples/jsm/postprocessing/TAARenderPass.js +189 -0
  432. package/examples/jsm/postprocessing/TexturePass.js +67 -0
  433. package/examples/jsm/postprocessing/UnrealBloomPass.js +415 -0
  434. package/examples/jsm/renderers/CSS2DRenderer.js +215 -0
  435. package/examples/jsm/renderers/CSS3DRenderer.js +335 -0
  436. package/examples/jsm/renderers/Projector.js +918 -0
  437. package/examples/jsm/renderers/SVGRenderer.js +553 -0
  438. package/examples/jsm/renderers/common/Animation.js +58 -0
  439. package/examples/jsm/renderers/common/Attributes.js +75 -0
  440. package/examples/jsm/renderers/common/Backend.js +162 -0
  441. package/examples/jsm/renderers/common/Background.js +136 -0
  442. package/examples/jsm/renderers/common/Binding.js +19 -0
  443. package/examples/jsm/renderers/common/Bindings.js +165 -0
  444. package/examples/jsm/renderers/common/Buffer.js +38 -0
  445. package/examples/jsm/renderers/common/BufferUtils.js +33 -0
  446. package/examples/jsm/renderers/common/ChainMap.js +89 -0
  447. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  448. package/examples/jsm/renderers/common/Constants.js +14 -0
  449. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  450. package/examples/jsm/renderers/common/DataMap.js +54 -0
  451. package/examples/jsm/renderers/common/Geometries.js +215 -0
  452. package/examples/jsm/renderers/common/Info.js +73 -0
  453. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  454. package/examples/jsm/renderers/common/Pipelines.js +370 -0
  455. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  456. package/examples/jsm/renderers/common/RenderContext.js +38 -0
  457. package/examples/jsm/renderers/common/RenderContexts.js +49 -0
  458. package/examples/jsm/renderers/common/RenderList.js +178 -0
  459. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  460. package/examples/jsm/renderers/common/RenderObject.js +129 -0
  461. package/examples/jsm/renderers/common/RenderObjects.js +95 -0
  462. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  463. package/examples/jsm/renderers/common/Renderer.js +895 -0
  464. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  465. package/examples/jsm/renderers/common/Sampler.js +18 -0
  466. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  467. package/examples/jsm/renderers/common/Textures.js +218 -0
  468. package/examples/jsm/renderers/common/Uniform.js +140 -0
  469. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  470. package/examples/jsm/renderers/common/UniformsGroup.js +299 -0
  471. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +39 -0
  472. package/examples/jsm/renderers/common/nodes/NodeSampler.js +21 -0
  473. package/examples/jsm/renderers/common/nodes/NodeUniform.js +135 -0
  474. package/examples/jsm/renderers/common/nodes/Nodes.js +330 -0
  475. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
  476. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +26 -0
  477. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +764 -0
  478. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +49 -0
  479. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +844 -0
  480. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +32 -0
  481. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +902 -0
  482. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +104 -0
  483. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeParser.js +14 -0
  484. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +274 -0
  485. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +223 -0
  486. package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +324 -0
  487. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +533 -0
  488. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +163 -0
  489. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +964 -0
  490. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
  491. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +87 -0
  492. package/examples/jsm/shaders/AfterimageShader.js +56 -0
  493. package/examples/jsm/shaders/BasicShader.js +27 -0
  494. package/examples/jsm/shaders/BleachBypassShader.js +62 -0
  495. package/examples/jsm/shaders/BlendShader.js +47 -0
  496. package/examples/jsm/shaders/BokehShader.js +143 -0
  497. package/examples/jsm/shaders/BokehShader2.js +393 -0
  498. package/examples/jsm/shaders/BrightnessContrastShader.js +54 -0
  499. package/examples/jsm/shaders/ColorCorrectionShader.js +50 -0
  500. package/examples/jsm/shaders/ColorifyShader.js +51 -0
  501. package/examples/jsm/shaders/ConvolutionShader.js +103 -0
  502. package/examples/jsm/shaders/CopyShader.js +45 -0
  503. package/examples/jsm/shaders/DOFMipMapShader.js +54 -0
  504. package/examples/jsm/shaders/DepthLimitedBlurShader.js +166 -0
  505. package/examples/jsm/shaders/DigitalGlitch.js +101 -0
  506. package/examples/jsm/shaders/DotScreenShader.js +70 -0
  507. package/examples/jsm/shaders/ExposureShader.js +44 -0
  508. package/examples/jsm/shaders/FXAAShader.js +286 -0
  509. package/examples/jsm/shaders/FilmShader.js +102 -0
  510. package/examples/jsm/shaders/FocusShader.js +87 -0
  511. package/examples/jsm/shaders/FreiChenShader.js +94 -0
  512. package/examples/jsm/shaders/GammaCorrectionShader.js +43 -0
  513. package/examples/jsm/shaders/GodRaysShader.js +313 -0
  514. package/examples/jsm/shaders/HalftoneShader.js +310 -0
  515. package/examples/jsm/shaders/HorizontalBlurShader.js +59 -0
  516. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +61 -0
  517. package/examples/jsm/shaders/HueSaturationShader.js +65 -0
  518. package/examples/jsm/shaders/KaleidoShader.js +56 -0
  519. package/examples/jsm/shaders/LuminosityHighPassShader.js +64 -0
  520. package/examples/jsm/shaders/LuminosityShader.js +46 -0
  521. package/examples/jsm/shaders/MMDToonShader.js +132 -0
  522. package/examples/jsm/shaders/MirrorShader.js +54 -0
  523. package/examples/jsm/shaders/NormalMapShader.js +53 -0
  524. package/examples/jsm/shaders/OutputShader.js +78 -0
  525. package/examples/jsm/shaders/RGBShiftShader.js +54 -0
  526. package/examples/jsm/shaders/SAOShader.js +188 -0
  527. package/examples/jsm/shaders/SMAAShader.js +460 -0
  528. package/examples/jsm/shaders/SSAOShader.js +288 -0
  529. package/examples/jsm/shaders/SSRShader.js +364 -0
  530. package/examples/jsm/shaders/SepiaShader.js +52 -0
  531. package/examples/jsm/shaders/SobelOperatorShader.js +90 -0
  532. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +88 -0
  533. package/examples/jsm/shaders/TechnicolorShader.js +43 -0
  534. package/examples/jsm/shaders/ToonShader.js +326 -0
  535. package/examples/jsm/shaders/TriangleBlurShader.js +72 -0
  536. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +45 -0
  537. package/examples/jsm/shaders/VelocityShader.js +128 -0
  538. package/examples/jsm/shaders/VerticalBlurShader.js +59 -0
  539. package/examples/jsm/shaders/VerticalTiltShiftShader.js +61 -0
  540. package/examples/jsm/shaders/VignetteShader.js +51 -0
  541. package/examples/jsm/shaders/VolumeShader.js +289 -0
  542. package/examples/jsm/shaders/WaterRefractionShader.js +93 -0
  543. package/examples/jsm/textures/FlakesTexture.js +40 -0
  544. package/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  545. package/examples/jsm/utils/CameraUtils.js +73 -0
  546. package/examples/jsm/utils/GPUStatsPanel.js +128 -0
  547. package/examples/jsm/utils/GeometryCompressionUtils.js +639 -0
  548. package/examples/jsm/utils/GeometryUtils.js +221 -0
  549. package/examples/jsm/utils/LDrawUtils.js +202 -0
  550. package/examples/jsm/utils/PackedPhongMaterial.js +178 -0
  551. package/examples/jsm/utils/SceneUtils.js +254 -0
  552. package/examples/jsm/utils/ShadowMapViewer.js +210 -0
  553. package/examples/jsm/utils/SkeletonUtils.js +413 -0
  554. package/examples/jsm/utils/TextureUtils.js +86 -0
  555. package/examples/jsm/utils/UVsDebug.js +165 -0
  556. package/examples/jsm/utils/WorkerPool.js +102 -0
  557. package/examples/jsm/webxr/ARButton.js +208 -0
  558. package/examples/jsm/webxr/OculusHandModel.js +109 -0
  559. package/examples/jsm/webxr/OculusHandPointerModel.js +413 -0
  560. package/examples/jsm/webxr/Text2D.js +38 -0
  561. package/examples/jsm/webxr/VRButton.js +200 -0
  562. package/examples/jsm/webxr/XRButton.js +198 -0
  563. package/examples/jsm/webxr/XRControllerModelFactory.js +299 -0
  564. package/examples/jsm/webxr/XREstimatedLight.js +223 -0
  565. package/examples/jsm/webxr/XRHandMeshModel.js +112 -0
  566. package/examples/jsm/webxr/XRHandModelFactory.js +105 -0
  567. package/examples/jsm/webxr/XRHandPrimitiveModel.js +103 -0
  568. package/examples/jsm/webxr/XRPlanes.js +100 -0
  569. package/lib/3d.min.js +1 -0
  570. package/package.json +25 -12
@@ -0,0 +1,288 @@
1
+ import {
2
+ Matrix4,
3
+ Vector2
4
+ } from 'three';
5
+
6
+ /**
7
+ * References:
8
+ * http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html
9
+ * https://learnopengl.com/Advanced-Lighting/SSAO
10
+ * https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl
11
+ */
12
+
13
+ const SSAOShader = {
14
+
15
+ defines: {
16
+ 'PERSPECTIVE_CAMERA': 1,
17
+ 'KERNEL_SIZE': 32
18
+ },
19
+
20
+ uniforms: {
21
+
22
+ 'tDiffuse': { value: null },
23
+ 'tNormal': { value: null },
24
+ 'tDepth': { value: null },
25
+ 'tNoise': { value: null },
26
+ 'kernel': { value: null },
27
+ 'cameraNear': { value: null },
28
+ 'cameraFar': { value: null },
29
+ 'resolution': { value: new Vector2() },
30
+ 'cameraProjectionMatrix': { value: new Matrix4() },
31
+ 'cameraInverseProjectionMatrix': { value: new Matrix4() },
32
+ 'kernelRadius': { value: 8 },
33
+ 'minDistance': { value: 0.005 },
34
+ 'maxDistance': { value: 0.05 },
35
+
36
+ },
37
+
38
+ vertexShader: /* glsl */`
39
+
40
+ varying vec2 vUv;
41
+
42
+ void main() {
43
+
44
+ vUv = uv;
45
+
46
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
47
+
48
+ }`,
49
+
50
+ fragmentShader: /* glsl */`
51
+
52
+ uniform sampler2D tDiffuse;
53
+ uniform sampler2D tNormal;
54
+ uniform sampler2D tDepth;
55
+ uniform sampler2D tNoise;
56
+
57
+ uniform vec3 kernel[ KERNEL_SIZE ];
58
+
59
+ uniform vec2 resolution;
60
+
61
+ uniform float cameraNear;
62
+ uniform float cameraFar;
63
+ uniform mat4 cameraProjectionMatrix;
64
+ uniform mat4 cameraInverseProjectionMatrix;
65
+
66
+ uniform float kernelRadius;
67
+ uniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference
68
+ uniform float maxDistance; // avoid the influence of fragments which are too far away
69
+
70
+ varying vec2 vUv;
71
+
72
+ #include <packing>
73
+
74
+ float getDepth( const in vec2 screenPosition ) {
75
+
76
+ return texture2D( tDepth, screenPosition ).x;
77
+
78
+ }
79
+
80
+ float getLinearDepth( const in vec2 screenPosition ) {
81
+
82
+ #if PERSPECTIVE_CAMERA == 1
83
+
84
+ float fragCoordZ = texture2D( tDepth, screenPosition ).x;
85
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
86
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
87
+
88
+ #else
89
+
90
+ return texture2D( tDepth, screenPosition ).x;
91
+
92
+ #endif
93
+
94
+ }
95
+
96
+ float getViewZ( const in float depth ) {
97
+
98
+ #if PERSPECTIVE_CAMERA == 1
99
+
100
+ return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
101
+
102
+ #else
103
+
104
+ return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
105
+
106
+ #endif
107
+
108
+ }
109
+
110
+ vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {
111
+
112
+ float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];
113
+
114
+ vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );
115
+
116
+ clipPosition *= clipW; // unprojection.
117
+
118
+ return ( cameraInverseProjectionMatrix * clipPosition ).xyz;
119
+
120
+ }
121
+
122
+ vec3 getViewNormal( const in vec2 screenPosition ) {
123
+
124
+ return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );
125
+
126
+ }
127
+
128
+ void main() {
129
+
130
+ float depth = getDepth( vUv );
131
+ float viewZ = getViewZ( depth );
132
+
133
+ vec3 viewPosition = getViewPosition( vUv, depth, viewZ );
134
+ vec3 viewNormal = getViewNormal( vUv );
135
+
136
+ vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
137
+ vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
138
+
139
+ // compute matrix used to reorient a kernel vector
140
+
141
+ vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );
142
+ vec3 bitangent = cross( viewNormal, tangent );
143
+ mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );
144
+
145
+ float occlusion = 0.0;
146
+
147
+ for ( int i = 0; i < KERNEL_SIZE; i ++ ) {
148
+
149
+ vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space
150
+ vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point
151
+
152
+ vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC
153
+ samplePointNDC /= samplePointNDC.w;
154
+
155
+ vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates
156
+
157
+ float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture
158
+ float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value
159
+ float delta = sampleDepth - realDepth;
160
+
161
+ if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion
162
+
163
+ occlusion += 1.0;
164
+
165
+ }
166
+
167
+ }
168
+
169
+ occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );
170
+
171
+ gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );
172
+
173
+ }`
174
+
175
+ };
176
+
177
+ const SSAODepthShader = {
178
+
179
+ defines: {
180
+ 'PERSPECTIVE_CAMERA': 1
181
+ },
182
+
183
+ uniforms: {
184
+
185
+ 'tDepth': { value: null },
186
+ 'cameraNear': { value: null },
187
+ 'cameraFar': { value: null },
188
+
189
+ },
190
+
191
+ vertexShader:
192
+
193
+ `varying vec2 vUv;
194
+
195
+ void main() {
196
+
197
+ vUv = uv;
198
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
199
+
200
+ }`,
201
+
202
+ fragmentShader:
203
+
204
+ `uniform sampler2D tDepth;
205
+
206
+ uniform float cameraNear;
207
+ uniform float cameraFar;
208
+
209
+ varying vec2 vUv;
210
+
211
+ #include <packing>
212
+
213
+ float getLinearDepth( const in vec2 screenPosition ) {
214
+
215
+ #if PERSPECTIVE_CAMERA == 1
216
+
217
+ float fragCoordZ = texture2D( tDepth, screenPosition ).x;
218
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
219
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
220
+
221
+ #else
222
+
223
+ return texture2D( tDepth, screenPosition ).x;
224
+
225
+ #endif
226
+
227
+ }
228
+
229
+ void main() {
230
+
231
+ float depth = getLinearDepth( vUv );
232
+ gl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );
233
+
234
+ }`
235
+
236
+ };
237
+
238
+ const SSAOBlurShader = {
239
+
240
+ uniforms: {
241
+
242
+ 'tDiffuse': { value: null },
243
+ 'resolution': { value: new Vector2() }
244
+
245
+ },
246
+
247
+ vertexShader:
248
+
249
+ `varying vec2 vUv;
250
+
251
+ void main() {
252
+
253
+ vUv = uv;
254
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
255
+
256
+ }`,
257
+
258
+ fragmentShader:
259
+
260
+ `uniform sampler2D tDiffuse;
261
+
262
+ uniform vec2 resolution;
263
+
264
+ varying vec2 vUv;
265
+
266
+ void main() {
267
+
268
+ vec2 texelSize = ( 1.0 / resolution );
269
+ float result = 0.0;
270
+
271
+ for ( int i = - 2; i <= 2; i ++ ) {
272
+
273
+ for ( int j = - 2; j <= 2; j ++ ) {
274
+
275
+ vec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;
276
+ result += texture2D( tDiffuse, vUv + offset ).r;
277
+
278
+ }
279
+
280
+ }
281
+
282
+ gl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );
283
+
284
+ }`
285
+
286
+ };
287
+
288
+ export { SSAOShader, SSAODepthShader, SSAOBlurShader };
@@ -0,0 +1,364 @@
1
+ import {
2
+ Matrix4,
3
+ Vector2
4
+ } from 'three';
5
+ /**
6
+ * References:
7
+ * https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html
8
+ */
9
+
10
+ const SSRShader = {
11
+
12
+ defines: {
13
+ MAX_STEP: 0,
14
+ PERSPECTIVE_CAMERA: true,
15
+ DISTANCE_ATTENUATION: true,
16
+ FRESNEL: true,
17
+ INFINITE_THICK: false,
18
+ SELECTIVE: false,
19
+ },
20
+
21
+ uniforms: {
22
+
23
+ 'tDiffuse': { value: null },
24
+ 'tNormal': { value: null },
25
+ 'tMetalness': { value: null },
26
+ 'tDepth': { value: null },
27
+ 'cameraNear': { value: null },
28
+ 'cameraFar': { value: null },
29
+ 'resolution': { value: new Vector2() },
30
+ 'cameraProjectionMatrix': { value: new Matrix4() },
31
+ 'cameraInverseProjectionMatrix': { value: new Matrix4() },
32
+ 'opacity': { value: .5 },
33
+ 'maxDistance': { value: 180 },
34
+ 'cameraRange': { value: 0 },
35
+ 'thickness': { value: .018 }
36
+
37
+ },
38
+
39
+ vertexShader: /* glsl */`
40
+
41
+ varying vec2 vUv;
42
+
43
+ void main() {
44
+
45
+ vUv = uv;
46
+
47
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
48
+
49
+ }
50
+
51
+ `,
52
+
53
+ fragmentShader: /* glsl */`
54
+ // precision highp float;
55
+ precision highp sampler2D;
56
+ varying vec2 vUv;
57
+ uniform sampler2D tDepth;
58
+ uniform sampler2D tNormal;
59
+ uniform sampler2D tMetalness;
60
+ uniform sampler2D tDiffuse;
61
+ uniform float cameraRange;
62
+ uniform vec2 resolution;
63
+ uniform float opacity;
64
+ uniform float cameraNear;
65
+ uniform float cameraFar;
66
+ uniform float maxDistance;
67
+ uniform float thickness;
68
+ uniform mat4 cameraProjectionMatrix;
69
+ uniform mat4 cameraInverseProjectionMatrix;
70
+ #include <packing>
71
+ float pointToLineDistance(vec3 x0, vec3 x1, vec3 x2) {
72
+ //x0: point, x1: linePointA, x2: linePointB
73
+ //https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
74
+ return length(cross(x0-x1,x0-x2))/length(x2-x1);
75
+ }
76
+ float pointPlaneDistance(vec3 point,vec3 planePoint,vec3 planeNormal){
77
+ // https://mathworld.wolfram.com/Point-PlaneDistance.html
78
+ //// https://en.wikipedia.org/wiki/Plane_(geometry)
79
+ //// http://paulbourke.net/geometry/pointlineplane/
80
+ float a=planeNormal.x,b=planeNormal.y,c=planeNormal.z;
81
+ float x0=point.x,y0=point.y,z0=point.z;
82
+ float x=planePoint.x,y=planePoint.y,z=planePoint.z;
83
+ float d=-(a*x+b*y+c*z);
84
+ float distance=(a*x0+b*y0+c*z0+d)/sqrt(a*a+b*b+c*c);
85
+ return distance;
86
+ }
87
+ float getDepth( const in vec2 uv ) {
88
+ return texture2D( tDepth, uv ).x;
89
+ }
90
+ float getViewZ( const in float depth ) {
91
+ #ifdef PERSPECTIVE_CAMERA
92
+ return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
93
+ #else
94
+ return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
95
+ #endif
96
+ }
97
+ vec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {
98
+ vec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc
99
+ clipPosition *= clipW; //clip
100
+ return ( cameraInverseProjectionMatrix * clipPosition ).xyz;//view
101
+ }
102
+ vec3 getViewNormal( const in vec2 uv ) {
103
+ return unpackRGBToNormal( texture2D( tNormal, uv ).xyz );
104
+ }
105
+ vec2 viewPositionToXY(vec3 viewPosition){
106
+ vec2 xy;
107
+ vec4 clip=cameraProjectionMatrix*vec4(viewPosition,1);
108
+ xy=clip.xy;//clip
109
+ float clipW=clip.w;
110
+ xy/=clipW;//NDC
111
+ xy=(xy+1.)/2.;//uv
112
+ xy*=resolution;//screen
113
+ return xy;
114
+ }
115
+ void main(){
116
+ #ifdef SELECTIVE
117
+ float metalness=texture2D(tMetalness,vUv).r;
118
+ if(metalness==0.) return;
119
+ #endif
120
+
121
+ float depth = getDepth( vUv );
122
+ float viewZ = getViewZ( depth );
123
+ if(-viewZ>=cameraFar) return;
124
+
125
+ float clipW = cameraProjectionMatrix[2][3] * viewZ+cameraProjectionMatrix[3][3];
126
+ vec3 viewPosition=getViewPosition( vUv, depth, clipW );
127
+
128
+ vec2 d0=gl_FragCoord.xy;
129
+ vec2 d1;
130
+
131
+ vec3 viewNormal=getViewNormal( vUv );
132
+
133
+ #ifdef PERSPECTIVE_CAMERA
134
+ vec3 viewIncidentDir=normalize(viewPosition);
135
+ vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);
136
+ #else
137
+ vec3 viewIncidentDir=vec3(0,0,-1);
138
+ vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal);
139
+ #endif
140
+
141
+ float maxReflectRayLen=maxDistance/dot(-viewIncidentDir,viewNormal);
142
+ // dot(a,b)==length(a)*length(b)*cos(theta) // https://www.mathsisfun.com/algebra/vectors-dot-product.html
143
+ // if(a.isNormalized&&b.isNormalized) dot(a,b)==cos(theta)
144
+ // maxDistance/maxReflectRayLen=cos(theta)
145
+ // maxDistance/maxReflectRayLen==dot(a,b)
146
+ // maxReflectRayLen==maxDistance/dot(a,b)
147
+
148
+ vec3 d1viewPosition=viewPosition+viewReflectDir*maxReflectRayLen;
149
+ #ifdef PERSPECTIVE_CAMERA
150
+ if(d1viewPosition.z>-cameraNear){
151
+ //https://tutorial.math.lamar.edu/Classes/CalcIII/EqnsOfLines.aspx
152
+ float t=(-cameraNear-viewPosition.z)/viewReflectDir.z;
153
+ d1viewPosition=viewPosition+viewReflectDir*t;
154
+ }
155
+ #endif
156
+ d1=viewPositionToXY(d1viewPosition);
157
+
158
+ float totalLen=length(d1-d0);
159
+ float xLen=d1.x-d0.x;
160
+ float yLen=d1.y-d0.y;
161
+ float totalStep=max(abs(xLen),abs(yLen));
162
+ float xSpan=xLen/totalStep;
163
+ float ySpan=yLen/totalStep;
164
+ for(float i=0.;i<float(MAX_STEP);i++){
165
+ if(i>=totalStep) break;
166
+ vec2 xy=vec2(d0.x+i*xSpan,d0.y+i*ySpan);
167
+ if(xy.x<0.||xy.x>resolution.x||xy.y<0.||xy.y>resolution.y) break;
168
+ float s=length(xy-d0)/totalLen;
169
+ vec2 uv=xy/resolution;
170
+
171
+ float d = getDepth(uv);
172
+ float vZ = getViewZ( d );
173
+ if(-vZ>=cameraFar) continue;
174
+ float cW = cameraProjectionMatrix[2][3] * vZ+cameraProjectionMatrix[3][3];
175
+ vec3 vP=getViewPosition( uv, d, cW );
176
+
177
+ #ifdef PERSPECTIVE_CAMERA
178
+ // https://comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf
179
+ float recipVPZ=1./viewPosition.z;
180
+ float viewReflectRayZ=1./(recipVPZ+s*(1./d1viewPosition.z-recipVPZ));
181
+ #else
182
+ float viewReflectRayZ=viewPosition.z+s*(d1viewPosition.z-viewPosition.z);
183
+ #endif
184
+
185
+ // if(viewReflectRayZ>vZ) continue; // will cause "npm run make-screenshot webgl_postprocessing_ssr" high probability hang.
186
+ // https://github.com/mrdoob/three.js/pull/21539#issuecomment-821061164
187
+ if(viewReflectRayZ<=vZ){
188
+
189
+ bool hit;
190
+ #ifdef INFINITE_THICK
191
+ hit=true;
192
+ #else
193
+ float away=pointToLineDistance(vP,viewPosition,d1viewPosition);
194
+
195
+ float minThickness;
196
+ vec2 xyNeighbor=xy;
197
+ xyNeighbor.x+=1.;
198
+ vec2 uvNeighbor=xyNeighbor/resolution;
199
+ vec3 vPNeighbor=getViewPosition(uvNeighbor,d,cW);
200
+ minThickness=vPNeighbor.x-vP.x;
201
+ minThickness*=3.;
202
+ float tk=max(minThickness,thickness);
203
+
204
+ hit=away<=tk;
205
+ #endif
206
+
207
+ if(hit){
208
+ vec3 vN=getViewNormal( uv );
209
+ if(dot(viewReflectDir,vN)>=0.) continue;
210
+ float distance=pointPlaneDistance(vP,viewPosition,viewNormal);
211
+ if(distance>maxDistance) break;
212
+ float op=opacity;
213
+ #ifdef DISTANCE_ATTENUATION
214
+ float ratio=1.-(distance/maxDistance);
215
+ float attenuation=ratio*ratio;
216
+ op=opacity*attenuation;
217
+ #endif
218
+ #ifdef FRESNEL
219
+ float fresnelCoe=(dot(viewIncidentDir,viewReflectDir)+1.)/2.;
220
+ op*=fresnelCoe;
221
+ #endif
222
+ vec4 reflectColor=texture2D(tDiffuse,uv);
223
+ gl_FragColor.xyz=reflectColor.xyz;
224
+ gl_FragColor.a=op;
225
+ break;
226
+ }
227
+ }
228
+ }
229
+ }
230
+ `
231
+
232
+ };
233
+
234
+ const SSRDepthShader = {
235
+
236
+ defines: {
237
+ 'PERSPECTIVE_CAMERA': 1
238
+ },
239
+
240
+ uniforms: {
241
+
242
+ 'tDepth': { value: null },
243
+ 'cameraNear': { value: null },
244
+ 'cameraFar': { value: null },
245
+
246
+ },
247
+
248
+ vertexShader: /* glsl */`
249
+
250
+ varying vec2 vUv;
251
+
252
+ void main() {
253
+
254
+ vUv = uv;
255
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
256
+
257
+ }
258
+
259
+ `,
260
+
261
+ fragmentShader: /* glsl */`
262
+
263
+ uniform sampler2D tDepth;
264
+
265
+ uniform float cameraNear;
266
+ uniform float cameraFar;
267
+
268
+ varying vec2 vUv;
269
+
270
+ #include <packing>
271
+
272
+ float getLinearDepth( const in vec2 uv ) {
273
+
274
+ #if PERSPECTIVE_CAMERA == 1
275
+
276
+ float fragCoordZ = texture2D( tDepth, uv ).x;
277
+ float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
278
+ return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
279
+
280
+ #else
281
+
282
+ return texture2D( tDepth, uv ).x;
283
+
284
+ #endif
285
+
286
+ }
287
+
288
+ void main() {
289
+
290
+ float depth = getLinearDepth( vUv );
291
+ float d = 1.0 - depth;
292
+ // d=(d-.999)*1000.;
293
+ gl_FragColor = vec4( vec3( d ), 1.0 );
294
+
295
+ }
296
+
297
+ `
298
+
299
+ };
300
+
301
+ const SSRBlurShader = {
302
+
303
+ uniforms: {
304
+
305
+ 'tDiffuse': { value: null },
306
+ 'resolution': { value: new Vector2() },
307
+ 'opacity': { value: .5 },
308
+
309
+ },
310
+
311
+ vertexShader: /* glsl */`
312
+
313
+ varying vec2 vUv;
314
+
315
+ void main() {
316
+
317
+ vUv = uv;
318
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
319
+
320
+ }
321
+
322
+ `,
323
+
324
+ fragmentShader: /* glsl */`
325
+
326
+ uniform sampler2D tDiffuse;
327
+ uniform vec2 resolution;
328
+ varying vec2 vUv;
329
+ void main() {
330
+ //reverse engineering from PhotoShop blur filter, then change coefficient
331
+
332
+ vec2 texelSize = ( 1.0 / resolution );
333
+
334
+ vec4 c=texture2D(tDiffuse,vUv);
335
+
336
+ vec2 offset;
337
+
338
+ offset=(vec2(-1,0))*texelSize;
339
+ vec4 cl=texture2D(tDiffuse,vUv+offset);
340
+
341
+ offset=(vec2(1,0))*texelSize;
342
+ vec4 cr=texture2D(tDiffuse,vUv+offset);
343
+
344
+ offset=(vec2(0,-1))*texelSize;
345
+ vec4 cb=texture2D(tDiffuse,vUv+offset);
346
+
347
+ offset=(vec2(0,1))*texelSize;
348
+ vec4 ct=texture2D(tDiffuse,vUv+offset);
349
+
350
+ // float coeCenter=.5;
351
+ // float coeSide=.125;
352
+ float coeCenter=.2;
353
+ float coeSide=.2;
354
+ float a=c.a*coeCenter+cl.a*coeSide+cr.a*coeSide+cb.a*coeSide+ct.a*coeSide;
355
+ 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;
356
+ gl_FragColor=vec4(rgb,a);
357
+
358
+ }
359
+ `
360
+
361
+
362
+ };
363
+
364
+ export { SSRShader, SSRDepthShader, SSRBlurShader };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Sepia tone shader
3
+ * based on glfx.js sepia shader
4
+ * https://github.com/evanw/glfx.js
5
+ */
6
+
7
+ const SepiaShader = {
8
+
9
+ name: 'SepiaShader',
10
+
11
+ uniforms: {
12
+
13
+ 'tDiffuse': { value: null },
14
+ 'amount': { value: 1.0 }
15
+
16
+ },
17
+
18
+ vertexShader: /* glsl */`
19
+
20
+ varying vec2 vUv;
21
+
22
+ void main() {
23
+
24
+ vUv = uv;
25
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
26
+
27
+ }`,
28
+
29
+ fragmentShader: /* glsl */`
30
+
31
+ uniform float amount;
32
+
33
+ uniform sampler2D tDiffuse;
34
+
35
+ varying vec2 vUv;
36
+
37
+ void main() {
38
+
39
+ vec4 color = texture2D( tDiffuse, vUv );
40
+ vec3 c = color.rgb;
41
+
42
+ color.r = dot( c, vec3( 1.0 - 0.607 * amount, 0.769 * amount, 0.189 * amount ) );
43
+ color.g = dot( c, vec3( 0.349 * amount, 1.0 - 0.314 * amount, 0.168 * amount ) );
44
+ color.b = dot( c, vec3( 0.272 * amount, 0.534 * amount, 1.0 - 0.869 * amount ) );
45
+
46
+ gl_FragColor = vec4( min( vec3( 1.0 ), color.rgb ), color.a );
47
+
48
+ }`
49
+
50
+ };
51
+
52
+ export { SepiaShader };