super-three 0.171.0 → 0.172.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,42 +1,14 @@
1
- import TempNode from '../core/TempNode.js';
2
- import { cameraProjectionMatrix } from './Camera.js';
3
- import { positionLocal } from './Position.js';
4
- import { nodeProxy, varying } from '../tsl/TSLBase.js';
5
- import { modelViewMatrix } from './ModelNode.js';
1
+ import { Fn } from '../tsl/TSLCore.js';
6
2
 
7
- class ModelViewProjectionNode extends TempNode {
3
+ /** @module ModelViewProjectionNode **/
8
4
 
9
- static get type() {
5
+ /**
6
+ * TSL object that represents the position in clip space after the model-view-projection transform of the current rendered object.
7
+ *
8
+ * @type {VaryingNode<vec4>}
9
+ */
10
+ export const modelViewProjection = /*@__PURE__*/ ( Fn( ( builder ) => {
10
11
 
11
- return 'ModelViewProjectionNode';
12
+ return builder.context.setupModelViewProjection();
12
13
 
13
- }
14
-
15
- constructor( positionNode = null ) {
16
-
17
- super( 'vec4' );
18
-
19
- this.positionNode = positionNode;
20
-
21
- }
22
-
23
- setup( builder ) {
24
-
25
- if ( builder.shaderStage === 'fragment' ) {
26
-
27
- return varying( builder.context.mvp );
28
-
29
- }
30
-
31
- const position = this.positionNode || positionLocal;
32
- const viewMatrix = builder.renderer.nodes.modelViewMatrix || modelViewMatrix;
33
-
34
- return cameraProjectionMatrix.mul( viewMatrix ).mul( position );
35
-
36
- }
37
-
38
- }
39
-
40
- export default ModelViewProjectionNode;
41
-
42
- export const modelViewProjection = /*@__PURE__*/ nodeProxy( ModelViewProjectionNode );
14
+ }, 'vec4' ).once() )().varying( 'v_modelViewProjection' );
@@ -1,13 +1,12 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { NodeUpdateType } from '../core/constants.js';
3
- import { float, nodeProxy, Fn } from '../tsl/TSLBase.js';
3
+ import { float, nodeProxy, Fn, ivec2, int } from '../tsl/TSLBase.js';
4
4
  import { uniform } from '../core/UniformNode.js';
5
5
  import { reference } from './ReferenceNode.js';
6
6
  import { positionLocal } from './Position.js';
7
7
  import { normalLocal } from './Normal.js';
8
8
  import { textureLoad } from './TextureNode.js';
9
9
  import { instanceIndex, vertexIndex } from '../core/IndexNode.js';
10
- import { ivec2, int } from '../tsl/TSLBase.js';
11
10
  import { Loop } from '../utils/LoopNode.js';
12
11
 
13
12
  import { DataArrayTexture } from '../../textures/DataArrayTexture.js';
@@ -15,6 +14,8 @@ import { Vector2 } from '../../math/Vector2.js';
15
14
  import { Vector4 } from '../../math/Vector4.js';
16
15
  import { FloatType } from '../../constants.js';
17
16
 
17
+ /** @module MorphNode **/
18
+
18
19
  const _morphTextures = /*@__PURE__*/ new WeakMap();
19
20
  const _morphVec4 = /*@__PURE__*/ new Vector4();
20
21
 
@@ -157,7 +158,12 @@ function getEntry( geometry ) {
157
158
 
158
159
  }
159
160
 
