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
@@ -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,85 +1,68 @@
1
1
  import TempNode from '../core/Node.js';
2
- import CodeNode from '../core/CodeNode.js';
3
- import * as EncodingFunctions from '../functions/EncodingFunctions.js';
4
-
5
- import { LinearEncoding, sRGBEncoding, RGBEEncoding, RGBM7Encoding, RGBM16Encoding,
6
- RGBDEncoding, GammaEncoding, LogLuvEncoding } from 'three';
7
-
8
- function getEncodingComponents ( encoding ) {
9
-
10
- switch ( encoding ) {
11
-
12
- case LinearEncoding:
13
- return [ 'Linear' ];
14
- case sRGBEncoding:
15
- 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' ];
2
+ import { ShaderNode,
3
+ vec3,
4
+ pow, mul, sub, mix, join,
5
+ lessThanEqual } from '../ShaderNode.js';
28
6
 
29
- }
7
+ import { LinearEncoding, sRGBEncoding } from 'three';
30
8
 
31
- }
9
+ export const LinearToLinear = new ShaderNode( ( inputs ) => {
32
10
 
33
- class ColorSpaceNode extends TempNode {
11
+ return inputs.value;
34
12
 
35
- static LINEAR_TO_LINEAR = 'LinearToLinear';
13
+ } );
36
14
 
37
- static GAMMA_TO_LINEAR = 'GammaToLinear';
38
- static LINEAR_TO_GAMMA = 'LinearToGamma';
15
+ export const LinearTosRGB = new ShaderNode( ( inputs ) => {
39
16
 
40
- static SRGB_TO_LINEAR = 'sRGBToLinear';
41
- static LINEAR_TO_SRGB = 'LinearTosRGB';
17
+ const { value } = inputs;
18
+
19
+ const rgb = value.rgb;
20
+
21
+ const a = sub( mul( pow( value.rgb, vec3( 0.41666 ) ), 1.055 ), vec3( 0.055 ) );
22
+ const b = mul( rgb, 12.92 );
23
+ const factor = vec3( lessThanEqual( rgb, vec3( 0.0031308 ) ) );
24
+
25
+ const rgbResult = mix( a, b, factor );
42
26
 
43
- static RGBE_TO_LINEAR = 'RGBEToLinear';
44
- static LINEAR_TO_RGBE = 'LinearToRGBE';
27
+ return join( rgbResult.r, rgbResult.g, rgbResult.b, value.a );
45
28
 
46
- static RGBM_TO_LINEAR = 'RGBMToLinear';
47
- static LINEAR_TO_RGBM = 'LinearToRGBM';
29
+ } );
48
30
 
49
- static RGBD_TO_LINEAR = 'RGBDToLinear';
50
- static LINEAR_TO_RGBD = 'LinearToRGBD';
31
+ const EncodingLib = {
32
+ LinearToLinear,
33
+ LinearTosRGB
34
+ };
51
35
 
52
- static LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
53
- static LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
36
+ class ColorSpaceNode extends TempNode {
37
+
38
+ static LINEAR_TO_LINEAR = 'LinearToLinear';
39
+ static LINEAR_TO_SRGB = 'LinearTosRGB';
54
40
 
55
- constructor( method, input ) {
41
+ constructor( method, node ) {
56
42
 
57
43
  super( 'vec4' );
58
44
 
59
45
  this.method = method;
60
46
 
61
- this.input = input;
62
- this.factor = null;
47
+ this.node = node;
63
48
 
64
49
  }
65
50
 
66
51
  fromEncoding( encoding ) {
67
52
 
68
- const components = getEncodingComponents( encoding );
53
+ let method = null;
69
54
 
70
- this.method = 'LinearTo' + components[ 0 ];
71
- this.factor = components[ 1 ];
55
+ if ( encoding === LinearEncoding ) {
72
56
 
73
- return this;
57
+ method = 'Linear';
74
58
 
75
- }
59
+ } else if ( encoding === sRGBEncoding ) {
76
60
 
77
- fromDecoding( encoding ) {
61
+ method = 'sRGB';
78
62
 
79
- const components = getEncodingComponents( encoding );
63
+ }
80
64
 
81
- this.method = components[ 0 ] + 'ToLinear';
82
- this.factor = components[ 1 ];
65
+ this.method = 'LinearTo' + method;
83
66
 
84
67
  return this;
85
68
 
@@ -90,22 +73,19 @@ class ColorSpaceNode extends TempNode {
90
73
  const type = this.getNodeType( builder );
91
74
 
92
75
  const method = this.method;
93
- const input = this.input;
76
+ const node = this.node;
94
77
 
95
78
  if ( method !== ColorSpaceNode.LINEAR_TO_LINEAR ) {
96
79
 
97
- const encodingFunctionNode = EncodingFunctions[ method ];
98
-
99
- const encodingFunctionCallNode = encodingFunctionNode.call( {
100
- value: input,
101
- factor: this.factor
102
- } );
80
+ const encodingFunctionNode = EncodingLib[ method ];
103
81
 
104
- return encodingFunctionCallNode.build( builder, type );
82
+ return encodingFunctionNode( {
83
+ value: node
84
+ } ).build( builder, type );
105
85
 
106
86
  } else {
107
87
 
108
- return input.build( builder, type );
88
+ return node.build( builder, type );
109
89
 
110
90
  }
111
91