super-three 0.133.3 → 0.136.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 (354) hide show
  1. package/build/three.js +1059 -783
  2. package/build/three.min.js +1 -1
  3. package/build/three.module.js +1424 -895
  4. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  6. package/examples/fonts/open-sans/open-sans.css +9 -0
  7. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  12. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  13. package/examples/js/animation/CCDIKSolver.js +0 -1
  14. package/examples/js/animation/MMDPhysics.js +1 -3
  15. package/examples/js/controls/ArcballControls.js +99 -72
  16. package/examples/js/controls/DragControls.js +7 -0
  17. package/examples/js/controls/OrbitControls.js +5 -36
  18. package/examples/js/controls/TrackballControls.js +3 -2
  19. package/examples/js/controls/TransformControls.js +24 -1
  20. package/examples/js/csm/CSM.js +2 -2
  21. package/examples/js/csm/CSMFrustum.js +133 -0
  22. package/examples/js/curves/CurveExtras.js +0 -2
  23. package/examples/js/effects/AsciiEffect.js +2 -9
  24. package/examples/js/exporters/GLTFExporter.js +148 -64
  25. package/examples/js/exporters/USDZExporter.js +45 -26
  26. package/examples/js/geometries/TeapotGeometry.js +0 -1
  27. package/examples/js/interactive/SelectionBox.js +2 -0
  28. package/examples/js/interactive/SelectionHelper.js +22 -7
  29. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  30. package/examples/js/lines/LineMaterial.js +58 -20
  31. package/examples/js/lines/LineSegments2.js +29 -24
  32. package/examples/js/loaders/3DMLoader.js +24 -11
  33. package/examples/js/loaders/3MFLoader.js +2 -2
  34. package/examples/js/loaders/AMFLoader.js +0 -2
  35. package/examples/js/loaders/ColladaLoader.js +61 -4
  36. package/examples/js/loaders/EXRLoader.js +185 -262
  37. package/examples/js/loaders/FBXLoader.js +4 -5
  38. package/examples/js/loaders/GLTFLoader.js +96 -33
  39. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -8
  40. package/examples/js/loaders/KTX2Loader.js +23 -2
  41. package/examples/js/loaders/KTXLoader.js +1 -1
  42. package/examples/js/loaders/LDrawLoader.js +26 -30
  43. package/examples/js/loaders/LUT3dlLoader.js +2 -0
  44. package/examples/js/loaders/LUTCubeLoader.js +2 -0
  45. package/examples/js/loaders/LWOLoader.js +8 -6
  46. package/examples/js/loaders/LogLuvLoader.js +766 -0
  47. package/examples/js/loaders/MMDLoader.js +0 -1
  48. package/examples/js/loaders/NRRDLoader.js +9 -2
  49. package/examples/js/loaders/OBJLoader.js +0 -2
  50. package/examples/js/loaders/PLYLoader.js +33 -8
  51. package/examples/js/loaders/RGBELoader.js +2 -16
  52. package/examples/js/loaders/RGBMLoader.js +55 -5
  53. package/examples/js/loaders/SVGLoader.js +9 -5
  54. package/examples/js/loaders/TDSLoader.js +237 -271
  55. package/examples/js/loaders/VOXLoader.js +1 -0
  56. package/examples/js/loaders/VRMLLoader.js +2 -1
  57. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  58. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  59. package/examples/js/math/ImprovedNoise.js +1 -1
  60. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  61. package/examples/js/objects/Lensflare.js +2 -10
  62. package/examples/js/objects/MarchingCubes.js +42 -128
  63. package/examples/js/objects/Reflector.js +7 -0
  64. package/examples/js/objects/Refractor.js +7 -0
  65. package/examples/js/objects/Sky.js +1 -1
  66. package/examples/js/objects/Water.js +2 -2
  67. package/examples/js/objects/Water2.js +4 -7
  68. package/examples/js/postprocessing/GlitchPass.js +3 -1
  69. package/examples/js/postprocessing/SSAOPass.js +1 -0
  70. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  71. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  72. package/examples/js/shaders/ConvolutionShader.js +0 -1
  73. package/examples/js/shaders/FXAAShader.js +1 -1
  74. package/examples/js/shaders/FilmShader.js +1 -1
  75. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  76. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  77. package/examples/js/shaders/SSRShader.js +1 -1
  78. package/examples/js/shaders/SSRrShader.js +1 -1
  79. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  80. package/examples/js/utils/GeometryUtils.js +1 -1
  81. package/examples/js/utils/RoughnessMipmapper.js +18 -28
  82. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  83. package/examples/jsm/animation/MMDPhysics.js +0 -2
  84. package/examples/jsm/controls/ArcballControls.js +80 -77
  85. package/examples/jsm/controls/DragControls.js +7 -0
  86. package/examples/jsm/controls/OrbitControls.js +9 -51
  87. package/examples/jsm/controls/TrackballControls.js +1 -1
  88. package/examples/jsm/controls/TransformControls.js +24 -1
  89. package/examples/jsm/csm/CSM.js +3 -3
  90. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  91. package/examples/jsm/curves/CurveExtras.js +0 -2
  92. package/examples/jsm/effects/AsciiEffect.js +2 -9
  93. package/examples/jsm/exporters/GLTFExporter.js +161 -75
  94. package/examples/jsm/exporters/USDZExporter.js +47 -26
  95. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  96. package/examples/jsm/interactive/SelectionBox.js +1 -0
  97. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  98. package/examples/jsm/libs/flow.module.js +3338 -0
  99. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  100. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  101. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  102. package/examples/jsm/lines/LineMaterial.js +59 -23
  103. package/examples/jsm/lines/LineSegments2.js +22 -18
  104. package/examples/jsm/loaders/3DMLoader.js +18 -12
  105. package/examples/jsm/loaders/3MFLoader.js +2 -2
  106. package/examples/jsm/loaders/AMFLoader.js +0 -2
  107. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  108. package/examples/jsm/loaders/EXRLoader.js +184 -293
  109. package/examples/jsm/loaders/FBXLoader.js +4 -5
  110. package/examples/jsm/loaders/GLTFLoader.js +101 -37
  111. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -14
  112. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  113. package/examples/jsm/loaders/KTXLoader.js +1 -1
  114. package/examples/jsm/loaders/LDrawLoader.js +23 -24
  115. package/examples/jsm/loaders/LUT3dlLoader.js +2 -0
  116. package/examples/jsm/loaders/LUTCubeLoader.js +2 -0
  117. package/examples/jsm/loaders/LWOLoader.js +8 -6
  118. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  119. package/examples/jsm/loaders/MMDLoader.js +0 -1
  120. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  121. package/examples/jsm/loaders/OBJLoader.js +0 -2
  122. package/examples/jsm/loaders/PLYLoader.js +34 -8
  123. package/examples/jsm/loaders/RGBELoader.js +0 -20
  124. package/examples/jsm/loaders/RGBMLoader.js +61 -7
  125. package/examples/jsm/loaders/SVGLoader.js +9 -6
  126. package/examples/jsm/loaders/TDSLoader.js +236 -275
  127. package/examples/jsm/loaders/VOXLoader.js +1 -0
  128. package/examples/jsm/loaders/VRMLLoader.js +2 -1
  129. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  130. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  131. package/examples/jsm/math/ImprovedNoise.js +1 -1
  132. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  133. package/examples/jsm/node-editor/NodeEditor.js +456 -0
  134. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  135. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  136. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  137. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  138. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  139. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  140. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  141. package/examples/jsm/node-editor/examples/rim.json +1 -0
  142. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  143. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  144. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  145. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  146. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  147. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  148. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  149. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  150. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  151. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  152. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  153. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  154. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  155. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  156. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  157. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  158. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  159. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  160. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  161. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  162. package/examples/jsm/nodes/math/MathNode.js +12 -0
  163. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  164. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  165. package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -164
  166. package/examples/jsm/objects/Lensflare.js +3 -14
  167. package/examples/jsm/objects/MarchingCubes.js +46 -152
  168. package/examples/jsm/objects/Reflector.js +7 -0
  169. package/examples/jsm/objects/Refractor.js +7 -0
  170. package/examples/jsm/objects/Sky.js +1 -1
  171. package/examples/jsm/objects/Water.js +2 -2
  172. package/examples/jsm/objects/Water2.js +4 -8
  173. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  174. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  175. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  176. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  177. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  178. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  179. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  180. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  181. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  182. package/examples/jsm/postprocessing/GlitchPass.js +4 -2
  183. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  184. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  185. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  186. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  187. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  188. package/examples/jsm/postprocessing/SMAAPass.js +1 -1
  189. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  190. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  191. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  192. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  193. package/examples/jsm/postprocessing/SavePass.js +1 -1
  194. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  195. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  196. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  197. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  198. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  199. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  200. package/examples/jsm/renderers/nodes/Nodes.js +15 -13
  201. package/examples/jsm/renderers/nodes/ShaderNode.js +194 -41
  202. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  203. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  204. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  205. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  206. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  207. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  208. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  209. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  210. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  211. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  212. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  213. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  214. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  215. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  216. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  217. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  218. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  219. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  220. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  221. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  222. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  223. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  224. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  225. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  226. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  227. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  228. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  229. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +60 -43
  230. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  231. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  232. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  233. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  234. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  235. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +10 -2
  236. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  237. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  238. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  239. package/examples/jsm/renderers/nodes/math/MathNode.js +90 -37
  240. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  241. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  242. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  243. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  244. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  245. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  246. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  247. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  248. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  249. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  250. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  251. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  252. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  253. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  254. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  255. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  256. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  257. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  258. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  259. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  260. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  261. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  262. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  263. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +12 -28
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
  266. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  267. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +453 -95
  268. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  269. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  270. package/examples/jsm/shaders/FXAAShader.js +1 -1
  271. package/examples/jsm/shaders/FilmShader.js +1 -1
  272. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  273. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  274. package/examples/jsm/shaders/SSRShader.js +1 -1
  275. package/examples/jsm/shaders/SSRrShader.js +1 -1
  276. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  277. package/examples/jsm/utils/GeometryUtils.js +1 -1
  278. package/examples/jsm/utils/RoughnessMipmapper.js +19 -31
  279. package/examples/jsm/utils/WorkerPool.js +11 -11
  280. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  281. package/package.json +24 -18
  282. package/src/Three.Legacy.js +18 -0
  283. package/src/Three.js +1 -3
  284. package/src/cameras/StereoCamera.js +8 -7
  285. package/src/constants.js +1 -8
  286. package/src/core/Layers.js +7 -1
  287. package/src/core/Object3D.js +3 -1
  288. package/src/extras/PMREMGenerator.js +23 -109
  289. package/src/extras/core/Interpolations.js +1 -1
  290. package/src/geometries/LatheGeometry.js +70 -47
  291. package/src/helpers/CameraHelper.js +1 -1
  292. package/src/loaders/FileLoader.js +98 -144
  293. package/src/loaders/ImageLoader.js +9 -4
  294. package/src/loaders/LoaderUtils.js +26 -0
  295. package/src/loaders/MaterialLoader.js +7 -4
  296. package/src/loaders/ObjectLoader.js +2 -0
  297. package/src/materials/Material.js +4 -4
  298. package/src/materials/MeshPhysicalMaterial.js +20 -14
  299. package/src/math/Color.js +0 -38
  300. package/src/math/MathUtils.js +5 -16
  301. package/src/math/Ray.js +2 -2
  302. package/src/math/Sphere.js +10 -1
  303. package/src/objects/Skeleton.js +1 -0
  304. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  305. package/src/renderers/WebGLRenderer.js +105 -132
  306. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  307. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  308. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  309. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -74
  310. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  311. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  312. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  313. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  314. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  315. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  316. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  317. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  318. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  319. package/src/renderers/shaders/ShaderLib.js +6 -4
  320. package/src/renderers/shaders/UniformsLib.js +1 -2
  321. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  322. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  323. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  324. package/src/renderers/webgl/WebGLMorphtargets.js +1 -0
  325. package/src/renderers/webgl/WebGLProgram.js +11 -24
  326. package/src/renderers/webgl/WebGLPrograms.js +194 -33
  327. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  328. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  329. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  330. package/src/renderers/webgl/WebGLState.js +76 -17
  331. package/src/renderers/webgl/WebGLTextures.js +367 -61
  332. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  333. package/src/renderers/webxr/WebXRManager.js +77 -109
  334. package/src/scenes/Scene.js +1 -1
  335. package/src/textures/DataTexture.js +0 -2
  336. package/src/textures/DataTexture2DArray.js +0 -2
  337. package/src/textures/DataTexture3D.js +0 -2
  338. package/src/textures/FramebufferTexture.js +25 -0
  339. package/src/textures/Texture.js +6 -0
  340. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  341. package/examples/js/libs/dat.gui.min.js +0 -14
  342. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  343. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  344. package/examples/jsm/libs/glslang.js +0 -78
  345. package/examples/jsm/libs/glslang.wasm +0 -0
  346. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  347. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  348. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  349. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  350. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  351. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  352. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  353. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  354. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -1,75 +1,10 @@
