super-three 0.170.1 → 0.172.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 (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -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;
@@ -123,7 +123,7 @@ class GCodeLoader extends Loader {
123
123
  const tokens = lines[ i ].split( ' ' );
124
124
  const cmd = tokens[ 0 ].toUpperCase();
125
125
 
126
- //Argumments
126
+ //Arguments
127
127
  const args = {};
128
128
  tokens.splice( 1 ).forEach( function ( token ) {
129
129
 
@@ -2255,6 +2255,9 @@ const ALPHA_MODES = {
2255
2255
 
2256
2256
  /**
2257
2257
  * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
2258
+ *
2259
+ * @param {Object<String, Material>} cache
2260
+ * @return {Material}
2258
2261
  */
2259
2262
  function createDefaultMaterial( cache ) {
2260
2263
 
@@ -2753,6 +2756,9 @@ class GLTFParser {
2753
2756
  * Textures) can be reused directly and are not marked here.
2754
2757
  *
2755
2758
  * Example: CesiumMilkTruck sample model reuses "Wheel" meshes.
2759
+ *
2760
+ * @param {Object} cache
2761
+ * @param {Object3D} index
2756
2762
  */
2757
2763
  _addNodeRef( cache, index ) {
2758
2764
 
@@ -2768,7 +2774,14 @@ class GLTFParser {
2768
2774
 
2769
2775
  }
2770
2776
 
2771
- /** Returns a reference to a shared resource, cloning it if necessary. */
2777
+ /**
2778
+ * Returns a reference to a shared resource, cloning it if necessary.
2779
+ *
2780
+ * @param {Object} cache
2781
+ * @param {Number} index
2782
+ * @param {Object} object
2783
+ * @return {Object}
2784
+ */
2772
2785
  _getNodeRef( cache, index, object ) {
2773
2786
 
2774
2787
  if ( cache.refs[ index ] <= 1 ) return object;
@@ -3340,9 +3353,11 @@ class GLTFParser {
3340
3353
 
3341
3354
  /**
3342
3355
  * Asynchronously assigns a texture to the given material parameters.
3356
+ *
3343
3357
  * @param {Object} materialParams
3344
3358
  * @param {string} mapName
3345
3359
  * @param {Object} mapDef
3360
+ * @param {string} colorSpace
3346
3361
  * @return {Promise<Texture>}
3347
3362
  */
3348
3363
  assignTexture( materialParams, mapName, mapDef, colorSpace ) {
@@ -3651,7 +3666,12 @@ class GLTFParser {
3651
3666
 
3652
3667
  }
3653
3668
 
3654
- /** When Object3D instances are targeted by animation, they need unique names. */
3669
+ /**
3670
+ * When Object3D instances are targeted by animation, they need unique names.
3671
+ *
3672
+ * @param {String} originalName
3673
+ * @return {String}
3674
+ */
3655
3675
  createUniqueName( originalName ) {
3656
3676
 
3657
3677
  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 );
@@ -398,7 +398,7 @@ class TDSLoader extends Loader {
398
398
 
399
399
  } else if ( next.id === MESH_MATRIX ) {
400
400
 
401
- this.debugMessage( ' Tranformation Matrix (TODO)' );
401
+ this.debugMessage( ' Transformation Matrix (TODO)' );
402
402
 
403
403
  const values = [];
404
404
  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
 
@@ -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
 
@@ -50,7 +50,7 @@ class ProgressiveLightMap {
50
50
 
51
51
  this._uvMat = new MeshPhongNodeMaterial();
52
52
  this._uvMat.vertexNode = vec4( sub( uvNode, vec2( 0.5 ) ).mul( 2 ), 1, 1 );
53
- this._uvMat.outputNode = vec4( mix( this._previousShadowMap.uv( uv( 1 ) ), output, float( 1 ).div( this._averagingWindow ) ) );
53
+ this._uvMat.outputNode = vec4( mix( this._previousShadowMap.sample( uv( 1 ) ), output, float( 1 ).div( this._averagingWindow ) ) );
54
54
 
55
55
  }
56
56
 
@@ -229,7 +229,7 @@ class ProgressiveLightMap {
229
229
  if ( this._labelMesh === null ) {
230
230
 
231
231
  const labelMaterial = new NodeMaterial();
232
- labelMaterial.colorNode = texture( this._progressiveLightMap1.texture ).uv( uv().flipY() );
232
+ labelMaterial.colorNode = texture( this._progressiveLightMap1.texture ).sample( uv().flipY() );
233
233
  labelMaterial.side = DoubleSide;
234
234
 
235
235
  const labelGeometry = new PlaneGeometry( 100, 100 );
@@ -267,14 +267,14 @@ class ProgressiveLightMap {
267
267
  const pixelOffset = float( 0.5 ).div( float( this.resolution ) ).toVar();
268
268
 
269
269
  const color = add(
270
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset, 0 ) ) ),
271
- this._previousShadowMap.uv( uvNode.add( vec2( 0, pixelOffset ) ) ),
272
- this._previousShadowMap.uv( uvNode.add( vec2( 0, pixelOffset.negate() ) ) ),
273
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset.negate(), 0 ) ) ),
274
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset, pixelOffset ) ) ),
275
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset.negate(), pixelOffset ) ) ),
276
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset, pixelOffset.negate() ) ) ),
277
- this._previousShadowMap.uv( uvNode.add( vec2( pixelOffset.negate(), pixelOffset.negate() ) ) ),
270
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset, 0 ) ) ),
271
+ this._previousShadowMap.sample( uvNode.add( vec2( 0, pixelOffset ) ) ),
272
+ this._previousShadowMap.sample( uvNode.add( vec2( 0, pixelOffset.negate() ) ) ),
273
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset.negate(), 0 ) ) ),
274
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset, pixelOffset ) ) ),
275
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset.negate(), pixelOffset ) ) ),
276
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset, pixelOffset.negate() ) ) ),
277
+ this._previousShadowMap.sample( uvNode.add( vec2( pixelOffset.negate(), pixelOffset.negate() ) ) ),
278
278
  ).div( 8 );
