three-stdlib 2.8.9 → 2.8.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (480) hide show
  1. package/Nodes-607e9ed8.js +471 -0
  2. package/Nodes-627a8bdf.js +1 -0
  3. package/index.cjs.js +1 -1
  4. package/index.d.ts +1 -127
  5. package/index.js +122 -128
  6. package/lines/LineMaterial.d.ts +7 -6
  7. package/loaders/NodeMaterialLoader.cjs.js +1 -1
  8. package/loaders/NodeMaterialLoader.js +2 -136
  9. package/modifiers/CurveModifier.cjs.js +1 -1
  10. package/modifiers/CurveModifier.d.ts +13 -9
  11. package/modifiers/CurveModifier.js +27 -30
  12. package/nodes/Nodes.cjs.js +1 -1
  13. package/nodes/Nodes.js +203 -76
  14. package/nodes/ShaderNode.cjs.js +1 -0
  15. package/nodes/ShaderNode.js +308 -0
  16. package/nodes/accessors/BufferNode.cjs.js +1 -0
  17. package/nodes/accessors/BufferNode.js +18 -0
  18. package/nodes/accessors/CameraNode.cjs.js +1 -1
  19. package/nodes/accessors/CameraNode.js +32 -138
  20. package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
  21. package/nodes/accessors/CubeTextureNode.js +53 -0
  22. package/nodes/accessors/MaterialNode.cjs.js +1 -0
  23. package/nodes/accessors/MaterialNode.js +80 -0
  24. package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
  25. package/nodes/accessors/MaterialReferenceNode.js +16 -0
  26. package/nodes/accessors/ModelNode.cjs.js +1 -0
  27. package/nodes/accessors/ModelNode.js +10 -0
  28. package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
  29. package/nodes/accessors/ModelViewProjectionNode.js +22 -0
  30. package/nodes/accessors/NormalNode.cjs.js +1 -1
  31. package/nodes/accessors/NormalNode.js +48 -78
  32. package/nodes/accessors/Object3DNode.cjs.js +1 -0
  33. package/nodes/accessors/Object3DNode.js +85 -0
  34. package/nodes/accessors/PointUVNode.cjs.js +1 -0
  35. package/nodes/accessors/PointUVNode.js +16 -0
  36. package/nodes/accessors/PositionNode.cjs.js +1 -1
  37. package/nodes/accessors/PositionNode.js +49 -87
  38. package/nodes/accessors/ReferenceNode.cjs.js +1 -0
  39. package/nodes/accessors/ReferenceNode.js +43 -0
  40. package/nodes/accessors/ReflectNode.cjs.js +1 -1
  41. package/nodes/accessors/ReflectNode.js +35 -98
  42. package/nodes/accessors/SkinningNode.cjs.js +1 -0
  43. package/nodes/accessors/SkinningNode.js +59 -0
  44. package/nodes/accessors/TextureNode.cjs.js +1 -0
  45. package/nodes/accessors/TextureNode.js +68 -0
  46. package/nodes/accessors/UVNode.cjs.js +1 -1
  47. package/nodes/accessors/UVNode.js +20 -38
  48. package/nodes/core/ArrayUniformNode.cjs.js +1 -0
  49. package/nodes/core/ArrayUniformNode.js +17 -0
  50. package/nodes/core/AttributeNode.cjs.js +1 -1
  51. package/nodes/core/AttributeNode.js +31 -40
  52. package/nodes/core/BypassNode.cjs.js +1 -0
  53. package/nodes/core/BypassNode.js +28 -0
  54. package/nodes/core/CodeNode.cjs.js +1 -0
  55. package/nodes/core/CodeNode.js +35 -0
  56. package/nodes/core/ConstNode.cjs.js +1 -1
  57. package/nodes/core/ConstNode.js +10 -78
  58. package/nodes/core/ContextNode.cjs.js +1 -0
  59. package/nodes/core/ContextNode.js +26 -0
  60. package/nodes/core/ExpressionNode.cjs.js +1 -1
  61. package/nodes/core/ExpressionNode.js +19 -8
  62. package/nodes/core/FunctionCallNode.cjs.js +1 -1
  63. package/nodes/core/FunctionCallNode.js +31 -60
  64. package/nodes/core/FunctionNode.cjs.js +1 -1
  65. package/nodes/core/FunctionNode.js +45 -166
  66. package/nodes/core/InputNode.cjs.js +1 -1
  67. package/nodes/core/InputNode.js +43 -57
  68. package/nodes/core/Node.cjs.js +1 -1
  69. package/nodes/core/Node.js +155 -113
  70. package/nodes/core/NodeAttribute.cjs.js +1 -0
  71. package/nodes/core/NodeAttribute.js +11 -0
  72. package/nodes/core/NodeBuilder.cjs.js +1 -1
  73. package/nodes/core/NodeBuilder.js +422 -548
  74. package/nodes/core/NodeCode.cjs.js +1 -0
  75. package/nodes/core/NodeCode.js +13 -0
  76. package/nodes/core/NodeFrame.cjs.js +1 -1
  77. package/nodes/core/NodeFrame.js +34 -27
  78. package/nodes/core/NodeFunction.cjs.js +1 -0
  79. package/nodes/core/NodeFunction.js +17 -0
  80. package/nodes/core/NodeFunctionInput.cjs.js +1 -0
  81. package/nodes/core/NodeFunctionInput.js +14 -0
  82. package/nodes/core/NodeKeywords.cjs.js +1 -0
  83. package/nodes/core/NodeKeywords.js +54 -0
  84. package/nodes/core/NodeParser.cjs.js +1 -0
  85. package/nodes/core/NodeParser.js +8 -0
  86. package/nodes/core/NodeUniform.cjs.js +1 -1
  87. package/nodes/core/NodeUniform.js +18 -17
  88. package/nodes/core/NodeUtils.cjs.js +1 -1
  89. package/nodes/core/NodeUtils.js +55 -35
  90. package/nodes/core/NodeVar.cjs.js +1 -0
  91. package/nodes/core/NodeVar.js +11 -0
  92. package/nodes/core/NodeVary.cjs.js +1 -0
  93. package/nodes/core/NodeVary.js +11 -0
  94. package/nodes/core/PropertyNode.cjs.js +1 -0
  95. package/nodes/core/PropertyNode.js +26 -0
  96. package/nodes/core/TempNode.cjs.js +1 -1
  97. package/nodes/core/TempNode.js +21 -88
  98. package/nodes/core/UniformNode.cjs.js +1 -0
  99. package/nodes/core/UniformNode.js +28 -0
  100. package/nodes/core/VarNode.cjs.js +1 -1
  101. package/nodes/core/VarNode.js +28 -35
  102. package/nodes/core/VaryNode.cjs.js +1 -0
  103. package/nodes/core/VaryNode.js +38 -0
  104. package/nodes/core/constants.cjs.js +1 -0
  105. package/nodes/core/constants.js +11 -0
  106. package/nodes/display/ColorSpaceNode.cjs.js +1 -0
  107. package/nodes/display/ColorSpaceNode.js +67 -0
  108. package/nodes/display/NormalMapNode.cjs.js +1 -0
  109. package/nodes/display/NormalMapNode.js +71 -0
  110. package/nodes/fog/FogNode.cjs.js +1 -0
  111. package/nodes/fog/FogNode.js +18 -0
  112. package/nodes/fog/FogRangeNode.cjs.js +1 -0
  113. package/nodes/fog/FogRangeNode.js +20 -0
  114. package/nodes/functions/BSDFs.cjs.js +1 -0
  115. package/nodes/functions/BSDFs.js +121 -0
  116. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
  117. package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
  118. package/nodes/lights/LightContextNode.cjs.js +1 -0
  119. package/nodes/lights/LightContextNode.js +43 -0
  120. package/nodes/lights/LightNode.cjs.js +1 -0
  121. package/nodes/lights/LightNode.js +61 -0
  122. package/nodes/lights/LightsNode.cjs.js +1 -0
  123. package/nodes/lights/LightsNode.js +77 -0
  124. package/nodes/loaders/NodeLoader.cjs.js +1 -0
  125. package/nodes/loaders/NodeLoader.js +80 -0
  126. package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
  127. package/nodes/loaders/NodeMaterialLoader.js +29 -0
  128. package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
  129. package/nodes/loaders/NodeObjectLoader.js +49 -0
  130. package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
  131. package/nodes/materials/LineBasicNodeMaterial.js +31 -0
  132. package/nodes/materials/Materials.cjs.js +1 -0
  133. package/nodes/materials/Materials.js +27 -0
  134. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
  135. package/nodes/materials/MeshBasicNodeMaterial.js +32 -0
  136. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -1
  137. package/nodes/materials/MeshStandardNodeMaterial.js +41 -13
  138. package/nodes/materials/NodeMaterial.cjs.js +1 -1
  139. package/nodes/materials/NodeMaterial.js +67 -140
  140. package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
  141. package/nodes/materials/PointsNodeMaterial.js +34 -0
  142. package/nodes/math/CondNode.cjs.js +1 -1
  143. package/nodes/math/CondNode.js +33 -74
  144. package/nodes/math/MathNode.cjs.js +1 -1
  145. package/nodes/math/MathNode.js +193 -193
  146. package/nodes/math/OperatorNode.cjs.js +1 -1
  147. package/nodes/math/OperatorNode.js +116 -52
  148. package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
  149. package/nodes/parsers/GLSLNodeFunction.js +101 -0
  150. package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
  151. package/nodes/parsers/GLSLNodeParser.js +13 -0
  152. package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
  153. package/nodes/parsers/WGSLNodeFunction.js +71 -0
  154. package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
  155. package/nodes/parsers/WGSLNodeParser.js +13 -0
  156. package/nodes/procedural/CheckerNode.cjs.js +1 -1
  157. package/nodes/procedural/CheckerNode.js +22 -40
  158. package/nodes/utils/ArrayElementNode.cjs.js +1 -0
  159. package/nodes/utils/ArrayElementNode.js +22 -0
  160. package/nodes/utils/ConvertNode.cjs.js +1 -0
  161. package/nodes/utils/ConvertNode.js +29 -0
  162. package/nodes/utils/JoinNode.cjs.js +1 -1
  163. package/nodes/utils/JoinNode.js +19 -69
  164. package/nodes/utils/MatcapUVNode.cjs.js +1 -0
  165. package/nodes/utils/MatcapUVNode.js +18 -0
  166. package/nodes/utils/OscNode.cjs.js +1 -0
  167. package/nodes/utils/OscNode.js +55 -0
  168. package/nodes/utils/SplitNode.cjs.js +1 -0
  169. package/nodes/utils/SplitNode.js +58 -0
  170. package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
  171. package/nodes/utils/SpriteSheetUVNode.js +39 -0
  172. package/nodes/utils/TimerNode.cjs.js +1 -1
  173. package/nodes/utils/TimerNode.js +38 -56
  174. package/objects/Lensflare.cjs.js +1 -1
  175. package/objects/Lensflare.js +11 -3
  176. package/package.json +3 -3
  177. package/postprocessing/AfterimagePass.d.ts +2 -30
  178. package/shaders/ACESFilmicToneMappingShader.cjs.js +1 -1
  179. package/shaders/ACESFilmicToneMappingShader.d.ts +9 -0
  180. package/shaders/ACESFilmicToneMappingShader.js +1 -1
  181. package/shaders/AfterimageShader.d.ts +9 -15
  182. package/shaders/BasicShader.cjs.js +1 -1
  183. package/shaders/BasicShader.d.ts +5 -5
  184. package/shaders/BasicShader.js +1 -1
  185. package/shaders/BleachBypassShader.cjs.js +1 -1
  186. package/shaders/BleachBypassShader.d.ts +8 -9
  187. package/shaders/BleachBypassShader.js +1 -1
  188. package/shaders/BlendShader.cjs.js +1 -1
  189. package/shaders/BlendShader.d.ts +13 -7
  190. package/shaders/BlendShader.js +1 -1
  191. package/shaders/BokehShader.cjs.js +1 -1
  192. package/shaders/BokehShader.d.ts +18 -19
  193. package/shaders/BokehShader.js +1 -1
  194. package/shaders/BokehShader2.cjs.js +1 -1
  195. package/shaders/BokehShader2.d.ts +80 -34
  196. package/shaders/BokehShader2.js +2 -2
  197. package/shaders/BrightnessContrastShader.cjs.js +1 -1
  198. package/shaders/BrightnessContrastShader.d.ts +10 -6
  199. package/shaders/BrightnessContrastShader.js +1 -1
  200. package/shaders/ColorCorrectionShader.cjs.js +1 -1
  201. package/shaders/ColorCorrectionShader.d.ts +14 -7
  202. package/shaders/ColorCorrectionShader.js +1 -1
  203. package/shaders/ColorifyShader.cjs.js +1 -1
  204. package/shaders/ColorifyShader.d.ts +8 -5
  205. package/shaders/ColorifyShader.js +1 -1
  206. package/shaders/ConvolutionShader.cjs.js +1 -1
  207. package/shaders/ConvolutionShader.d.ts +15 -16
  208. package/shaders/ConvolutionShader.js +9 -14
  209. package/shaders/CopyShader.d.ts +8 -12
  210. package/shaders/DOFMipMapShader.cjs.js +1 -1
  211. package/shaders/DOFMipMapShader.d.ts +13 -7
  212. package/shaders/DOFMipMapShader.js +1 -1
  213. package/shaders/DepthLimitedBlurShader.cjs.js +1 -1
  214. package/shaders/DepthLimitedBlurShader.d.ts +26 -25
  215. package/shaders/DepthLimitedBlurShader.js +12 -16
  216. package/shaders/DigitalGlitch.cjs.js +1 -1
  217. package/shaders/DigitalGlitch.d.ts +34 -14
  218. package/shaders/DigitalGlitch.js +1 -10
  219. package/shaders/DotScreenShader.cjs.js +1 -1
  220. package/shaders/DotScreenShader.d.ts +17 -8
  221. package/shaders/DotScreenShader.js +1 -1
  222. package/shaders/FXAAShader.cjs.js +1 -1
  223. package/shaders/FXAAShader.d.ts +8 -5
  224. package/shaders/FXAAShader.js +1 -1
  225. package/shaders/FilmShader.cjs.js +1 -1
  226. package/shaders/FilmShader.d.ts +19 -9
  227. package/shaders/FilmShader.js +1 -1
  228. package/shaders/FocusShader.cjs.js +1 -1
  229. package/shaders/FocusShader.d.ts +16 -8
  230. package/shaders/FocusShader.js +1 -1
  231. package/shaders/FreiChenShader.cjs.js +1 -1
  232. package/shaders/FreiChenShader.d.ts +8 -5
  233. package/shaders/FreiChenShader.js +1 -1
  234. package/shaders/FresnelShader.cjs.js +1 -1
  235. package/shaders/FresnelShader.d.ts +21 -0
  236. package/shaders/FresnelShader.js +1 -1
  237. package/shaders/GammaCorrectionShader.d.ts +7 -7
  238. package/shaders/GodRaysShader.cjs.js +1 -1
  239. package/shaders/GodRaysShader.d.ts +38 -20
  240. package/shaders/GodRaysShader.js +4 -4
  241. package/shaders/HalftoneShader.cjs.js +1 -1
  242. package/shaders/HalftoneShader.d.ts +40 -16
  243. package/shaders/HalftoneShader.js +1 -1
  244. package/shaders/HorizontalBlurShader.d.ts +8 -8
  245. package/shaders/HorizontalTiltShiftShader.cjs.js +1 -1
  246. package/shaders/HorizontalTiltShiftShader.d.ts +10 -6
  247. package/shaders/HorizontalTiltShiftShader.js +1 -1
  248. package/shaders/HueSaturationShader.cjs.js +1 -1
  249. package/shaders/HueSaturationShader.d.ts +10 -6
  250. package/shaders/HueSaturationShader.js +1 -1
  251. package/shaders/KaleidoShader.cjs.js +1 -1
  252. package/shaders/KaleidoShader.d.ts +10 -6
  253. package/shaders/KaleidoShader.js +1 -1
  254. package/shaders/LuminosityHighPassShader.cjs.js +1 -1
  255. package/shaders/LuminosityHighPassShader.d.ts +17 -8
  256. package/shaders/LuminosityHighPassShader.js +1 -1
  257. package/shaders/LuminosityShader.cjs.js +1 -1
  258. package/shaders/LuminosityShader.d.ts +4 -4
  259. package/shaders/LuminosityShader.js +1 -1
  260. package/shaders/MirrorShader.cjs.js +1 -1
  261. package/shaders/MirrorShader.d.ts +7 -5
  262. package/shaders/MirrorShader.js +1 -1
  263. package/shaders/NormalMapShader.cjs.js +1 -1
  264. package/shaders/NormalMapShader.d.ts +14 -7
  265. package/shaders/NormalMapShader.js +1 -1
  266. package/shaders/ParallaxShader.cjs.js +1 -1
  267. package/shaders/ParallaxShader.d.ts +28 -0
  268. package/shaders/ParallaxShader.js +1 -1
  269. package/shaders/PixelShader.cjs.js +1 -1
  270. package/shaders/PixelShader.d.ts +10 -6
  271. package/shaders/PixelShader.js +1 -1
  272. package/shaders/RGBShiftShader.cjs.js +1 -1
  273. package/shaders/RGBShiftShader.d.ts +10 -6
  274. package/shaders/RGBShiftShader.js +1 -1
  275. package/shaders/SAOShader.cjs.js +1 -1
  276. package/shaders/SAOShader.d.ts +24 -29
  277. package/shaders/SAOShader.js +1 -5
  278. package/shaders/SMAAShader.cjs.js +1 -1
  279. package/shaders/SMAAShader.d.ts +31 -16
  280. package/shaders/SMAAShader.js +3 -3
  281. package/shaders/SSAOShader.cjs.js +1 -1
  282. package/shaders/SSAOShader.d.ts +58 -25
  283. package/shaders/SSAOShader.js +3 -3
  284. package/shaders/SSRShader.cjs.js +1 -1
  285. package/shaders/SSRShader.d.ts +67 -36
  286. package/shaders/SSRShader.js +3 -3
  287. package/shaders/SepiaShader.cjs.js +1 -1
  288. package/shaders/SepiaShader.d.ts +7 -5
  289. package/shaders/SepiaShader.js +1 -1
  290. package/shaders/SobelOperatorShader.cjs.js +1 -1
  291. package/shaders/SobelOperatorShader.d.ts +8 -5
  292. package/shaders/SobelOperatorShader.js +1 -1
  293. package/shaders/SubsurfaceScatteringShader.cjs.js +1 -1
  294. package/shaders/SubsurfaceScatteringShader.d.ts +2 -34
  295. package/shaders/SubsurfaceScatteringShader.js +3 -3
  296. package/shaders/TechnicolorShader.cjs.js +1 -1
  297. package/shaders/TechnicolorShader.d.ts +4 -4
  298. package/shaders/TechnicolorShader.js +1 -1
  299. package/shaders/ToneMapShader.cjs.js +1 -1
  300. package/shaders/ToneMapShader.d.ts +19 -9
  301. package/shaders/ToneMapShader.js +1 -1
  302. package/shaders/ToonShader.cjs.js +1 -1
  303. package/shaders/ToonShader.d.ts +80 -34
  304. package/shaders/ToonShader.js +4 -4
  305. package/shaders/TriangleBlurShader.cjs.js +1 -1
  306. package/shaders/TriangleBlurShader.d.ts +8 -5
  307. package/shaders/TriangleBlurShader.js +1 -1
  308. package/shaders/UnpackDepthRGBAShader.cjs.js +1 -1
  309. package/shaders/UnpackDepthRGBAShader.d.ts +7 -5
  310. package/shaders/UnpackDepthRGBAShader.js +1 -1
  311. package/shaders/VerticalBlurShader.cjs.js +1 -1
  312. package/shaders/VerticalBlurShader.d.ts +8 -8
  313. package/shaders/VerticalBlurShader.js +1 -1
  314. package/shaders/VerticalTiltShiftShader.cjs.js +1 -1
  315. package/shaders/VerticalTiltShiftShader.d.ts +10 -6
  316. package/shaders/VerticalTiltShiftShader.js +1 -1
  317. package/shaders/VignetteShader.cjs.js +1 -1
  318. package/shaders/VignetteShader.d.ts +10 -6
  319. package/shaders/VignetteShader.js +1 -1
  320. package/shaders/VolumeShader.cjs.js +1 -1
  321. package/shaders/VolumeShader.d.ts +20 -9
  322. package/shaders/VolumeShader.js +1 -1
  323. package/shaders/WaterRefractionShader.cjs.js +1 -1
  324. package/shaders/WaterRefractionShader.d.ts +16 -8
  325. package/shaders/WaterRefractionShader.js +1 -1
  326. package/shaders/index.cjs.js +1 -0
  327. package/shaders/index.d.ts +53 -0
  328. package/shaders/index.js +53 -0
  329. package/shaders/types.cjs.js +1 -0
  330. package/shaders/types.d.ts +14 -0
  331. package/shaders/types.js +1 -0
  332. package/types/shared.d.ts +0 -20
  333. package/Nodes-894ac9dc.js +0 -1
  334. package/Nodes-af575af7.js +0 -157
  335. package/nodes/accessors/ColorsNode.cjs.js +0 -1
  336. package/nodes/accessors/ColorsNode.d.ts +0 -10
  337. package/nodes/accessors/ColorsNode.js +0 -40
  338. package/nodes/accessors/LightNode.cjs.js +0 -1
  339. package/nodes/accessors/LightNode.d.ts +0 -12
  340. package/nodes/accessors/LightNode.js +0 -41
  341. package/nodes/accessors/ResolutionNode.cjs.js +0 -1
  342. package/nodes/accessors/ResolutionNode.d.ts +0 -14
  343. package/nodes/accessors/ResolutionNode.js +0 -41
  344. package/nodes/accessors/ScreenUVNode.cjs.js +0 -1
  345. package/nodes/accessors/ScreenUVNode.d.ts +0 -11
  346. package/nodes/accessors/ScreenUVNode.js +0 -43
  347. package/nodes/core/NodeLib.cjs.js +0 -1
  348. package/nodes/core/NodeLib.d.ts +0 -22
  349. package/nodes/core/NodeLib.js +0 -37
  350. package/nodes/core/StructNode.cjs.js +0 -1
  351. package/nodes/core/StructNode.d.ts +0 -19
  352. package/nodes/core/StructNode.js +0 -72
  353. package/nodes/effects/BlurNode.cjs.js +0 -1
  354. package/nodes/effects/BlurNode.d.ts +0 -31
  355. package/nodes/effects/BlurNode.js +0 -100
  356. package/nodes/effects/ColorAdjustmentNode.cjs.js +0 -1
  357. package/nodes/effects/ColorAdjustmentNode.d.ts +0 -27
  358. package/nodes/effects/ColorAdjustmentNode.js +0 -73
  359. package/nodes/effects/LuminanceNode.cjs.js +0 -1
  360. package/nodes/effects/LuminanceNode.d.ts +0 -18
  361. package/nodes/effects/LuminanceNode.js +0 -46
  362. package/nodes/inputs/BoolNode.cjs.js +0 -1
  363. package/nodes/inputs/BoolNode.d.ts +0 -19
  364. package/nodes/inputs/BoolNode.js +0 -36
  365. package/nodes/inputs/ColorNode.cjs.js +0 -1
  366. package/nodes/inputs/ColorNode.d.ts +0 -21
  367. package/nodes/inputs/ColorNode.js +0 -41
  368. package/nodes/inputs/CubeTextureNode.cjs.js +0 -1
  369. package/nodes/inputs/CubeTextureNode.d.ts +0 -17
  370. package/nodes/inputs/CubeTextureNode.js +0 -79
  371. package/nodes/inputs/FloatNode.cjs.js +0 -1
  372. package/nodes/inputs/FloatNode.d.ts +0 -19
  373. package/nodes/inputs/FloatNode.js +0 -36
  374. package/nodes/inputs/IntNode.cjs.js +0 -1
  375. package/nodes/inputs/IntNode.d.ts +0 -19
  376. package/nodes/inputs/IntNode.js +0 -36
  377. package/nodes/inputs/Matrix3Node.cjs.js +0 -1
  378. package/nodes/inputs/Matrix3Node.d.ts +0 -22
  379. package/nodes/inputs/Matrix3Node.js +0 -46
  380. package/nodes/inputs/Matrix4Node.cjs.js +0 -1
  381. package/nodes/inputs/Matrix4Node.d.ts +0 -22
  382. package/nodes/inputs/Matrix4Node.js +0 -46
  383. package/nodes/inputs/PropertyNode.cjs.js +0 -1
  384. package/nodes/inputs/PropertyNode.d.ts +0 -10
  385. package/nodes/inputs/PropertyNode.js +0 -35
  386. package/nodes/inputs/RTTNode.cjs.js +0 -1
  387. package/nodes/inputs/RTTNode.d.ts +0 -27
  388. package/nodes/inputs/RTTNode.js +0 -103
  389. package/nodes/inputs/ReflectorNode.cjs.js +0 -1
  390. package/nodes/inputs/ReflectorNode.d.ts +0 -21
  391. package/nodes/inputs/ReflectorNode.js +0 -60
  392. package/nodes/inputs/ScreenNode.cjs.js +0 -1
  393. package/nodes/inputs/ScreenNode.d.ts +0 -11
  394. package/nodes/inputs/ScreenNode.js +0 -20
  395. package/nodes/inputs/TextureNode.cjs.js +0 -1
  396. package/nodes/inputs/TextureNode.d.ts +0 -20
  397. package/nodes/inputs/TextureNode.js +0 -83
  398. package/nodes/inputs/Vector2Node.cjs.js +0 -1
  399. package/nodes/inputs/Vector2Node.d.ts +0 -21
  400. package/nodes/inputs/Vector2Node.js +0 -40
  401. package/nodes/inputs/Vector3Node.cjs.js +0 -1
  402. package/nodes/inputs/Vector3Node.d.ts +0 -21
  403. package/nodes/inputs/Vector3Node.js +0 -41
  404. package/nodes/inputs/Vector4Node.cjs.js +0 -1
  405. package/nodes/inputs/Vector4Node.d.ts +0 -21
  406. package/nodes/inputs/Vector4Node.js +0 -42
  407. package/nodes/materials/BasicNodeMaterial.cjs.js +0 -1
  408. package/nodes/materials/BasicNodeMaterial.d.ts +0 -11
  409. package/nodes/materials/BasicNodeMaterial.js +0 -15
  410. package/nodes/materials/PhongNodeMaterial.cjs.js +0 -1
  411. package/nodes/materials/PhongNodeMaterial.d.ts +0 -21
  412. package/nodes/materials/PhongNodeMaterial.js +0 -15
  413. package/nodes/materials/SpriteNodeMaterial.cjs.js +0 -1
  414. package/nodes/materials/SpriteNodeMaterial.d.ts +0 -12
  415. package/nodes/materials/SpriteNodeMaterial.js +0 -15
  416. package/nodes/materials/StandardNodeMaterial.cjs.js +0 -1
  417. package/nodes/materials/StandardNodeMaterial.d.ts +0 -25
  418. package/nodes/materials/StandardNodeMaterial.js +0 -15
  419. package/nodes/materials/nodes/BasicNode.cjs.js +0 -1
  420. package/nodes/materials/nodes/BasicNode.d.ts +0 -15
  421. package/nodes/materials/nodes/BasicNode.js +0 -91
  422. package/nodes/materials/nodes/MeshStandardNode.cjs.js +0 -1
  423. package/nodes/materials/nodes/MeshStandardNode.d.ts +0 -25
  424. package/nodes/materials/nodes/MeshStandardNode.js +0 -81
  425. package/nodes/materials/nodes/PhongNode.cjs.js +0 -1
  426. package/nodes/materials/nodes/PhongNode.d.ts +0 -14
  427. package/nodes/materials/nodes/PhongNode.js +0 -212
  428. package/nodes/materials/nodes/RawNode.cjs.js +0 -1
  429. package/nodes/materials/nodes/RawNode.d.ts +0 -10
  430. package/nodes/materials/nodes/RawNode.js +0 -42
  431. package/nodes/materials/nodes/SpriteNode.cjs.js +0 -1
  432. package/nodes/materials/nodes/SpriteNode.d.ts +0 -13
  433. package/nodes/materials/nodes/SpriteNode.js +0 -113
  434. package/nodes/materials/nodes/StandardNode.cjs.js +0 -1
  435. package/nodes/materials/nodes/StandardNode.d.ts +0 -15
  436. package/nodes/materials/nodes/StandardNode.js +0 -336
  437. package/nodes/misc/BumpMapNode.cjs.js +0 -1
  438. package/nodes/misc/BumpMapNode.d.ts +0 -21
  439. package/nodes/misc/BumpMapNode.js +0 -80
  440. package/nodes/misc/NormalMapNode.cjs.js +0 -1
  441. package/nodes/misc/NormalMapNode.d.ts +0 -19
  442. package/nodes/misc/NormalMapNode.js +0 -102
  443. package/nodes/misc/TextureCubeNode.cjs.js +0 -1
  444. package/nodes/misc/TextureCubeNode.d.ts +0 -21
  445. package/nodes/misc/TextureCubeNode.js +0 -52
  446. package/nodes/misc/TextureCubeUVNode.cjs.js +0 -1
  447. package/nodes/misc/TextureCubeUVNode.d.ts +0 -18
  448. package/nodes/misc/TextureCubeUVNode.js +0 -229
  449. package/nodes/postprocessing/NodePass.cjs.js +0 -1
  450. package/nodes/postprocessing/NodePass.d.ts +0 -15
  451. package/nodes/postprocessing/NodePass.js +0 -61
  452. package/nodes/postprocessing/NodePostProcessing.cjs.js +0 -1
  453. package/nodes/postprocessing/NodePostProcessing.d.ts +0 -26
  454. package/nodes/postprocessing/NodePostProcessing.js +0 -91
  455. package/nodes/procedural/NoiseNode.cjs.js +0 -1
  456. package/nodes/procedural/NoiseNode.d.ts +0 -17
  457. package/nodes/procedural/NoiseNode.js +0 -43
  458. package/nodes/utils/BypassNode.cjs.js +0 -1
  459. package/nodes/utils/BypassNode.d.ts +0 -11
  460. package/nodes/utils/BypassNode.js +0 -55
  461. package/nodes/utils/ColorSpaceNode.cjs.js +0 -1
  462. package/nodes/utils/ColorSpaceNode.d.ts +0 -55
  463. package/nodes/utils/ColorSpaceNode.js +0 -106
  464. package/nodes/utils/MaxMIPLevelNode.cjs.js +0 -1
  465. package/nodes/utils/MaxMIPLevelNode.d.ts +0 -11
  466. package/nodes/utils/MaxMIPLevelNode.js +0 -38
  467. package/nodes/utils/SpecularMIPLevelNode.cjs.js +0 -1
  468. package/nodes/utils/SpecularMIPLevelNode.d.ts +0 -17
  469. package/nodes/utils/SpecularMIPLevelNode.js +0 -61
  470. package/nodes/utils/SubSlotNode.cjs.js +0 -1
  471. package/nodes/utils/SubSlotNode.js +0 -53
  472. package/nodes/utils/SwitchNode.cjs.js +0 -1
  473. package/nodes/utils/SwitchNode.d.ts +0 -11
  474. package/nodes/utils/SwitchNode.js +0 -69
  475. package/nodes/utils/UVTransformNode.cjs.js +0 -1
  476. package/nodes/utils/UVTransformNode.d.ts +0 -15
  477. package/nodes/utils/UVTransformNode.js +0 -46
  478. package/nodes/utils/VelocityNode.cjs.js +0 -1
  479. package/nodes/utils/VelocityNode.d.ts +0 -28
  480. package/nodes/utils/VelocityNode.js +0 -115