1
- import VarNode from './VarNode.js';
2
- import PropertyNode from './PropertyNode.js';
3
- import PositionNode from '../accessors/PositionNode.js';
4
- import NormalNode from '../accessors/NormalNode.js';
5
-
6
- import { PI, RECIPROCAL_PI, EPSILON } from '../consts/MathConsts.js';
7
- import { saturateMacro, whiteComplementMacro } from '../functions/MathFunctions.js';
8
-
9
1
  class NodeKeywords {
10
2
 
11
- static PI = 'PI';
12
- static RECIPROCAL_PI = 'RECIPROCAL_PI';
13
- static EPSILON = 'EPSILON';
14
-
15
- static Saturate = 'saturate';
16
- static WhiteComplement = 'whiteComplement';
17
-
18
- static PositionLocal = 'PositionLocal';
19
- static PositionWorld = 'PositionWorld';
20
- static PositionView = 'PositionView';
21
- static PositionViewDirection = 'PositionViewDirection';
22
-
23
- static NormalLocal = 'NormalLocal';
24
- static NormalWorld = 'NormalWorld';
25
- static NormalView = 'NormalView';
26
-
27
- static Irradiance = 'Irradiance';
28
- static ReflectedLightIndirectDiffuse = 'ReflectedLightIndirectDiffuse';
29
- static ReflectedLightIndirectSpecular = 'ReflectedLightIndirectSpecular';
30
- static ReflectedLightDirectDiffuse = 'ReflectedLightDirectDiffuse';
31
- static ReflectedLightDirectSpecular = 'ReflectedLightDirectSpecular';
32
-
33
- static MaterialDiffuseColor = 'MaterialDiffuseColor';
34
-
35
- // STANDARD
36
- static MaterialRoughness = 'MaterialRoughness';
37
- static MaterialMetalness = 'MaterialMetalness';
38
- static MaterialSpecularTint = 'MaterialSpecularTint';
39
-
40
3
  constructor() {
41
4
 
42
- this.keywords = [
43
- // consts
44
- NodeKeywords.PI,
45
- NodeKeywords.RECIPROCAL_PI,
46
- NodeKeywords.EPSILON,
47
- // variadic macros
48
- NodeKeywords.Saturate,
49
- NodeKeywords.WhiteComplement,
50
- // nodes
51
- NodeKeywords.PositionLocal,
52
- NodeKeywords.PositionWorld,
53
- NodeKeywords.PositionView,
54
- NodeKeywords.PositionViewDirection,
55
- NodeKeywords.NormalLocal,
56
- NodeKeywords.NormalWorld,
57
- NodeKeywords.NormalView,
58
- // vars -> float
59
- NodeKeywords.MaterialRoughness,
60
- NodeKeywords.MaterialMetalness,
61
- // vars -> vec3
62
- NodeKeywords.Irradiance,
63
- NodeKeywords.ReflectedLightIndirectDiffuse,
64
- NodeKeywords.ReflectedLightIndirectSpecular,
65
- NodeKeywords.ReflectedLightDirectDiffuse,
66
- NodeKeywords.ReflectedLightDirectSpecular,
67
- NodeKeywords.MaterialSpecularTint,
68
- // vars -> vec4
69
- NodeKeywords.MaterialDiffuseColor
70
- ];
71
-
5
+ this.keywords = [];
72
6
  this.nodes = [];
7
+ this.keywordsCallback = {};
73
8
 
74
9
  }
75
10
 
@@ -77,120 +12,24 @@ class NodeKeywords {
77
12
 
78
13
  let node = this.nodes[ name ];
79
14
 
80
- if ( node === undefined ) {
81
-
82
- switch ( name ) {
83
-
84
- case NodeKeywords.PI:
85
-
86
- node = PI;
87
-
88
- break;
89
-
90
- case NodeKeywords.RECIPROCAL_PI:
91
-
92
- node = RECIPROCAL_PI;
93
-
94
- break;
95
-
96
- case NodeKeywords.EPSILON:
97
-
98
- node = EPSILON;
99
-
100
- break;
101
-
102
- case NodeKeywords.Saturate:
103
-
104
- node = saturateMacro;
105
-
106
- break;
107
-
108
- case NodeKeywords.WhiteComplement:
109
-
110
- node = whiteComplementMacro;
111
-
112
- break;
113
-
114
- case NodeKeywords.PositionLocal:
115
-
116
- node = new VarNode( new PositionNode( PositionNode.LOCAL ), name );
117
-
118
- break;
119
-
120
- case NodeKeywords.PositionWorld:
121
-
122
- node = new VarNode( new PositionNode( PositionNode.WORLD ), name );
15
+ if ( node === undefined && this.keywordsCallback[ name ] !== undefined ) {
123
16
 
124
- break;
17
+ node = this.keywordsCallback[ name ]( name );
125
18
 
126
- case NodeKeywords.PositionView:
19
+ this.nodes[ name ] = node;
127
20
 
128
- node = new VarNode( new PositionNode( PositionNode.VIEW ), name );
129
-
130
- break;
131
-
132
- case NodeKeywords.PositionViewDirection:
133
-
134
- node = new VarNode( new PositionNode( PositionNode.VIEW_DIRECTION ), name );
135
-
136
- break;
137
-
138
- case NodeKeywords.NormalLocal:
139
-
140
- node = new VarNode( new NormalNode( NormalNode.LOCAL ), name );
141
-
142
- break;
143
-
144
- case NodeKeywords.NormalWorld:
145
-
146
- node = new VarNode( new NormalNode( NormalNode.WORLD ), name );
147
-
148
- break;
149
-
150
- case NodeKeywords.NormalView:
151
-
152
- node = new VarNode( new NormalNode( NormalNode.VIEW ), name );
153
-
154
- break;
155
-
156
- // floats properties
157
- case NodeKeywords.MaterialRoughness:
158
- case NodeKeywords.MaterialMetalness:
159
-
160
- node = new PropertyNode( name, 'float' );
161
-
162
- break;
163
-
164
- // vec3 properties
165
- case NodeKeywords.Irradiance:
166
- case NodeKeywords.ReflectedLightIndirectDiffuse:
167
- case NodeKeywords.ReflectedLightIndirectSpecular:
168
- case NodeKeywords.ReflectedLightDirectDiffuse:
169
- case NodeKeywords.ReflectedLightDirectSpecular:
170
- case NodeKeywords.MaterialSpecularTint:
171
-
172
- node = new PropertyNode( name, 'vec3' );
173
-
174
- break;
175
-
176
- // vec4 properties
177
- case NodeKeywords.MaterialDiffuseColor:
178
-
179
- node = new PropertyNode( name, 'vec4' );
180
-
181
- break;
182
-
183
- }
21
+ }
184
22
 
185
- if ( node !== undefined ) {
23
+ return node;
186
24
 
187
- this.nodes[ name ] = node;
25
+ }
188
26
 
189
- }
27
+ addKeyword( name, callback ) {
190
28
 
191
- }
29
+ this.keywords.push( name );
30
+ this.keywordsCallback[ name ] = callback;
192
31
 
193
- return node;
32
+ return this;
194
33
 
195
34
  }
196
35
 
@@ -202,7 +41,7 @@ class NodeKeywords {
202
41
 
203
42
  const codeKeywords = code.match( regExp );
204
43
 
205
- const keywords = [];
44
+ const keywordNodes = [];
206
45
 
207
46
  if ( codeKeywords !== null ) {
208
47
 
@@ -210,9 +49,9 @@ class NodeKeywords {
210
49
 
211
50
  const node = this.getNode( keyword );
212
51
 
213
- if ( keywords.indexOf( node ) === - 1 ) {
52
+ if ( node !== undefined && keywordNodes.indexOf( node ) === - 1 ) {
214
53
 
215
- keywords.push( node );
54
+ keywordNodes.push( node );
216
55
 
217
56
  }
218
57
 
@@ -220,15 +59,15 @@ class NodeKeywords {
220
59
 
221
60
  }
222
61
 
223
- return keywords;
62
+ return keywordNodes;
224
63
 
225
64
  }
226
65
 
227
66
  include( builder, code ) {
228
67
 
229
- const keywords = this.parse( code );
68
+ const keywordNodes = this.parse( code );
230
69
 
231
- for ( const keywordNode of keywords ) {
70
+ for ( const keywordNode of keywordNodes ) {
232
71
 
233
72
  keywordNode.build( builder );
234
73
 
@@ -0,0 +1,11 @@
1
+ class NodeParser {
2
+
3
+ parseFunction( /*source*/ ) {
4
+
5
+ console.warn( 'Abstract function.' );
6
+
7
+ }
8
+
9
+ }
10
+
11
+ export default NodeParser;
@@ -5,10 +5,10 @@ class NodeVar {
5
5
  this.name = name;
6
6
  this.type = type;
7
7
 
8
- Object.defineProperty( this, 'isNodeVar', { value: true } );
9
-
10
8
  }
11
9
 
12
10
  }
13
11
 
12
+ NodeVar.prototype.isNodeVar = true;
13
+
14
14
  export default NodeVar;
@@ -2,7 +2,7 @@ import Node from './Node.js';
2
2
 
3
3
  class PropertyNode extends Node {
4
4
 
5
- constructor( name, nodeType ) {
5
+ constructor( name = null, nodeType = 'vec4' ) {
6
6
 
7
7
  super( nodeType );
8
8
 
@@ -10,10 +10,22 @@ class PropertyNode extends Node {
10
10
 
11
11
  }
12
12
 
13
+ getHash( builder ) {
14
+
15
+ return this.name || super.getHash( builder );
16
+
17
+ }
18
+
13
19
  generate( builder ) {
14
20
 
15
21
  const nodeVary = builder.getVarFromNode( this, this.getNodeType( builder ) );
16
- nodeVary.name = this.name;
22
+ const name = this.name;
23
+
24
+ if ( name !== null ) {
25
+
26
+ nodeVary.name = name;
27
+
28
+ }
17
29
 
18
30
  return builder.getPropertyName( nodeVary );
19
31
 
@@ -10,35 +10,32 @@ class TempNode extends Node {
10
10
 
11
11
  build( builder, output ) {
12
12
 
13
- const type = builder.getVectorType( this.getNodeType( builder ) );
13
+ const type = builder.getVectorType( this.getNodeType( builder, output ) );
14
14
 
15
- if ( type !== 'void' ) {
16
-
17
- const nodeVar = builder.getVarFromNode( this, type );
18
- const propertyName = builder.getPropertyName( nodeVar );
15
+ if ( builder.context.temp !== false && type !== 'void ' && output !== 'void' ) {
19
16
 
20
17
  const nodeData = builder.getDataFromNode( this );
21
18
 
22
- let snippet = nodeData.snippet;
19
+ if ( nodeData.snippet === undefined ) {
23
20
 
24
- if ( snippet === undefined ) {
21
+ const snippet = super.build( builder, type );
25
22
 
26
- snippet = super.build( builder, type );
23
+ const nodeVar = builder.getVarFromNode( this, type );
24
+ const propertyName = builder.getPropertyName( nodeVar );
27
25
 
28
26
  builder.addFlowCode( `${propertyName} = ${snippet}` );
29
27
 
30
28
  nodeData.snippet = snippet;
29
+ nodeData.propertyName = propertyName;
31
30
 
32
31
  }
33
32
 
34
- return builder.format( propertyName, type, output );
35
-
36
- } else {
37
-
38
- return super.build( builder, output );
33
+ return builder.format( nodeData.propertyName, type, output );
39
34
 
40
35
  }
41
36
 
37
+ return super.build( builder, output );
38
+
42
39
  }
43
40
 
44
41
  }
@@ -2,32 +2,37 @@ import Node from './Node.js';
2
2
 
3
3
  class VarNode extends Node {
4
4
 
5
- constructor( value, name = '', nodeType = null ) {
5
+ constructor( node, name = null, nodeType = null ) {
6
6
 
7
7
  super( nodeType );
8
8
 
9
- this.value = value;
9
+ this.node = node;
10
10
  this.name = name;
11
11
 
12
12
  }
13
13
 
14
+ getHash( builder ) {
15
+
16
+ return this.name || super.getHash( builder );
17
+
18
+ }
19
+
14
20
  getNodeType( builder ) {
15
21
 
16
- return super.getNodeType( builder ) || this.value.getNodeType( builder );
22
+ return super.getNodeType( builder ) || this.node.getNodeType( builder );
17
23
 
18
24
  }
19
25
 
20
26
  generate( builder ) {
21
27
 
22
28
  const type = builder.getVectorType( this.getNodeType( builder ) );
29
+ const node = this.node;
23
30
  const name = this.name;
24
- const value = this.value;
25
31
 
32
+ const snippet = node.build( builder, type );
26
33
  const nodeVar = builder.getVarFromNode( this, type );
27
34
 
28
- const snippet = value.build( builder, type );
29
-
30
- if ( name !== '' ) {
35
+ if ( name !== null ) {
31
36
 
32
37
  nodeVar.name = name;
33
38
 
@@ -3,11 +3,18 @@ import { NodeShaderStage } from './constants.js';
3
3
 
4
4
  class VaryNode extends Node {
5
5
 
6
- constructor( value ) {
6
+ constructor( node, name = null ) {
7
7
 
8
8
  super();
9
9
 
10
- this.value = value;
10
+ this.node = node;
11
+ this.name = name;
12
+
13
+ }
14
+
15
+ getHash( builder ) {
16
+
17
+ return this.name || super.getHash( builder );
11
18
 
12
19
  }
13
20
 
@@ -15,22 +22,30 @@ class VaryNode extends Node {
15
22
 
16
23
  // VaryNode is auto type
17
24
 
18
- return this.value.getNodeType( builder );
25
+ return this.node.getNodeType( builder );
19
26
 
20
27
  }
21
28
 
22
29
  generate( builder ) {
23
30
 
24
31
  const type = this.getNodeType( builder );
25
- const value = this.value;
32
+ const node = this.node;
33
+ const name = this.name;
26
34
 
27
35
  const nodeVary = builder.getVaryFromNode( this, type );
28
- const propertyName = builder.getPropertyName( nodeVary );
29
36
 
30
- // force nodeVary.snippet work in vertex stage
31
- builder.flowNodeFromShaderStage( NodeShaderStage.Vertex, value, type, propertyName );
37
+ if ( name !== null ) {
38
+
39
+ nodeVary.name = name;
40
+
41
+ }
42
+
43
+ const propertyName = builder.getPropertyName( nodeVary, NodeShaderStage.Vertex );
44
+
45
+ // force node run in vertex stage
46
+ builder.flowNodeFromShaderStage( NodeShaderStage.Vertex, node, type, propertyName );
32
47
 
33
- return propertyName;
48
+ return builder.getPropertyName( nodeVary );
34
49
 
35
50
  }
36
51
 
@@ -10,6 +10,8 @@ export const NodeUpdateType = {
10
10
  };
11
11
 
12
12
  export const NodeType = {
13
+ Boolean: 'bool',
14
+ Integer: 'int',
13
15
  Float: 'float',
14
16
  Vector2: 'vec2',
15
17
  Vector3: 'vec3',
@@ -1,11 +1,56 @@
1
1
  import TempNode from '../core/Node.js';
2
- import CodeNode from '../core/CodeNode.js';
3
- import * as EncodingFunctions from '../functions/EncodingFunctions.js';
2
+ import { ShaderNode,
3
+ vec3,
4
+ pow, mul, add, sub, mix, join,
5
+ lessThanEqual } from '../ShaderNode.js';
4
6
 
5
- import { LinearEncoding, sRGBEncoding, RGBEEncoding, RGBM7Encoding, RGBM16Encoding,
6
- RGBDEncoding, GammaEncoding, LogLuvEncoding } from 'three';
7
+ import { LinearEncoding, sRGBEncoding } from 'three';
7
8
 
8
- function getEncodingComponents ( encoding ) {
9
+ export const LinearToLinear = new ShaderNode( ( inputs ) => {
10
+
11
+ return inputs.value;
12
+
13
+ } );
14
+
15
+ export const sRGBToLinear = new ShaderNode( ( inputs ) => {
16
+
17
+ const { value } = inputs;
18
+
19
+ const rgb = value.rgb;
20
+
21
+ const a = pow( add( mul( rgb, 0.9478672986 ), vec3( 0.0521327014 ) ), vec3( 2.4 ) );
22
+ const b = mul( rgb, 0.0773993808 );
23
+ const factor = vec3( lessThanEqual( rgb, vec3( 0.04045 ) ) );
24
+
25
+ const rgbResult = mix( a, b, factor );
26
+
27
+ return join( rgbResult.r, rgbResult.g, rgbResult.b, value.a );
28
+
29
+ } );
30
+
31
+ export const LinearTosRGB = new ShaderNode( ( inputs ) => {
32
+
33
+ const { value } = inputs;
34
+
35
+ const rgb = value.rgb;
36
+
37
+ const a = sub( mul( pow( value.rgb, vec3( 0.41666 ) ), 1.055 ), vec3( 0.055 ) );
38
+ const b = mul( rgb, 12.92 );
39
+ const factor = vec3( lessThanEqual( rgb, vec3( 0.0031308 ) ) );
40
+
41
+ const rgbResult = mix( a, b, factor );
42
+
43
+ return join( rgbResult.r, rgbResult.g, rgbResult.b, value.a );
44
+
45
+ } );
46
+
47
+ const EncodingLib = {
48
+ LinearToLinear,
49
+ sRGBToLinear,
50
+ LinearTosRGB
51
+ };
52
+
53
+ function getEncodingComponents( encoding ) {
9
54
 
10
55
  switch ( encoding ) {
11
56
 
@@ -13,18 +58,6 @@ function getEncodingComponents ( encoding ) {
13
58
  return [ 'Linear' ];
14
59
  case sRGBEncoding:
15
60
  return [ 'sRGB' ];
16
- case RGBEEncoding:
17
- return [ 'RGBE' ];
18
- case RGBM7Encoding:
19
- return [ 'RGBM', new FloatNode( 7.0 ).setConst( true ) ];
20
- case RGBM16Encoding:
21
- return [ 'RGBM', new FloatNode( 16.0 ).setConst( true ) ];
22
- case RGBDEncoding:
23
- return [ 'RGBD', new FloatNode( 256.0 ).setConst( true ) ];
24
- case GammaEncoding:
25
- return [ 'Gamma', new CodeNode( 'float( GAMMA_FACTOR )' ) ];
26
- case LogLuvEncoding:
27
- return [ 'LogLuv' ];
28
61
 
29
62
  }
30
63
 
@@ -34,31 +67,16 @@ class ColorSpaceNode extends TempNode {
34
67
 
35
68
  static LINEAR_TO_LINEAR = 'LinearToLinear';
36
69
 
37
- static GAMMA_TO_LINEAR = 'GammaToLinear';
38
- static LINEAR_TO_GAMMA = 'LinearToGamma';
39
-
40
70
  static SRGB_TO_LINEAR = 'sRGBToLinear';
41
71
  static LINEAR_TO_SRGB = 'LinearTosRGB';
42
72
 
43
- static RGBE_TO_LINEAR = 'RGBEToLinear';
44
- static LINEAR_TO_RGBE = 'LinearToRGBE';
45
-
46
- static RGBM_TO_LINEAR = 'RGBMToLinear';
47
- static LINEAR_TO_RGBM = 'LinearToRGBM';
48
-
49
- static RGBD_TO_LINEAR = 'RGBDToLinear';
50
- static LINEAR_TO_RGBD = 'LinearToRGBD';
51
-
52
- static LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
53
- static LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
54
-
55
- constructor( method, input ) {
73
+ constructor( method, node ) {
56
74
 
57
75
  super( 'vec4' );
58
76
 
59
77
  this.method = method;
60
78
 
61
- this.input = input;
79
+ this.node = node;
62
80
  this.factor = null;
63
81
 
64
82
  }
@@ -90,22 +108,21 @@ class ColorSpaceNode extends TempNode {
90
108
  const type = this.getNodeType( builder );
91
109
 
92
110
  const method = this.method;
93
- const input = this.input;
111
+ const node = this.node;
94
112
 
95
113
  if ( method !== ColorSpaceNode.LINEAR_TO_LINEAR ) {
96
114
 
97
- const encodingFunctionNode = EncodingFunctions[ method ];
98
-
99
- const encodingFunctionCallNode = encodingFunctionNode.call( {
100
- value: input,
101
- factor: this.factor
102
- } );
115
+ const encodingFunctionNode = EncodingLib[ method ];
116
+ const factor = this.factor;
103
117
 
104
- return encodingFunctionCallNode.build( builder, type );
118
+ return encodingFunctionNode( {
119
+ value: node,
120
+ factor
121
+ } ).build( builder, type );
105
122
 
106
123
  } else {
107
124
 
108
- return input.build( builder, type );
125
+ return node.build( builder, type );
109
126
 
110
127
  }
111
128