super-three 0.171.0 → 0.173.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +594 -427
  4. package/build/three.core.js +515 -81
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +79 -350
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +20 -7
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +29362 -3427
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +29361 -3427
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +0 -5
  15. package/examples/jsm/animation/CCDIKSolver.js +9 -7
  16. package/examples/jsm/capabilities/WebGPU.js +1 -1
  17. package/examples/jsm/controls/ArcballControls.js +48 -37
  18. package/examples/jsm/controls/OrbitControls.js +5 -4
  19. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  20. package/examples/jsm/curves/NURBSCurve.js +1 -1
  21. package/examples/jsm/curves/NURBSUtils.js +3 -0
  22. package/examples/jsm/effects/OutlineEffect.js +1 -1
  23. package/examples/jsm/exporters/GLTFExporter.js +34 -29
  24. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +2 -2
  26. package/examples/jsm/geometries/TextGeometry.js +1 -12
  27. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  28. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  29. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  30. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  31. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  32. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  33. package/examples/jsm/loaders/3MFLoader.js +6 -3
  34. package/examples/jsm/loaders/BVHLoader.js +1 -1
  35. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  36. package/examples/jsm/loaders/DDSLoader.js +42 -0
  37. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  38. package/examples/jsm/loaders/GLTFLoader.js +22 -4
  39. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  40. package/examples/jsm/loaders/KTXLoader.js +4 -4
  41. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  42. package/examples/jsm/loaders/LottieLoader.js +1 -1
  43. package/examples/jsm/loaders/MTLLoader.js +1 -0
  44. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  45. package/examples/jsm/loaders/PLYLoader.js +7 -7
  46. package/examples/jsm/loaders/PVRLoader.js +1 -1
  47. package/examples/jsm/loaders/SVGLoader.js +2 -2
  48. package/examples/jsm/loaders/TDSLoader.js +1 -2
  49. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  50. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  52. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  53. package/examples/jsm/math/ConvexHull.js +1 -1
  54. package/examples/jsm/math/OBB.js +17 -0
  55. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  56. package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
  57. package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
  58. package/examples/jsm/misc/Volume.js +27 -17
  59. package/examples/jsm/misc/VolumeSlice.js +7 -5
  60. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  61. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  62. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  63. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  64. package/examples/jsm/objects/Sky.js +2 -2
  65. package/examples/jsm/objects/SkyMesh.js +3 -3
  66. package/examples/jsm/objects/Water2.js +1 -1
  67. package/examples/jsm/objects/Water2Mesh.js +2 -2
  68. package/examples/jsm/objects/WaterMesh.js +29 -24
  69. package/examples/jsm/physics/JoltPhysics.js +7 -7
  70. package/examples/jsm/physics/RapierPhysics.js +4 -4
  71. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  72. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  73. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  74. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  75. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  76. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  77. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  78. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  79. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  80. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  81. package/examples/jsm/shaders/BokehShader2.js +1 -1
  82. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  83. package/examples/jsm/shaders/OutputShader.js +5 -1
  84. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  85. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  86. package/examples/jsm/transpiler/TSLEncoder.js +2 -0
  87. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  88. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  89. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  90. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  91. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  92. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  93. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  94. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  95. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  96. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  97. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  98. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  99. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  100. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  101. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  102. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  103. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  104. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  105. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  106. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  107. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  108. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  109. package/examples/jsm/tsl/display/Sepia.js +9 -0
  110. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  111. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  112. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  113. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  114. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  115. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  116. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  117. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  118. package/examples/jsm/utils/CameraUtils.js +4 -1
  119. package/examples/jsm/utils/GeometryUtils.js +22 -19
  120. package/examples/jsm/utils/SceneUtils.js +2 -2
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  122. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  123. package/package.json +8 -3
  124. package/src/Three.Core.js +4 -0
  125. package/src/Three.Legacy.js +0 -21
  126. package/src/Three.TSL.js +18 -5
  127. package/src/Three.WebGPU.Nodes.js +2 -2
  128. package/src/Three.WebGPU.js +2 -2
  129. package/src/animation/PropertyBinding.js +2 -2
  130. package/src/cameras/ArrayCamera.js +1 -0
  131. package/src/cameras/PerspectiveCamera.js +18 -2
  132. package/src/constants.js +6 -1
  133. package/src/core/BufferAttribute.js +4 -0
  134. package/src/core/EventDispatcher.js +8 -6
  135. package/src/core/RenderTarget.js +18 -0
  136. package/src/core/RenderTarget3D.js +22 -0
  137. package/src/core/RenderTargetArray.js +22 -0
  138. package/src/extras/Earcut.js +1 -1
  139. package/src/extras/ImageUtils.js +1 -11
  140. package/src/extras/PMREMGenerator.js +20 -0
  141. package/src/extras/TextureUtils.js +6 -0
  142. package/src/helpers/CameraHelper.js +16 -13
  143. package/src/loaders/nodes/NodeLoader.js +59 -0
  144. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  145. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  146. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  147. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  148. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  149. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  150. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  151. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  152. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  153. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  154. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  155. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  156. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  157. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  158. package/src/materials/nodes/NodeMaterial.js +476 -23
  159. package/src/materials/nodes/NodeMaterials.js +0 -1
  160. package/src/materials/nodes/PointsNodeMaterial.js +121 -10
  161. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  162. package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
  163. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  164. package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
  165. package/src/nodes/Nodes.js +5 -6
  166. package/src/nodes/TSL.js +6 -3
  167. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  168. package/src/nodes/accessors/Arrays.js +47 -6
  169. package/src/nodes/accessors/BatchNode.js +42 -6
  170. package/src/nodes/accessors/Bitangent.js +37 -0
  171. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  172. package/src/nodes/accessors/BufferNode.js +63 -0
  173. package/src/nodes/accessors/BuiltinNode.js +38 -0
  174. package/src/nodes/accessors/Camera.js +113 -3
  175. package/src/nodes/accessors/ClippingNode.js +71 -2
  176. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  177. package/src/nodes/accessors/InstanceNode.js +85 -2
  178. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  179. package/src/nodes/accessors/Lights.js +50 -1
  180. package/src/nodes/accessors/MaterialNode.js +306 -12
  181. package/src/nodes/accessors/MaterialProperties.js +7 -0
  182. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  183. package/src/nodes/accessors/ModelNode.js +100 -5
  184. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  185. package/src/nodes/accessors/MorphNode.js +48 -4
  186. package/src/nodes/accessors/Normal.js +65 -5
  187. package/src/nodes/accessors/Object3DNode.js +101 -1
  188. package/src/nodes/accessors/PointUVNode.js +26 -0
  189. package/src/nodes/accessors/Position.js +56 -7
  190. package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
  191. package/src/nodes/accessors/ReferenceNode.js +201 -2
  192. package/src/nodes/accessors/ReflectVector.js +24 -0
  193. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  194. package/src/nodes/accessors/SceneNode.js +54 -0
  195. package/src/nodes/accessors/SkinningNode.js +127 -1
  196. package/src/nodes/accessors/StorageBufferNode.js +209 -8
  197. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  198. package/src/nodes/accessors/Tangent.js +38 -2
  199. package/src/nodes/accessors/Texture3DNode.js +91 -7
  200. package/src/nodes/accessors/TextureBicubic.js +12 -2
  201. package/src/nodes/accessors/TextureNode.js +316 -10
  202. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  203. package/src/nodes/accessors/UV.js +10 -1
  204. package/src/nodes/accessors/UniformArrayNode.js +231 -25
  205. package/src/nodes/accessors/UserDataNode.js +46 -0
  206. package/src/nodes/accessors/VelocityNode.js +80 -0
  207. package/src/nodes/accessors/VertexColorNode.js +39 -2
  208. package/src/nodes/code/CodeNode.js +95 -1
  209. package/src/nodes/code/ExpressionNode.js +28 -0
  210. package/src/nodes/code/FunctionCallNode.js +37 -0
  211. package/src/nodes/code/FunctionNode.js +45 -0
  212. package/src/nodes/code/ScriptableNode.js +223 -1
  213. package/src/nodes/code/ScriptableValueNode.js +85 -1
  214. package/src/nodes/core/ArrayNode.js +125 -0
  215. package/src/nodes/core/AssignNode.js +48 -2
  216. package/src/nodes/core/AttributeNode.js +43 -0
  217. package/src/nodes/core/BypassNode.js +47 -2
  218. package/src/nodes/core/CacheNode.js +53 -2
  219. package/src/nodes/core/ConstNode.js +32 -0
  220. package/src/nodes/core/ContextNode.js +65 -0
  221. package/src/nodes/core/IndexNode.js +68 -7
  222. package/src/nodes/core/InputNode.js +48 -0
  223. package/src/nodes/core/LightingModel.js +60 -0
  224. package/src/nodes/core/MRTNode.js +66 -0
  225. package/src/nodes/core/Node.js +350 -12
  226. package/src/nodes/core/NodeAttribute.js +38 -0
  227. package/src/nodes/core/NodeBuilder.js +1166 -26
  228. package/src/nodes/core/NodeCache.js +41 -2
  229. package/src/nodes/core/NodeCode.js +31 -0
  230. package/src/nodes/core/NodeFrame.js +123 -2
  231. package/src/nodes/core/NodeFunction.js +46 -0
  232. package/src/nodes/core/NodeFunctionInput.js +44 -0
  233. package/src/nodes/core/NodeParser.js +11 -0
  234. package/src/nodes/core/NodeUniform.js +52 -0
  235. package/src/nodes/core/NodeUtils.js +152 -1
  236. package/src/nodes/core/NodeVar.js +47 -1
  237. package/src/nodes/core/NodeVarying.js +28 -0
  238. package/src/nodes/core/OutputStructNode.js +51 -10
  239. package/src/nodes/core/ParameterNode.js +28 -0
  240. package/src/nodes/core/PropertyNode.js +232 -0
  241. package/src/nodes/core/StackNode.js +98 -1
  242. package/src/nodes/core/StructNode.js +121 -0
  243. package/src/nodes/core/StructType.js +13 -0
  244. package/src/nodes/core/StructTypeNode.js +105 -6
  245. package/src/nodes/core/TempNode.js +31 -5
  246. package/src/nodes/core/UniformGroupNode.js +82 -7
  247. package/src/nodes/core/UniformNode.js +66 -0
  248. package/src/nodes/core/VarNode.js +146 -7
  249. package/src/nodes/core/VaryingNode.js +100 -3
  250. package/src/nodes/core/constants.js +36 -0
  251. package/src/nodes/display/BlendModes.js +88 -1
  252. package/src/nodes/display/BumpMapNode.js +37 -0
  253. package/src/nodes/display/ColorAdjustment.js +53 -11
  254. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  255. package/src/nodes/display/ColorSpaceNode.js +82 -0
  256. package/src/nodes/display/FrontFacingNode.js +29 -0
  257. package/src/nodes/display/NormalMapNode.js +43 -0
  258. package/src/nodes/display/PassNode.js +300 -7
  259. package/src/nodes/display/PosterizeNode.js +33 -0
  260. package/src/nodes/display/RenderOutputNode.js +66 -1
  261. package/src/nodes/display/ScreenNode.js +96 -0
  262. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  263. package/src/nodes/display/ToneMappingNode.js +55 -2
  264. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  265. package/src/nodes/display/ViewportDepthNode.js +122 -8
  266. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  267. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  268. package/src/nodes/display/ViewportTextureNode.js +57 -0
  269. package/src/nodes/fog/Fog.js +110 -0
  270. package/src/nodes/functions/BasicLightingModel.js +24 -0
  271. package/src/nodes/functions/PhongLightingModel.js +34 -2
  272. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  273. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  274. package/src/nodes/functions/ToonLightingModel.js +20 -0
  275. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  276. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  277. package/src/nodes/geometry/RangeNode.js +54 -2
  278. package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
  279. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  280. package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
  281. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  282. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  283. package/src/nodes/lighting/AONode.js +18 -0
  284. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  285. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  286. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  287. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  288. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  289. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  290. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  291. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  292. package/src/nodes/lighting/IrradianceNode.js +17 -0
  293. package/src/nodes/lighting/LightProbeNode.js +20 -0
  294. package/src/nodes/lighting/LightUtils.js +12 -0
  295. package/src/nodes/lighting/LightingContextNode.js +48 -0
  296. package/src/nodes/lighting/LightingNode.js +15 -6
  297. package/src/nodes/lighting/LightsNode.js +132 -1
  298. package/src/nodes/lighting/PointLightNode.js +32 -1
  299. package/src/nodes/lighting/PointShadowNode.js +54 -1
  300. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  301. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  302. package/src/nodes/lighting/ShadowNode.js +241 -35
  303. package/src/nodes/lighting/SpotLightNode.js +43 -0
  304. package/src/nodes/math/ConditionalNode.js +78 -4
  305. package/src/nodes/math/Hash.js +9 -0
  306. package/src/nodes/math/MathNode.js +627 -11
  307. package/src/nodes/math/MathUtils.js +45 -1
  308. package/src/nodes/math/OperatorNode.js +329 -18
  309. package/src/nodes/math/TriNoise3D.js +18 -7
  310. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  311. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  312. package/src/nodes/pmrem/PMREMNode.js +133 -0
  313. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  314. package/src/nodes/procedural/Checker.js +9 -0
  315. package/src/nodes/shapes/Shapes.js +33 -0
  316. package/src/nodes/tsl/TSLBase.js +3 -2
  317. package/src/nodes/tsl/TSLCore.js +22 -2
  318. package/src/nodes/utils/ArrayElementNode.js +39 -3
  319. package/src/nodes/utils/ConvertNode.js +31 -0
  320. package/src/nodes/utils/CubeMapNode.js +78 -0
  321. package/src/nodes/utils/Discard.js +16 -0
  322. package/src/nodes/utils/EquirectUVNode.js +31 -1
  323. package/src/nodes/utils/FlipNode.js +38 -0
  324. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  325. package/src/nodes/utils/JoinNode.js +25 -0
  326. package/src/nodes/utils/LoopNode.js +82 -2
  327. package/src/nodes/utils/MatcapUVNode.js +17 -0
  328. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  329. package/src/nodes/utils/MemberNode.js +68 -0
  330. package/src/nodes/utils/Oscillators.js +33 -0
  331. package/src/nodes/utils/Packing.js +17 -0
  332. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  333. package/src/nodes/utils/RTTNode.js +123 -2
  334. package/src/nodes/utils/ReflectorNode.js +174 -4
  335. package/src/nodes/utils/RemapNode.js +79 -0
  336. package/src/nodes/utils/RotateNode.js +41 -0
  337. package/src/nodes/utils/SetNode.js +44 -1
  338. package/src/nodes/utils/SplitNode.js +55 -3
  339. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  340. package/src/nodes/utils/SpriteUtils.js +17 -0
  341. package/src/nodes/utils/StorageArrayElementNode.js +54 -0
  342. package/src/nodes/utils/Timer.js +40 -0
  343. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  344. package/src/nodes/utils/UVUtils.js +20 -0
  345. package/src/nodes/utils/ViewportUtils.js +13 -0
  346. package/src/objects/BatchedMesh.js +2 -3
  347. package/src/objects/ClippingGroup.js +49 -0
  348. package/src/objects/Line.js +6 -6
  349. package/src/renderers/WebGLRenderer.js +30 -4
  350. package/src/renderers/common/Animation.js +85 -0
  351. package/src/renderers/common/Attributes.js +36 -0
  352. package/src/renderers/common/Backend.js +502 -44
  353. package/src/renderers/common/Background.js +48 -1
  354. package/src/renderers/common/BindGroup.js +43 -0
  355. package/src/renderers/common/Binding.js +35 -0
  356. package/src/renderers/common/Bindings.js +93 -1
  357. package/src/renderers/common/Buffer.js +49 -0
  358. package/src/renderers/common/BufferUtils.js +27 -0
  359. package/src/renderers/common/BundleGroup.js +57 -0
  360. package/src/renderers/common/ChainMap.js +45 -6
  361. package/src/renderers/common/ClippingContext.js +108 -15
  362. package/src/renderers/common/Color4.js +40 -0
  363. package/src/renderers/common/ComputePipeline.js +24 -0
  364. package/src/renderers/common/CubeRenderTarget.js +13 -0
  365. package/src/renderers/common/DataMap.js +37 -1
  366. package/src/renderers/common/Geometries.js +91 -14
  367. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  368. package/src/renderers/common/Info.js +78 -35
  369. package/src/renderers/common/Lighting.js +34 -6
  370. package/src/renderers/common/Pipeline.js +22 -0
  371. package/src/renderers/common/Pipelines.js +148 -5
  372. package/src/renderers/common/PostProcessing.js +99 -11
  373. package/src/renderers/common/ProgrammableStage.js +60 -2
  374. package/src/renderers/common/QuadMesh.js +54 -5
  375. package/src/renderers/common/RenderBundle.js +14 -8
  376. package/src/renderers/common/RenderBundles.js +39 -10
  377. package/src/renderers/common/RenderContext.js +201 -2
  378. package/src/renderers/common/RenderContexts.js +59 -6
  379. package/src/renderers/common/RenderList.js +178 -0
  380. package/src/renderers/common/RenderLists.js +40 -3
  381. package/src/renderers/common/RenderObject.js +400 -17
  382. package/src/renderers/common/RenderObjects.js +103 -7
  383. package/src/renderers/common/RenderPipeline.js +24 -0
  384. package/src/renderers/common/Renderer.js +1170 -86
  385. package/src/renderers/common/RendererUtils.js +193 -0
  386. package/src/renderers/common/SampledTexture.js +120 -0
  387. package/src/renderers/common/Sampler.js +30 -0
  388. package/src/renderers/common/StorageBuffer.js +24 -0
  389. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  390. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  391. package/src/renderers/common/StorageTexture.js +38 -0
  392. package/src/renderers/common/Textures.js +97 -7
  393. package/src/renderers/common/TimestampQueryPool.js +39 -0
  394. package/src/renderers/common/Uniform.js +225 -3
  395. package/src/renderers/common/UniformBuffer.js +19 -0
  396. package/src/renderers/common/UniformsGroup.js +141 -2
  397. package/src/renderers/common/XRManager.js +1193 -0
  398. package/src/renderers/common/XRRenderTarget.js +74 -0
  399. package/src/renderers/common/extras/PMREMGenerator.js +76 -10
  400. package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
  401. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  402. package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
  403. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  404. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  405. package/src/renderers/common/nodes/NodeUniform.js +243 -2
  406. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  407. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  408. package/src/renderers/common/nodes/Nodes.js +352 -78
  409. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  410. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  411. package/src/renderers/webgl/WebGLBackground.js +4 -0
  412. package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
  413. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
  414. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
  415. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  416. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  417. package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
  418. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
  419. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
  420. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  421. package/src/renderers/webgpu/WebGPUBackend.js +578 -164
  422. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
  423. package/src/renderers/webgpu/WebGPURenderer.js +36 -0
  424. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  425. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  426. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
  427. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  428. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  429. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
  430. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
  431. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
  432. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
  433. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
  434. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
  435. package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
  436. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  437. package/src/renderers/webxr/WebXRManager.js +19 -2
  438. package/src/textures/Data3DTexture.js +2 -2
  439. package/src/textures/Texture.js +4 -0
  440. package/src/textures/VideoFrameTexture.js +35 -0
  441. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  442. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  443. package/examples/jsm/exporters/MMDExporter.js +0 -223
  444. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
  445. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  446. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  447. package/examples/jsm/objects/InstancedPoints.js +0 -19
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  449. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  450. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  451. package/src/nodes/core/UniformGroup.js +0 -13
  452. package/src/nodes/fog/FogExp2Node.js +0 -35
  453. package/src/nodes/fog/FogNode.js +0 -50
  454. package/src/nodes/fog/FogRangeNode.js +0 -36
  455. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -9,9 +9,9 @@ import {
9
9
  Sphere,
10
10
  Vector3,
11
11
  Vector4,
12
- Line2NodeMaterial
12
+ Line2NodeMaterial,
13
+ Vector2
13
14
  } from 'three/webgpu';
