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
@@ -2,7 +2,7 @@ import {
2
2
  ShaderMaterial,
3
3
  UniformsUtils
4
4
  } from 'three';
5
- import { Pass, FullScreenQuad } from '../postprocessing/Pass.js';
5
+ import { Pass, FullScreenQuad } from './Pass.js';
6
6
  import { CopyShader } from '../shaders/CopyShader.js';
7
7
 
8
8
  class TexturePass extends Pass {
@@ -10,7 +10,7 @@ import {
10
10
  Vector3,
11
11
  WebGLRenderTarget
12
12
  } from 'three';
13
- import { Pass, FullScreenQuad } from '../postprocessing/Pass.js';
13
+ import { Pass, FullScreenQuad } from './Pass.js';
14
14
  import { CopyShader } from '../shaders/CopyShader.js';
15
15
  import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js';
16
16
 
@@ -6,11 +6,11 @@ import {
6
6
 
7
7
  class CSS2DObject extends Object3D {
8
8
 
9
- constructor( element ) {
9
+ constructor( element = document.createElement( 'div' ) ) {
10
10
 
11
11
  super();
12
12
 
13
- this.element = element || document.createElement( 'div' );
13
+ this.element = element;
14
14
 
15
15
  this.element.style.position = 'absolute';
16
16
  this.element.style.userSelect = 'none';
@@ -57,7 +57,7 @@ const _b = new Vector3();
57
57
 
58
58
  class CSS2DRenderer {
59
59
 
60
- constructor() {
60
+ constructor( parameters = {} ) {
61
61
 
62
62
  const _this = this;
63
63
 
@@ -68,7 +68,8 @@ class CSS2DRenderer {
68
68
  objects: new WeakMap()
69
69
  };
70
70
 
71
- const domElement = document.createElement( 'div' );
71
+ const domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );
72
+
72
73
  domElement.style.overflow = 'hidden';
73
74
 
74
75
  this.domElement = domElement;
@@ -15,11 +15,11 @@ const _scale = new Vector3();
15
15
 
16
16
  class CSS3DObject extends Object3D {
17
17
 
18
- constructor( element ) {
18
+ constructor( element = document.createElement( 'div' ) ) {
19
19
 
20
20
  super();
21
21
 
22
- this.element = element || document.createElement( 'div' );
22
+ this.element = element;
23
23
  this.element.style.position = 'absolute';
24
24
  this.element.style.pointerEvents = 'auto';
25
25
  this.element.style.userSelect = 'none';
@@ -87,7 +87,7 @@ const _matrix2 = new Matrix4();
87
87
 
88
88
  class CSS3DRenderer {
89
89
 
90
- constructor() {
90
+ constructor( parameters = {} ) {
91
91
 
92
92
  const _this = this;
93
93
 
@@ -99,7 +99,8 @@ class CSS3DRenderer {
99
99
  objects: new WeakMap()
100
100
  };
101
101
 
102
- const domElement = document.createElement( 'div' );
102
+ const domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );
103
+
103
104
  domElement.style.overflow = 'hidden';
104
105
 
105
106
  this.domElement = domElement;
@@ -1,8 +1,8 @@
1
1
  // core
2
2
  import ArrayInputNode from './core/ArrayInputNode.js';
3
3
  import AttributeNode from './core/AttributeNode.js';
4
+ import BypassNode from './core/BypassNode.js';
4
5
  import CodeNode from './core/CodeNode.js';
5
- import ConstNode from './core/ConstNode.js';
6
6
  import ContextNode from './core/ContextNode.js';
7
7
  import ExpressionNode from './core/ExpressionNode.js';
8
8
  import FunctionCallNode from './core/FunctionCallNode.js';
@@ -15,13 +15,10 @@ import NodeCode from './core/NodeCode.js';
15
15
  import NodeFrame from './core/NodeFrame.js';
16
16
  import NodeFunctionInput from './core/NodeFunctionInput.js';
17
17
  import NodeKeywords from './core/NodeKeywords.js';
18
- import NodeSlot from './core/NodeSlot.js';
19
18
  import NodeUniform from './core/NodeUniform.js';
20
19
  import NodeVar from './core/NodeVar.js';
21
20
  import NodeVary from './core/NodeVary.js';
22
21
  import PropertyNode from './core/PropertyNode.js';
23
- import StructNode from './core/StructNode.js';
24
- import StructVarNode from './core/StructVarNode.js';
25
22
  import TempNode from './core/TempNode.js';
26
23
  import VarNode from './core/VarNode.js';
27
24
  import VaryNode from './core/VaryNode.js';
@@ -37,11 +34,13 @@ import Object3DNode from './accessors/Object3DNode.js';
37
34
  import PointUVNode from './accessors/PointUVNode.js';
38
35
  import PositionNode from './accessors/PositionNode.js';
39
36
  import ReferenceNode from './accessors/ReferenceNode.js';
37
+ import SkinningNode from './accessors/SkinningNode.js';
40
38
  import UVNode from './accessors/UVNode.js';
41
39
 
42
40
  // inputs
43
41
  import ColorNode from './inputs/ColorNode.js';
44
42
  import FloatNode from './inputs/FloatNode.js';
43
+ import IntNode from './inputs/IntNode.js';
45
44
  import Matrix3Node from './inputs/Matrix3Node.js';
46
45
  import Matrix4Node from './inputs/Matrix3Node.js';
47
46
  import TextureNode from './inputs/TextureNode.js';
@@ -63,9 +62,12 @@ import LightNode from './lights/LightNode.js';
63
62
  import LightsNode from './lights/LightsNode.js';
64
63
 
65
64
  // utils
65
+ import ArrayElementNode from './utils/ArrayElementNode.js';
66
+ import ConvertNode from './utils/ConvertNode.js';
66
67
  import JoinNode from './utils/JoinNode.js';
67
68
  import SplitNode from './utils/SplitNode.js';
68
69
  import SpriteSheetUVNode from './utils/SpriteSheetUVNode.js';
70
+ import OscNode from './utils/OscNode.js';
69
71
  import TimerNode from './utils/TimerNode.js';
70
72
 
71
73
  // procedural
@@ -76,21 +78,19 @@ export * from './core/constants.js';
76
78
 
77
79
  // functions
78
80
  export * from './functions/BSDFs.js';
79
- export * from './functions/EncodingFunctions.js';
80
- export * from './functions/MathFunctions.js';
81
-
82
- // consts
83
- export * from './consts/MathConsts.js';
84
81
 
85
82
  // materials
86
83
  export * from './materials/Materials.js';
87
84
 
85
+ // shader node
86
+ export * from './ShaderNode.js';
87
+
88
88
  export {
89
89
  // core
90
90
  ArrayInputNode,
91
91
  AttributeNode,
92
+ BypassNode,
92
93
  CodeNode,
93
- ConstNode,
94
94
  ContextNode,
95
95
  ExpressionNode,
96
96
  FunctionCallNode,
@@ -103,13 +103,10 @@ export {
103
103
  NodeFrame,
104
104
  NodeFunctionInput,
105
105
  NodeKeywords,
106
- NodeSlot,
107
106
  NodeUniform,
108
107
  NodeVar,
109
108
  NodeVary,
110
109
  PropertyNode,
111
- StructNode,
112
- StructVarNode,
113
110
  TempNode,
114
111
  VarNode,
115
112
  VaryNode,
@@ -125,11 +122,13 @@ export {
125
122
  PointUVNode,
126
123
  PositionNode,
127
124
  ReferenceNode,
125
+ SkinningNode,
128
126
  UVNode,
129
127
 
130
128
  // inputs
131
129
  ColorNode,
132
130
  FloatNode,
131
+ IntNode,
133
132
  Matrix3Node,
134
133
  Matrix4Node,
135
134
  TextureNode,
@@ -151,9 +150,12 @@ export {
151
150
  LightsNode,
152
151
 
153
152
  // utils
153
+ ArrayElementNode,
154
+ ConvertNode,
154
155
  JoinNode,
155
156
  SplitNode,
156
157
  SpriteSheetUVNode,
158
+ OscNode,
157
159
  TimerNode,
158
160
 
159
161
  // procedural
@@ -1,3 +1,7 @@
1
+ // core
2
+ import PropertyNode from './core/PropertyNode.js';
3
+ import VarNode from './core/VarNode.js';
4
+
1
5
  // inputs
2
6
  import ColorNode from './inputs/ColorNode.js';
3
7
  import FloatNode from './inputs/FloatNode.js';
@@ -5,11 +9,18 @@ import Vector2Node from './inputs/Vector2Node.js';
5
9
  import Vector3Node from './inputs/Vector3Node.js';
6
10
  import Vector4Node from './inputs/Vector4Node.js';
7
11
 
12
+ // accessors
13
+ import PositionNode from './accessors/PositionNode.js';
14
+ import NormalNode from './accessors/NormalNode.js';
15
+
8
16
  // math
9
- import MathNode from './math/MathNode.js';
10
17
  import OperatorNode from './math/OperatorNode.js';
18
+ import CondNode from './math/CondNode.js';
19
+ import MathNode from './math/MathNode.js';
11
20
 
12
21
  // utils
22
+ import ArrayElementNode from './utils/ArrayElementNode.js';
23
+ import ConvertNode from './utils/ConvertNode.js';
13
24
  import JoinNode from './utils/JoinNode.js';
14
25
  import SplitNode from './utils/SplitNode.js';
15
26
 
@@ -18,17 +29,35 @@ import { Vector2, Vector3, Vector4, Color } from 'three';
18
29
 
19
30
  const NodeHandler = {
20
31
 
21
- get: function ( node, prop ) {
32
+ construct( NodeClosure, params ) {
33
+
34
+ const inputs = params.shift();
22
35
 
23
- // Split Properties Pass
36
+ return NodeClosure( ShaderNodeObjects( inputs ), ...params );
37
+
38
+ },
39
+
40
+ get: function ( node, prop ) {
24
41
 
25
42
  if ( typeof prop === 'string' && node[ prop ] === undefined ) {
26
43
 
27
- const splitProps = prop.match( /^[xyzw]{1,4}$/ );
44
+ if ( /^[xyzwrgbastpq]{1,4}$/.test( prop ) === true ) {
45
+
46
+ // accessing properties ( swizzle )
47
+
48
+ prop = prop
49
+ .replace( /r|s/g, 'x' )
50
+ .replace( /g|t/g, 'y' )
51
+ .replace( /b|p/g, 'z' )
52
+ .replace( /a|q/g, 'w' );
53
+
54
+ return ShaderNodeObject( new SplitNode( node, prop ) );
28
55
 
29
- if ( splitProps !== null ) {
56
+ } else if ( /^\d+$/.test( prop ) === true ) {
30
57
 
31
- return ShaderNodeObject( new SplitNode( node, splitProps[ 0 ] ) );
58
+ // accessing array
59
+
60
+ return ShaderNodeObject( new ArrayElementNode( node, new FloatNode( Number( prop ) ).setConst( true ) ) );
32
61
 
33
62
  }
34
63
 
@@ -40,7 +69,7 @@ const NodeHandler = {
40
69
 
41
70
  };
42
71
 
43
- export const ShaderNodeObject = ( obj ) => {
72
+ const ShaderNodeObject = ( obj ) => {
44
73
 
45
74
  const type = typeof obj;
46
75
 
@@ -70,7 +99,19 @@ export const ShaderNodeObject = ( obj ) => {
70
99
 
71
100
  };
72
101
 
73
- export const ShaderNodeArray = ( array ) => {
102
+ const ShaderNodeObjects = ( objects ) => {
103
+
104
+ for ( const name in objects ) {
105
+
106
+ objects[ name ] = ShaderNodeObject( objects[ name ] );
107
+
108
+ }
109
+
110
+ return objects;
111
+
112
+ };
113
+
114
+ const ShaderNodeArray = ( array ) => {
74
115
 
75
116
  const len = array.length;
76
117
 
@@ -84,29 +125,57 @@ export const ShaderNodeArray = ( array ) => {
84
125
 
85
126
  };
86
127
 
87
- export const ShaderNodeScript = ( jsFunc ) => {
128
+ const ShaderNodeProxy = ( NodeClass, scope = null, factor = null ) => {
88
129
 
89
- return ( ...params ) => {
130
+ if ( scope === null ) {
90
131
 
91
- ShaderNodeArray( params );
132
+ return ( ...params ) => {
92
133
 
93
- return ShaderNodeObject( jsFunc( ...params ) );
134
+ return ShaderNodeObject( new NodeClass( ...ShaderNodeArray( params ) ) );
94
135
 
95
- };
136
+ };
137
+
138
+ } else if ( factor === null ) {
139
+
140
+ return ( ...params ) => {
141
+
142
+ return ShaderNodeObject( new NodeClass( scope, ...ShaderNodeArray( params ) ) );
143
+
144
+ };
145
+
146
+ } else {
147
+
148
+ factor = ShaderNodeObject( factor );
149
+
150
+ return ( ...params ) => {
151
+
152
+ return ShaderNodeObject( new NodeClass( scope, ...ShaderNodeArray( params ), factor ) );
153
+
154
+ };
155
+
156
+ }
96
157
 
97
158
  };
98
159
 
99
- export const ShaderNode = ( obj ) => {
160
+ const ShaderNodeScript = function ( jsFunc ) {
100
161
 
101
- return ShaderNodeScript( obj );
162
+ return ( inputs, builder ) => {
163
+
164
+ ShaderNodeObjects( inputs );
165
+
166
+ return ShaderNodeObject( jsFunc( inputs, builder ) );
167
+
168
+ };
102
169
 
103
170
  };
104
171
 
172
+ export const ShaderNode = new Proxy( ShaderNodeScript, NodeHandler );
173
+
105
174
  //
106
175
  // Node Material Shader Syntax
107
176
  //
108
177
 
109
- export const uniform = ShaderNodeScript( ( inputNode ) => {
178
+ export const uniform = new ShaderNode( ( inputNode ) => {
110
179
 
111
180
  inputNode.setConst( false );
112
181
 
@@ -132,62 +201,146 @@ export const join = ( ...params ) => {
132
201
 
133
202
  };
134
203
 
135
- export const vec2 = ( ...params ) => {
204
+ export const cond = ( ...params ) => {
136
205
 
137
- return ShaderNodeObject( new Vector2Node( new Vector2( ...params ) ).setConst( true ) );
206
+ return ShaderNodeObject( new CondNode( ...ShaderNodeArray( params ) ) );
138
207
 
139
208
  };
140
209
 
141
- export const vec3 = ( ...params ) => {
210
+ export const vec2 = ( ...params ) => {
142
211
 
143
- return ShaderNodeObject( new Vector3Node( new Vector3( ...params ) ).setConst( true ) );
212
+ if ( params[ 0 ]?.isNode === true ) {
144
213
 
145
- };
214
+ return ShaderNodeObject( new ConvertNode( params[ 0 ], 'vec2' ) );
146
215
 
147
- export const vec4 = ( ...params ) => {
216
+ } else {
148
217
 
149
- return ShaderNodeObject( new Vector4Node( new Vector4( ...params ) ).setConst( true ) );
218
+ // Providing one scalar value: This value is used for all components
150
219
 
151
- };
220
+ if ( params.length === 1 ) {
221
+
222
+ params[ 1 ] = params[ 0 ];
223
+
224
+ }
152
225
 
153
- export const add = ( ...params ) => {
226
+ return ShaderNodeObject( new Vector2Node( new Vector2( ...params ) ).setConst( true ) );
154
227
 
155
- return ShaderNodeObject( new OperatorNode( '+', ...ShaderNodeArray( params ) ) );
228
+ }
156
229
 
157
230
  };
158
231
 
159
- export const sub = ( ...params ) => {
232
+ export const vec3 = ( ...params ) => {
160
233
 
161
- return new OperatorNode( '-', ...ShaderNodeArray( params ) );
234
+ if ( params[ 0 ]?.isNode === true ) {
162
235
 
163
- };
236
+ return ShaderNodeObject( new ConvertNode( params[ 0 ], 'vec3' ) );
164
237
 
165
- export const mul = ( ...params ) => {
238
+ } else {
166
239
 
167
- return ShaderNodeObject( new OperatorNode( '*', ...ShaderNodeArray( params ) ) );
240
+ // Providing one scalar value: This value is used for all components
168
241
 
169
- };
242
+ if ( params.length === 1 ) {
243
+
244
+ params[ 1 ] = params[ 2 ] = params[ 0 ];
245
+
246
+ }
170
247
 
171
- export const div = ( ...params ) => {
248
+ return ShaderNodeObject( new Vector3Node( new Vector3( ...params ) ).setConst( true ) );
172
249
 
173
- return ShaderNodeObject( new OperatorNode( '/', ...ShaderNodeArray( params ) ) );
250
+ }
174
251
 
175
252
  };
176
253
 
177
- export const floor = ( ...params ) => {
254
+ export const vec4 = ( ...params ) => {
255
+
256
+ if ( params[ 0 ]?.isNode === true ) {
178
257
 
179
- return ShaderNodeObject( new MathNode( 'floor', ...ShaderNodeArray( params ) ) );
258
+ return ShaderNodeObject( new ConvertNode( params[ 0 ], 'vec4' ) );
180
259
 
181
- };
260
+ } else {
182
261
 
183
- export const mod = ( ...params ) => {
262
+ // Providing one scalar value: This value is used for all components
184
263
 
185
- return ShaderNodeObject( new MathNode( 'mod', ...ShaderNodeArray( params ) ) );
264
+ if ( params.length === 1 ) {
265
+
266
+ params[ 1 ] = params[ 2 ] = params[ 3 ] = params[ 0 ];
267
+
268
+ }
269
+
270
+ return ShaderNodeObject( new Vector4Node( new Vector4( ...params ) ).setConst( true ) );
271
+
272
+ }
186
273
 
187
274
  };
188
275
 
189
- export const sign = ( ...params ) => {
276
+ export const addTo = ( varNode, ...params ) => {
190
277
 
191
- return ShaderNodeObject( new MathNode( 'sign', ...ShaderNodeArray( params ) ) );
278
+ varNode.node = add( varNode.node, ...ShaderNodeArray( params ) );
279
+
280
+ return ShaderNodeObject( varNode );
192
281
 
193
282
  };
283
+
284
+ export const add = ShaderNodeProxy( OperatorNode, '+' );
285
+ export const sub = ShaderNodeProxy( OperatorNode, '-' );
286
+ export const mul = ShaderNodeProxy( OperatorNode, '*' );
287
+ export const div = ShaderNodeProxy( OperatorNode, '/' );
288
+ export const equal = ShaderNodeProxy( OperatorNode, '==' );
289
+ export const assign = ShaderNodeProxy( OperatorNode, '=' );
290
+ export const greaterThan = ShaderNodeProxy( OperatorNode, '>' );
291
+ export const lessThanEqual = ShaderNodeProxy( OperatorNode, '<=' );
292
+ export const and = ShaderNodeProxy( OperatorNode, '&&' );
293
+
294
+ export const element = ShaderNodeProxy( ArrayElementNode );
295
+
296
+ export const normalGeometry = new NormalNode( NormalNode.GEOMETRY );
297
+ export const normalLocal = new NormalNode( NormalNode.LOCAL );
298
+ export const normalWorld = new NormalNode( NormalNode.WORLD );
299
+ export const normalView = new NormalNode( NormalNode.VIEW );
300
+ export const transformedNormalView = new VarNode( new NormalNode( NormalNode.VIEW ), 'TransformedNormalView', 'vec3' );
301
+
302
+ export const positionLocal = new PositionNode( PositionNode.LOCAL );
303
+ export const positionWorld = new PositionNode( PositionNode.WORLD );
304
+ export const positionView = new PositionNode( PositionNode.VIEW );
305
+ export const positionViewDirection = new PositionNode( PositionNode.VIEW_DIRECTION );
306
+
307
+ export const PI = float( 3.141592653589793 );
308
+ export const PI2 = float( 6.283185307179586 );
309
+ export const PI_HALF = float( 1.5707963267948966 );
310
+ export const RECIPROCAL_PI = float( 0.3183098861837907 );
311
+ export const RECIPROCAL_PI2 = float( 0.15915494309189535 );
312
+ export const EPSILON = float( 1e-6 );
313
+
314
+ export const diffuseColor = new PropertyNode( 'DiffuseColor', 'vec4' );
315
+ export const roughness = new PropertyNode( 'Roughness', 'float' );
316
+ export const metalness = new PropertyNode( 'Metalness', 'float' );
317
+ export const alphaTest = new PropertyNode( 'AlphaTest', 'float' );
318
+ export const specularColor = new PropertyNode( 'SpecularColor', 'color' );
319
+
320
+ export const abs = ShaderNodeProxy( MathNode, 'abs' );
321
+ export const negate = ShaderNodeProxy( MathNode, 'negate' );
322
+ export const floor = ShaderNodeProxy( MathNode, 'floor' );
323
+ export const mod = ShaderNodeProxy( MathNode, 'mod' );
324
+ export const cross = ShaderNodeProxy( MathNode, 'cross' );
325
+ export const fract = ShaderNodeProxy( MathNode, 'fract' );
326
+ export const round = ShaderNodeProxy( MathNode, 'round' );
327
+ export const max = ShaderNodeProxy( MathNode, 'max' );
328
+ export const min = ShaderNodeProxy( MathNode, 'min' );
329
+ export const sin = ShaderNodeProxy( MathNode, 'sin' );
330
+ export const cos = ShaderNodeProxy( MathNode, 'cos' );
331
+ export const dot = ShaderNodeProxy( MathNode, 'dot' );
332
+ export const normalize = ShaderNodeProxy( MathNode, 'normalize' );
333
+ export const sqrt = ShaderNodeProxy( MathNode, 'sqrt' );
334
+ export const inversesqrt = ShaderNodeProxy( MathNode, 'inversesqrt' );
335
+ export const sign = ShaderNodeProxy( MathNode, 'sign' );
336
+ export const dFdx = ShaderNodeProxy( MathNode, 'dFdx' );
337
+ export const dFdy = ShaderNodeProxy( MathNode, 'dFdy' );
338
+ export const pow = ShaderNodeProxy( MathNode, 'pow' );
339
+ export const pow2 = ShaderNodeProxy( MathNode, 'pow', 2 );
340
+ export const pow3 = ShaderNodeProxy( MathNode, 'pow', 3 );
341
+ export const pow4 = ShaderNodeProxy( MathNode, 'pow', 4 );
342
+ export const exp = ShaderNodeProxy( MathNode, 'exp' );
343
+ export const exp2 = ShaderNodeProxy( MathNode, 'exp2' );
344
+ export const mix = ShaderNodeProxy( MathNode, 'mix' );
345
+ export const saturate = ShaderNodeProxy( MathNode, 'saturate' );
346
+ export const transformDirection = ShaderNodeProxy( MathNode, 'transformDirection' );
@@ -22,7 +22,7 @@ class MaterialNode extends Node {
22
22
  getNodeType( builder ) {
23
23
 
24
24
  const scope = this.scope;
25
- const material = builder.getContextValue( 'material' );
25
+ const material = builder.context.material;
26
26
 
27
27
  if ( scope === MaterialNode.COLOR ) {
28
28
 
@@ -46,7 +46,7 @@ class MaterialNode extends Node {
46
46
 
47
47
  generate( builder, output ) {
48
48
 
49
- const material = builder.getContextValue( 'material' );
49
+ const material = builder.context.material;
50
50
  const scope = this.scope;
51
51
 
52
52
  let node = null;
@@ -85,15 +85,15 @@ class MaterialNode extends Node {
85
85
 
86
86
  } else if ( scope === MaterialNode.SPECULAR ) {
87
87
 
88
- const specularTintNode = new MaterialReferenceNode( 'specularTint', 'color' );
88
+ const specularColorNode = new MaterialReferenceNode( 'specularColor', 'color' );
89
89
 
90
- if ( material.specularTintMap !== null && material.specularTintMap !== undefined && material.specularTintMap.isTexture === true ) {
90
+ if ( material.specularColorMap !== null && material.specularColorMap !== undefined && material.specularColorMap.isTexture === true ) {
91
91
 
92
- node = new OperatorNode( '*', specularTintNode, new MaterialReferenceNode( 'specularTintMap', 'texture' ) );
92
+ node = new OperatorNode( '*', specularColorNode, new MaterialReferenceNode( 'specularColorMap', 'texture' ) );
93
93
 
94
94
  } else {
95
95
 
96
- node = specularTintNode;
96
+ node = specularColorNode;
97
97
 
98
98
  }
99
99
 
@@ -12,16 +12,16 @@ class ModelViewProjectionNode extends Node {
12
12
 
13
13
  this.position = position;
14
14
 
15
- this._mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
16
-
17
15
  }
18
16
 
19
17
  generate( builder ) {
20
18
 
21
- const mvpSnipped = this._mvpMatrix.build( builder );
22
- const positionSnipped = this.position.build( builder, 'vec3' );
19
+ const position = this.position;
20
+
21
+ const mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
22
+ const mvpNode = new OperatorNode( '*', mvpMatrix, position );
23
23
 
24
- return `( ${mvpSnipped} * vec4( ${positionSnipped}, 1.0 ) )`;
24
+ return mvpNode.build( builder );
25
25
 
26
26
  }
27
27
 
@@ -5,10 +5,10 @@ import ModelNode from '../accessors/ModelNode.js';
5
5
  import CameraNode from '../accessors/CameraNode.js';
6
6
  import OperatorNode from '../math/OperatorNode.js';
7
7
  import MathNode from '../math/MathNode.js';
8
- import { inverseTransformDirection } from '../functions/MathFunctions.js';
9
8
 
10
9
  class NormalNode extends Node {
11
10
 
11
+ static GEOMETRY = 'geometry';
12
12
  static LOCAL = 'local';
13
13
  static WORLD = 'world';
14
14
  static VIEW = 'view';
@@ -21,16 +21,26 @@ class NormalNode extends Node {
21
21
 
22
22
  }
23
23
 
24
+ getHash( /*builder*/ ) {
25
+
26
+ return `normal-${this.scope}`;
27
+
28
+ }
29
+
24
30
  generate( builder ) {
25
31
 
26
32
  const scope = this.scope;
27
33
 
28
34
  let outputNode = null;
29
35
 
30
- if ( scope === NormalNode.LOCAL ) {
36
+ if ( scope === NormalNode.GEOMETRY ) {
31
37
 
32
38
  outputNode = new AttributeNode( 'normal', 'vec3' );
33
39
 
40
+ } else if ( scope === NormalNode.LOCAL ) {
41
+
42
+ outputNode = new VaryNode( new NormalNode( NormalNode.GEOMETRY ) );
43
+
34
44
  } else if ( scope === NormalNode.VIEW ) {
35
45
 
36
46
  const vertexNormalNode = new OperatorNode( '*', new ModelNode( ModelNode.NORMAL_MATRIX ), new NormalNode( NormalNode.LOCAL ) );
@@ -38,7 +48,8 @@ class NormalNode extends Node {
38
48
 
39
49
  } else if ( scope === NormalNode.WORLD ) {
40
50
 
41
- const vertexNormalNode = inverseTransformDirection.call( { dir: new NormalNode( NormalNode.VIEW ), matrix: new CameraNode( CameraNode.VIEW_MATRIX ) } );
51
+ // To use INVERSE_TRANSFORM_DIRECTION only inverse the param order like this: MathNode( ..., Vector, Matrix );
52
+ const vertexNormalNode = new MathNode( MathNode.TRANSFORM_DIRECTION, new NormalNode( NormalNode.VIEW ), new CameraNode( CameraNode.VIEW_MATRIX ) );
42
53
  outputNode = new MathNode( MathNode.NORMALIZE, new VaryNode( vertexNormalNode ) );
43
54
 
44
55
  }
@@ -6,11 +6,9 @@ class PointUVNode extends Node {
6
6
 
7
7
  super( 'vec2' );
8
8
 
9
- Object.defineProperty( this, 'isPointUVNode', { value: true } );
10
-
11
9
  }
12
10
 
13
- generate( builder ) {
11
+ generate( /*builder*/ ) {
14
12
 
15
13
  return 'vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )';
16
14
 
@@ -18,4 +16,6 @@ class PointUVNode extends Node {
18
16
 
19
17
  }
20
18
 
19
+ PointUVNode.prototype.isPointUVNode = true;
20
+
21
21
  export default PointUVNode;