@needle-tools/three 0.162.12 → 0.169.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 (635) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +29789 -1941
  3. package/build/three.module.js +29095 -1933
  4. package/build/three.module.min.js +2 -2
  5. package/build/three.webgpu.js +80003 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/build/three.webgpu.nodes.js +79951 -0
  8. package/build/three.webgpu.nodes.min.js +6 -0
  9. package/examples/jsm/Addons.js +2 -5
  10. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  11. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  12. package/examples/jsm/capabilities/WebGL.js +27 -21
  13. package/examples/jsm/controls/ArcballControls.js +174 -158
  14. package/examples/jsm/controls/DragControls.js +260 -132
  15. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  16. package/examples/jsm/controls/FlyControls.js +194 -188
  17. package/examples/jsm/controls/OrbitControls.js +790 -797
  18. package/examples/jsm/controls/PointerLockControls.js +24 -15
  19. package/examples/jsm/controls/TrackballControls.js +469 -448
  20. package/examples/jsm/controls/TransformControls.js +98 -63
  21. package/examples/jsm/csm/CSMShader.js +4 -4
  22. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  23. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  24. package/examples/jsm/effects/StereoEffect.js +6 -1
  25. package/examples/jsm/environments/RoomEnvironment.js +2 -6
  26. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  27. package/examples/jsm/exporters/EXRExporter.js +19 -11
  28. package/examples/jsm/exporters/GLTFExporter.js +77 -8
  29. package/examples/jsm/exporters/KTX2Exporter.js +21 -13
  30. package/examples/jsm/exporters/OBJExporter.js +5 -1
  31. package/examples/jsm/exporters/PLYExporter.js +9 -7
  32. package/examples/jsm/exporters/USDZExporter.js +55 -11
  33. package/examples/jsm/geometries/DecalGeometry.js +4 -1
  34. package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
  35. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  36. package/examples/jsm/geometries/TextGeometry.js +10 -2
  37. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  38. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  39. package/examples/jsm/helpers/ViewHelper.js +75 -61
  40. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  41. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  42. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  43. package/examples/jsm/libs/draco/README.md +2 -2
  44. package/examples/jsm/libs/fflate.module.js +694 -496
  45. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  46. package/examples/jsm/lights/LightProbeGenerator.js +24 -10
  47. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  48. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  49. package/examples/jsm/lines/LineMaterial.js +1 -17
  50. package/examples/jsm/lines/LineSegments2.js +15 -0
  51. package/examples/jsm/lines/Wireframe.js +16 -1
  52. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  53. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  54. package/examples/jsm/loaders/3MFLoader.js +2 -0
  55. package/examples/jsm/loaders/ColladaLoader.js +9 -6
  56. package/examples/jsm/loaders/DRACOLoader.js +4 -2
  57. package/examples/jsm/loaders/EXRLoader.js +351 -97
  58. package/examples/jsm/loaders/FBXLoader.js +77 -78
  59. package/examples/jsm/loaders/GLTFLoader.js +76 -14
  60. package/examples/jsm/loaders/KTX2Loader.js +30 -22
  61. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  62. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  63. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  64. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  65. package/examples/jsm/loaders/MMDLoader.js +31 -12
  66. package/examples/jsm/loaders/MTLLoader.js +4 -3
  67. package/examples/jsm/loaders/MaterialXLoader.js +45 -21
  68. package/examples/jsm/loaders/OBJLoader.js +5 -3
  69. package/examples/jsm/loaders/PCDLoader.js +14 -13
  70. package/examples/jsm/loaders/PDBLoader.js +3 -2
  71. package/examples/jsm/loaders/PLYLoader.js +8 -5
  72. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  73. package/examples/jsm/loaders/STLLoader.js +3 -2
  74. package/examples/jsm/loaders/USDZLoader.js +124 -76
  75. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  76. package/examples/jsm/loaders/VRMLLoader.js +11 -11
  77. package/examples/jsm/loaders/VTKLoader.js +80 -6
  78. package/examples/jsm/loaders/XYZLoader.js +3 -2
  79. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  81. package/examples/jsm/math/Octree.js +26 -20
  82. package/examples/jsm/misc/GPUComputationRenderer.js +9 -25
  83. package/examples/jsm/misc/Timer.js +1 -1
  84. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  85. package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
  86. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  87. package/examples/jsm/objects/InstancedPoints.js +2 -2
  88. package/examples/jsm/objects/Lensflare.js +2 -2
  89. package/examples/jsm/objects/LensflareMesh.js +322 -0
  90. package/examples/jsm/objects/SkyMesh.js +187 -0
  91. package/examples/jsm/objects/Water2Mesh.js +158 -0
  92. package/examples/jsm/objects/WaterMesh.js +101 -0
  93. package/examples/jsm/physics/JoltPhysics.js +281 -0
  94. package/examples/jsm/physics/RapierPhysics.js +25 -5
  95. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  96. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  97. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  98. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  99. package/examples/jsm/postprocessing/RenderTransitionPass.js +168 -0
  100. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  101. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  102. package/examples/jsm/postprocessing/SSAOPass.js +6 -12
  103. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  104. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  105. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  106. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -3
  107. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +7 -4
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +19 -5
  110. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  111. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  112. package/examples/jsm/shaders/FXAAShader.js +0 -2
  113. package/examples/jsm/shaders/GTAOShader.js +1 -1
  114. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  115. package/examples/jsm/shaders/OutputShader.js +1 -1
  116. package/examples/jsm/transpiler/GLSLDecoder.js +47 -5
  117. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
  118. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  119. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  120. package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
  121. package/examples/jsm/utils/SceneUtils.js +60 -1
  122. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  123. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  124. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  125. package/examples/jsm/utils/SortUtils.js +8 -5
  126. package/examples/jsm/utils/TextureUtils.js +3 -2
  127. package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
  128. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  129. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  130. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  131. package/package.json +11 -8
  132. package/src/Three.WebGPU.Nodes.js +200 -0
  133. package/src/Three.WebGPU.js +201 -0
  134. package/src/Three.js +23 -1
  135. package/src/animation/AnimationClip.js +1 -1
  136. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  137. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  138. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  139. package/src/audio/Audio.js +2 -2
  140. package/src/constants.js +6 -7
  141. package/src/core/BufferAttribute.js +0 -9
  142. package/src/core/Clock.js +1 -1
  143. package/src/core/InterleavedBuffer.js +0 -9
  144. package/src/core/Object3D.js +34 -29
  145. package/src/core/Raycaster.js +6 -2
  146. package/src/core/RenderTarget.js +8 -0
  147. package/src/extras/Controls.js +32 -0
  148. package/src/extras/PMREMGenerator.js +12 -11
  149. package/src/extras/TextureUtils.js +210 -0
  150. package/src/geometries/CylinderGeometry.js +11 -4
  151. package/src/lights/Light.js +1 -0
  152. package/src/lights/LightShadow.js +5 -0
  153. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  154. package/src/loaders/FileLoader.js +5 -1
  155. package/src/loaders/LoaderUtils.js +3 -1
  156. package/src/loaders/MaterialLoader.js +8 -1
  157. package/src/loaders/ObjectLoader.js +36 -2
  158. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +27 -5
  159. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +22 -18
  160. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +21 -1
  161. package/src/materials/Material.js +4 -0
  162. package/src/materials/MeshPhysicalMaterial.js +20 -0
  163. package/src/materials/ShaderMaterial.js +0 -4
  164. package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
  165. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +69 -68
  166. package/src/materials/nodes/LineBasicNodeMaterial.js +31 -0
  167. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +15 -12
  168. package/src/materials/nodes/MeshBasicNodeMaterial.js +77 -0
  169. package/src/materials/nodes/MeshLambertNodeMaterial.js +47 -0
  170. package/src/materials/nodes/MeshMatcapNodeMaterial.js +57 -0
  171. package/src/materials/nodes/MeshNormalNodeMaterial.js +44 -0
  172. package/src/materials/nodes/MeshPhongNodeMaterial.js +78 -0
  173. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +248 -0
  174. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +10 -7
  175. package/src/materials/nodes/MeshStandardNodeMaterial.js +108 -0
  176. package/src/materials/nodes/MeshToonNodeMaterial.js +38 -0
  177. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +198 -157
  178. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -1
  179. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +10 -7
  180. package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
  181. package/src/materials/nodes/SpriteNodeMaterial.js +123 -0
  182. package/src/materials/nodes/VolumeNodeMaterial.js +108 -0
  183. package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
  184. package/src/math/Box2.js +4 -4
  185. package/src/math/Box3.js +6 -6
  186. package/src/math/ColorManagement.js +10 -0
  187. package/src/math/Matrix2.js +54 -0
  188. package/src/math/Spherical.js +4 -5
  189. package/src/math/Triangle.js +24 -0
  190. package/src/math/Vector4.js +13 -0
  191. package/src/nodes/Nodes.js +164 -0
  192. package/src/nodes/TSL.js +179 -0
  193. package/src/nodes/accessors/AccessorsUtils.js +25 -0
  194. package/src/nodes/accessors/BatchNode.js +128 -0
  195. package/src/nodes/accessors/Bitangent.js +13 -0
  196. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +44 -6
  197. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +13 -4
  198. package/src/nodes/accessors/Camera.js +13 -0
  199. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +22 -15
  200. package/src/nodes/accessors/CubeTextureNode.js +79 -0
  201. package/src/nodes/accessors/InstanceNode.js +144 -0
  202. package/src/nodes/accessors/InstancedPointsMaterialNode.js +24 -0
  203. package/src/nodes/accessors/Lights.js +51 -0
  204. package/src/nodes/accessors/MaterialNode.js +441 -0
  205. package/src/nodes/accessors/MaterialProperties.js +3 -0
  206. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +10 -5
  207. package/src/nodes/accessors/ModelNode.js +72 -0
  208. package/src/nodes/accessors/ModelViewProjectionNode.js +42 -0
  209. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +51 -33
  210. package/src/nodes/accessors/Normal.js +88 -0
  211. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +18 -34
  212. package/src/nodes/accessors/PointUVNode.js +30 -0
  213. package/src/nodes/accessors/Position.js +10 -0
  214. package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
  215. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +58 -9
  216. package/src/nodes/accessors/ReflectVector.js +10 -0
  217. package/src/nodes/accessors/RendererReferenceNode.js +35 -0
  218. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +9 -6
  219. package/src/nodes/accessors/SkinningNode.js +191 -0
  220. package/src/nodes/accessors/StorageBufferNode.js +147 -0
  221. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +35 -10
  222. package/src/nodes/accessors/Tangent.js +22 -0
  223. package/src/nodes/accessors/Texture3DNode.js +103 -0
  224. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  225. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +123 -39
  226. package/src/nodes/accessors/TextureSizeNode.js +36 -0
  227. package/src/nodes/accessors/UV.js +3 -0
  228. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +33 -15
  229. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +10 -7
  230. package/src/nodes/accessors/VelocityNode.js +134 -0
  231. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +9 -5
  232. package/{examples/jsm → src}/nodes/code/CodeNode.js +9 -5
  233. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +10 -6
  234. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +8 -5
  235. package/{examples/jsm → src}/nodes/code/FunctionNode.js +8 -31
  236. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +24 -7
  237. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +11 -8
  238. package/{examples/jsm → src}/nodes/core/AssignNode.js +12 -9
  239. package/{examples/jsm → src}/nodes/core/AttributeNode.js +29 -12
  240. package/{examples/jsm → src}/nodes/core/BypassNode.js +11 -7
  241. package/src/nodes/core/CacheNode.js +50 -0
  242. package/{examples/jsm → src}/nodes/core/ConstNode.js +6 -3
  243. package/{examples/jsm → src}/nodes/core/ContextNode.js +27 -11
  244. package/src/nodes/core/IndexNode.js +99 -0
  245. package/{examples/jsm → src}/nodes/core/InputNode.js +7 -3
  246. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  247. package/src/nodes/core/MRTNode.js +85 -0
  248. package/{examples/jsm → src}/nodes/core/Node.js +114 -57
  249. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +327 -90
  250. package/src/nodes/core/NodeCache.js +36 -0
  251. package/{examples/jsm → src}/nodes/core/NodeFrame.js +52 -10
  252. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  253. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  254. package/{examples/jsm → src}/nodes/core/NodeUtils.js +56 -8
  255. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +13 -12
  256. package/{examples/jsm → src}/nodes/core/ParameterNode.js +7 -4
  257. package/src/nodes/core/PropertyNode.js +88 -0
  258. package/{examples/jsm → src}/nodes/core/StackNode.js +31 -11
  259. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +7 -3
  260. package/{examples/jsm → src}/nodes/core/TempNode.js +10 -6
  261. package/src/nodes/core/UniformGroupNode.js +59 -0
  262. package/{examples/jsm → src}/nodes/core/UniformNode.js +37 -5
  263. package/{examples/jsm → src}/nodes/core/VarNode.js +14 -14
  264. package/src/nodes/core/VaryingNode.js +108 -0
  265. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +38 -28
  266. package/src/nodes/display/AnaglyphPassNode.js +67 -0
  267. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +33 -30
  268. package/src/nodes/display/BleachBypass.js +26 -0
  269. package/src/nodes/display/BlendMode.js +54 -0
  270. package/src/nodes/display/BloomNode.js +341 -0
  271. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +20 -38
  272. package/src/nodes/display/ColorAdjustment.js +46 -0
  273. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  274. package/src/nodes/display/ColorSpaceNode.js +114 -0
  275. package/src/nodes/display/DenoiseNode.js +204 -0
  276. package/src/nodes/display/DepthOfFieldNode.js +124 -0
  277. package/src/nodes/display/DotScreenNode.js +66 -0
  278. package/src/nodes/display/FXAANode.js +332 -0
  279. package/src/nodes/display/FilmNode.js +56 -0
  280. package/src/nodes/display/FrontFacingNode.js +45 -0
  281. package/src/nodes/display/GTAONode.js +331 -0
  282. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +47 -24
  283. package/src/nodes/display/Lut3DNode.js +57 -0
  284. package/src/nodes/display/MotionBlur.js +25 -0
  285. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +14 -14
  286. package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
  287. package/src/nodes/display/PassNode.js +378 -0
  288. package/src/nodes/display/PixelationPassNode.js +213 -0
  289. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +8 -7
  290. package/src/nodes/display/RGBShiftNode.js +53 -0
  291. package/src/nodes/display/RenderOutputNode.js +60 -0
  292. package/src/nodes/display/SSAAPassNode.js +287 -0
  293. package/src/nodes/display/ScreenNode.js +181 -0
  294. package/src/nodes/display/Sepia.js +17 -0
  295. package/src/nodes/display/SobelOperatorNode.js +126 -0
  296. package/src/nodes/display/StereoCompositePassNode.js +110 -0
  297. package/src/nodes/display/StereoPassNode.js +83 -0
  298. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  299. package/src/nodes/display/ToneMappingNode.js +67 -0
  300. package/src/nodes/display/ToonOutlinePassNode.js +111 -0
  301. package/src/nodes/display/TransitionNode.js +80 -0
  302. package/src/nodes/display/ViewportDepthNode.js +125 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +33 -0
  304. package/src/nodes/display/ViewportSharedTextureNode.js +39 -0
  305. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +20 -14
  306. package/src/nodes/fog/FogExp2Node.js +35 -0
  307. package/src/nodes/fog/FogNode.js +50 -0
  308. package/src/nodes/fog/FogRangeNode.js +36 -0
  309. package/src/nodes/functions/BSDF/BRDF_GGX.js +59 -0
  310. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  311. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  312. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  313. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  314. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  315. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  316. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  317. package/src/nodes/functions/BSDF/LTC.js +131 -0
  318. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  319. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  320. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  321. package/src/nodes/functions/BasicLightingModel.js +78 -0
  322. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +11 -9
  323. package/src/nodes/functions/PhysicalLightingModel.js +633 -0
  324. package/src/nodes/functions/ShadowMaskModel.js +31 -0
  325. package/src/nodes/functions/ToonLightingModel.js +51 -0
  326. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  327. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  328. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  329. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +28 -11
  330. package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
  331. package/src/nodes/gpgpu/BarrierNode.js +40 -0
  332. package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
  333. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +10 -6
  334. package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
  335. package/src/nodes/lighting/AONode.js +27 -0
  336. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +6 -8
  337. package/src/nodes/lighting/AnalyticLightNode.js +522 -0
  338. package/src/nodes/lighting/BasicEnvironmentNode.js +30 -0
  339. package/src/nodes/lighting/BasicLightMapNode.js +32 -0
  340. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +7 -9
  341. package/src/nodes/lighting/EnvironmentNode.js +138 -0
  342. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +12 -11
  343. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +7 -9
  344. package/src/nodes/lighting/IrradianceNode.js +27 -0
  345. package/src/nodes/lighting/LightProbeNode.js +53 -0
  346. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  347. package/src/nodes/lighting/LightingContextNode.js +67 -0
  348. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +9 -3
  349. package/src/nodes/lighting/LightsNode.js +250 -0
  350. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +12 -13
  351. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  352. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +14 -16
  353. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  354. package/src/nodes/materialx/lib/mx_hsv.js +127 -0
  355. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  356. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  357. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +48 -13
  358. package/src/nodes/math/Hash.js +13 -0
  359. package/src/nodes/math/MathNode.js +407 -0
  360. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  361. package/src/nodes/math/OperatorNode.js +319 -0
  362. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  363. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  364. package/src/nodes/pmrem/PMREMNode.js +240 -0
  365. package/src/nodes/pmrem/PMREMUtils.js +288 -0
  366. package/src/nodes/procedural/Checker.js +14 -0
  367. package/src/nodes/tsl/TSLBase.js +30 -0
  368. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +122 -96
  369. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +9 -5
  370. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +7 -3
  371. package/src/nodes/utils/CubeMapNode.js +160 -0
  372. package/src/nodes/utils/Discard.js +8 -0
  373. package/src/nodes/utils/EquirectUVNode.js +36 -0
  374. package/src/nodes/utils/FlipNode.js +68 -0
  375. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +11 -5
  376. package/{examples/jsm → src}/nodes/utils/JoinNode.js +6 -3
  377. package/{examples/jsm → src}/nodes/utils/LoopNode.js +23 -12
  378. package/src/nodes/utils/MatcapUVNode.js +33 -0
  379. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +16 -7
  380. package/{examples/jsm → src}/nodes/utils/OscNode.js +12 -8
  381. package/src/nodes/utils/Packing.js +4 -0
  382. package/src/nodes/utils/RTTNode.js +133 -0
  383. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +21 -5
  384. package/{examples/jsm → src}/nodes/utils/RemapNode.js +12 -8
  385. package/{examples/jsm → src}/nodes/utils/RotateNode.js +8 -13
  386. package/{examples/jsm → src}/nodes/utils/SetNode.js +7 -4
  387. package/{examples/jsm → src}/nodes/utils/SplitNode.js +7 -3
  388. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +10 -6
  389. package/src/nodes/utils/SpriteUtils.js +47 -0
  390. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +11 -12
  391. package/{examples/jsm → src}/nodes/utils/TimerNode.js +8 -5
  392. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +11 -9
  393. package/src/nodes/utils/UVUtils.js +19 -0
  394. package/src/nodes/utils/ViewportUtils.js +14 -0
  395. package/src/objects/BatchedMesh.js +302 -144
  396. package/src/objects/InstancedMesh.js +11 -1
  397. package/src/objects/LOD.js +21 -0
  398. package/src/objects/Line.js +67 -43
  399. package/src/objects/Mesh.js +7 -23
  400. package/src/objects/Points.js +2 -0
  401. package/src/renderers/WebGLRenderer.js +473 -224
  402. package/{examples/jsm → src}/renderers/common/Animation.js +3 -0
  403. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  404. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  405. package/{examples/jsm → src}/renderers/common/Background.js +18 -10
  406. package/src/renderers/common/BindGroup.js +18 -0
  407. package/src/renderers/common/Bindings.js +203 -0
  408. package/src/renderers/common/BundleGroup.js +26 -0
  409. package/src/renderers/common/ChainMap.js +59 -0
  410. package/{examples/jsm → src}/renderers/common/ClippingContext.js +24 -12
  411. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  412. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  413. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  414. package/{examples/jsm → src}/renderers/common/Info.js +35 -15
  415. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  416. package/src/renderers/common/PostProcessing.js +90 -0
  417. package/src/renderers/common/QuadMesh.js +55 -0
  418. package/src/renderers/common/RenderBundle.js +18 -0
  419. package/src/renderers/common/RenderBundles.js +38 -0
  420. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -2
  421. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  422. package/{examples/jsm → src}/renderers/common/RenderList.js +11 -2
  423. package/src/renderers/common/RenderObject.js +413 -0
  424. package/{examples/jsm → src}/renderers/common/RenderObjects.js +9 -2
  425. package/{examples/jsm → src}/renderers/common/Renderer.js +431 -83
  426. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  427. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  428. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  429. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  430. package/{examples/jsm → src}/renderers/common/Textures.js +15 -15
  431. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  432. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  433. package/src/renderers/common/extras/PMREMGenerator.js +771 -0
  434. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  435. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  436. package/src/renderers/common/nodes/NodeSampledTexture.js +64 -0
  437. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  438. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  439. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  440. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  441. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  442. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +106 -68
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  444. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  445. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  446. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  447. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  448. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  449. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  450. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  451. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  452. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  454. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  455. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  456. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  457. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  458. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  459. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  460. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  461. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  462. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  463. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +38 -25
  464. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  465. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  466. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +19 -11
  467. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  468. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  469. package/src/renderers/shaders/ShaderChunk.js +0 -2
  470. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  472. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  473. package/src/renderers/shaders/ShaderLib.js +2 -1
  474. package/src/renderers/shaders/UniformsLib.js +3 -0
  475. package/src/renderers/shaders/UniformsUtils.js +10 -1
  476. package/src/renderers/webgl/WebGLAttributes.js +42 -38
  477. package/src/renderers/webgl/WebGLBackground.js +24 -3
  478. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  479. package/src/renderers/webgl/WebGLBufferRenderer.js +23 -22
  480. package/src/renderers/webgl/WebGLCapabilities.js +44 -13
  481. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  482. package/src/renderers/webgl/WebGLExtensions.js +7 -20
  483. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +23 -21
  484. package/src/renderers/webgl/WebGLLights.js +21 -44
  485. package/src/renderers/webgl/WebGLMaterials.js +9 -8
  486. package/src/renderers/webgl/WebGLMorphtargets.js +78 -217
  487. package/src/renderers/webgl/WebGLProgram.js +46 -78
  488. package/src/renderers/webgl/WebGLPrograms.js +37 -40
  489. package/src/renderers/webgl/WebGLProperties.js +7 -0
  490. package/src/renderers/webgl/WebGLRenderStates.js +15 -9
  491. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  492. package/src/renderers/webgl/WebGLState.js +35 -58
  493. package/src/renderers/webgl/WebGLTextures.js +313 -358
  494. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  495. package/src/renderers/webgl/WebGLUniformsGroups.js +8 -8
  496. package/src/renderers/webgl/WebGLUtils.js +9 -78
  497. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +389 -152
  498. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +145 -0
  499. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +245 -44
  500. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +7 -1
  501. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +2 -0
  502. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  503. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +21 -3
  504. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +271 -43
  505. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +6 -23
  506. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +318 -141
  507. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
  508. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +10 -7
  509. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
  510. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
  511. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +424 -95
  512. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  513. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +37 -18
  514. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +86 -32
  515. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +10 -1
  516. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +68 -27
  517. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  518. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +235 -68
  519. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +43 -5
  520. package/src/renderers/webxr/WebXRDepthSensing.js +11 -6
  521. package/src/renderers/webxr/WebXRManager.js +53 -38
  522. package/src/scenes/Scene.js +7 -1
  523. package/src/textures/CompressedArrayTexture.js +14 -0
  524. package/src/textures/DataArrayTexture.js +14 -0
  525. package/src/textures/DepthTexture.js +1 -3
  526. package/src/textures/Texture.js +12 -2
  527. package/src/utils.js +62 -1
  528. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  529. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  530. package/examples/jsm/loaders/TiltLoader.js +0 -520
  531. package/examples/jsm/nodes/Nodes.js +0 -195
  532. package/examples/jsm/nodes/accessors/AccessorsUtils.js +0 -10
  533. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  534. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  535. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  536. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  537. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  538. package/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  539. package/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  540. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  541. package/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  542. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  543. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  544. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  545. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  546. package/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -72
  547. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  548. package/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  549. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  550. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  551. package/examples/jsm/nodes/core/IndexNode.js +0 -66
  552. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  553. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  554. package/examples/jsm/nodes/core/PropertyNode.js +0 -72
  555. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  556. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  557. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  558. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  559. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  560. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  561. package/examples/jsm/nodes/display/PassNode.js +0 -183
  562. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  563. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  564. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  565. package/examples/jsm/nodes/display/ViewportNode.js +0 -134
  566. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  567. package/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  568. package/examples/jsm/nodes/fog/FogNode.js +0 -38
  569. package/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  570. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  571. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  572. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  573. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  574. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  575. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  576. package/examples/jsm/nodes/lighting/LightNode.js +0 -57
  577. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  578. package/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  579. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  580. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  581. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  582. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  583. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  584. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  585. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  586. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  587. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  588. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +0 -130
  589. package/examples/jsm/nodes/math/HashNode.js +0 -34
  590. package/examples/jsm/nodes/math/MathNode.js +0 -391
  591. package/examples/jsm/nodes/math/OperatorNode.js +0 -274
  592. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  593. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  594. package/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  595. package/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  596. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  597. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  598. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  599. package/examples/jsm/objects/QuadMesh.js +0 -66
  600. package/examples/jsm/renderers/common/Bindings.js +0 -173
  601. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  602. package/examples/jsm/renderers/common/PostProcessing.js +0 -25
  603. package/examples/jsm/renderers/common/RenderObject.js +0 -221
  604. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  605. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  606. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  607. package/examples/jsm/utils/GPUStatsPanel.js +0 -128
  608. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  609. package/src/renderers/WebGL1Renderer.js +0 -7
  610. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  611. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  612. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  613. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  614. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  615. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  616. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  617. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  618. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  619. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  620. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  621. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  622. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  623. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  624. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  625. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  626. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  627. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  628. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  629. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  630. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  631. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  632. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  633. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  634. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  635. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -39,8 +39,7 @@ const ColorifyShader = {
39
39
 
40
40
  vec4 texel = texture2D( tDiffuse, vUv );
41
41
 
42
- vec3 luma = vec3( 0.299, 0.587, 0.114 );
43
- float v = dot( texel.xyz, luma );
42
+ float v = luminance( texel.xyz );
44
43
 
45
44
  gl_FragColor = vec4( v * color, texel.w );
46
45
 
@@ -220,11 +220,9 @@ const FXAAShader = {
220
220
  vec2 posN = posM;
221
221
  vec2 posP = posM;
222
222
 
223
- int iterationsUsed = 0;
224
223
  int iterationsUsedN = 0;
225
224
  int iterationsUsedP = 0;
226
225
  for( int i = 0; i < NUM_SAMPLES; i++ ) {
227
- iterationsUsed = i;
228
226
 
229
227
  float increment = float(i + 1);
230
228
 
@@ -203,7 +203,7 @@ const GTAOShader = {
203
203
 
204
204
  const int DIRECTIONS = SAMPLES < 30 ? 3 : 5;
205
205
  const int STEPS = (SAMPLES + DIRECTIONS - 1) / DIRECTIONS;
206
- float ao = 0.0, totalWeight = 0.0;
206
+ float ao = 0.0;
207
207
  for (int i = 0; i < DIRECTIONS; ++i) {
208
208
 
209
209
  float angle = float(i) / float(DIRECTIONS) * PI;
@@ -49,9 +49,7 @@ const LuminosityHighPassShader = {
49
49
 
50
50
  vec4 texel = texture2D( tDiffuse, vUv );
51
51
 
52
- vec3 luma = vec3( 0.299, 0.587, 0.114 );
53
-
54
- float v = dot( texel.xyz, luma );
52
+ float v = luminance( texel.xyz );
55
53
 
56
54
  vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
57
55
 
@@ -54,7 +54,7 @@ const OutputShader = {
54
54
 
55
55
  #elif defined( CINEON_TONE_MAPPING )
56
56
 
57
- gl_FragColor.rgb = OptimizedCineonToneMapping( gl_FragColor.rgb );
57
+ gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb );
58
58
 
59
59
  #elif defined( ACES_FILMIC_TONE_MAPPING )
60
60
 
@@ -22,6 +22,14 @@ const precedenceOperators = [
22
22
  ','
23
23
  ].reverse();
24
24
 
25
+ const associativityRightToLeft = [
26
+ '=',
27
+ '+=', '-=', '*=', '/=', '%=', '^=', '&=', '|=', '<<=', '>>=',
28
+ ',',
29
+ '?',
30
+ ':'
31
+ ];
32
+
25
33
  const spaceRegExp = /^((\t| )\n*)+/;
26
34
  const lineRegExp = /^\n+/;
27
35
  const commentRegExp = /^\/\*[\s\S]*?\*\//;
@@ -218,7 +226,7 @@ class GLSLDecoder {
218
226
 
219
227
  this._currentFunction = null;
220
228
 
221
- this.addPolyfill( 'gl_FragCoord', 'vec2 gl_FragCoord = vec2( viewportCoordinate.x, viewportCoordinate.y.oneMinus() );' );
229
+ this.addPolyfill( 'gl_FragCoord', 'vec3 gl_FragCoord = vec3( screenCoordinate.x, screenCoordinate.y.oneMinus(), screenCoordinate.z );' );
222
230
 
223
231
  }
224
232
 
@@ -297,13 +305,13 @@ class GLSLDecoder {
297
305
 
298
306
  for ( const operator of precedenceOperators ) {
299
307
 
300
- for ( let i = 0; i < tokens.length; i ++ ) {
308
+ const parseToken = ( i, inverse = false ) => {
301
309
 
302
310
  const token = tokens[ i ];
303
311
 
304
312
  groupIndex += getGroupDelta( token.str );
305
313
 
306
- if ( ! token.isOperator || i === 0 || i === tokens.length - 1 ) continue;
314
+ if ( ! token.isOperator || i === 0 || i === tokens.length - 1 ) return;
307
315
 
308
316
  if ( groupIndex === 0 && token.str === operator ) {
309
317
 
@@ -330,9 +338,43 @@ class GLSLDecoder {
330
338
 
331
339
  }
332
340
 
333
- if ( groupIndex < 0 ) {
341
+ if ( inverse ) {
342
+
343
+ if ( groupIndex > 0 ) {
344
+
345
+ return this.parseExpressionFromTokens( tokens.slice( i ) );
346
+
347
+ }
348
+
349
+ } else {
350
+
351
+ if ( groupIndex < 0 ) {
352
+
353
+ return this.parseExpressionFromTokens( tokens.slice( 0, i ) );
354
+
355
+ }
356
+
357
+ }
358
+
359
+ };
360
+
361
+ if ( associativityRightToLeft.includes( operator ) ) {
362
+
363
+ for ( let i = 0; i < tokens.length; i ++ ) {
364
+
365
+ const result = parseToken( i );
366
+
367
+ if ( result ) return result;
368
+
369
+ }
370
+
371
+ } else {
372
+
373
+ for ( let i = tokens.length - 1; i >= 0; i -- ) {
374
+
375
+ const result = parseToken( i, true );
334
376
 
335
- return this.parseExpressionFromTokens( tokens.slice( 0, i ) );
377
+ if ( result ) return result;
336
378
 
337
379
  }
338
380
 
@@ -8,8 +8,8 @@ class ShaderToyDecoder extends GLSLDecoder {
8
8
  super();
9
9
 
10
10
  this.addPolyfill( 'iTime', 'float iTime = timerGlobal();' );
11
- this.addPolyfill( 'iResolution', 'vec2 iResolution = viewportResolution;' );
12
- this.addPolyfill( 'fragCoord', 'vec2 fragCoord = vec2( viewportCoordinate.x, viewportResolution.y - viewportCoordinate.y );' );
11
+ this.addPolyfill( 'iResolution', 'vec2 iResolution = screenSize;' );
12
+ this.addPolyfill( 'fragCoord', 'vec3 fragCoord = vec3( screenCoordinate.x, screenSize.y - screenCoordinate.y, screenCoordinate.z );' );
13
13
 
14
14
  }
15
15
 
@@ -1,6 +1,6 @@
1
- import { REVISION } from 'three';
1
+ import * as THREE from 'three';
2
+
2
3
  import { VariableDeclaration, Accessor } from './AST.js';
3
- import * as Nodes from '../nodes/Nodes.js';
4
4
 
5
5
  const opLib = {
6
6
  '=': 'assign',
@@ -53,7 +53,6 @@ class TSLEncoder {
53
53
  this.imports = new Set();
54
54
  this.global = new Set();
55
55
  this.overloadings = new Map();
56
- this.layoutsCode = '';
57
56
  this.iife = false;
58
57
  this.uniqueNames = false;
59
58
  this.reference = false;
@@ -69,7 +68,7 @@ class TSLEncoder {
69
68
 
70
69
  name = name.split( '.' )[ 0 ];
71
70
 
72
- if ( Nodes[ name ] !== undefined && this.global.has( name ) === false && this._currentProperties[ name ] === undefined ) {
71
+ if ( THREE[ name ] !== undefined && this.global.has( name ) === false && this._currentProperties[ name ] === undefined ) {
73
72
 
74
73
  this.imports.add( name );
75
74
 
@@ -323,9 +322,9 @@ class TSLEncoder {
323
322
  const leftStr = this.emitExpression( node.left );
324
323
  const rightStr = this.emitExpression( node.right );
325
324
 
326
- this.addImport( 'cond' );
325
+ this.addImport( 'select' );
327
326
 
328
- return `cond( ${ condStr }, ${ leftStr }, ${ rightStr } )`;
327
+ return `select( ${ condStr }, ${ leftStr }, ${ rightStr } )`;
329
328
 
330
329
  }
331
330
 
@@ -350,7 +349,7 @@ ${ this.tab }} )`;
350
349
 
351
350
  const elseCondStr = this.emitExpression( current.elseConditional.cond );
352
351
 
353
- ifStr += `.elseif( ${ elseCondStr }, () => {
352
+ ifStr += `.ElseIf( ${ elseCondStr }, () => {
354
353
 
355
354
  ${ elseBodyStr }
356
355
 
@@ -358,7 +357,7 @@ ${ this.tab }} )`;
358
357
 
359
358
  } else {
360
359
 
361
- ifStr += `.else( () => {
360
+ ifStr += `.Else( () => {
362
361
 
363
362
  ${ elseBodyStr }
364
363
 
@@ -392,13 +391,13 @@ ${ this.tab }} )`;
392
391
  const conditionParam = condition !== '<' ? `, condition: '${ condition }'` : '';
393
392
  const updateParam = update !== '++' ? `, update: '${ update }'` : '';
394
393
 
395
- let loopStr = `loop( { start: ${ start }, end: ${ end + nameParam + typeParam + conditionParam + updateParam } }, ( { ${ name } } ) => {\n\n`;
394
+ let loopStr = `Loop( { start: ${ start }, end: ${ end + nameParam + typeParam + conditionParam + updateParam } }, ( { ${ name } } ) => {\n\n`;
396
395
 
397
396
  loopStr += this.emitBody( node.body ) + '\n\n';
398
397
 
399
398
  loopStr += this.tab + '} )';
400
399
 
401
- this.imports.add( 'loop' );
400
+ this.imports.add( 'Loop' );
402
401
 
403
402
  return loopStr;
404
403
 
@@ -502,7 +501,9 @@ ${ this.tab }} )`;
502
501
 
503
502
  this.addImport( 'overloadingFn' );
504
503
 
505
- return `const ${ name } = overloadingFn( [ ${ nodes.map( node => node.name + '_' + nodes.indexOf( node ) ).join( ', ' ) } ] );\n`;
504
+ const prefix = this.iife === false ? 'export ' : '';
505
+
506
+ return `${ prefix }const ${ name } = /*#__PURE__*/ overloadingFn( [ ${ nodes.map( node => node.name + '_' + nodes.indexOf( node ) ).join( ', ' ) } ] );\n`;
506
507
 
507
508
  }
508
509
 
@@ -583,11 +584,13 @@ ${ this.tab }} )`;
583
584
 
584
585
  }
585
586
 
586
- let funcStr = `const ${ fnName } = tslFn( (${ paramsStr }) => {
587
+ const prefix = this.iife === false ? 'export ' : '';
588
+
589
+ let funcStr = `${ prefix }const ${ fnName } = /*#__PURE__*/ Fn( (${ paramsStr }) => {
587
590
 
588
591
  ${ bodyStr }
589
592
 
590
- ${ this.tab }} );\n`;
593
+ ${ this.tab }} )`;
591
594
 
592
595
  const layoutInput = inputs.length > 0 ? '\n\t\t' + this.tab + inputs.join( ',\n\t\t' + this.tab ) + '\n\t' + this.tab : '';
593
596
 
@@ -595,15 +598,17 @@ ${ this.tab }} );\n`;
595
598
 
596
599
  const uniqueName = this.uniqueNames ? fnName + '_' + Math.random().toString( 36 ).slice( 2 ) : fnName;
597
600
 
598
- this.layoutsCode += `${ this.tab + fnName }.setLayout( {
601
+ funcStr += `.setLayout( {
599
602
  ${ this.tab }\tname: '${ uniqueName }',
600
603
  ${ this.tab }\ttype: '${ type }',
601
604
  ${ this.tab }\tinputs: [${ layoutInput }]
602
- ${ this.tab }} );\n\n`;
605
+ ${ this.tab }} )`;
603
606
 
604
607
  }
605
608
 
606
- this.imports.add( 'tslFn' );
609
+ funcStr += ';\n';
610
+
611
+ this.imports.add( 'Fn' );
607
612
 
608
613
  this.global.add( node.name );
609
614
 
@@ -685,9 +690,7 @@ ${ this.tab }} );\n\n`;
685
690
  const imports = [ ...this.imports ];
686
691
  const exports = [ ...this.global ];
687
692
 
688
- const layouts = this.layoutsCode.length > 0 ? `\n${ this.tab }// layouts\n\n` + this.layoutsCode : '';
689
-
690
- let header = '// Three.js Transpiler r' + REVISION + '\n\n';
693
+ let header = '// Three.js Transpiler r' + THREE.REVISION + '\n\n';
691
694
  let footer = '';
692
695
 
693
696
  if ( this.iife ) {
@@ -701,12 +704,11 @@ ${ this.tab }} );\n\n`;
701
704
 
702
705
  } else {
703
706
 
704
- header += imports.length > 0 ? 'import { ' + imports.join( ', ' ) + ' } from \'three/nodes\';\n' : '';
705
- footer += exports.length > 0 ? 'export { ' + exports.join( ', ' ) + ' };\n' : '';
707
+ header += imports.length > 0 ? 'import { ' + imports.join( ', ' ) + ' } from \'three/tsl\';\n' : '';
706
708
 
707
709
  }
708
710
 
709
- return header + code + layouts + footer;
711
+ return header + code + footer;
710
712
 
711
713
  }
712
714
 
@@ -623,20 +623,22 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
623
623
  const name = attributeNames[ i ];
624
624
  const attr = geometry.attributes[ name ];
625
625
 
626
- tmpAttributes[ name ] = new BufferAttribute(
626
+ tmpAttributes[ name ] = new attr.constructor(
627
627
  new attr.array.constructor( attr.count * attr.itemSize ),
628
628
  attr.itemSize,
629
629
  attr.normalized
630
630
  );
631
631
 
632
- const morphAttr = geometry.morphAttributes[ name ];
633
- if ( morphAttr ) {
632
+ const morphAttributes = geometry.morphAttributes[ name ];
633
+ if ( morphAttributes ) {
634
634
 
635
- tmpMorphAttributes[ name ] = new BufferAttribute(
636
- new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize ),
637
- morphAttr.itemSize,
638
- morphAttr.normalized
639
- );
635
+ if ( ! tmpMorphAttributes[ name ] ) tmpMorphAttributes[ name ] = [];
636
+ morphAttributes.forEach( ( morphAttr, i ) => {
637
+
638
+ const array = new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize );
639
+ tmpMorphAttributes[ name ][ i ] = new morphAttr.constructor( array, morphAttr.itemSize, morphAttr.normalized );
640
+
641
+ } );
640
642
 
641
643
  }
642
644
 
@@ -681,22 +683,22 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
681
683
 
682
684
  const name = attributeNames[ j ];
683
685
  const attribute = geometry.getAttribute( name );
684
- const morphAttr = geometry.morphAttributes[ name ];
686
+ const morphAttributes = geometry.morphAttributes[ name ];
685
687
  const itemSize = attribute.itemSize;
686
- const newarray = tmpAttributes[ name ];
688
+ const newArray = tmpAttributes[ name ];
687
689
  const newMorphArrays = tmpMorphAttributes[ name ];
688
690
 
689
691
  for ( let k = 0; k < itemSize; k ++ ) {
690
692
 
691
693
  const getterFunc = getters[ k ];
692
694
  const setterFunc = setters[ k ];
693
- newarray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );
695
+ newArray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );
694
696
 
695
- if ( morphAttr ) {
697
+ if ( morphAttributes ) {
696
698
 
697
- for ( let m = 0, ml = morphAttr.length; m < ml; m ++ ) {
699
+ for ( let m = 0, ml = morphAttributes.length; m < ml; m ++ ) {
698
700
 
699
- newMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttr[ m ][ getterFunc ]( index ) );
701
+ newMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttributes[ m ][ getterFunc ]( index ) );
700
702
 
701
703
  }
702
704
 
@@ -720,7 +722,7 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
720
722
 
721
723
  const tmpAttribute = tmpAttributes[ name ];
722
724
 
723
- result.setAttribute( name, new BufferAttribute(
725
+ result.setAttribute( name, new tmpAttribute.constructor(
724
726
  tmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ),
725
727
  tmpAttribute.itemSize,
726
728
  tmpAttribute.normalized,
@@ -732,7 +734,7 @@ function mergeVertices( geometry, tolerance = 1e-4 ) {
732
734
 
733
735
  const tmpMorphAttribute = tmpMorphAttributes[ name ][ j ];
734
736
 
735
- result.morphAttributes[ name ][ j ] = new BufferAttribute(
737
+ result.morphAttributes[ name ][ j ] = new tmpMorphAttribute.constructor(
736
738
  tmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ),
737
739
  tmpMorphAttribute.itemSize,
738
740
  tmpMorphAttribute.normalized,
@@ -11,27 +11,19 @@ import {
11
11
  Matrix4,
12
12
  Vector3
13
13
  } from 'three';
14
- import { PackedPhongMaterial } from './PackedPhongMaterial.js';
15
14
 
16
15
 
17
16
 
18
17
  /**
19
- * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.
20
- * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the normal data.
18
+ * Make the input geometry's normal attribute encoded and compressed by 3 different methods.
21
19
  *
22
- * @param {THREE.Mesh} mesh
20
+ * @param {THREE.BufferGeometry} geometry
23
21
  * @param {String} encodeMethod "DEFAULT" || "OCT1Byte" || "OCT2Byte" || "ANGLES"
24
22
  *
25
23
  */
26
- function compressNormals( mesh, encodeMethod ) {
24
+ function compressNormals( geometry, encodeMethod ) {
27
25
 
28
- if ( ! mesh.geometry ) {
29
-
30
- console.error( 'Mesh must contain geometry. ' );
31
-
32
- }
33
-
34
- const normal = mesh.geometry.attributes.normal;
26
+ const normal = geometry.attributes.normal;
35
27
 
36
28
  if ( ! normal ) {
37
29
 
@@ -66,8 +58,8 @@ function compressNormals( mesh, encodeMethod ) {
66
58
 
67
59
  }
68
60
 
69
- mesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 3, true ) );
70
- mesh.geometry.attributes.normal.bytes = result.length * 1;
61
+ geometry.setAttribute( 'normal', new BufferAttribute( result, 3, true ) );
62
+ geometry.attributes.normal.bytes = result.length * 1;
71
63
 
72
64
  } else if ( encodeMethod == 'OCT1Byte' ) {
73
65
 
@@ -88,8 +80,8 @@ function compressNormals( mesh, encodeMethod ) {
88
80
 
89
81
  }
90
82
 
91
- mesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
92
- mesh.geometry.attributes.normal.bytes = result.length * 1;
83
+ geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
84
+ geometry.attributes.normal.bytes = result.length * 1;
93
85
 
94
86
  } else if ( encodeMethod == 'OCT2Byte' ) {
95
87
 
@@ -104,8 +96,8 @@ function compressNormals( mesh, encodeMethod ) {
104
96
 
105
97
  }
106
98
 
107
- mesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
108
- mesh.geometry.attributes.normal.bytes = result.length * 2;
99
+ geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
100
+ geometry.attributes.normal.bytes = result.length * 2;
109
101
 
110
102
  } else if ( encodeMethod == 'ANGLES' ) {
111
103
 
@@ -120,8 +112,8 @@ function compressNormals( mesh, encodeMethod ) {
120
112
 
121
113
  }
122
114
 
123
- mesh.geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
124
- mesh.geometry.attributes.normal.bytes = result.length * 2;
115
+ geometry.setAttribute( 'normal', new BufferAttribute( result, 2, true ) );
116
+ geometry.attributes.normal.bytes = result.length * 2;
125
117
 
126
118
  } else {
127
119
 
@@ -129,60 +121,22 @@ function compressNormals( mesh, encodeMethod ) {
129
121
 
130
122
  }
131
123
 
132
- mesh.geometry.attributes.normal.needsUpdate = true;
133
- mesh.geometry.attributes.normal.isPacked = true;
134
- mesh.geometry.attributes.normal.packingMethod = encodeMethod;
135
-
136
- // modify material
137
- if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {
138
-
139
- mesh.material = new PackedPhongMaterial().copy( mesh.material );
140
-
141
- }
142
-
143
- if ( encodeMethod == 'ANGLES' ) {
144
-
145
- mesh.material.defines.USE_PACKED_NORMAL = 0;
146
-
147
- }
148
-
149
- if ( encodeMethod == 'OCT1Byte' ) {
150
-
151
- mesh.material.defines.USE_PACKED_NORMAL = 1;
152
-
153
- }
154
-
155
- if ( encodeMethod == 'OCT2Byte' ) {
156
-
157
- mesh.material.defines.USE_PACKED_NORMAL = 1;
158
-
159
- }
160
-
161
- if ( encodeMethod == 'DEFAULT' ) {
162
-
163
- mesh.material.defines.USE_PACKED_NORMAL = 2;
164
-
165
- }
124
+ geometry.attributes.normal.needsUpdate = true;
125
+ geometry.attributes.normal.isPacked = true;
126
+ geometry.attributes.normal.packingMethod = encodeMethod;
166
127
 
167
128
  }
168
129
 
169
130
 
170
131
  /**
171
- * Make the input mesh.geometry's position attribute encoded and compressed.
172
- * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the position data.
132
+ * Make the input geometry's position attribute encoded and compressed.
173
133
  *
174
- * @param {THREE.Mesh} mesh
134
+ * @param {THREE.BufferGeometry} geometry
175
135
  *
176
136
  */
177
- function compressPositions( mesh ) {
137
+ function compressPositions( geometry ) {
178
138
 
179
- if ( ! mesh.geometry ) {
180
-
181
- console.error( 'Mesh must contain geometry. ' );
182
-
183
- }
184
-
185
- const position = mesh.geometry.attributes.position;
139
+ const position = geometry.attributes.position;
186
140
 
187
141
  if ( ! position ) {
188
142
 
@@ -204,47 +158,27 @@ function compressPositions( mesh ) {
204
158
  const result = quantizedEncode( array, encodingBytes );
205
159
 
206
160
  const quantized = result.quantized;
207
- const decodeMat = result.decodeMat;
208
161
 
209
162
  // IMPORTANT: calculate original geometry bounding info first, before updating packed positions
210
- if ( mesh.geometry.boundingBox == null ) mesh.geometry.computeBoundingBox();
211
- if ( mesh.geometry.boundingSphere == null ) mesh.geometry.computeBoundingSphere();
163
+ if ( geometry.boundingBox == null ) geometry.computeBoundingBox();
164
+ if ( geometry.boundingSphere == null ) geometry.computeBoundingSphere();
212
165
 
213
- mesh.geometry.setAttribute( 'position', new BufferAttribute( quantized, 3 ) );
214
- mesh.geometry.attributes.position.isPacked = true;
215
- mesh.geometry.attributes.position.needsUpdate = true;
216
- mesh.geometry.attributes.position.bytes = quantized.length * encodingBytes;
217
-
218
- // modify material
219
- if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {
220
-
221
- mesh.material = new PackedPhongMaterial().copy( mesh.material );
222
-
223
- }
224
-
225
- mesh.material.defines.USE_PACKED_POSITION = 0;
226
-
227
- mesh.material.uniforms.quantizeMatPos.value = decodeMat;
228
- mesh.material.uniforms.quantizeMatPos.needsUpdate = true;
166
+ geometry.setAttribute( 'position', new BufferAttribute( quantized, 3 ) );
167
+ geometry.attributes.position.isPacked = true;
168
+ geometry.attributes.position.needsUpdate = true;
169
+ geometry.attributes.position.bytes = quantized.length * encodingBytes;
229
170
 
230
171
  }
231
172
 
232
173
  /**
233
- * Make the input mesh.geometry's uv attribute encoded and compressed.
234
- * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the uv data.
174
+ * Make the input geometry's uv attribute encoded and compressed.
235
175
  *
236
- * @param {THREE.Mesh} mesh
176
+ * @param {THREE.BufferGeometry} geometry
237
177
  *
238
178
  */
239
- function compressUvs( mesh ) {
179
+ function compressUvs( geometry ) {
240
180
 
241
- if ( ! mesh.geometry ) {
242
-
243
- console.error( 'Mesh must contain geometry property. ' );
244
-
245
- }
246
-
247
- const uvs = mesh.geometry.attributes.uv;
181
+ const uvs = geometry.attributes.uv;
248
182
 
249
183
  if ( ! uvs ) {
250
184
 
@@ -281,39 +215,20 @@ function compressUvs( mesh ) {
281
215
 
282
216
  }
283
217
 
284
- mesh.geometry.setAttribute( 'uv', new BufferAttribute( result, 2, true ) );
285
- mesh.geometry.attributes.uv.isPacked = true;
286
- mesh.geometry.attributes.uv.needsUpdate = true;
287
- mesh.geometry.attributes.uv.bytes = result.length * 2;
288
-
289
- if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {
290
-
291
- mesh.material = new PackedPhongMaterial().copy( mesh.material );
292
-
293
- }
294
-
295
- mesh.material.defines.USE_PACKED_UV = 0;
218
+ geometry.setAttribute( 'uv', new BufferAttribute( result, 2, true ) );
219
+ geometry.attributes.uv.isPacked = true;
220
+ geometry.attributes.uv.needsUpdate = true;
221
+ geometry.attributes.uv.bytes = result.length * 2;
296
222
 
297
223
  } else {
298
224
 
299
225
  // use quantized encoding method
300
226
  result = quantizedEncodeUV( array, 2 );
301
227
 
302
- mesh.geometry.setAttribute( 'uv', new BufferAttribute( result.quantized, 2 ) );
303
- mesh.geometry.attributes.uv.isPacked = true;
304
- mesh.geometry.attributes.uv.needsUpdate = true;
305
- mesh.geometry.attributes.uv.bytes = result.quantized.length * 2;
306
-
307
- if ( ! ( mesh.material instanceof PackedPhongMaterial ) ) {
308
-
309
- mesh.material = new PackedPhongMaterial().copy( mesh.material );
310
-
311
- }
312
-
313
- mesh.material.defines.USE_PACKED_UV = 1;
314
-
315
- mesh.material.uniforms.quantizeMatUV.value = result.decodeMat;
316
- mesh.material.uniforms.quantizeMatUV.needsUpdate = true;
228
+ geometry.setAttribute( 'uv', new BufferAttribute( result.quantized, 2 ) );
229
+ geometry.attributes.uv.isPacked = true;
230
+ geometry.attributes.uv.needsUpdate = true;
231
+ geometry.attributes.uv.bytes = result.quantized.length * 2;
317
232
 
318
233
  }
319
234