@@ -1,45 +1,38 @@
1
- import { Node } from './Node.js';
1
+ import Node from './Node.js';
2
2
 
3
- function VarNode(type, value) {
4
- Node.call(this, type);
5
- this.value = value;
6
- }
7
-
8
- VarNode.prototype = Object.create(Node.prototype);
9
- VarNode.prototype.constructor = VarNode;
10
- VarNode.prototype.nodeType = 'Var';
11
-
12
- VarNode.prototype.getType = function (builder) {
13
- return builder.getTypeByFormat(this.type);
14
- };
15
-
16
- VarNode.prototype.generate = function (builder, output) {
17
- var varying = builder.getVar(this.uuid, this.type);
3
+ class VarNode extends Node {
4
+ constructor(node, name = null, nodeType = null) {
5
+ super(nodeType);
6
+ this.node = node;
7
+ this.name = name;
8
+ }
18
9
 
19
- if (this.value && builder.isShader('vertex')) {
20
- builder.addNodeCode(varying.name + ' = ' + this.value.build(builder, this.getType(builder)) + ';');
10
+ getHash(builder) {
11
+ return this.name || super.getHash(builder);
21
12
  }
22
13
 
23
- return builder.format(varying.name, this.getType(builder), output);
24
- };
14
+ getNodeType(builder) {
15
+ return super.getNodeType(builder) || this.node.getNodeType(builder);
16
+ }
25
17
 
26
- VarNode.prototype.copy = function (source) {
27
- Node.prototype.copy.call(this, source);
28
- this.type = source.type;
29
- this.value = source.value;
30
- return this;
31
- };
18
+ generate(builder) {
19
+ const type = builder.getVectorType(this.getNodeType(builder));
20
+ const node = this.node;
21
+ const name = this.name;
22
+ const snippet = node.build(builder, type);
23
+ const nodeVar = builder.getVarFromNode(this, type);
32
24
 
33
- VarNode.prototype.toJSON = function (meta) {
34
- var data = this.getJSONNode(meta);
25
+ if (name !== null) {
26
+ nodeVar.name = name;
27
+ }
35
28
 
36
- if (!data) {
37
- data = this.createJSONNode(meta);
38
- data.type = this.type;
39
- if (this.value) data.value = this.value.toJSON(meta).uuid;
29
+ const propertyName = builder.getPropertyName(nodeVar);
30
+ builder.addFlowCode(`${propertyName} = ${snippet}`);
31
+ return propertyName;
40
32
  }
41
33
 
42
- return data;
43
- };
34
+ }
35
+
36
+ VarNode.prototype.isVarNode = true;
44
37
 
45
- export { VarNode };
38
+ export default VarNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./Node.cjs.js"),t=require("./constants.cjs.js");require("./NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e,t=null){super(),this.node=e,this.name=t}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){const r=this.getNodeType(e),s=this.node,o=this.name,a=e.getVaryFromNode(this,r);null!==o&&(a.name=o);const n=e.getPropertyName(a,t.NodeShaderStage.Vertex);return e.flowNodeFromShaderStage(t.NodeShaderStage.Vertex,s,r,n),e.getPropertyName(a)}};
@@ -0,0 +1,38 @@
1
+ import Node from './Node.js';
2
+ import { NodeShaderStage } from './constants.js';
3
+
4
+ class VaryNode extends Node {
5
+ constructor(node, name = null) {
6
+ super();
7
+ this.node = node;
8
+ this.name = name;
9
+ }
10
+
11
+ getHash(builder) {
12
+ return this.name || super.getHash(builder);
13
+ }
14
+
15
+ getNodeType(builder) {
16
+ // VaryNode is auto type
17
+ return this.node.getNodeType(builder);
18
+ }
19
+
20
+ generate(builder) {
21
+ const type = this.getNodeType(builder);
22
+ const node = this.node;
23
+ const name = this.name;
24
+ const nodeVary = builder.getVaryFromNode(this, type);
25
+
26
+ if (name !== null) {
27
+ nodeVary.name = name;
28
+ }
29
+
30
+ const propertyName = builder.getPropertyName(nodeVary, NodeShaderStage.Vertex); // force node run in vertex stage
31
+
32
+ builder.flowNodeFromShaderStage(NodeShaderStage.Vertex, node, type, propertyName);
33
+ return builder.getPropertyName(nodeVary);
34
+ }
35
+
36
+ }
37
+
38
+ export default VaryNode;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.NodeShaderStage={Vertex:"vertex",Fragment:"fragment"},exports.NodeType={Boolean:"bool",Integer:"int",Float:"float",Vector2:"vec2",Vector3:"vec3",Vector4:"vec4",Matrix3:"mat3",Matrix4:"mat4"},exports.NodeUpdateType={None:"none",Frame:"frame",Object:"object"};
@@ -0,0 +1,11 @@
1
+ const NodeShaderStage = {
2
+ Vertex: 'vertex',
3
+ Fragment: 'fragment'
4
+ };
5
+ const NodeUpdateType = {
6
+ None: 'none',
7
+ Frame: 'frame',
8
+ Object: 'object'
9
+ };
10
+
11
+ export { NodeShaderStage, NodeUpdateType };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),s=require("../ShaderNode.cjs.js"),o=require("three");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");var i=c(e);const j=new s.ShaderNode((e=>e.value)),u=new s.ShaderNode((e=>{const{value:r}=e,o=r.rgb,c=s.sub(s.mul(s.pow(r.rgb,s.vec3(.41666)),1.055),s.vec3(.055)),i=s.mul(o,12.92),j=s.vec3(s.lessThanEqual(o,s.vec3(.0031308))),u=s.mix(c,i,j);return s.join(u.r,u.g,u.b,r.a)})),t={LinearToLinear:j,LinearTosRGB:u};class d extends r{constructor(e,r){super("vec4"),this.method=e,this.node=r}fromEncoding(e){let r=null;return e===o.LinearEncoding?r="Linear":e===o.sRGBEncoding&&(r="sRGB"),this.method="LinearTo"+r,this}generate(e){const r=this.getNodeType(e),s=this.method,o=this.node;if(s!==d.LINEAR_TO_LINEAR){return(0,t[s])({value:o}).build(e,r)}return o.build(e,r)}}i.default(d,"LINEAR_TO_LINEAR","LinearToLinear"),i.default(d,"LINEAR_TO_SRGB","LinearTosRGB"),exports.LinearToLinear=j,exports.LinearTosRGB=u,exports.default=d;
@@ -0,0 +1,67 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Node from '../core/Node.js';
3
+ import { ShaderNode, sub, mul, pow, vec3, lessThanEqual, mix, join } from '../ShaderNode.js';
4
+ import { LinearEncoding, sRGBEncoding } from 'three';
5
+
6
+ const LinearToLinear = new ShaderNode(inputs => {
7
+ return inputs.value;
8
+ });
9
+ const LinearTosRGB = new ShaderNode(inputs => {
10
+ const {
11
+ value
12
+ } = inputs;
13
+ const rgb = value.rgb;
14
+ const a = sub(mul(pow(value.rgb, vec3(0.41666)), 1.055), vec3(0.055));
15
+ const b = mul(rgb, 12.92);
16
+ const factor = vec3(lessThanEqual(rgb, vec3(0.0031308)));
17
+ const rgbResult = mix(a, b, factor);
18
+ return join(rgbResult.r, rgbResult.g, rgbResult.b, value.a);
19
+ });
20
+ const EncodingLib = {
21
+ LinearToLinear,
22
+ LinearTosRGB
23
+ };
24
+
25
+ class ColorSpaceNode extends Node {
26
+ constructor(method, node) {
27
+ super('vec4');
28
+ this.method = method;
29
+ this.node = node;
30
+ }
31
+
32
+ fromEncoding(encoding) {
33
+ let method = null;
34
+
35
+ if (encoding === LinearEncoding) {
36
+ method = 'Linear';
37
+ } else if (encoding === sRGBEncoding) {
38
+ method = 'sRGB';
39
+ }
40
+
41
+ this.method = 'LinearTo' + method;
42
+ return this;
43
+ }
44
+
45
+ generate(builder) {
46
+ const type = this.getNodeType(builder);
47
+ const method = this.method;
48
+ const node = this.node;
49
+
50
+ if (method !== ColorSpaceNode.LINEAR_TO_LINEAR) {
51
+ const encodingFunctionNode = EncodingLib[method];
52
+ return encodingFunctionNode({
53
+ value: node
54
+ }).build(builder, type);
55
+ } else {
56
+ return node.build(builder, type);
57
+ }
58
+ }
59
+
60
+ }
61
+
62
+ _defineProperty(ColorSpaceNode, "LINEAR_TO_LINEAR", 'LinearToLinear');
63
+
64
+ _defineProperty(ColorSpaceNode, "LINEAR_TO_SRGB", 'LinearTosRGB');
65
+
66
+ export default ColorSpaceNode;
67
+ export { LinearToLinear, LinearTosRGB };
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/TempNode.cjs.js"),r=require("../accessors/ModelNode.cjs.js"),s=require("../ShaderNode.cjs.js"),o=require("three");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");const c=new s.ShaderNode((e=>{const{eye_pos:r,surf_norm:o,mapN:c,faceDirection:u,uv:i}=e,j=s.dFdx(r.xyz),d=s.dFdy(r.xyz),t=s.dFdx(i.st),a=s.dFdy(i.st),n=o,N=s.cross(d,n),l=s.cross(n,j),q=s.add(s.mul(N,t.x),s.mul(l,a.x)),m=s.add(s.mul(N,t.y),s.mul(l,a.y)),p=s.max(s.dot(q,q),s.dot(m,m)),y=s.cond(s.equal(p,0),0,s.mul(u,s.inversesqrt(p)));return s.normalize(s.add(s.mul(q,s.mul(c.x,y)),s.mul(m,s.mul(c.y,y)),s.mul(n,c.z)))}));module.exports=class extends e{constructor(e,r=null){super("vec3"),this.node=e,this.scaleNode=r,this.normalMapType=o.TangentSpaceNormalMap}generate(e){const u=this.getNodeType(e),{normalMapType:i,scaleNode:j}=this,d=s.mul(this.node,2);let t=s.sub(d,1);if(null!==j){const e=s.mul(t.xy,j);t=s.join(e,t.z)}if(i===o.ObjectSpaceNormalMap){const o=s.mul(new r(r.NORMAL_MATRIX),t);return s.normalize(o).build(e,u)}if(i===o.TangentSpaceNormalMap){return c({eye_pos:s.positionView,surf_norm:s.normalView,mapN:t,faceDirection:1,uv:s.uv()}).build(e,u)}}};
@@ -0,0 +1,71 @@
1
+ import TempNode from '../core/TempNode.js';
2
+ import ModelNode from '../accessors/ModelNode.js';
3
+ import { ShaderNode, dFdx, dFdy, cross, add, mul, max, dot, cond, inversesqrt, equal, normalize, sub, join, positionView, normalView, uv } from '../ShaderNode.js';
4
+ import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from 'three';
5
+
6
+ // http://www.thetenthplanet.de/archives/1180
7
+
8
+ const perturbNormal2ArbNode = new ShaderNode(inputs => {
9
+ const {
10
+ eye_pos,
11
+ surf_norm,
12
+ mapN,
13
+ faceDirection,
14
+ uv
15
+ } = inputs;
16
+ const q0 = dFdx(eye_pos.xyz);
17
+ const q1 = dFdy(eye_pos.xyz);
18
+ const st0 = dFdx(uv.st);
19
+ const st1 = dFdy(uv.st);
20
+ const N = surf_norm; // normalized
21
+
22
+ const q1perp = cross(q1, N);
23
+ const q0perp = cross(N, q0);
24
+ const T = add(mul(q1perp, st0.x), mul(q0perp, st1.x));
25
+ const B = add(mul(q1perp, st0.y), mul(q0perp, st1.y));
26
+ const det = max(dot(T, T), dot(B, B));
27
+ const scale = cond(equal(det, 0), 0, mul(faceDirection, inversesqrt(det)));
28
+ return normalize(add(mul(T, mul(mapN.x, scale)), mul(B, mul(mapN.y, scale)), mul(N, mapN.z)));
29
+ });
30
+
31
+ class NormalMapNode extends TempNode {
32
+ constructor(node, scaleNode = null) {
33
+ super('vec3');
34
+ this.node = node;
35
+ this.scaleNode = scaleNode;
36
+ this.normalMapType = TangentSpaceNormalMap;
37
+ }
38
+
39
+ generate(builder) {
40
+ const type = this.getNodeType(builder);
41
+ const {
42
+ normalMapType,
43
+ scaleNode
44
+ } = this;
45
+ const normalOP = mul(this.node, 2.0);
46
+ let normalMap = sub(normalOP, 1.0);
47
+
48
+ if (scaleNode !== null) {
49
+ const normalMapScale = mul(normalMap.xy, scaleNode);
50
+ normalMap = join(normalMapScale, normalMap.z);
51
+ }
52
+
53
+ if (normalMapType === ObjectSpaceNormalMap) {
54
+ const vertexNormalNode = mul(new ModelNode(ModelNode.NORMAL_MATRIX), normalMap);
55
+ const normal = normalize(vertexNormalNode);
56
+ return normal.build(builder, type);
57
+ } else if (normalMapType === TangentSpaceNormalMap) {
58
+ const perturbNormal2ArbCall = perturbNormal2ArbNode({
59
+ eye_pos: positionView,
60
+ surf_norm: normalView,
61
+ mapN: normalMap,
62
+ faceDirection: 1.0,
63
+ uv: uv()
64
+ });
65
+ return perturbNormal2ArbCall.build(builder, type);
66
+ }
67
+ }
68
+
69
+ }
70
+
71
+ export default NormalMapNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");class r extends e{constructor(e,r){super("float"),this.colorNode=e,this.factorNode=r}generate(e){return this.factorNode.build(e,"float")}}r.prototype.isFogNode=!0,module.exports=r;
@@ -0,0 +1,18 @@
1
+ import Node from '../core/Node.js';
2
+
3
+ class FogNode extends Node {
4
+ constructor(colorNode, factorNode) {
5
+ super('float');
6
+ this.colorNode = colorNode;
7
+ this.factorNode = factorNode;
8
+ }
9
+
10
+ generate(builder) {
11
+ return this.factorNode.build(builder, 'float');
12
+ }
13
+
14
+ }
15
+
16
+ FogNode.prototype.isFogNode = true;
17
+
18
+ export default FogNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./FogNode.cjs.js"),r=require("../ShaderNode.cjs.js");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");class s extends e{constructor(e,r,s){super(e),this.nearNode=r,this.farNode=s}generate(e){return this.factorNode=r.smoothstep(this.nearNode,this.farNode,r.negate(r.positionView.z)),super.generate(e)}}s.prototype.isFogRangeNode=!0,module.exports=s;
@@ -0,0 +1,20 @@
1
+ import FogNode from './FogNode.js';
2
+ import { smoothstep, negate, positionView } from '../ShaderNode.js';
3
+
4
+ class FogRangeNode extends FogNode {
5
+ constructor(colorNode, nearNode, farNode) {
6
+ super(colorNode);
7
+ this.nearNode = nearNode;
8
+ this.farNode = farNode;
9
+ }
10
+
11
+ generate(builder) {
12
+ this.factorNode = smoothstep(this.nearNode, this.farNode, negate(positionView.z));
13
+ return super.generate(builder);
14
+ }
15
+
16
+ }
17
+
18
+ FogRangeNode.prototype.isFogRangeNode = true;
19
+
20
+ export default FogRangeNode;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../ShaderNode.cjs.js");require("../core/PropertyNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");const r=new e.ShaderNode((r=>{const{f0:o,f90:s,dotVH:t}=r,d=e.exp2(e.mul(e.sub(e.mul(-5.55473,t),6.98316),t));return e.add(e.mul(o,e.sub(1,d)),e.mul(s,d))})),o=new e.ShaderNode((r=>e.mul(1/Math.PI,r.diffuseColor))),s=new e.ShaderNode((r=>{const{lightDistance:o,cutoffDistance:s,decayExponent:t}=r;return e.cond(e.and(e.greaterThan(s,0),e.greaterThan(t,0)),e.pow(e.saturate(e.add(e.div(e.negate(o),s),1)),t),1)})),t=new e.ShaderNode((r=>{const{alpha:o,dotNL:s,dotNV:t}=r,d=e.pow2(o),i=e.mul(s,e.sqrt(e.add(d,e.mul(e.sub(1,d),e.pow2(t))))),c=e.mul(t,e.sqrt(e.add(d,e.mul(e.sub(1,d),e.pow2(s)))));return e.div(.5,e.max(e.add(i,c),e.EPSILON))})),d=new e.ShaderNode((r=>{const{alpha:o,dotNH:s}=r,t=e.pow2(o),d=e.add(e.mul(e.pow2(s),e.sub(t,1)),1);return e.mul(1/Math.PI,e.div(t,e.pow2(d)))})),i=new e.ShaderNode((o=>{const{lightDirection:s,f0:i,f90:c,roughness:u}=o,a=e.pow2(u),j=e.normalize(e.add(s,e.positionViewDirection)),n=e.saturate(e.dot(e.transformedNormalView,s)),l=e.saturate(e.dot(e.transformedNormalView,e.positionViewDirection)),N=e.saturate(e.dot(e.transformedNormalView,j)),q=e.saturate(e.dot(e.positionViewDirection,j)),m=r({f0:i,f90:c,dotVH:q}),h=t({alpha:a,dotNL:n,dotNV:l}),p=d({alpha:a,dotNH:N});return e.mul(m,e.mul(h,p))})),c=new e.ShaderNode((r=>{const{lightDirection:s,lightColor:t,directDiffuse:d,directSpecular:c}=r,u=e.saturate(e.dot(e.transformedNormalView,s));let a=e.mul(u,t);a=e.mul(a,Math.PI),e.addTo(d,e.mul(a,o({diffuseColor:e.diffuseColor.rgb}))),e.addTo(c,e.mul(a,i({lightDirection:s,f0:e.specularColor,f90:1,roughness:e.roughness})))})),u=new e.ShaderNode((e=>{c(e)}));exports.BRDF_GGX=i,exports.BRDF_Lambert=o,exports.D_GGX=d,exports.F_Schlick=r,exports.PhysicalLightingModel=u,exports.RE_Direct_Physical=c,exports.V_GGX_SmithCorrelated=t,exports.getDistanceAttenuation=s;
@@ -0,0 +1,121 @@
1
+ import { ShaderNode, exp2, mul, sub, add, cond, pow, saturate, div, negate, and, greaterThan, pow2, sqrt, max, EPSILON, normalize, positionViewDirection, dot, transformedNormalView, addTo, diffuseColor, specularColor, roughness } from '../ShaderNode.js';
2
+
3
+ const F_Schlick = new ShaderNode(inputs => {
4
+ const {
5
+ f0,
6
+ f90,
7
+ dotVH
8
+ } = inputs; // Original approximation by Christophe Schlick '94
9
+ // float fresnel = pow( 1.0 - dotVH, 5.0 );
10
+ // Optimized variant (presented by Epic at SIGGRAPH '13)
11
+ // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
12
+
13
+ const fresnel = exp2(mul(sub(mul(-5.55473, dotVH), 6.98316), dotVH));
14
+ return add(mul(f0, sub(1.0, fresnel)), mul(f90, fresnel));
15
+ }); // validated
16
+
17
+ const BRDF_Lambert = new ShaderNode(inputs => {
18
+ return mul(1 / Math.PI, inputs.diffuseColor); // punctual light
19
+ }); // validated
20
+
21
+ const getDistanceAttenuation = new ShaderNode(inputs => {
22
+ const {
23
+ lightDistance,
24
+ cutoffDistance,
25
+ decayExponent
26
+ } = inputs;
27
+ return cond(and(greaterThan(cutoffDistance, 0), greaterThan(decayExponent, 0)), pow(saturate(add(div(negate(lightDistance), cutoffDistance), 1.0)), decayExponent), 1.0);
28
+ }); // validated
29
+ //
30
+ // STANDARD
31
+ //
32
+ // Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
33
+ // https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
34
+
35
+ const V_GGX_SmithCorrelated = new ShaderNode(inputs => {
36
+ const {
37
+ alpha,
38
+ dotNL,
39
+ dotNV
40
+ } = inputs;
41
+ const a2 = pow2(alpha);
42
+ const gv = mul(dotNL, sqrt(add(a2, mul(sub(1.0, a2), pow2(dotNV)))));
43
+ const gl = mul(dotNV, sqrt(add(a2, mul(sub(1.0, a2), pow2(dotNL)))));
44
+ return div(0.5, max(add(gv, gl), EPSILON));
45
+ }); // validated
46
+ // Microfacet Models for Refraction through Rough Surfaces - equation (33)
47
+ // http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
48
+ // alpha is "roughness squared" in Disney’s reparameterization
49
+
50
+ const D_GGX = new ShaderNode(inputs => {
51
+ const {
52
+ alpha,
53
+ dotNH
54
+ } = inputs;
55
+ const a2 = pow2(alpha);
56
+ const denom = add(mul(pow2(dotNH), sub(a2, 1.0)), 1.0); // avoid alpha = 0 with dotNH = 1
57
+
58
+ return mul(1 / Math.PI, div(a2, pow2(denom)));
59
+ }); // validated
60
+ // GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
61
+
62
+ const BRDF_GGX = new ShaderNode(inputs => {
63
+ const {
64
+ lightDirection,
65
+ f0,
66
+ f90,
67
+ roughness
68
+ } = inputs;
69
+ const alpha = pow2(roughness); // UE4's roughness
70
+
71
+ const halfDir = normalize(add(lightDirection, positionViewDirection));
72
+ const dotNL = saturate(dot(transformedNormalView, lightDirection));
73
+ const dotNV = saturate(dot(transformedNormalView, positionViewDirection));
74
+ const dotNH = saturate(dot(transformedNormalView, halfDir));
75
+ const dotVH = saturate(dot(positionViewDirection, halfDir));
76
+ const F = F_Schlick({
77
+ f0,
78
+ f90,
79
+ dotVH
80
+ });
81
+ const V = V_GGX_SmithCorrelated({
82
+ alpha,
83
+ dotNL,
84
+ dotNV
85
+ });
86
+ const D = D_GGX({
87
+ alpha,
88
+ dotNH
89
+ });
90
+ return mul(F, mul(V, D));
91
+ }); // validated
92
+
93
+ const RE_Direct_Physical = new ShaderNode(inputs => {
94
+ const {
95
+ lightDirection,
96
+ lightColor,
97
+ directDiffuse,
98
+ directSpecular
99
+ } = inputs;
100
+ const dotNL = saturate(dot(transformedNormalView, lightDirection));
101
+ let irradiance = mul(dotNL, lightColor);
102
+ irradiance = mul(irradiance, Math.PI); // punctual light
103
+
104
+ addTo(directDiffuse, mul(irradiance, BRDF_Lambert({
105
+ diffuseColor: diffuseColor.rgb
106
+ })));
107
+ addTo(directSpecular, mul(irradiance, BRDF_GGX({
108
+ lightDirection,
109
+ f0: specularColor,
110
+ f90: 1,
111
+ roughness
112
+ })));
113
+ });
114
+ const PhysicalLightingModel = new ShaderNode((inputs
115
+ /*, builder*/
116
+ ) => {
117
+ // PHYSICALLY_CORRECT_LIGHTS <-> builder.renderer.physicallyCorrectLights === true
118
+ RE_Direct_Physical(inputs);
119
+ });
120
+
121
+ export { BRDF_GGX, BRDF_Lambert, D_GGX, F_Schlick, PhysicalLightingModel, RE_Direct_Physical, V_GGX_SmithCorrelated, getDistanceAttenuation };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../ShaderNode.cjs.js");require("../core/PropertyNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");const r=new e.ShaderNode((()=>{const r=e.max(e.abs(e.dFdx(e.normalGeometry)),e.abs(e.dFdy(e.normalGeometry)));return e.max(e.max(r.x,r.y),r.z)})),s=new e.ShaderNode((s=>{const{roughness:o}=s,c=r();let j=e.max(o,.0525);return j=e.add(j,c),j=e.min(j,1),j}));exports.getGeometryRoughness=r,exports.getRoughness=s;
@@ -0,0 +1,57 @@
1
+ import { ShaderNode, max, abs, dFdx, normalGeometry, dFdy, add, min } from '../ShaderNode.js';
2
+ import '../core/PropertyNode.js';
3
+ import '../core/Node.js';
4
+ import '../core/constants.js';
5
+ import '../core/NodeUtils.js';
6
+ import 'three';
7
+ import '../core/VarNode.js';
8
+ import '../core/AttributeNode.js';
9
+ import '../core/VaryNode.js';
10
+ import '../core/ConstNode.js';
11
+ import '../core/InputNode.js';
12
+ import '../core/UniformNode.js';
13
+ import '../accessors/BufferNode.js';
14
+ import '../accessors/PositionNode.js';
15
+ import '@babel/runtime/helpers/esm/defineProperty';
16
+ import '../accessors/ModelNode.js';
17
+ import '../accessors/Object3DNode.js';
18
+ import '../math/MathNode.js';
19
+ import '../core/TempNode.js';
20
+ import '../core/ExpressionNode.js';
21
+ import '../utils/JoinNode.js';
22
+ import '../utils/SplitNode.js';
23
+ import '../core/NodeBuilder.js';
24
+ import '../core/NodeUniform.js';
25
+ import '../core/NodeAttribute.js';
26
+ import '../core/NodeVary.js';
27
+ import '../core/NodeVar.js';
28
+ import '../core/NodeCode.js';
29
+ import '../core/NodeKeywords.js';
30
+ import '../math/OperatorNode.js';
31
+ import '../accessors/NormalNode.js';
32
+ import '../accessors/CameraNode.js';
33
+ import '../accessors/TextureNode.js';
34
+ import '../accessors/UVNode.js';
35
+ import '../math/CondNode.js';
36
+ import '../core/ContextNode.js';
37
+ import '../utils/ArrayElementNode.js';
38
+ import '../utils/ConvertNode.js';
39
+
40
+ const getGeometryRoughness = new ShaderNode(() => {
41
+ const dxy = max(abs(dFdx(normalGeometry)), abs(dFdy(normalGeometry)));
42
+ const geometryRoughness = max(max(dxy.x, dxy.y), dxy.z);
43
+ return geometryRoughness;
44
+ });
45
+ const getRoughness = new ShaderNode(inputs => {
46
+ const {
47
+ roughness
48
+ } = inputs;
49
+ const geometryRoughness = getGeometryRoughness();
50
+ let roughnessFactor = max(roughness, 0.0525); // 0.0525 corresponds to the base mip of a 256 cubemap.
51
+
52
+ roughnessFactor = add(roughnessFactor, geometryRoughness);
53
+ roughnessFactor = min(roughnessFactor, 1.0);
54
+ return roughnessFactor;
55
+ });
56
+
57
+ export { getGeometryRoughness, getRoughness };
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/ContextNode.cjs.js"),r=require("../core/VarNode.cjs.js"),s=require("../core/UniformNode.cjs.js"),c=require("../math/OperatorNode.cjs.js"),o=require("../functions/BSDFs.cjs.js"),i=require("three");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../ShaderNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");module.exports=class extends e{constructor(e){super(e)}getNodeType(){return"vec3"}generate(e){let j=null;!0===e.material.isMeshStandardMaterial&&(j=o.PhysicalLightingModel);const t=new r(new s(new i.Vector3),"DirectDiffuse","vec3"),u=new r(new s(new i.Vector3),"DirectSpecular","vec3");this.context.directDiffuse=t,this.context.directSpecular=u,null!==j&&(this.context.lightingModel=j);const d=this.getNodeType(e);super.generate(e,d);return new c("+",t,u).build(e,d)}};
@@ -0,0 +1,43 @@
1
+ import ContextNode from '../core/ContextNode.js';
2
+ import VarNode from '../core/VarNode.js';
3
+ import UniformNode from '../core/UniformNode.js';
4
+ import OperatorNode from '../math/OperatorNode.js';
5
+ import { PhysicalLightingModel } from '../functions/BSDFs.js';
6
+ import { Vector3 } from 'three';
7
+
8
+ class LightContextNode extends ContextNode {
9
+ constructor(node) {
10
+ super(node);
11
+ }
12
+
13
+ getNodeType() {
14
+ return 'vec3';
15
+ }
16
+
17
+ generate(builder) {
18
+ const material = builder.material;
19
+ let lightingModel = null;
20
+
21
+ if (material.isMeshStandardMaterial === true) {
22
+ lightingModel = PhysicalLightingModel;
23
+ }
24
+
25
+ const directDiffuse = new VarNode(new UniformNode(new Vector3()), 'DirectDiffuse', 'vec3');
26
+ const directSpecular = new VarNode(new UniformNode(new Vector3()), 'DirectSpecular', 'vec3');
27
+ this.context.directDiffuse = directDiffuse;
28
+ this.context.directSpecular = directSpecular;
29
+
30
+ if (lightingModel !== null) {
31
+ this.context.lightingModel = lightingModel;
32
+ } // add code
33
+
34
+
35
+ const type = this.getNodeType(builder);
36
+ super.generate(builder, type);
37
+ const totalLight = new OperatorNode('+', directDiffuse, directSpecular);
38
+ return totalLight.build(builder, type);
39
+ }
40
+
41
+ }
42
+
43
+ export default LightContextNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js"),r=require("../accessors/Object3DNode.cjs.js"),s=require("../accessors/PositionNode.cjs.js"),o=require("../core/UniformNode.cjs.js"),t=require("../math/OperatorNode.cjs.js"),i=require("../math/MathNode.cjs.js"),c=require("../core/constants.cjs.js"),j=require("../functions/BSDFs.cjs.js"),u=require("three");require("../core/NodeUtils.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../core/InputNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../ShaderNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");module.exports=class extends e{constructor(e=null){super("vec3"),this.updateType=c.NodeUpdateType.Object,this.light=e,this._colorNode=new o(new u.Color),this._lightCutoffDistanceNode=new o(0),this._lightDecayExponentNode=new o(0)}getHash(){return this.light.uuid}update(){this._colorNode.value.copy(this.light.color).multiplyScalar(this.light.intensity),this._lightCutoffDistanceNode.value=this.light.distance,this._lightDecayExponentNode.value=this.light.decay}generate(e){const o=new r(r.VIEW_POSITION),c=new s(s.VIEW),u=new t("-",o,c),d=new i(i.NORMALIZE,u),n=new i(i.LENGTH,u),a=j.getDistanceAttenuation({lightDistance:n,cutoffDistance:this._lightCutoffDistanceNode,decayExponent:this._lightDecayExponentNode}),N=new t("*",this._colorNode,a);o.object3d=this.light;const l=e.context.lightingModel;if(void 0!==l){l({lightDirection:d,lightColor:N,directDiffuse:e.context.directDiffuse,directSpecular:e.context.directSpecular},e)}}};
@@ -0,0 +1,61 @@
1
+ import Node from '../core/Node.js';
2
+ import Object3DNode from '../accessors/Object3DNode.js';
3
+ import PositionNode from '../accessors/PositionNode.js';
4
+ import UniformNode from '../core/UniformNode.js';
5
+ import OperatorNode from '../math/OperatorNode.js';
6
+ import MathNode from '../math/MathNode.js';
7
+ import { NodeUpdateType } from '../core/constants.js';
8
+ import { getDistanceAttenuation } from '../functions/BSDFs.js';
9
+ import { Color } from 'three';
10
+
11
+ class LightNode extends Node {
12
+ constructor(light = null) {
13
+ super('vec3');
14
+ this.updateType = NodeUpdateType.Object;
15
+ this.light = light;
16
+ this._colorNode = new UniformNode(new Color());
17
+ this._lightCutoffDistanceNode = new UniformNode(0);
18
+ this._lightDecayExponentNode = new UniformNode(0);
19
+ }
20
+
21
+ getHash() {
22
+ return this.light.uuid;
23
+ }
24
+
25
+ update() {
26
+ this._colorNode.value.copy(this.light.color).multiplyScalar(this.light.intensity);
27
+
28
+ this._lightCutoffDistanceNode.value = this.light.distance;
29
+ this._lightDecayExponentNode.value = this.light.decay;
30
+ }
31
+
32
+ generate(builder) {
33
+ const lightPositionView = new Object3DNode(Object3DNode.VIEW_POSITION);
34
+ const positionView = new PositionNode(PositionNode.VIEW);
35
+ const lVector = new OperatorNode('-', lightPositionView, positionView);
36
+ const lightDirection = new MathNode(MathNode.NORMALIZE, lVector);
37
+ const lightDistance = new MathNode(MathNode.LENGTH, lVector);
38
+ const lightAttenuation = getDistanceAttenuation({
39
+ lightDistance,
40
+ cutoffDistance: this._lightCutoffDistanceNode,
41
+ decayExponent: this._lightDecayExponentNode
42
+ });
43
+ const lightColor = new OperatorNode('*', this._colorNode, lightAttenuation);
44
+ lightPositionView.object3d = this.light;
45
+ const lightingModelFunction = builder.context.lightingModel;
46
+
47
+ if (lightingModelFunction !== undefined) {
48
+ const directDiffuse = builder.context.directDiffuse;
49
+ const directSpecular = builder.context.directSpecular;
50
+ lightingModelFunction({
51
+ lightDirection,
52
+ lightColor,
53
+ directDiffuse,
54
+ directSpecular
55
+ }, builder);
56
+ }
57
+ }
58
+
59
+ }
60
+
61
+ export default LightNode;