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.
- package/README.md +1 -1
- package/build/three.cjs +157 -49
- package/build/three.core.js +104 -42
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +53 -8
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +10 -5
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +21191 -1008
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +21189 -1008
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +3 -2
- package/examples/jsm/controls/ArcballControls.js +28 -19
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +11 -7
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +22 -2
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -1
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
- package/examples/jsm/misc/Volume.js +20 -12
- package/examples/jsm/misc/VolumeSlice.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +2 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +9 -4
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +1 -1
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +474 -21
- package/src/materials/nodes/PointsNodeMaterial.js +22 -13
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
- package/src/nodes/Nodes.js +1 -6
- package/src/nodes/TSL.js +2 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +24 -5
- package/src/nodes/accessors/BatchNode.js +39 -3
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +49 -0
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +302 -8
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +59 -3
- package/src/nodes/accessors/Object3DNode.js +102 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +53 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
- package/src/nodes/accessors/ReferenceNode.js +202 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +168 -4
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +36 -0
- package/src/nodes/accessors/Texture3DNode.js +89 -5
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +309 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +223 -23
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +82 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +24 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +337 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +945 -15
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +141 -0
- package/src/nodes/core/NodeVar.js +30 -0
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +33 -2
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +78 -0
- package/src/nodes/core/StructTypeNode.js +39 -1
- package/src/nodes/core/TempNode.js +30 -4
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +52 -0
- package/src/nodes/core/VaryingNode.js +83 -2
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +298 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +87 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +93 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +240 -34
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +70 -3
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +614 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +233 -0
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +1 -1
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/tsl/TSLBase.js +2 -2
- package/src/nodes/utils/ArrayElementNode.js +38 -2
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +74 -1
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +40 -0
- package/src/nodes/utils/Timer.js +19 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +1 -2
- package/src/objects/ClippingGroup.js +49 -0
- package/src/renderers/WebGLRenderer.js +23 -4
- package/src/renderers/common/Animation.js +63 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +467 -52
- package/src/renderers/common/Background.js +34 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +38 -1
- package/src/renderers/common/ClippingContext.js +107 -14
- package/src/renderers/common/Color4.js +36 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +98 -0
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +87 -0
- package/src/renderers/common/Lighting.js +26 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +75 -3
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +33 -10
- package/src/renderers/common/RenderContext.js +169 -4
- package/src/renderers/common/RenderContexts.js +42 -2
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +31 -0
- package/src/renderers/common/RenderObject.js +328 -4
- package/src/renderers/common/RenderObjects.js +101 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1096 -31
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +121 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +83 -0
- package/src/renderers/common/Uniform.js +188 -2
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +139 -2
- package/src/renderers/common/extras/PMREMGenerator.js +24 -3
- package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +189 -0
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +327 -60
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +480 -49
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
- package/src/renderers/webgpu/WebGPURenderer.js +35 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +7 -1
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -1,42 +1,14 @@
|
|
|
1
|
-
import
|
|
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
|
-
|
|
3
|
+
/** @module ModelViewProjectionNode **/
|
|
8
4
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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' );
|