14
-
15
15
  import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
16
16
 
17
17
  const _start = new Vector3();
@@ -29,6 +29,7 @@ const _closestPoint = new Vector3();
29
29
  const _box = new Box3();
30
30
  const _sphere = new Sphere();
31
31
  const _clipToWorldVector = new Vector4();
32
+ const _viewport = new Vector4();
32
33
 
33
34
  let _ray, _lineWidth;
34
35
 
@@ -93,8 +94,7 @@ function raycastWorldUnits( lineSegments, intersects ) {
93
94
  function raycastScreenSpace( lineSegments, camera, intersects ) {
94
95
 
95
96
  const projectionMatrix = camera.projectionMatrix;
96
- const material = lineSegments.material;
97
- const resolution = material.resolution;
97
+ const resolution = lineSegments.resolution;
98
98
  const matrixWorld = lineSegments.matrixWorld;
99
99
 
100
100
  const geometry = lineSegments.geometry;
@@ -233,6 +233,8 @@ class LineSegments2 extends Mesh {
233
233
 
234
234
  this.type = 'LineSegments2';
235
235
 
236
+ this.resolution = new Vector2();
237
+
236
238
  }
237
239
 
238
240
  // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
@@ -264,6 +266,13 @@ class LineSegments2 extends Mesh {
264
266
 
265
267
  }
266
268
 
269
+ onBeforeRender( renderer ) {
270
+
271
+ renderer.getViewport( _viewport );
272
+ this.resolution.set( _viewport.z, _viewport.w );
273
+
274
+ }
275
+
267
276
  raycast( raycaster, intersects ) {
268
277
 
269
278
  const worldUnits = this.material.worldUnits;
@@ -303,7 +312,7 @@ class LineSegments2 extends Mesh {
303
312
  } else {
304
313
 
305
314
  const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
306
- sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, material.resolution );
315
+ sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this.resolution );
307
316
 
308
317
  }
309
318
 
@@ -333,7 +342,7 @@ class LineSegments2 extends Mesh {
333
342
  } else {
334
343
 
335
344
  const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
336
- boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, material.resolution );
345
+ boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this.resolution );
337
346
 