160
-
161
+ /**
162
+ * This node implements the vertex transformation shader logic which is required
163
+ * for morph target animation.
164
+ *
165
+ * @augments Node
166
+ */
161
167
  class MorphNode extends Node {
162
168
 
163
169
  static get type() {
@@ -166,17 +172,43 @@ class MorphNode extends Node {
166
172
 
167
173
  }
168
174
 
175
+ /**
176
+ * Constructs a new morph node.
177
+ *
178
+ * @param {Mesh} mesh - The mesh holding the morph targets.
179
+ */
169
180
  constructor( mesh ) {
170
181
 
171
182
  super( 'void' );
172
183
 
184
+ /**
185
+ * The mesh holding the morph targets.
186
+ *
187
+ * @type {Mesh}
188
+ */
173
189
  this.mesh = mesh;
190
+
191
+ /**
192
+ * A uniform node which represents the morph base influence value.
193
+ *
194
+ * @type {UniformNode<float>}
195
+ */
174
196
  this.morphBaseInfluence = uniform( 1 );
175
197
 
198
+ /**
199
+ * The update type overwritten since morph nodes are updated per object.
200
+ *
201
+ * @type {String}
202
+ */
176
203
  this.updateType = NodeUpdateType.OBJECT;
177
204
 
178
205
  }
179
206
 
207
+ /**
208
+ * Setups the morph node by assigning the transformed vertex data to predefined node variables.
209
+ *
210
+ * @param {NodeBuilder} builder - The current node builder.
211
+ */
180
212
  setup( builder ) {
181
213
 
182
214
  const { geometry } = builder;
@@ -240,7 +272,12 @@ class MorphNode extends Node {
240
272
 
241
273
  }
242
274
 
243
- update() {
275
+ /**
276
+ * Updates the state of the morphed mesh by updating the base influence.
277
+ *
278
+ * @param {NodeFrame} frame - The current node frame.
279
+ */
280
+ update( /*frame*/ ) {
244
281
 
245
282
  const morphBaseInfluence = this.morphBaseInfluence;
246
283
 
@@ -260,4 +297,11 @@ class MorphNode extends Node {
260
297
 
261
298
  export default MorphNode;
262
299
 
300
+ /**
301
+ * TSL function for creating a morph node.
302
+ *
303
+ * @function
304
+ * @param {Mesh} mesh - The mesh holding the morph targets.
305
+ * @returns {MorphNode}
306
+ */
263
307
  export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode );
@@ -1,13 +1,24 @@
1
1
  import { attribute } from '../core/AttributeNode.js';
2
2
  import { cameraViewMatrix } from './Camera.js';
3
3
  import { modelNormalMatrix, modelWorldMatrix } from './ModelNode.js';
4
- import { mat3, vec3 } from '../tsl/TSLBase.js';
4
+ import { mat3, vec3, Fn, varying } from '../tsl/TSLBase.js';
5
5
  import { positionView } from './Position.js';
6
- import { Fn, varying } from '../tsl/TSLBase.js';
7
6
  import { faceDirection } from '../display/FrontFacingNode.js';
8
7
 
8
+ /** @module Normal **/
9
+
10
+ /**
11
+ * TSL object that represents the normal attribute of the current rendered object.
12
+ *
13
+ * @type {Node<vec3>}
14
+ */
9
15
  export const normalGeometry = /*@__PURE__*/ attribute( 'normal', 'vec3' );
10
16
 
17
+ /**
18
+ * TSL object that represents the vertex normal in local space of the current rendered object.
19
+ *
20
+ * @type {Node<vec3>}
21
+ */
11
22
  export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
12
23
 
13
24
  if ( builder.geometry.hasAttribute( 'normal' ) === false ) {
@@ -22,8 +33,18 @@ export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
22
33
 
23
34
  }, 'vec3' ).once() )().toVar( 'normalLocal' );
24
35
 
36
+ /**
37
+ * TSL object that represents the flat vertex normal in view space of the current rendered object.
38
+ *
39
+ * @type {Node<vec3>}
40
+ */
25
41
  export const normalFlat = /*@__PURE__*/ positionView.dFdx().cross( positionView.dFdy() ).normalize().toVar( 'normalFlat' );
26
42
 
43
+ /**
44
+ * TSL object that represents the vertex normal in view space of the current rendered object.
45
+ *
46
+ * @type {Node<vec3>}
47
+ */
27
48
  export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
28
49
 
29
50
  let node;
@@ -42,23 +63,50 @@ export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
42
63
 
43
64
  }, 'vec3' ).once() )().toVar( 'normalView' );
44
65
 
66
+ /**
67
+ * TSL object that represents the vertex normal in world space of the current rendered object.
68
+ *
69
+ * @type {Node<vec3>}
70
+ */
45
71
  export const normalWorld = /*@__PURE__*/ varying( normalView.transformDirection( cameraViewMatrix ), 'v_normalWorld' ).normalize().toVar( 'normalWorld' );
