super-three 0.133.4 → 0.136.1

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 (409) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.js +2285 -1983
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +5983 -5358
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  6. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  7. package/examples/fonts/open-sans/open-sans.css +9 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  12. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  13. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  14. package/examples/js/animation/CCDIKSolver.js +0 -1
  15. package/examples/js/animation/MMDPhysics.js +2 -4
  16. package/examples/js/cameras/CinematicCamera.js +2 -7
  17. package/examples/js/controls/ArcballControls.js +99 -72
  18. package/examples/js/controls/DragControls.js +7 -0
  19. package/examples/js/controls/OrbitControls.js +5 -36
  20. package/examples/js/controls/TrackballControls.js +3 -2
  21. package/examples/js/controls/TransformControls.js +24 -1
  22. package/examples/js/csm/CSM.js +2 -2
  23. package/examples/js/csm/CSMFrustum.js +133 -0
  24. package/examples/js/curves/CurveExtras.js +0 -2
  25. package/examples/js/effects/AsciiEffect.js +2 -9
  26. package/examples/js/exporters/GLTFExporter.js +148 -64
  27. package/examples/js/exporters/MMDExporter.js +1 -1
  28. package/examples/js/exporters/USDZExporter.js +45 -26
  29. package/examples/js/geometries/ConvexGeometry.js +1 -1
  30. package/examples/js/geometries/TeapotGeometry.js +0 -1
  31. package/examples/js/interactive/SelectionBox.js +2 -0
  32. package/examples/js/interactive/SelectionHelper.js +22 -7
  33. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  34. package/examples/js/lines/LineMaterial.js +58 -20
  35. package/examples/js/lines/LineSegments2.js +29 -24
  36. package/examples/js/loaders/3DMLoader.js +24 -11
  37. package/examples/js/loaders/3MFLoader.js +2 -2
  38. package/examples/js/loaders/AMFLoader.js +0 -2
  39. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  40. package/examples/js/loaders/ColladaLoader.js +61 -4
  41. package/examples/js/loaders/EXRLoader.js +201 -272
  42. package/examples/js/loaders/FBXLoader.js +4 -5
  43. package/examples/js/loaders/GLTFLoader.js +98 -35
  44. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
  45. package/examples/js/loaders/KTX2Loader.js +23 -2
  46. package/examples/js/loaders/KTXLoader.js +1 -1
  47. package/examples/js/loaders/LDrawLoader.js +1169 -901
  48. package/examples/js/loaders/LUT3dlLoader.js +19 -10
  49. package/examples/js/loaders/LUTCubeLoader.js +5 -4
  50. package/examples/js/loaders/LWOLoader.js +8 -6
  51. package/examples/js/loaders/LogLuvLoader.js +766 -0
  52. package/examples/js/loaders/MMDLoader.js +0 -1
  53. package/examples/js/loaders/NRRDLoader.js +9 -2
  54. package/examples/js/loaders/OBJLoader.js +0 -2
  55. package/examples/js/loaders/PLYLoader.js +33 -8
  56. package/examples/js/loaders/RGBELoader.js +8 -22
  57. package/examples/js/loaders/RGBMLoader.js +56 -6
  58. package/examples/js/loaders/SVGLoader.js +12 -6
  59. package/examples/js/loaders/TDSLoader.js +237 -271
  60. package/examples/js/loaders/VOXLoader.js +1 -0
  61. package/examples/js/loaders/VRMLLoader.js +11 -22
  62. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  63. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  64. package/examples/js/math/ConvexHull.js +7 -13
  65. package/examples/js/math/ImprovedNoise.js +1 -1
  66. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  67. package/examples/js/misc/Volume.js +2 -2
  68. package/examples/js/modifiers/CurveModifier.js +8 -7
  69. package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
  70. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  71. package/examples/js/objects/Lensflare.js +2 -10
  72. package/examples/js/objects/MarchingCubes.js +42 -128
  73. package/examples/js/objects/Reflector.js +8 -13
  74. package/examples/js/objects/ReflectorForSSRPass.js +0 -10
  75. package/examples/js/objects/Refractor.js +8 -13
  76. package/examples/js/objects/Sky.js +1 -1
  77. package/examples/js/objects/Water.js +3 -15
  78. package/examples/js/objects/Water2.js +4 -7
  79. package/examples/js/postprocessing/GlitchPass.js +6 -5
  80. package/examples/js/postprocessing/SMAAPass.js +2 -9
  81. package/examples/js/postprocessing/SSAOPass.js +10 -21
  82. package/examples/js/postprocessing/SavePass.js +1 -5
  83. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  84. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  85. package/examples/js/shaders/ConvolutionShader.js +0 -1
  86. package/examples/js/shaders/DigitalGlitch.js +3 -3
  87. package/examples/js/shaders/FXAAShader.js +1 -1
  88. package/examples/js/shaders/FilmShader.js +1 -1
  89. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  90. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  91. package/examples/js/shaders/MMDToonShader.js +0 -1
  92. package/examples/js/shaders/SSAOShader.js +1 -1
  93. package/examples/js/shaders/SSRShader.js +1 -1
  94. package/examples/js/shaders/SSRrShader.js +1 -1
  95. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  96. package/examples/js/utils/GeometryUtils.js +1 -1
  97. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  98. package/examples/jsm/animation/MMDPhysics.js +1 -3
  99. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  100. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  101. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
  102. package/examples/jsm/controls/ArcballControls.js +80 -77
  103. package/examples/jsm/controls/DragControls.js +7 -0
  104. package/examples/jsm/controls/OrbitControls.js +9 -51
  105. package/examples/jsm/controls/TrackballControls.js +1 -1
  106. package/examples/jsm/controls/TransformControls.js +24 -1
  107. package/examples/jsm/csm/CSM.js +3 -3
  108. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  109. package/examples/jsm/curves/CurveExtras.js +0 -2
  110. package/examples/jsm/effects/AsciiEffect.js +2 -9
  111. package/examples/jsm/exporters/GLTFExporter.js +169 -99
  112. package/examples/jsm/exporters/MMDExporter.js +1 -1
  113. package/examples/jsm/exporters/USDZExporter.js +47 -26
  114. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  115. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  116. package/examples/jsm/interactive/SelectionBox.js +1 -0
  117. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  118. package/examples/jsm/libs/flow.module.js +3338 -0
  119. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  120. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  121. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  122. package/examples/jsm/lines/LineMaterial.js +59 -23
  123. package/examples/jsm/lines/LineSegments2.js +22 -18
  124. package/examples/jsm/loaders/3DMLoader.js +18 -12
  125. package/examples/jsm/loaders/3MFLoader.js +2 -2
  126. package/examples/jsm/loaders/AMFLoader.js +0 -2
  127. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  128. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  129. package/examples/jsm/loaders/EXRLoader.js +200 -306
  130. package/examples/jsm/loaders/FBXLoader.js +4 -5
  131. package/examples/jsm/loaders/GLTFLoader.js +102 -40
  132. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
  133. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  134. package/examples/jsm/loaders/KTXLoader.js +1 -1
  135. package/examples/jsm/loaders/LDrawLoader.js +1159 -898
  136. package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
  137. package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
  138. package/examples/jsm/loaders/LWOLoader.js +8 -6
  139. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  140. package/examples/jsm/loaders/MMDLoader.js +0 -1
  141. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  142. package/examples/jsm/loaders/OBJLoader.js +0 -2
  143. package/examples/jsm/loaders/PLYLoader.js +34 -8
  144. package/examples/jsm/loaders/RGBELoader.js +7 -28
  145. package/examples/jsm/loaders/RGBMLoader.js +62 -8
  146. package/examples/jsm/loaders/SVGLoader.js +15 -7
  147. package/examples/jsm/loaders/TDSLoader.js +236 -275
  148. package/examples/jsm/loaders/VOXLoader.js +1 -0
  149. package/examples/jsm/loaders/VRMLLoader.js +11 -23
  150. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  151. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  152. package/examples/jsm/math/ConvexHull.js +7 -13
  153. package/examples/jsm/math/ImprovedNoise.js +1 -1
  154. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  155. package/examples/jsm/misc/Volume.js +2 -2
  156. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  157. package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
  158. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  159. package/examples/jsm/node-editor/NodeEditor.js +455 -0
  160. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  161. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  162. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  163. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  164. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  165. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  166. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  167. package/examples/jsm/node-editor/examples/rim.json +1 -0
  168. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  169. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  170. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  171. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  172. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  173. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  174. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  175. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  176. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  177. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  178. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  179. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  180. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  181. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  182. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  183. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  184. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  185. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  186. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  187. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  188. package/examples/jsm/nodes/math/MathNode.js +12 -0
  189. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  190. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  191. package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
  192. package/examples/jsm/objects/Lensflare.js +5 -16
  193. package/examples/jsm/objects/MarchingCubes.js +46 -152
  194. package/examples/jsm/objects/Reflector.js +8 -16
  195. package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
  196. package/examples/jsm/objects/Refractor.js +8 -16
  197. package/examples/jsm/objects/Sky.js +1 -1
  198. package/examples/jsm/objects/Water.js +3 -18
  199. package/examples/jsm/objects/Water2.js +4 -8
  200. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  201. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  202. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  203. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  204. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  205. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  206. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  207. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  208. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  209. package/examples/jsm/postprocessing/GlitchPass.js +10 -7
  210. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  211. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  212. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  213. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  214. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  215. package/examples/jsm/postprocessing/SMAAPass.js +3 -12
  216. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  217. package/examples/jsm/postprocessing/SSAOPass.js +15 -26
  218. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  219. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  220. package/examples/jsm/postprocessing/SavePass.js +2 -4
  221. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  222. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  223. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  224. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  225. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  226. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  227. package/examples/jsm/renderers/nodes/Nodes.js +17 -13
  228. package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
  229. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  230. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  231. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  232. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  233. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  234. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  235. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  236. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  237. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  238. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  239. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  240. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  241. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  242. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  243. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  244. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  245. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  246. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  247. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  248. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  249. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  250. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  251. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  252. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  253. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  254. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  255. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  256. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
  257. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  258. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  259. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  260. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  261. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  262. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
  263. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  264. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  265. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  266. package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
  267. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  268. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  269. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  270. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  271. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  272. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  273. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  274. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  275. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  276. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  277. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  278. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  279. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  280. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  281. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  282. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  283. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  284. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  285. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  286. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  287. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  288. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  289. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  290. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  291. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
  292. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  293. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
  294. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  295. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
  296. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  297. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  298. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  299. package/examples/jsm/shaders/FXAAShader.js +1 -1
  300. package/examples/jsm/shaders/FilmShader.js +1 -1
  301. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  302. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  303. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  304. package/examples/jsm/shaders/SSAOShader.js +1 -1
  305. package/examples/jsm/shaders/SSRShader.js +1 -1
  306. package/examples/jsm/shaders/SSRrShader.js +1 -1
  307. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  308. package/examples/jsm/utils/GeometryUtils.js +1 -1
  309. package/examples/jsm/utils/LDrawUtils.js +195 -0
  310. package/examples/jsm/utils/WorkerPool.js +11 -11
  311. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  312. package/examples/jsm/webxr/VRButton.js +24 -0
  313. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  314. package/package.json +27 -18
  315. package/src/Three.Legacy.js +18 -0
  316. package/src/Three.js +1 -3
  317. package/src/animation/AnimationMixer.js +1 -0
  318. package/src/cameras/CubeCamera.js +2 -0
  319. package/src/cameras/StereoCamera.js +8 -7
  320. package/src/constants.js +3 -23
  321. package/src/core/Layers.js +7 -1
  322. package/src/core/Object3D.js +3 -1
  323. package/src/extras/ImageUtils.js +63 -0
  324. package/src/extras/PMREMGenerator.js +49 -185
  325. package/src/extras/core/Interpolations.js +1 -1
  326. package/src/geometries/LatheGeometry.js +70 -47
  327. package/src/helpers/CameraHelper.js +1 -1
  328. package/src/loaders/FileLoader.js +98 -144
  329. package/src/loaders/ImageLoader.js +9 -4
  330. package/src/loaders/LoaderUtils.js +26 -0
  331. package/src/loaders/MaterialLoader.js +8 -5
  332. package/src/loaders/ObjectLoader.js +2 -0
  333. package/src/materials/Material.js +8 -8
  334. package/src/materials/MeshPhysicalMaterial.js +20 -14
  335. package/src/math/Color.js +1 -39
  336. package/src/math/MathUtils.js +5 -16
  337. package/src/math/Quaternion.js +1 -1
  338. package/src/math/Ray.js +2 -2
  339. package/src/math/Sphere.js +10 -1
  340. package/src/objects/Skeleton.js +1 -0
  341. package/src/renderers/WebGLCubeRenderTarget.js +0 -2
  342. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  343. package/src/renderers/WebGLRenderer.js +106 -199
  344. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  345. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  346. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  347. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  348. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
  349. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  350. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  351. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  352. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  353. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  354. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  355. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  356. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  357. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  358. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  361. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
  362. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  363. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
  364. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
  365. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  366. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  367. package/src/renderers/shaders/ShaderLib.js +8 -6
  368. package/src/renderers/shaders/UniformsLib.js +1 -2
  369. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  370. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  371. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  372. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  373. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  374. package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
  375. package/src/renderers/webgl/WebGLProgram.js +12 -37
  376. package/src/renderers/webgl/WebGLPrograms.js +192 -70
  377. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  378. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  379. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  380. package/src/renderers/webgl/WebGLState.js +157 -17
  381. package/src/renderers/webgl/WebGLTextures.js +442 -83
  382. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  383. package/src/renderers/webgl/WebGLUtils.js +86 -28
  384. package/src/renderers/webxr/WebXRManager.js +77 -109
  385. package/src/scenes/Scene.js +1 -1
  386. package/src/textures/DataTexture.js +0 -2
  387. package/src/textures/DataTexture2DArray.js +0 -2
  388. package/src/textures/DataTexture3D.js +0 -2
  389. package/src/textures/FramebufferTexture.js +25 -0
  390. package/src/textures/Texture.js +8 -1
  391. package/src/textures/VideoTexture.js +1 -3
  392. package/examples/js/WebGL.js +0 -90
  393. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  394. package/examples/js/libs/dat.gui.min.js +0 -14
  395. package/examples/js/utils/RoughnessMipmapper.js +0 -278
  396. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  397. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  398. package/examples/jsm/libs/glslang.js +0 -78
  399. package/examples/jsm/libs/glslang.wasm +0 -0
  400. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  401. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  402. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  403. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  404. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  405. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  406. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  407. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  408. package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
  409. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -13,26 +13,34 @@