338
347
  }
339
348
 
@@ -386,8 +386,11 @@ class ThreeMFLoader extends Loader {
386
386
 
387
387
  const attrib = portNodes[ i ].attributes[ j ];
388
388
  if ( attrib.specified ) {
389
+
389
390
  args[ attrib.name ] = attrib.value;
391
+
390
392
  }
393
+
391
394
  }
392
395
 
393
396
  portArguments[ portNodes[ i ].getAttribute( 'identifier' ) ] = args;
@@ -415,19 +418,19 @@ class ThreeMFLoader extends Loader {
415
418
 
416
419
  if ( operatorNode.nodeName === 'i:in' || operatorNode.nodeName === 'i:out' ) {
417
420
 
418
- operations[ operatorNode.nodeName === 'i:in' ? "inputs" : "outputs" ] = parseImplicitIONode( operatorNode );
421
+ operations[ operatorNode.nodeName === 'i:in' ? 'inputs' : 'outputs' ] = parseImplicitIONode( operatorNode );
419
422
 
420
423
  } else {
421
424
 
422
425
  const inputNodes = operatorNode.children;
423
- let portArguments = { "op": operatorNode.nodeName.substring( 2 ), "identifier": operatorNode.getAttribute( 'identifier' ) };
426
+ const portArguments = { 'op': operatorNode.nodeName.substring( 2 ), 'identifier': operatorNode.getAttribute( 'identifier' ) };
424
427
  for ( let i = 0; i < inputNodes.length; i ++ ) {
425
428
 
426
429
  portArguments[ inputNodes[ i ].nodeName.substring( 2 ) ] = parseImplicitIONode( inputNodes[ i ] );
427
430
 
428
431
  }
429
432
 
430
- operations[ portArguments[ "identifier" ] ] = portArguments;
433
+ operations[ portArguments[ 'identifier' ] ] = portArguments;
431
434
 
432
435
  }
433
436
 
@@ -204,7 +204,7 @@ class BVHLoader extends Loader {
204
204
  }
205
205
 
206
206
  /*
207
- Recursively parses the HIERACHY section of the BVH file
207
+ Recursively parses the HIERARCHY section of the BVH file
208
208
 
209
209
  - lines: all lines of the file. lines are consumed as we go along.
210
210
  - firstline: line containing the node type and name e.g. 'JOINT hip'
@@ -299,7 +299,7 @@ class ColladaLoader extends Loader {
299
299
 
300
300
  if ( hasChildren === false ) {
301
301
 
302
- // since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment
302
+ // since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment
303
303
 
304
304
  library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;
305
305
 
@@ -977,7 +977,7 @@ class ColladaLoader extends Loader {
977
977
  }
978
978
 
979
979
  // we sort the joints in descending order based on the weights.
980
- // this ensures, we only procced the most important joints of the vertex
980
+ // this ensures, we only proceed the most important joints of the vertex
981
981
 
982
982
  vertexSkinData.sort( descending );
983
983
 
@@ -1593,7 +1593,7 @@ class ColladaLoader extends Loader {
1593
1593
 
1594
1594
  }
1595
1595
 
1596
- // create texture if image is avaiable
1596
+ // create texture if image is available
1597
1597
 
1598
1598
  if ( image !== null ) {
1599
1599
 
@@ -2392,7 +2392,7 @@ class ColladaLoader extends Loader {
2392
2392
  break;
2393
2393
 
2394
2394
  default:
2395
- console.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );
2395
+ console.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );
2396
2396
 
2397
2397
  }
2398
2398
 
@@ -3434,7 +3434,7 @@ class ColladaLoader extends Loader {
3434
3434
  let i, j, data;
3435
3435
 
3436
3436
  // a skeleton can have multiple root bones. collada expresses this
3437
- // situtation with multiple "skeleton" tags per controller instance
3437
+ // situation with multiple "skeleton" tags per controller instance
3438
3438
 
3439
3439
  for ( i = 0; i < skeletons.length; i ++ ) {
3440
3440
 
@@ -109,6 +109,33 @@ class DDSLoader extends CompressedTextureLoader {
109
109
 
110
110
  }
111
111
 
112
+ function loadRGBMip( buffer, dataOffset, width, height ) {
113
+
114
+ const dataLength = width * height * 3;
115
+ const srcBuffer = new Uint8Array( buffer, dataOffset, dataLength );
116
+ const byteArray = new Uint8Array( width * height * 4 );
117
+ let dst = 0;
118
+ let src = 0;
119
+ for ( let y = 0; y < height; y ++ ) {
120
+
121
+ for ( let x = 0; x < width; x ++ ) {
122
+
123
+ const b = srcBuffer[ src ]; src ++;
124
+ const g = srcBuffer[ src ]; src ++;
125
+ const r = srcBuffer[ src ]; src ++;
126
+ byteArray[ dst ] = r; dst ++; //r
127
+ byteArray[ dst ] = g; dst ++; //g
128
+ byteArray[ dst ] = b; dst ++; //b
129
+ byteArray[ dst ] = 1.0; dst ++; //a
130
+
131
+ }
132
+
133
+ }
134
+
135
+ return byteArray;
136
+
137
+ }
138
+
112
139
  const FOURCC_DXT1 = fourCCToInt32( 'DXT1' );
113
140
  const FOURCC_DXT3 = fourCCToInt32( 'DXT3' );
114
141
  const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
@@ -161,6 +188,7 @@ class DDSLoader extends CompressedTextureLoader {
161
188
  const fourCC = header[ off_pfFourCC ];
162
189
 
163
190
  let isRGBAUncompressed = false;
191
+ let isRGBUncompressed = false;
164
192
 
165
193
  let dataOffset = header[ off_size ] + 4;
166
194
 
@@ -236,6 +264,15 @@ class DDSLoader extends CompressedTextureLoader {
236
264
  blockBytes = 64;
237
265
  dds.format = RGBAFormat;
238
266
 
267
+ } else if ( header[ off_RGBBitCount ] === 24
268
+ && header[ off_RBitMask ] & 0xff0000
269
+ && header[ off_GBitMask ] & 0xff00
270
+ && header[ off_BBitMask ] & 0xff ) {
271
+
272
+ isRGBUncompressed = true;
273
+ blockBytes = 64;
274
+ dds.format = RGBAFormat;
275
+
239
276
  } else {
240
277
 
241
278
  console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) );
@@ -290,6 +327,11 @@ class DDSLoader extends CompressedTextureLoader {
290
327
  byteArray = loadARGBMip( buffer, dataOffset, width, height );
291
328
  dataLength = byteArray.length;
292
329
 
330
+ } else if ( isRGBUncompressed ) {
331
+
332
+ byteArray = loadRGBMip( buffer, dataOffset, width, height );
333
+ dataLength = width * height * 3;
334
+
293
335
  } else {
294
336
 
295
337
  dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes;
@@ -14,11 +14,13 @@ import {
14
14
  * Gcode files are composed by commands used by machines to create objects.
15
15
  *
16
16
  * @class GCodeLoader
17
- * @param {Manager} manager Loading manager.
18
17
  */
19
18
 
20
19
  class GCodeLoader extends Loader {
21
20
 
21
+ /**
22
+ * @param {Manager} manager Loading manager.
23
+ */
22
24
  constructor( manager ) {
23
25
 
24
26
  super( manager );
@@ -123,7 +125,7 @@ class GCodeLoader extends Loader {
123
125
  const tokens = lines[ i ].split( ' ' );
124
126
  const cmd = tokens[ 0 ].toUpperCase();
125
127
 
126
- //Argumments
128
+ //Arguments
127
129
  const args = {};
128
130
  tokens.splice( 1 ).forEach( function ( token ) {
129
131
 
@@ -600,8 +600,6 @@ class GLTFLightsExtension {
600
600
  // here, because node-level parsing will only override position if explicitly specified.
601
601
  lightNode.position.set( 0, 0, 0 );
602
602
 
603
- lightNode.decay = 2;
604
-
605
603
  assignExtrasToUserData( lightNode, lightDef );
606
604
 
607
605
  if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;
@@ -2255,6 +2253,9 @@ const ALPHA_MODES = {
2255
2253
 
2256
2254
  /**
2257
2255
  * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
2256
+ *
2257
+ * @param {Object<String, Material>} cache
2258
+ * @return {Material}
2258
2259
  */
2259
2260
  function createDefaultMaterial( cache ) {
2260
2261
 
@@ -2753,6 +2754,9 @@ class GLTFParser {
2753
2754
  * Textures) can be reused directly and are not marked here.
2754
2755
  *
2755
2756
  * Example: CesiumMilkTruck sample model reuses "Wheel" meshes.
2757
+ *
2758
+ * @param {Object} cache
2759
+ * @param {Object3D} index
2756
2760
  */
2757
2761
  _addNodeRef( cache, index ) {
2758
2762
 
@@ -2768,7 +2772,14 @@ class GLTFParser {
2768
2772
 
2769
2773
  }
2770
2774
 
2771
- /** Returns a reference to a shared resource, cloning it if necessary. */
2775
+ /**
2776
+ * Returns a reference to a shared resource, cloning it if necessary.
2777
+ *
2778
+ * @param {Object} cache
2779
+ * @param {Number} index
2780
+ * @param {Object} object
2781
+ * @return {Object}
2782
+ */
2772
2783
  _getNodeRef( cache, index, object ) {
2773
2784
 
2774
2785
  if ( cache.refs[ index ] <= 1 ) return object;
@@ -3340,9 +3351,11 @@ class GLTFParser {
3340
3351
 
3341
3352
  /**
3342
3353
  * Asynchronously assigns a texture to the given material parameters.
3354
+ *
3343
3355
  * @param {Object} materialParams
3344
3356
  * @param {string} mapName
3345
3357
  * @param {Object} mapDef
3358
+ * @param {string} colorSpace
3346
3359
  * @return {Promise<Texture>}
3347
3360
  */
3348
3361
  assignTexture( materialParams, mapName, mapDef, colorSpace ) {
@@ -3651,7 +3664,12 @@ class GLTFParser {
3651
3664
 
3652
3665
  }
3653
3666
 
3654
- /** When Object3D instances are targeted by animation, they need unique names. */
3667
+ /**
3668
+ * When Object3D instances are targeted by animation, they need unique names.
3669
+ *
3670
+ * @param {String} originalName
3671
+ * @return {String}
3672
+ */
3655
3673
  createUniqueName( originalName ) {
3656
3674
 
3657
3675
  const sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );
@@ -790,7 +790,12 @@ KTX2Loader.BasisWorker = function () {
790
790
 
791
791
  }
792
792
 
793
- /** Concatenates N byte arrays. */
793
+ /**
794
+ * Concatenates N byte arrays.
795
+ *
796
+ * @param {Uint8Array[]} arrays
797
+ * @return {Uint8Array}
798
+ */
794
799
  function concat( arrays ) {
795
800
 
796
801
  if ( arrays.length === 1 ) return arrays[ 0 ];
@@ -46,10 +46,10 @@ const COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()
46
46
  class KhronosTextureContainer {
47
47
 
48
48
  /**
49
- * @param {ArrayBuffer} arrayBuffer- contents of the KTX container file
50
- * @param {number} facesExpected- should be either 1 or 6, based whether a cube texture or or
51
- * @param {boolean} threeDExpected- provision for indicating that data should be a 3D texture, not implemented
52
- * @param {boolean} textureArrayExpected- provision for indicating that data should be a texture array, not implemented
49
+ * @param {ArrayBuffer} arrayBuffer - contents of the KTX container file
50
+ * @param {number} facesExpected - should be either 1 or 6, based whether a cube texture or or
51
+ * @param {boolean} threeDExpected - provision for indicating that data should be a 3D texture, not implemented
52
+ * @param {boolean} textureArrayExpected - provision for indicating that data should be a texture array, not implemented
53
53
  */
54
54
  constructor( arrayBuffer, facesExpected /*, threeDExpected, textureArrayExpected */ ) {
55
55
 
@@ -2266,7 +2266,7 @@ class LDrawLoader extends Loader {
2266
2266
 
2267
2267
  if ( this.ConditionalLineMaterial === null ) {
2268
2268
 
2269
- throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specificed via .setConditionalLineMaterial().' );
2269
+ throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specified via .setConditionalLineMaterial().' );
2270
2270
 
2271
2271
  }
2272
2272
 
@@ -33,7 +33,7 @@ class LottieLoader extends Loader {
33
33
 
34
34
  const data = JSON.parse( text );
35
35
 
36
- // lottie uses container.offetWidth and offsetHeight
36
+ // lottie uses container.offsetWidth and offsetHeight
37
37
  // to define width/height
38
38
 
39
39
  const container = document.createElement( 'div' );
@@ -85,6 +85,7 @@ class MTLLoader extends Loader {
85
85
  * Parses a MTL file.
86
86
  *
87
87
  * @param {String} text - Content of MTL file
88
+ * @param {String} path
88
89
  * @return {MaterialCreator}
89
90
  *
90
91
  * @see setPath setResourcePath
@@ -232,7 +232,7 @@ class NRRDLoader extends Loader {
232
232
 
233
233
  }
234
234
 
235
- //parse the data when registred as one of this type : 'text', 'ascii', 'txt'
235
+ //parse the data when registered as one of this type : 'text', 'ascii', 'txt'
236
236
  function parseDataAsText( data, start, end ) {
237
237
 
238
238
  let number = '';
@@ -127,19 +127,19 @@ class PLYLoader extends Loader {
127
127
  const lines = headerText.split( /\r\n|\r|\n/ );
128
128
  let currentElement;
129
129
 
130
- function make_ply_element_property( propertValues, propertyNameMapping ) {
130
+ function make_ply_element_property( propertyValues, propertyNameMapping ) {
131
131
 
132
- const property = { type: propertValues[ 0 ] };
132
+ const property = { type: propertyValues[ 0 ] };
133
133
 
134
134
  if ( property.type === 'list' ) {
135
135
 
136
- property.name = propertValues[ 3 ];
137
- property.countType = propertValues[ 1 ];
138
- property.itemType = propertValues[ 2 ];
136
+ property.name = propertyValues[ 3 ];
137
+ property.countType = propertyValues[ 1 ];
138
+ property.itemType = propertyValues[ 2 ];
139
139
 
140
140
  } else {
141
141
 
142
- property.name = propertValues[ 1 ];
142
+ property.name = propertyValues[ 1 ];
143
143
 
144
144
  }
145
145
 
@@ -576,7 +576,7 @@ class PLYLoader extends Loader {
576
576
 
577
577
  switch ( type ) {
578
578
 
579
- // corespondences for non-specific length types here match rply:
579
+ // correspondences for non-specific length types here match rply:
580
580
  case 'int8': case 'char': return { read: ( at ) => {
581
581
 
582
582
  return dataview.getInt8( at );
@@ -160,7 +160,7 @@ function _parseV2( pvrDatas ) {
160
160
  pvrDatas.numMipmaps = numMipmaps + 1;
161
161
 
162
162
  // guess cubemap type seems tricky in v2
163
- // it juste a pvr containing 6 surface (no explicit cubemap type)
163
+ // it's just a pvr containing 6 surface (no explicit cubemap type)
164
164
  pvrDatas.isCubemap = ( numSurfs === 6 );
165
165
 
166
166
  return _extract( pvrDatas );
@@ -1633,7 +1633,7 @@ class SVGLoader extends Loader {
1633
1633
  ( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
1634
1634
 
1635
1635
  // Do not touch angles of a full ellipse because after transformation they
1636
- // would converge to a sinle value effectively removing the whole curve
1636
+ // would converge to a single value effectively removing the whole curve
1637
1637
 
1638
1638
  if ( ! isFullEllipse ) {
1639
1639
 
@@ -2124,7 +2124,7 @@ class SVGLoader extends Loader {
2124
2124
 
2125
2125
  // check if the center of the bounding box is in the bounding box of the paths.
2126
2126
  // this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
2127
- // if a path envelops another path. The center of that oter path, has to be inside the bounding box of the enveloping path.
2127
+ // if a path envelops another path. The center of that other path, has to be inside the bounding box of the enveloping path.
2128
2128
  if ( path.boundingBox.containsPoint( center ) ) {
2129
2129
 
2130
2130
  const intersections = getIntersections( scanline, path.points );
@@ -20,7 +20,6 @@ import {
20
20
  * Loads geometry with uv and materials basic properties with texture support.
21
21
  *
22
22
  * @class TDSLoader
23
- * @constructor
24
23
  */
25
24
 
26
25
  class TDSLoader extends Loader {
@@ -398,7 +397,7 @@ class TDSLoader extends Loader {
398
397
 
399
398
  } else if ( next.id === MESH_MATRIX ) {
400
399
 
401
- this.debugMessage( ' Tranformation Matrix (TODO)' );
400
+ this.debugMessage( ' Transformation Matrix (TODO)' );
402
401
 
403
402
  const values = [];
404
403
  for ( let i = 0; i < 12; i ++ ) {
@@ -250,7 +250,7 @@ class VRMLLoader extends Loader {
250
250
 
251
251
  function createVisitor( BaseVRMLVisitor ) {
252
252
 
253
- // the visitor is created dynmaically based on the given base class
253
+ // the visitor is created dynamically based on the given base class
254
254
 
255
255
  class VRMLToASTVisitor extends BaseVRMLVisitor {
256
256
 
@@ -1890,7 +1890,7 @@ class VRMLLoader extends Loader {
1890
1890
 
1891
1891
  // if the colorIndex field is not empty, then one color is used for each polyline of the IndexedLineSet.
1892
1892
 
1893
- const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering primitve)
1893
+ const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering primitive)
1894
1894
  colorAttribute = computeAttributeFromIndexedData( expandedLineIndex, expandedColorIndex, color, 3 ); // compute data on vertex level
1895
1895
 
1896
1896
  } else {
@@ -1907,8 +1907,8 @@ class VRMLLoader extends Loader {
1907
1907
 
1908
1908
  // if the colorIndex field is not empty, then colors are applied to each vertex of the IndexedLineSet
1909
1909
 
1910
- const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML primitve
1911
- const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitve)
1910
+ const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML primitive
1911
+ const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitive)
1912
1912
  colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
1913
1913
 
1914
1914
 
@@ -1916,7 +1916,7 @@ class VRMLLoader extends Loader {
1916
1916
 
1917
1917
  // if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node
1918
1918
 
1919
- const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering primitve)
1919
+ const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering primitive)
1920
1920
  colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
1921
1921
 
1922
1922
  }
@@ -2748,7 +2748,7 @@ class VRMLLoader extends Loader {
2748
2748
 
2749
2749
  const indices = [];
2750
2750
 
2751
- // since face defintions can have more than three vertices, it's necessary to
2751
+ // since face definitions can have more than three vertices, it's necessary to
2752
2752
  // perform a simple triangulation
2753
2753
 
2754
2754
  let start = 0;
@@ -3123,7 +3123,7 @@ class VRMLLoader extends Loader {
3123
3123
  * node, but could be applied to other nodes with multiple faces as well.
3124
3124
  *
3125
3125
  * When used with the Background node, default is directionIsDown is true if
3126
- * interpolating the skyColor down from the Zenith. When interpolationg up from
3126
+ * interpolating the skyColor down from the Zenith. When interpolating up from
3127
3127
  * the Nadir i.e. interpolating the groundColor, the directionIsDown is false.
3128
3128
  *
3129
3129
  * The first angle is never specified, it is the Zenith (0 rad). Angles are specified
@@ -463,7 +463,7 @@ class IFFParser {
463
463
  }
464
464
 
465
465
  // holds various data about texture node image state
466
- // Data other thanmipMapLevel unknown
466
+ // Data other than mipMapLevel unknown
467
467
  parseImageStateForm() {
468
468
 
469
469
  this.reader.skip( 8 ); // unknown
@@ -577,7 +577,7 @@ class IFFParser {
577
577
  fileName: ''
578
578
  };
579
579
 
580
- // seach STIL block
580
+ // search STIL block
581
581
  while ( true ) {
582
582
 
583
583
  var tag = this.reader.getIDTag();
@@ -653,11 +653,11 @@ class IFFParser {
653
653
 
654
654
  var number = this.reader.getUint16();
655
655
  var flags = this.reader.getUint16(); // If the least significant bit of flags is set, the layer is hidden.
656
- var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superflous, as the geometry is translated when pivot is present
656
+ var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superfluous, as the geometry is translated when pivot is present
657
657
  var layer = {
658
658
  number: number,
659
659
  flags: flags, // If the least significant bit of flags is set, the layer is hidden.
660
- pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superflous, as the geometry is translated when pivot is present
660
+ pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superfluous, as the geometry is translated when pivot is present
661
661
  name: this.reader.getString(),
662
662
  };
663
663
 
@@ -50,7 +50,7 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
50
50
 
51
51
  varyingProperty( 'float', 'discardFlag' ).assign( discardFlag );
52
52
 
53
- return modelViewProjection();
53
+ return modelViewProjection;
54
54
 
55
55
  } )();
56
56
 
@@ -319,6 +319,8 @@ class MeshGouraudMaterial extends ShaderMaterial {
319
319
 
320
320
  super();
321
321
 
322
+ console.warn( 'THREE.MeshGouraudMaterial: MeshGouraudMaterial has been deprecated and will be removed with r183. Use THREE.MeshLambertMaterial instead.' ); // @deprecated r173
323
+
322
324
  this.isMeshGouraudMaterial = true;
323
325
 
324
326
  this.type = 'MeshGouraudMaterial';
@@ -698,7 +698,7 @@ class ConvexHull {
698
698
 
699
699
  let eyeVertex, maxDistance = 0;
700
700
 
701
- // grap the first available face and start with the first visible vertex of that face
701
+ // grab the first available face and start with the first visible vertex of that face
702
702
 
703
703
  const eyeFace = this.assigned.first().face;
704
704
  let vertex = eyeFace.outside;
@@ -84,6 +84,10 @@ class OBB {
84
84
  /**
85
85
  * Reference: Closest Point on OBB to Point in Real-Time Collision Detection
86
86
  * by Christer Ericson (chapter 5.1.4)
87
+ *
88
+ * @param {Vector3} point
89
+ * @param {Vector3} result
90
+ * @returns {Vector3}
87
91
  */
88
92
  clampPoint( point, result ) {
89
93
 
@@ -146,6 +150,9 @@ class OBB {
146
150
  * Reference: OBB-OBB Intersection in Real-Time Collision Detection
147
151
  * by Christer Ericson (chapter 4.4.1)
148
152
  *
153
+ * @param {OBB} obb
154
+ * @param {Number} [epsilon=Number.EPSILON] - A small value to prevent arithmetic errors
155
+ * @returns {Boolean}
149
156
  */
150
157
  intersectsOBB( obb, epsilon = Number.EPSILON ) {
151
158
 
@@ -285,6 +292,9 @@ class OBB {
285
292
  /**
286
293
  * Reference: Testing Box Against Plane in Real-Time Collision Detection
287
294
  * by Christer Ericson (chapter 5.2.3)
295
+ *
296
+ * @param {Plane} plane
297
+ * @returns {Boolean}
288
298
  */
289
299
  intersectsPlane( plane ) {
290
300
 
@@ -309,6 +319,10 @@ class OBB {
309
319
  /**
310
320
  * Performs a ray/OBB intersection test and stores the intersection point
311
321
  * to the given 3D vector. If no intersection is detected, *null* is returned.
322
+ *
323
+ * @param {Ray} ray
324
+ * @param {Vector3} result
325
+ * @return {Vector3?}
312
326
  */
313
327
  intersectRay( ray, result ) {
314
328
 
@@ -347,6 +361,9 @@ class OBB {
347
361
  /**
348
362
  * Performs a ray/OBB intersection test. Returns either true or false if
349
363
  * there is a intersection or not.
364
+ *
365
+ * @param {Ray} ray
366
+ * @returns {Boolean}
350
367
  */
351
368
  intersectsRay( ray ) {
352
369
 
@@ -99,16 +99,15 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
99
99
  * // And compute each frame, before rendering to screen:
100
100
  * gpuCompute.doRenderTarget( myFilter1, myRenderTarget );
101
101
  * gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );
102
- *
103
- *
104
- *
105
- * @param {int} sizeX Computation problem size is always 2d: sizeX * sizeY elements.
106
- * @param {int} sizeY Computation problem size is always 2d: sizeX * sizeY elements.
107
- * @param {WebGLRenderer} renderer The renderer
108
- */
102
+ */
109
103
 
110
104
  class GPUComputationRenderer {
111
105
 
106
+ /**
107
+ * @param {Number} sizeX Computation problem size is always 2d: sizeX * sizeY elements.
108
+ * @param {Number} sizeY Computation problem size is always 2d: sizeX * sizeY elements.
109
+ * @param {WebGLRenderer} renderer The renderer
110
+ */
112
111
  constructor( sizeX, sizeY, renderer ) {
113
112
 
114
113
  this.variables = [];