46
72
 
73
+ /**
74
+ * TSL object that represents the transformed vertex normal in view space of the current rendered object.
75
+ *
76
+ * @type {Node<vec3>}
77
+ */
47
78
  export const transformedNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
48
79
 
49
80
  return builder.context.setupNormal();
50
81
 
51
82
  }, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedNormalView' );
52
83
 
53
-
84
+ /**
85
+ * TSL object that represents the transformed vertex normal in world space of the current rendered object.
86
+ *
87
+ * @type {Node<vec3>}
88
+ */
54
89
  export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).toVar( 'transformedNormalWorld' );
55
90
 
91
+ /**
92
+ * TSL object that represents the transformed clearcoat vertex normal in view space of the current rendered object.
93
+ *
94
+ * @type {Node<vec3>}
95
+ */
56
96
  export const transformedClearcoatNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
57
97
 
58
98
  return builder.context.setupClearcoatNormal();
59
99
 
60
100
  }, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedClearcoatNormalView' );
61
101
 
102
+ /**
103
+ * Transforms the normal with the given matrix.
104
+ *
105
+ * @function
106
+ * @param {Node<vec3>} normal - The normal.
107
+ * @param {Node<mat3>} [matrix=modelWorldMatrix] - The matrix.
108
+ * @return {Node<vec3>} The transformed normal.
109
+ */
62
110
  export const transformNormal = /*@__PURE__*/ Fn( ( [ normal, matrix = modelWorldMatrix ] ) => {
63
111
 
64
112
  const m = mat3( matrix );
@@ -69,6 +117,14 @@ export const transformNormal = /*@__PURE__*/ Fn( ( [ normal, matrix = modelWorld
69
117
 
70
118
  } );
71
119
 
120
+ /**
121
+ * Transforms the given normal from local to view space.
122
+ *
123
+ * @function
124
+ * @param {Node<vec3>} normal - The normal.
125
+ * @param {NodeBuilder} builder - The current node builder.
126
+ * @return {Node<vec3>} The transformed normal.
127
+ */
72
128
  export const transformNormalToView = /*@__PURE__*/ Fn( ( [ normal ], builder ) => {
73
129
 
74
130
  const modelNormalViewMatrix = builder.renderer.nodes.modelNormalViewMatrix;
@@ -2,9 +2,23 @@ import Node from '../core/Node.js';
2
2
  import { NodeUpdateType } from '../core/constants.js';
3
3
  import UniformNode from '../core/UniformNode.js';
4
4
  import { nodeProxy } from '../tsl/TSLBase.js';
5
-
6
5
  import { Vector3 } from '../../math/Vector3.js';
7
6
 
7
+ /** @module Object3DNode **/
8
+
9
+ /**
10
+ * This node can be used to access transformation related metrics of 3D objects.
11
+ * Depending on the selected scope, a different metric is represented as a uniform
12
+ * in the shader. The following scopes are supported:
13
+ *
14
+ * - `POSITION`: The object's position in world space.
15
+ * - `VIEW_POSITION`: The object's position in view/camera space.
16
+ * - `DIRECTION`: The object's direction in world space.
17
+ * - `SCALE`: The object's scale in world space.
18
+ * - `WORLD_MATRIX`: The object's matrix in world space.
19
+ *
20
+ * @augments Node
21
+ */
8
22
  class Object3DNode extends Node {
9
23
 
10
24
  static get type() {
@@ -13,19 +27,55 @@ class Object3DNode extends Node {
13
27
 
14
28
  }
15
29
 
30
+ /**
31
+ * Constructs a new object 3D node.
32
+ *
33
+ * @param {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')} scope - The node represents a different type of transformation depending on the scope.
34
+ * @param {Object3D?} [object3d=null] - The 3D object.
35
+ */
16
36
  constructor( scope, object3d = null ) {
17
37
 
18
38
  super();
19
39
 
40
+ /**
41
+ * The node reports a different type of transformation depending on the scope.
42
+ *
43
+ * @type {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')}
44
+ */
20
45
  this.scope = scope;
46
+
47
+ /**
48
+ * The 3D object.
49
+ *
50
+ * @type {Object3D?}
51
+ * @default null
52
+ */
21
53
  this.object3d = object3d;
22
54
 
55
+ /**
56
+ * Overwritten since this type of node is updated per object.
57
+ *
58
+ * @type {String}
59
+ * @default 'object'
60
+ */
23
61
  this.updateType = NodeUpdateType.OBJECT;
24
62
 
63
+ /**
64
+ * Holds the value of the node as a uniform.
65
+ *
66
+ * @private
67
+ * @type {UniformNode}
68
+ */
25
69
  this._uniformNode = new UniformNode( null );
26
70
 
27
71
  }
28
72
 
73
+ /**
74
+ * Overwritten since the node type is inferred from the scope.
75
+ *
76
+ * @param {NodeBuilder} builder - The current node builder.
77
+ * @return {String} The node type.
78
+ */
29
79
  getNodeType() {
30
80
 
31
81
  const scope = this.scope;
@@ -42,6 +92,11 @@ class Object3DNode extends Node {
42
92
 
43
93
  }
44
94
 
95
+ /**
96
+ * Updates the uniform value depending on the scope.
97
+ *
98
+ * @param {NodeFrame} frame - The current node frame.
99
+ */
45
100
  update( frame ) {
46
101
 
47
102
  const object = this.object3d;
@@ -83,6 +138,13 @@ class Object3DNode extends Node {
83
138
 
84
139
  }
85
140
 
141
+ /**
142
+ * Generates the code snippet of the uniform node. The node type of the uniform
143
+ * node also depends on the selected scope.
144
+ *
145
+ * @param {NodeBuilder} builder - The current node builder.
146
+ * @return {String} The generated code snippet.
147
+ */
86
148
  generate( builder ) {
87
149
 
88
150
  const scope = this.scope;
@@ -127,8 +189,47 @@ Object3DNode.DIRECTION = 'direction';
127
189
 
128
190
  export default Object3DNode;
129
191
 
192
+ /**
193
+ * TSL function for creating an object 3D node that represents the object's direction in world space.
194
+ *
195
+ * @function
196
+ * @param {Object3D?} [object3d=null] - The 3D object.
197
+ * @returns {Object3DNode<vec3>}
198
+ */
130
199
  export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
200
+
201
+ /**
202
+ * TSL function for creating an object 3D node that represents the object's world matrix.
203
+ *
204
+ * @function
205
+ * @param {Object3D?} [object3d=null] - The 3D object.
206
+ * @returns {Object3DNode<mat4>}
207
+ */
131
208
  export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
209
+
210
+ /**
211
+ * TSL function for creating an object 3D node that represents the object's position in world space.
212
+ *
213
+ * @function
214
+ * @param {Object3D?} [object3d=null] - The 3D object.
215
+ * @returns {Object3DNode<vec3>}
216
+ */
132
217
  export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
218
+
219
+ /**
220
+ * TSL function for creating an object 3D node that represents the object's scale in world space.
221
+ *
222
+ * @function
223
+ * @param {Object3D?} [object3d=null] - The 3D object.
224
+ * @returns {Object3DNode<vec3>}
225
+ */
133
226
  export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
227
+
228
+ /**
229
+ * TSL function for creating an object 3D node that represents the object's position in view/camera space.
230
+ *
231
+ * @function
232
+ * @param {Object3D?} [object3d=null] - The 3D object.
233
+ * @returns {Object3DNode<vec3>}
234
+ */
134
235
  export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
@@ -1,6 +1,17 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeImmutable } from '../tsl/TSLBase.js';
3
3
 
4
+ /** @module PointUVNode **/
5
+
6
+ /**
7
+ * A node for representing the uv coordinates of points.
8
+ *
9
+ * Can only be used with a WebGL backend. In WebGPU, point
10
+ * primitives always have the size of one pixel and can thus
11
+ * can't be used as sprite-like objects that display textures.
12
+ *
13
+ * @augments Node
14
+ */
4
15
  class PointUVNode extends Node {
5
16
 
6
17
  static get type() {
@@ -9,10 +20,20 @@ class PointUVNode extends Node {
9
20
 
10
21
  }
11
22
 
23
+ /**
24
+ * Constructs a new point uv node.
25
+ */
12
26
  constructor() {
13
27
 
14
28
  super( 'vec2' );
15
29
 
30
+ /**
31
+ * This flag can be used for type testing.
32
+ *
33
+ * @type {Boolean}
34
+ * @readonly
35
+ * @default true
36
+ */
16
37
  this.isPointUVNode = true;
17
38
 
18
39
  }
@@ -27,4 +48,9 @@ class PointUVNode extends Node {
27
48
 
28
49
  export default PointUVNode;
29
50
 
51
+ /**
52
+ * TSL object that represents the uv coordinates of points.
53
+ *
54
+ * @type {PointUVNode}
55
+ */
30
56
  export const pointUV = /*@__PURE__*/ nodeImmutable( PointUVNode );
@@ -1,10 +1,59 @@
1
1
  import { attribute } from '../core/AttributeNode.js';
2
- import { modelWorldMatrix, modelViewMatrix } from './ModelNode.js';
2
+ import { Fn } from '../tsl/TSLCore.js';
3
+ import { modelWorldMatrix } from './ModelNode.js';
3
4
 
5
+ /** @module Position **/
6
+
7
+ /**
8
+ * TSL object that represents the position attribute of the current rendered object.
9
+ *
10
+ * @type {AttributeNode<vec3>}
11
+ */
4
12
  export const positionGeometry = /*@__PURE__*/ attribute( 'position', 'vec3' );
13
+
14
+ /**
15
+ * TSL object that represents the vertex position in local space of the current rendered object.
16
+ *
17
+ * @type {AttributeNode<vec3>}
18
+ */
5
19
  export const positionLocal = /*@__PURE__*/ positionGeometry.varying( 'positionLocal' );
20
+
21
+ /**
22
+ * TSL object that represents the previous vertex position in local space of the current rendered object.
23
+ * Used in context of {@link module:VelocityNode~VelocityNode} for rendering motion vectors.
24
+ *
25
+ * @type {AttributeNode<vec3>}
26
+ */
6
27
  export const positionPrevious = /*@__PURE__*/ positionGeometry.varying( 'positionPrevious' );
7
- export const positionWorld = /*@__PURE__*/ modelWorldMatrix.mul( positionLocal ).xyz.varying( 'v_positionWorld' );
8
- export const positionWorldDirection = /*@__PURE__*/ positionLocal.transformDirection( modelWorldMatrix ).varying( 'v_positionWorldDirection' ).normalize().toVar( 'positionWorldDirection' );
9
- export const positionView = /*@__PURE__*/ modelViewMatrix.mul( positionLocal ).xyz.varying( 'v_positionView' );
28
+
29
+ /**
30
+ * TSL object that represents the vertex position in world space of the current rendered object.
31
+ *
32
+ * @type {VaryingNode<vec3>}
33
+ */
34
+ export const positionWorld = /*@__PURE__*/ modelWorldMatrix.mul( positionLocal ).xyz.varying( 'v_positionWorld' ).context( { needsPositionReassign: true } );
35
+
36
+ /**
37
+ * TSL object that represents the position world direction of the current rendered object.
38
+ *
39
+ * @type {Node<vec3>}
40
+ */
41
+ export const positionWorldDirection = /*@__PURE__*/ positionLocal.transformDirection( modelWorldMatrix ).varying( 'v_positionWorldDirection' ).normalize().toVar( 'positionWorldDirection' ).context( { needsPositionReassign: true } );
42
+
43
+ /**
44
+ * TSL object that represents the vertex position in view space of the current rendered object.
45
+ *
46
+ * @type {VaryingNode<vec3>}
47
+ */
48
+ export const positionView = /*@__PURE__*/ ( Fn( ( builder ) => {
49
+
50
+ return builder.context.setupPositionView();
51
+
52
+ }, 'vec3' ).once() )().varying( 'v_positionView' ).context( { needsPositionReassign: true } );
53
+
54
+ /**
55
+ * TSL object that represents the position view direction of the current rendered object.
56
+ *
57
+ * @type {VaryingNode<vec3>}
58
+ */
10
59
  export const positionViewDirection = /*@__PURE__*/ positionView.negate().varying( 'v_positionViewDirection' ).normalize().toVar( 'positionViewDirection' );