13
13
  const textures = {};
14
14
  scene.traverseVisible( object => {
15
15
 
16
- if ( object.isMesh && object.material.isMeshStandardMaterial ) {
16
+ if ( object.isMesh ) {
17
17
 
18
- const geometry = object.geometry;
19
- const material = object.material;
20
- const geometryFileName = 'geometries/Geometry_' + geometry.id + '.usd';
18
+ if ( object.material.isMeshStandardMaterial ) {
21
19
 
22
- if ( ! ( geometryFileName in files ) ) {
20
+ const geometry = object.geometry;
21
+ const material = object.material;
22
+ const geometryFileName = 'geometries/Geometry_' + geometry.id + '.usd';
23
23
 
24
- const meshObject = buildMeshObject( geometry );
25
- files[ geometryFileName ] = buildUSDFileAsString( meshObject );
24
+ if ( ! ( geometryFileName in files ) ) {
26
25
 
27
- }
26
+ const meshObject = buildMeshObject( geometry );
27
+ files[ geometryFileName ] = buildUSDFileAsString( meshObject );
28
28
 
29
- if ( ! ( material.uuid in materials ) ) {
29
+ }
30
30
 
31
- materials[ material.uuid ] = material;
31
+ if ( ! ( material.uuid in materials ) ) {
32
32
 
33
- }
33
+ materials[ material.uuid ] = material;
34
+
35
+ }
34
36
 
35
- output += buildXform( object, geometry, material );
37
+ output += buildXform( object, geometry, material );
38
+
39
+ } else {
40
+
41
+ console.warn( 'THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)', object );
42
+
43
+ }
36
44
 
37
45
  }
38
46
 
@@ -228,25 +236,33 @@ def "Geometry"
228
236
 
229
237
  function buildMeshVertexCount( geometry ) {
230
238
 
231
- const count = geometry.index !== null ? geometry.index.array.length : geometry.attributes.position.count;
239
+ const count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count;
232
240
  return Array( count / 3 ).fill( 3 ).join( ', ' );
233
241
 
234
242
  }
235
243
 
236
244
  function buildMeshVertexIndices( geometry ) {
237
245
 
238
- if ( geometry.index !== null ) {
246
+ const index = geometry.index;
247
+ const array = [];
239
248
 
240
- return geometry.index.array.join( ', ' );
249
+ if ( index !== null ) {
241
250
 
242
- }
251
+ for ( let i = 0; i < index.count; i ++ ) {
243
252
 
244
- const array = [];
245
- const length = geometry.attributes.position.count;
253
+ array.push( index.getX( i ) );
246
254
 
247
- for ( let i = 0; i < length; i ++ ) {
255
+ }
256
+
257
+ } else {
248
258
 
249
- array.push( i );
259
+ const length = geometry.attributes.position.count;
260
+
261
+ for ( let i = 0; i < length; i ++ ) {
262
+
263
+ array.push( i );
264
+
265
+ }
250
266
 
251
267
  }
252
268
 
@@ -264,11 +280,13 @@ def "Geometry"
264
280
  }
265
281
 
266
282
  const array = [];
267
- const data = attribute.array;
268
283
 
269
- for ( let i = 0; i < data.length; i += 3 ) {
284
+ for ( let i = 0; i < attribute.count; i ++ ) {
270
285
 
271
- array.push( `(${data[ i + 0 ].toPrecision( PRECISION )}, ${data[ i + 1 ].toPrecision( PRECISION )}, ${data[ i + 2 ].toPrecision( PRECISION )})` );
286
+ const x = attribute.getX( i );
287
+ const y = attribute.getY( i );
288
+ const z = attribute.getZ( i );
289
+ array.push( `(${x.toPrecision( PRECISION )}, ${y.toPrecision( PRECISION )}, ${z.toPrecision( PRECISION )})` );
272
290
 
273
291
  }
274
292
 
@@ -286,11 +304,12 @@ def "Geometry"
286
304
  }
287
305
 
288
306
  const array = [];
289
- const data = attribute.array;
290
307
 
291
- for ( let i = 0; i < data.length; i += 2 ) {
308
+ for ( let i = 0; i < attribute.count; i ++ ) {
292
309
 
293
- array.push( `(${data[ i + 0 ].toPrecision( PRECISION )}, ${1 - data[ i + 1 ].toPrecision( PRECISION )})` );
310
+ const x = attribute.getX( i );
311
+ const y = attribute.getY( i );
312
+ array.push( `(${x.toPrecision( PRECISION )}, ${1 - y.toPrecision( PRECISION )})` );
294
313
 
295
314
  }
296
315
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  class ConvexGeometry extends THREE.BufferGeometry {
4
4
 
5
- constructor( points ) {
5
+ constructor( points = [] ) {
6
6
 
7
7
  super(); // buffers
8
8
 
@@ -42,7 +42,6 @@
42
42
  *
43
43
  * Code converted from my ancient SPD software, http://tog.acm.org/resources/SPD/
44
44
  * Created for the Udacity course "Interactive Rendering", http://bit.ly/ericity
45
- * Lesson: https://www.udacity.com/course/viewer#!/c-cs291/l-68866048/m-106482448
46
45
  * YouTube video on teapot history: https://www.youtube.com/watch?v=DxMfblPzFNc
47
46
  *
48
47
  * See https://en.wikipedia.org/wiki/Utah_teapot for the history of the teapot
@@ -215,6 +215,8 @@
215
215
 
216
216
  _matrix.decompose( _center, _quaternion, _scale );
217
217
 
218
+ _center.applyMatrix4( object.matrixWorld );
219
+
218
220
  if ( frustum.containsPoint( _center ) ) {
219
221
 
220
222
  this.instances[ object.uuid ].push( instanceId );
@@ -12,13 +12,15 @@
12
12
  this.pointTopLeft = new THREE.Vector2();
13
13
  this.pointBottomRight = new THREE.Vector2();
14
14
  this.isDown = false;
15
- this.renderer.domElement.addEventListener( 'pointerdown', function ( event ) {
15
+
16
+ this.onPointerDown = function ( event ) {
16
17
 
17
18
  this.isDown = true;
18
19
  this.onSelectStart( event );
19
20
 
20
- }.bind( this ) );
21
- this.renderer.domElement.addEventListener( 'pointermove', function ( event ) {
21
+ }.bind( this );
22
+
23
+ this.onPointerMove = function ( event ) {
22
24
 
23
25
  if ( this.isDown ) {
24
26
 
@@ -26,13 +28,26 @@
26
28
 
27
29
  }
28
30
 
29
- }.bind( this ) );
30
- this.renderer.domElement.addEventListener( 'pointerup', function ( event ) {
31
+ }.bind( this );
32
+
33
+ this.onPointerUp = function () {
31
34
 
32
35
  this.isDown = false;
33
- this.onSelectOver( event );
36
+ this.onSelectOver();
37
+
38
+ }.bind( this );
39
+
40
+ this.renderer.domElement.addEventListener( 'pointerdown', this.onPointerDown );
41
+ this.renderer.domElement.addEventListener( 'pointermove', this.onPointerMove );
42
+ this.renderer.domElement.addEventListener( 'pointerup', this.onPointerUp );
43
+
44
+ }
45
+
46
+ dispose() {
34
47
 
35
- }.bind( this ) );
48
+ this.renderer.domElement.removeEventListener( 'pointerdown', this.onPointerDown );
49
+ this.renderer.domElement.removeEventListener( 'pointermove', this.onPointerMove );
50
+ this.renderer.domElement.removeEventListener( 'pointerup', this.onPointerUp );
36
51
 
37
52
  }
38
53
 
@@ -28,6 +28,8 @@
28
28
  const ltc_float_2 = new Float32Array( LTC_MAT_2 );
29
29
  THREE.UniformsLib.LTC_FLOAT_1 = new THREE.DataTexture( ltc_float_1, 64, 64, THREE.RGBAFormat, THREE.FloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
30
30
  THREE.UniformsLib.LTC_FLOAT_2 = new THREE.DataTexture( ltc_float_2, 64, 64, THREE.RGBAFormat, THREE.FloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
31
+ THREE.UniformsLib.LTC_FLOAT_1.needsUpdate = true;
32
+ THREE.UniformsLib.LTC_FLOAT_2.needsUpdate = true;
31
33
  const ltc_half_1 = new Uint16Array( LTC_MAT_1.length );
32
34
  LTC_MAT_1.forEach( function ( x, index ) {
33
35
 
@@ -42,6 +44,8 @@
42
44
  } );
43
45
  THREE.UniformsLib.LTC_HALF_1 = new THREE.DataTexture( ltc_half_1, 64, 64, THREE.RGBAFormat, THREE.HalfFloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
44
46
  THREE.UniformsLib.LTC_HALF_2 = new THREE.DataTexture( ltc_half_2, 64, 64, THREE.RGBAFormat, THREE.HalfFloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
47
+ THREE.UniformsLib.LTC_HALF_1.needsUpdate = true;
48
+ THREE.UniformsLib.LTC_HALF_2.needsUpdate = true;
45
49
 
46
50
  }
47
51
 
@@ -7,6 +7,7 @@
7
7
  * dashed: <boolean>,
8
8
  * dashScale: <float>,
9
9
  * dashSize: <float>,
10
+ * dashOffset: <float>,
10
11
  * gapSize: <float>,
11
12
  * resolution: <Vector2>, // to be set by renderer
12
13
  * }
@@ -21,6 +22,9 @@
21
22
  resolution: {
22
23
  value: new THREE.Vector2( 1, 1 )
23
24
  },
25
+ dashOffset: {
26
+ value: 0
27
+ },
24
28
  dashScale: {
25
29
  value: 1
26
30
  },
@@ -52,10 +56,23 @@
52
56
  attribute vec3 instanceColorStart;
53
57
  attribute vec3 instanceColorEnd;
54
58
 
55
- varying vec2 vUv;
56
- varying vec4 worldPos;
57
- varying vec3 worldStart;
58
- varying vec3 worldEnd;
59
+ #ifdef WORLD_UNITS
60
+
61
+ varying vec4 worldPos;
62
+ varying vec3 worldStart;
63
+ varying vec3 worldEnd;
64
+
65
+ #ifdef USE_DASH
66
+
67
+ varying vec2 vUv;
68
+
69
+ #endif
70
+
71
+ #else
72
+
73
+ varying vec2 vUv;
74
+
75
+ #endif
59
76
 
60
77
  #ifdef USE_DASH
61
78
 
@@ -92,19 +109,26 @@
92
109
  #ifdef USE_DASH
93
110
 
94
111
  vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;
112
+ vUv = uv;
95
113
 
96
114
  #endif
97
115
 
98
116
  float aspect = resolution.x / resolution.y;
99
117
 
100
- vUv = uv;
101
-
102
118
  // camera space
103
119
  vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );
104
120
  vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );
105
121
 
106
- worldStart = start.xyz;
107
- worldEnd = end.xyz;
122
+ #ifdef WORLD_UNITS
123
+
124
+ worldStart = start.xyz;
125
+ worldEnd = end.xyz;
126
+
127
+ #else
128
+
129
+ vUv = uv;
130
+
131
+ #endif
108
132
 
109
133
  // special case for perspective projection, and segments that terminate either in, or behind, the camera plane
110
134
  // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
@@ -254,15 +278,31 @@
254
278
 
255
279
  #ifdef USE_DASH
256
280
 
281
+ uniform float dashOffset;
257
282
  uniform float dashSize;
258
283
  uniform float gapSize;
259
284
 
260
285
  #endif
261
286
 
262
287
  varying float vLineDistance;
263
- varying vec4 worldPos;
264
- varying vec3 worldStart;
265
- varying vec3 worldEnd;
288
+
289
+ #ifdef WORLD_UNITS
290
+
291
+ varying vec4 worldPos;
292
+ varying vec3 worldStart;
293
+ varying vec3 worldEnd;
294
+
295
+ #ifdef USE_DASH
296
+
297
+ varying vec2 vUv;
298
+
299
+ #endif
300
+
301
+ #else
302
+
303
+ varying vec2 vUv;
304
+
305
+ #endif
266
306
 
267
307
  #include <common>
268
308
  #include <color_pars_fragment>
@@ -270,8 +310,6 @@
270
310
  #include <logdepthbuf_pars_fragment>
271
311
  #include <clipping_planes_pars_fragment>
272
312
 
273
- varying vec2 vUv;
274
-
275
313
  vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {
276
314
 
277
315
  float mua;
@@ -309,7 +347,7 @@
309
347
 
310
348
  if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
311
349
 
312
- if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
350
+ if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
313
351
 
314
352
  #endif
315
353
 
@@ -330,7 +368,7 @@
330
368
 
331
369
  #ifndef USE_DASH
332
370
 
333
- #ifdef ALPHA_TO_COVERAGE
371
+ #ifdef USE_ALPHA_TO_COVERAGE
334
372
 
335
373
  float dnorm = fwidth( norm );
336
374
  alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );
@@ -349,7 +387,7 @@
349
387
 
350
388
  #else
351
389
 
352
- #ifdef ALPHA_TO_COVERAGE
390
+ #ifdef USE_ALPHA_TO_COVERAGE
353
391
 
354
392
  // artifacts appear on some hardware if a derivative is taken within a conditional
355
393
  float a = vUv.x;
@@ -566,12 +604,12 @@
566
604
  enumerable: true,
567
605
  get: function () {
568
606
 
569
- return Boolean( 'ALPHA_TO_COVERAGE' in this.defines );
607
+ return Boolean( 'USE_ALPHA_TO_COVERAGE' in this.defines );
570
608
 
571
609
  },
572
610
  set: function ( value ) {
573
611
 
574
- if ( Boolean( value ) !== Boolean( 'ALPHA_TO_COVERAGE' in this.defines ) ) {
612
+ if ( Boolean( value ) !== Boolean( 'USE_ALPHA_TO_COVERAGE' in this.defines ) ) {
575
613
 
576
614
  this.needsUpdate = true;
577
615
 
@@ -579,12 +617,12 @@
579
617
 
580
618
  if ( value === true ) {
581
619
 
582
- this.defines.ALPHA_TO_COVERAGE = '';
620
+ this.defines.USE_ALPHA_TO_COVERAGE = '';
583
621
  this.extensions.derivatives = true;
584
622
 
585
623
  } else {
586
624
 
587
- delete this.defines.ALPHA_TO_COVERAGE;
625
+ delete this.defines.USE_ALPHA_TO_COVERAGE;
588
626
  this.extensions.derivatives = false;
589
627
 
590
628
  }
@@ -22,7 +22,29 @@
22
22
 
23
23
  const _sphere = new THREE.Sphere();
24
24
 
25
- const _clipToWorldVector = new THREE.Vector4();
25
+ const _clipToWorldVector = new THREE.Vector4(); // Returns the margin required to expand by in world space given the distance from the camera,
26
+ // line width, resolution, and camera projection
27
+
28
+
29
+ function getWorldSpaceHalfWidth( camera, distance, lineWidth, resolution ) {
30
+
31
+ // transform into clip space, adjust the x and y values by the pixel width offset, then
32
+ // transform back into world space to get world offset. Note clip space is [-1, 1] so full
33
+ // width does not need to be halved.
34
+ _clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
35
+
36
+ _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
37
+
38
+ _clipToWorldVector.x = lineWidth / resolution.width;
39
+ _clipToWorldVector.y = lineWidth / resolution.height;
40
+
41
+ _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
42
+
43
+ _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
44
+
45
+ return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
46
+
47
+ }
26
48
 
27
49
  class LineSegments2 extends THREE.Mesh {
28
50
 
@@ -84,10 +106,7 @@
84
106
  const instanceStart = geometry.attributes.instanceStart;
85
107
  const instanceEnd = geometry.attributes.instanceEnd; // camera forward is negative
86
108
 
87
- const near = - camera.near; // clip space is [ - 1, 1 ] so multiply by two to get the full
88
- // width in clip space
89
-
90
- const ssMaxWidth = 2.0 * Math.max( lineWidth / resolution.width, lineWidth / resolution.height ); //
109
+ const near = - camera.near; //
91
110
  // check if we intersect the sphere bounds
92
111
 
93
112
  if ( geometry.boundingSphere === null ) {
@@ -98,16 +117,9 @@
98
117
 
99
118
  _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
100
119
 
101
- const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( ray.origin ) ); // get the w component to scale the world space line width
102
-
103
- _clipToWorldVector.set( 0, 0, - distanceToSphere, 1.0 ).applyMatrix4( camera.projectionMatrix );
104
-
105
- _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
106
-
107
- _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse ); // increase the sphere bounds by the worst case line screen space width
108
-
120
+ const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( ray.origin ) ); // increase the sphere bounds by the worst case line screen space width
109
121
 
110
- const sphereMargin = Math.abs( ssMaxWidth / _clipToWorldVector.w ) * 0.5;
122
+ const sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, lineWidth, resolution );
111
123
  _sphere.radius += sphereMargin;
112
124
 
113
125
  if ( raycaster.ray.intersectsSphere( _sphere ) === false ) {
@@ -126,16 +138,9 @@
126
138
 
127
139
  _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
128
140
 
129
- const distanceToBox = Math.max( camera.near, _box.distanceToPoint( ray.origin ) ); // get the w component to scale the world space line width
130
-
131
- _clipToWorldVector.set( 0, 0, - distanceToBox, 1.0 ).applyMatrix4( camera.projectionMatrix );
132
-
133
- _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
134
-
135
- _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse ); // increase the sphere bounds by the worst case line screen space width
136
-
141
+ const distanceToBox = Math.max( camera.near, _box.distanceToPoint( ray.origin ) ); // increase the box bounds by the worst case line screen space width
137
142
 
138
- const boxMargin = Math.abs( ssMaxWidth / _clipToWorldVector.w ) * 0.5;
143
+ const boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, lineWidth, resolution );
139
144
  _box.max.x += boxMargin;
140
145
  _box.max.y += boxMargin;
141
146
  _box.max.z += boxMargin;
@@ -276,7 +281,7 @@
276
281
 
277
282
  }
278
283
 
279
- LineSegments2.prototype.LineSegments2 = true;
284
+ LineSegments2.prototype.isLineSegments2 = true;
280
285
 
281
286
  THREE.LineSegments2 = LineSegments2;
282
287
 
@@ -231,6 +231,10 @@
231
231
 
232
232
  }
233
233
 
234
+ map.wrapS = texture.wrapU === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
235
+ map.wrapT = texture.wrapV === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
236
+ map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] );
237
+
234
238
  }
235
239
 
236
240
  }
@@ -778,7 +782,8 @@
778
782
  const layers = [];
779
783
  const views = [];
780
784
  const namedViews = [];
781
- const groups = []; //Handle objects
785
+ const groups = [];
786
+ const strings = []; //Handle objects
782
787
 
783
788
  const objs = doc.objects();
784
789
  const cnt = objs.count;
@@ -840,6 +845,13 @@
840
845
  type: textureType
841
846
  };
842
847
  const image = doc.getEmbeddedFileAsBase64( _texture.fileName );
848
+ texture.wrapU = _texture.wrapU;
849
+ texture.wrapV = _texture.wrapV;
850
+ texture.wrapW = _texture.wrapW;
851
+
852
+ const uvw = _texture.uvwTransform.toFloatArray( true );
853
+
854
+ texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ];
843
855
 