279
279
 
280
280
  blurMaterial.fragmentNode = color;
@@ -7,7 +7,7 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
7
7
 
8
8
  /**
9
9
  * This class had been written to handle the output of the NRRD loader.
10
- * It contains a volume of data and informations about it.
10
+ * It contains a volume of data and information about it.
11
11
  * For now it only handles 3 dimensional data.
12
12
  * See the webgl_loader_nrrd.html example and the loaderNRRD.js file to see how to use this class.
13
13
  * @class
@@ -209,7 +209,8 @@ class Volume {
209
209
  }
210
210
 
211
211
  /**
212
- * @member {Function} getData Shortcut for data[access(i,j,k)]
212
+ * Shortcut for data[access(i,j,k)]
213
+ *
213
214
  * @memberof Volume
214
215
  * @param {number} i First coordinate
215
216
  * @param {number} j Second coordinate
@@ -223,7 +224,8 @@ class Volume {
223
224
  }
224
225
 
225
226
  /**
226
- * @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
227
+ * Compute the index in the data array corresponding to the given coordinates in IJK system
228
+ *
227
229
  * @memberof Volume
228
230
  * @param {number} i First coordinate
229
231
  * @param {number} j Second coordinate
@@ -237,7 +239,8 @@ class Volume {
237
239
  }
238
240
 
239
241
  /**
240
- * @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
242
+ * Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
243
+ *
241
244
  * @memberof Volume
242
245
  * @param {number} index index of the voxel
243
246
  * @returns {Array} [x,y,z]
@@ -252,7 +255,8 @@ class Volume {
252
255
  }
253
256
 
254
257
  /**
255
- * @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
258
+ * Apply a function to all the voxels, be careful, the value will be replaced
259
+ *
256
260
  * @memberof Volume
257
261
  * @param {Function} functionToMap A function to apply to every voxel, will be called with the following parameters :
258
262
  * value of the voxel
@@ -277,11 +281,12 @@ class Volume {
277
281
  }
278
282
 
279
283
  /**
280
- * @member {Function} extractPerpendicularPlane Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system.
284
+ * Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system.
285
+ *
281
286
  * @memberof Volume
282
287
  * @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
283
- * @param {number} index the index of the slice
284
- * @returns {Object} an object containing all the usefull information on the geometry of the slice
288
+ * @param {number} RASIndex the index of the slice
289
+ * @returns {Object} an object containing all the useful information on the geometry of the slice
285
290
  */
286
291
  extractPerpendicularPlane( axis, RASIndex ) {
287
292
 
@@ -401,8 +406,9 @@ class Volume {
401
406
  }
402
407
 
403
408
  /**
404
- * @member {Function} extractSlice Returns a slice corresponding to the given axis and index
405
- * The coordinate are given in the Right Anterior Superior coordinate format
409
+ * Returns a slice corresponding to the given axis and index.
410
+ * The coordinate are given in the Right Anterior Superior coordinate format.
411
+ *
406
412
  * @memberof Volume
407
413
  * @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
408
414
  * @param {number} index the index of the slice
@@ -417,7 +423,8 @@ class Volume {
417
423
  }
418
424
 
419
425
  /**
420
- * @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
426
+ * Call repaint on all the slices extracted from this volume
427
+ *
421
428
  * @see VolumeSlice.repaint
422
429
  * @memberof Volume
423
430
  * @returns {Volume} this
@@ -435,7 +442,8 @@ class Volume {
435
442
  }
436
443
 
437
444
  /**
438
- * @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
445
+ * Compute the minimum and the maximum of the data in the volume
446
+ *
439
447
  * @memberof Volume
440
448
  * @returns {Array} [min,max]
441
449
  */
@@ -103,7 +103,7 @@ class VolumeSlice {
103
103
  }
104
104
 
105
105
  /**
106
- * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
106
+ * Refresh the texture and the geometry if geometryNeedsUpdate is set to true
107
107
  * @memberof VolumeSlice
108
108
  */
109
109
  repaint() {
@@ -189,7 +189,7 @@ class VolumeSlice {
189
189
  }
190
190
 
191
191
  /**
192
- * @member {Function} Refresh the geometry according to axis and index
192
+ * Refresh the geometry according to axis and index
193
193
  * @see Volume.extractPerpendicularPlane
194
194
  * @memberof VolumeSlice
195
195
  */