844
856
  if ( image ) {
845
857
 
@@ -959,18 +971,18 @@
959
971
  // console.log( `Dimstyle Count: ${doc.dimstyles().count()}` );
960
972
  // Handle bitmaps
961
973
  // console.log( `Bitmap Count: ${doc.bitmaps().count()}` );
962
- // Handle strings -- this seems to be broken at the moment in rhino3dm
974
+ // Handle strings
963
975
  // console.log( `Document Strings Count: ${doc.strings().count()}` );
976
+ // Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section
977
+ //console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` );
978
+
979
+ const strings_count = doc.strings().count();
964
980
 
965
- /*
966
- for( var i = 0; i < doc.strings().count(); i++ ){
967
- var _string= doc.strings().get( i );
968
- console.log(_string);
969
- var string = extractProperties( _group );
970
- strings.push( string );
971
- _string.delete();
972
- }
973
- */
981
+ for ( let i = 0; i < strings_count; i ++ ) {
982
+
983
+ strings.push( doc.strings().get( i ) );
984
+
985
+ }
974
986
 
975
987
  doc.delete();
976
988
  return {
@@ -980,6 +992,7 @@
980
992
  views,
981
993
  namedViews,
982
994
  groups,
995
+ strings,
983
996
  settings
984
997
  };
985
998
 
@@ -968,7 +968,7 @@
968
968
  geometry.setIndex( new THREE.BufferAttribute( meshData[ 'triangles' ], 1 ) );
969
969
  geometry.setAttribute( 'position', new THREE.BufferAttribute( meshData[ 'vertices' ], 3 ) );
970
970
  const material = new THREE.MeshPhongMaterial( {
971
- color: 0xaaaaff,
971
+ color: 0xffffff,
972
972
  flatShading: true
973
973
  } );
974
974
  const mesh = new THREE.Mesh( geometry, material );
@@ -1299,7 +1299,7 @@
1299
1299
  for ( let i = 0; i < buildData.length; i ++ ) {
1300
1300
 
1301
1301
  const buildItem = buildData[ i ];
1302
- const object3D = objects[ buildItem[ 'objectId' ] ]; // apply transform
1302
+ const object3D = objects[ buildItem[ 'objectId' ] ].clone(); // apply transform
1303
1303
 
1304
1304
  const transform = buildItem[ 'transform' ];
1305
1305
 
@@ -4,8 +4,6 @@
4
4
  * Description: Early release of an AMF THREE.Loader following the pattern of the
5
5
  * example loaders in the three.js project.
6
6
  *
7
- * More information about the AMF format: http://amf.wikispaces.com
8
- *
9
7
  * Usage:
10
8
  * const loader = new AMFLoader();
11
9
  * loader.load('/path/to/project.amf', function(objecttree) {
@@ -28,6 +28,7 @@
28
28
  this.workerNextTaskID = 1;
29
29
  this.workerSourceURL = '';
30
30
  this.workerConfig = null;
31
+ console.warn( 'THREE.BasisTextureLoader: This loader is deprecated, and will be removed in a future release. ' + 'Instead, use Basis Universal compression in KTX2 (.ktx2) files with THREE.KTX2Loader.' );
31
32
 
32
33
  }
33
34