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,24 +1,69 @@
|
|
|
1
1
|
import { SampledTexture } from '../SampledTexture.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A special form of sampled texture binding type.
|
|
5
|
+
* It's texture value is managed by a node object.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
* @augments SampledTexture
|
|
9
|
+
*/
|
|
3
10
|
class NodeSampledTexture extends SampledTexture {
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new node-based sampled texture.
|
|
14
|
+
*
|
|
15
|
+
* @param {String} name - The textures's name.
|
|
16
|
+
* @param {TextureNode} textureNode - The texture node.
|
|
17
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
18
|
+
* @param {String?} [access=null] - The access type.
|
|
19
|
+
*/
|
|
5
20
|
constructor( name, textureNode, groupNode, access = null ) {
|
|
6
21
|
|
|
7
22
|
super( name, textureNode ? textureNode.value : null );
|
|
8
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The texture node.
|
|
26
|
+
*
|
|
27
|
+
* @type {TextureNode}
|
|
28
|
+
*/
|
|
9
29
|
this.textureNode = textureNode;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The uniform group node.
|
|
33
|
+
*
|
|
34
|
+
* @type {UniformGroupNode}
|
|
35
|
+
*/
|
|
10
36
|
this.groupNode = groupNode;
|
|
11
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The access type.
|
|
40
|
+
*
|
|
41
|
+
* @type {String?}
|
|
42
|
+
* @default null
|
|
43
|
+
*/
|
|
12
44
|
this.access = access;
|
|
13
45
|
|
|
14
46
|
}
|
|
15
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Overwrites the default to additionally check if the node value has changed.
|
|
50
|
+
*
|
|
51
|
+
* @param {Number} generation - The generation.
|
|
52
|
+
* @return {Boolean} Whether an update is required or not.
|
|
53
|
+
*/
|
|
16
54
|
needsBindingsUpdate( generation ) {
|
|
17
55
|
|
|
18
56
|
return this.textureNode.value !== this.texture || super.needsBindingsUpdate( generation );
|
|
19
57
|
|
|
20
58
|
}
|
|
21
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Updates the binding.
|
|
62
|
+
*
|
|
63
|
+
* @param {Number} generation - The generation.
|
|
64
|
+
* @return {Boolean} Whether the texture has been updated and must be
|
|
65
|
+
* uploaded to the GPU.
|
|
66
|
+
*/
|
|
22
67
|
update() {
|
|
23
68
|
|
|
24
69
|
const { textureNode } = this;
|
|
@@ -37,24 +82,68 @@ class NodeSampledTexture extends SampledTexture {
|
|
|
37
82
|
|
|
38
83
|
}
|
|
39
84
|
|
|
85
|
+
/**
|
|
86
|
+
* A special form of sampled cube texture binding type.
|
|
87
|
+
* It's texture value is managed by a node object.
|
|
88
|
+
*
|
|
89
|
+
* @private
|
|
90
|
+
* @augments NodeSampledTexture
|
|
91
|
+
*/
|
|
40
92
|
class NodeSampledCubeTexture extends NodeSampledTexture {
|
|
41
93
|
|
|
42
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Constructs a new node-based sampled cube texture.
|
|
96
|
+
*
|
|
97
|
+
* @param {String} name - The textures's name.
|
|
98
|
+
* @param {TextureNode} textureNode - The texture node.
|
|
99
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
100
|
+
* @param {String?} [access=null] - The access type.
|
|
101
|
+
*/
|
|
102
|
+
constructor( name, textureNode, groupNode, access = null ) {
|
|
43
103
|
|
|
44
104
|
super( name, textureNode, groupNode, access );
|
|
45
105
|
|
|
106
|
+
/**
|
|
107
|
+
* This flag can be used for type testing.
|
|
108
|
+
*
|
|
109
|
+
* @type {Boolean}
|
|
110
|
+
* @readonly
|
|
111
|
+
* @default true
|
|
112
|
+
*/
|
|
46
113
|
this.isSampledCubeTexture = true;
|
|
47
114
|
|
|
48
115
|
}
|
|
49
116
|
|
|
50
117
|
}
|
|
51
118
|
|
|
119
|
+
/**
|
|
120
|
+
* A special form of sampled 3D texture binding type.
|
|
121
|
+
* It's texture value is managed by a node object.
|
|
122
|
+
*
|
|
123
|
+
* @private
|
|
124
|
+
* @augments NodeSampledTexture
|
|
125
|
+
*/
|
|
52
126
|
class NodeSampledTexture3D extends NodeSampledTexture {
|
|
53
127
|
|
|
54
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Constructs a new node-based sampled 3D texture.
|
|
130
|
+
*
|
|
131
|
+
* @param {String} name - The textures's name.
|
|
132
|
+
* @param {TextureNode} textureNode - The texture node.
|
|
133
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
134
|
+
* @param {String?} [access=null] - The access type.
|
|
135
|
+
*/
|
|
136
|
+
constructor( name, textureNode, groupNode, access = null ) {
|
|
55
137
|
|
|
56
138
|
super( name, textureNode, groupNode, access );
|
|
57
139
|
|
|
140
|
+
/**
|
|
141
|
+
* This flag can be used for type testing.
|
|
142
|
+
*
|
|
143
|
+
* @type {Boolean}
|
|
144
|
+
* @readonly
|
|
145
|
+
* @default true
|
|
146
|
+
*/
|
|
58
147
|
this.isSampledTexture3D = true;
|
|
59
148
|
|
|
60
149
|
}
|
|
@@ -1,16 +1,44 @@
|
|
|
1
1
|
import Sampler from '../Sampler.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A special form of sampler binding type.
|
|
5
|
+
* It's texture value is managed by a node object.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
* @augments Sampler
|
|
9
|
+
*/
|
|
3
10
|
class NodeSampler extends Sampler {
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new node-based sampler.
|
|
14
|
+
*
|
|
15
|
+
* @param {String} name - The samplers's name.
|
|
16
|
+
* @param {TextureNode} textureNode - The texture node.
|
|
17
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
18
|
+
*/
|
|
5
19
|
constructor( name, textureNode, groupNode ) {
|
|
6
20
|
|
|
7
21
|
super( name, textureNode ? textureNode.value : null );
|
|
8
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The texture node.
|
|
25
|
+
*
|
|
26
|
+
* @type {TextureNode}
|
|
27
|
+
*/
|
|
9
28
|
this.textureNode = textureNode;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The uniform group node.
|
|
32
|
+
*
|
|
33
|
+
* @type {UniformGroupNode}
|
|
34
|
+
*/
|
|
10
35
|
this.groupNode = groupNode;
|
|
11
36
|
|
|
12
37
|
}
|
|
13
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Updates the texture value of this sampler.
|
|
41
|
+
*/
|
|
14
42
|
update() {
|
|
15
43
|
|
|
16
44
|
this.texture = this.textureNode.value;
|
|
@@ -3,18 +3,53 @@ import { NodeAccess } from '../../../nodes/core/constants.js';
|
|
|
3
3
|
|
|
4
4
|
let _id = 0;
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A special form of storage buffer binding type.
|
|
8
|
+
* It's buffer value is managed by a node object.
|
|
9
|
+
*
|
|
10
|
+
* @private
|
|
11
|
+
* @augments StorageBuffer
|
|
12
|
+
*/
|
|
6
13
|
class NodeStorageBuffer extends StorageBuffer {
|
|
7
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new node-based storage buffer.
|
|
17
|
+
*
|
|
18
|
+
* @param {StorageBufferNode} nodeUniform - The storage buffer node.
|
|
19
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
20
|
+
*/
|
|
8
21
|
constructor( nodeUniform, groupNode ) {
|
|
9
22
|
|
|
10
23
|
super( 'StorageBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
|
|
11
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The node uniform.
|
|
27
|
+
*
|
|
28
|
+
* @type {StorageBufferNode}
|
|
29
|
+
*/
|
|
12
30
|
this.nodeUniform = nodeUniform;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The access type.
|
|
34
|
+
*
|
|
35
|
+
* @type {String}
|
|
36
|
+
*/
|
|
13
37
|
this.access = nodeUniform ? nodeUniform.access : NodeAccess.READ_WRITE;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The uniform group node.
|
|
41
|
+
*
|
|
42
|
+
* @type {UniformGroupNode}
|
|
43
|
+
*/
|
|
14
44
|
this.groupNode = groupNode;
|
|
15
45
|
|
|
16
46
|
}
|
|
17
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The storage buffer.
|
|
50
|
+
*
|
|
51
|
+
* @type {BufferAttribute}
|
|
52
|
+
*/
|
|
18
53
|
get buffer() {
|
|
19
54
|
|
|
20
55
|
return this.nodeUniform.value;
|
|
@@ -3,22 +3,49 @@ import {
|
|
|
3
3
|
ColorUniform, Matrix3Uniform, Matrix4Uniform
|
|
4
4
|
} from '../Uniform.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A special form of Number uniform binding type.
|
|
8
|
+
* It's value is managed by a node object.
|
|
9
|
+
*
|
|
10
|
+
* @private
|
|
11
|
+
* @augments NumberUniform
|
|
12
|
+
*/
|
|
6
13
|
class NumberNodeUniform extends NumberUniform {
|
|
7
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new node-based Number uniform.
|
|
17
|
+
*
|
|
18
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
19
|
+
*/
|
|
8
20
|
constructor( nodeUniform ) {
|
|
9
21
|
|
|
10
22
|
super( nodeUniform.name, nodeUniform.value );
|
|
11
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The node uniform.
|
|
26
|
+
*
|
|
27
|
+
* @type {NodeUniform}
|
|
28
|
+
*/
|
|
12
29
|
this.nodeUniform = nodeUniform;
|
|
13
30
|
|
|
14
31
|
}
|
|
15
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Overwritten to return the value of the node uniform.
|
|
35
|
+
*
|
|
36
|
+
* @return {Number} The value.
|
|
37
|
+
*/
|
|
16
38
|
getValue() {
|
|
17
39
|
|
|
18
40
|
return this.nodeUniform.value;
|
|
19
41
|
|
|
20
42
|
}
|
|
21
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Returns the node uniform data type.
|
|
46
|
+
*
|
|
47
|
+
* @return {String} The data type.
|
|
48
|
+
*/
|
|
22
49
|
getType() {
|
|
23
50
|
|
|
24
51
|
return this.nodeUniform.type;
|
|
@@ -27,22 +54,49 @@ class NumberNodeUniform extends NumberUniform {
|
|
|
27
54
|
|
|
28
55
|
}
|
|
29
56
|
|
|
57
|
+
/**
|
|
58
|
+
* A special form of Vector2 uniform binding type.
|
|
59
|
+
* It's value is managed by a node object.
|
|
60
|
+
*
|
|
61
|
+
* @private
|
|
62
|
+
* @augments Vector2Uniform
|
|
63
|
+
*/
|
|
30
64
|
class Vector2NodeUniform extends Vector2Uniform {
|
|
31
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Constructs a new node-based Vector2 uniform.
|
|
68
|
+
*
|
|
69
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
70
|
+
*/
|
|
32
71
|
constructor( nodeUniform ) {
|
|
33
72
|
|
|
34
73
|
super( nodeUniform.name, nodeUniform.value );
|
|
35
74
|
|
|
75
|
+
/**
|
|
76
|
+
* The node uniform.
|
|
77
|
+
*
|
|
78
|
+
* @type {NodeUniform}
|
|
79
|
+
*/
|
|
36
80
|
this.nodeUniform = nodeUniform;
|
|
37
81
|
|
|
38
82
|
}
|
|
39
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Overwritten to return the value of the node uniform.
|
|
86
|
+
*
|
|
87
|
+
* @return {Vector2} The value.
|
|
88
|
+
*/
|
|
40
89
|
getValue() {
|
|
41
90
|
|
|
42
91
|
return this.nodeUniform.value;
|
|
43
92
|
|
|
44
93
|
}
|
|
45
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Returns the node uniform data type.
|
|
97
|
+
*
|
|
98
|
+
* @return {String} The data type.
|
|
99
|
+
*/
|
|
46
100
|
getType() {
|
|
47
101
|
|
|
48
102
|
return this.nodeUniform.type;
|
|
@@ -51,22 +105,49 @@ class Vector2NodeUniform extends Vector2Uniform {
|
|
|
51
105
|
|
|
52
106
|
}
|
|
53
107
|
|
|
108
|
+
/**
|
|
109
|
+
* A special form of Vector3 uniform binding type.
|
|
110
|
+
* It's value is managed by a node object.
|
|
111
|
+
*
|
|
112
|
+
* @private
|
|
113
|
+
* @augments Vector3Uniform
|
|
114
|
+
*/
|
|
54
115
|
class Vector3NodeUniform extends Vector3Uniform {
|
|
55
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Constructs a new node-based Vector3 uniform.
|
|
119
|
+
*
|
|
120
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
121
|
+
*/
|
|
56
122
|
constructor( nodeUniform ) {
|
|
57
123
|
|
|
58
124
|
super( nodeUniform.name, nodeUniform.value );
|
|
59
125
|
|
|
126
|
+
/**
|
|
127
|
+
* The node uniform.
|
|
128
|
+
*
|
|
129
|
+
* @type {NodeUniform}
|
|
130
|
+
*/
|
|
60
131
|
this.nodeUniform = nodeUniform;
|
|
61
132
|
|
|
62
133
|
}
|
|
63
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Overwritten to return the value of the node uniform.
|
|
137
|
+
*
|
|
138
|
+
* @return {Vector3} The value.
|
|
139
|
+
*/
|
|
64
140
|
getValue() {
|
|
65
141
|
|
|
66
142
|
return this.nodeUniform.value;
|
|
67
143
|
|
|
68
144
|
}
|
|
69
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Returns the node uniform data type.
|
|
148
|
+
*
|
|
149
|
+
* @return {String} The data type.
|
|
150
|
+
*/
|
|
70
151
|
getType() {
|
|
71
152
|
|
|
72
153
|
return this.nodeUniform.type;
|
|
@@ -75,22 +156,49 @@ class Vector3NodeUniform extends Vector3Uniform {
|
|
|
75
156
|
|
|
76
157
|
}
|
|
77
158
|
|
|
159
|
+
/**
|
|
160
|
+
* A special form of Vector4 uniform binding type.
|
|
161
|
+
* It's value is managed by a node object.
|
|
162
|
+
*
|
|
163
|
+
* @private
|
|
164
|
+
* @augments Vector4Uniform
|
|
165
|
+
*/
|
|
78
166
|
class Vector4NodeUniform extends Vector4Uniform {
|
|
79
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Constructs a new node-based Vector4 uniform.
|
|
170
|
+
*
|
|
171
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
172
|
+
*/
|
|
80
173
|
constructor( nodeUniform ) {
|
|
81
174
|
|
|
82
175
|
super( nodeUniform.name, nodeUniform.value );
|
|
83
176
|
|
|
177
|
+
/**
|
|
178
|
+
* The node uniform.
|
|
179
|
+
*
|
|
180
|
+
* @type {NodeUniform}
|
|
181
|
+
*/
|
|
84
182
|
this.nodeUniform = nodeUniform;
|
|
85
183
|
|
|
86
184
|
}
|
|
87
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Overwritten to return the value of the node uniform.
|
|
188
|
+
*
|
|
189
|
+
* @return {Vector4} The value.
|
|
190
|
+
*/
|
|
88
191
|
getValue() {
|
|
89
192
|
|
|
90
193
|
return this.nodeUniform.value;
|
|
91
194
|
|
|
92
195
|
}
|
|
93
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Returns the node uniform data type.
|
|
199
|
+
*
|
|
200
|
+
* @return {String} The data type.
|
|
201
|
+
*/
|
|
94
202
|
getType() {
|
|
95
203
|
|
|
96
204
|
return this.nodeUniform.type;
|
|
@@ -99,22 +207,49 @@ class Vector4NodeUniform extends Vector4Uniform {
|
|
|
99
207
|
|
|
100
208
|
}
|
|
101
209
|
|
|
210
|
+
/**
|
|
211
|
+
* A special form of Color uniform binding type.
|
|
212
|
+
* It's value is managed by a node object.
|
|
213
|
+
*
|
|
214
|
+
* @private
|
|
215
|
+
* @augments ColorUniform
|
|
216
|
+
*/
|
|
102
217
|
class ColorNodeUniform extends ColorUniform {
|
|
103
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Constructs a new node-based Color uniform.
|
|
221
|
+
*
|
|
222
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
223
|
+
*/
|
|
104
224
|
constructor( nodeUniform ) {
|
|
105
225
|
|
|
106
226
|
super( nodeUniform.name, nodeUniform.value );
|
|
107
227
|
|
|
228
|
+
/**
|
|
229
|
+
* The node uniform.
|
|
230
|
+
*
|
|
231
|
+
* @type {NodeUniform}
|
|
232
|
+
*/
|
|
108
233
|
this.nodeUniform = nodeUniform;
|
|
109
234
|
|
|
110
235
|
}
|
|
111
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Overwritten to return the value of the node uniform.
|
|
239
|
+
*
|
|
240
|
+
* @return {Color} The value.
|
|
241
|
+
*/
|
|
112
242
|
getValue() {
|
|
113
243
|
|
|
114
244
|
return this.nodeUniform.value;
|
|
115
245
|
|
|
116
246
|
}
|
|
117
247
|
|
|
248
|
+
/**
|
|
249
|
+
* Returns the node uniform data type.
|
|
250
|
+
*
|
|
251
|
+
* @return {String} The data type.
|
|
252
|
+
*/
|
|
118
253
|
getType() {
|
|
119
254
|
|
|
120
255
|
return this.nodeUniform.type;
|
|
@@ -123,22 +258,49 @@ class ColorNodeUniform extends ColorUniform {
|
|
|
123
258
|
|
|
124
259
|
}
|
|
125
260
|
|
|
261
|
+
/**
|
|
262
|
+
* A special form of Matrix3 uniform binding type.
|
|
263
|
+
* It's value is managed by a node object.
|
|
264
|
+
*
|
|
265
|
+
* @private
|
|
266
|
+
* @augments Matrix3Uniform
|
|
267
|
+
*/
|
|
126
268
|
class Matrix3NodeUniform extends Matrix3Uniform {
|
|
127
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Constructs a new node-based Matrix3 uniform.
|
|
272
|
+
*
|
|
273
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
274
|
+
*/
|
|
128
275
|
constructor( nodeUniform ) {
|
|
129
276
|
|
|
130
277
|
super( nodeUniform.name, nodeUniform.value );
|
|
131
278
|
|
|
279
|
+
/**
|
|
280
|
+
* The node uniform.
|
|
281
|
+
*
|
|
282
|
+
* @type {NodeUniform}
|
|
283
|
+
*/
|
|
132
284
|
this.nodeUniform = nodeUniform;
|
|
133
285
|
|
|
134
286
|
}
|
|
135
287
|
|
|
288
|
+
/**
|
|
289
|
+
* Overwritten to return the value of the node uniform.
|
|
290
|
+
*
|
|
291
|
+
* @return {Matrix3} The value.
|
|
292
|
+
*/
|
|
136
293
|
getValue() {
|
|
137
294
|
|
|
138
295
|
return this.nodeUniform.value;
|
|
139
296
|
|
|
140
297
|
}
|
|
141
298
|
|
|
299
|
+
/**
|
|
300
|
+
* Returns the node uniform data type.
|
|
301
|
+
*
|
|
302
|
+
* @return {String} The data type.
|
|
303
|
+
*/
|
|
142
304
|
getType() {
|
|
143
305
|
|
|
144
306
|
return this.nodeUniform.type;
|
|
@@ -147,22 +309,49 @@ class Matrix3NodeUniform extends Matrix3Uniform {
|
|
|
147
309
|
|
|
148
310
|
}
|
|
149
311
|
|
|
312
|
+
/**
|
|
313
|
+
* A special form of Matrix4 uniform binding type.
|
|
314
|
+
* It's value is managed by a node object.
|
|
315
|
+
*
|
|
316
|
+
* @private
|
|
317
|
+
* @augments Matrix4Uniform
|
|
318
|
+
*/
|
|
150
319
|
class Matrix4NodeUniform extends Matrix4Uniform {
|
|
151
320
|
|
|
321
|
+
/**
|
|
322
|
+
* Constructs a new node-based Matrix4 uniform.
|
|
323
|
+
*
|
|
324
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
325
|
+
*/
|
|
152
326
|
constructor( nodeUniform ) {
|
|
153
327
|
|
|
154
328
|
super( nodeUniform.name, nodeUniform.value );
|
|
155
329
|
|
|
330
|
+
/**
|
|
331
|
+
* The node uniform.
|
|
332
|
+
*
|
|
333
|
+
* @type {NodeUniform}
|
|
334
|
+
*/
|
|
156
335
|
this.nodeUniform = nodeUniform;
|
|
157
336
|
|
|
158
337
|
}
|
|
159
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Overwritten to return the value of the node uniform.
|
|
341
|
+
*
|
|
342
|
+
* @return {Matrix4} The value.
|
|
343
|
+
*/
|
|
160
344
|
getValue() {
|
|
161
345
|
|
|
162
346
|
return this.nodeUniform.value;
|
|
163
347
|
|
|
164
348
|
}
|
|
165
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Returns the node uniform data type.
|
|
352
|
+
*
|
|
353
|
+
* @return {String} The data type.
|
|
354
|
+
*/
|
|
166
355
|
getType() {
|
|
167
356
|
|
|
168
357
|
return this.nodeUniform.type;
|
|
@@ -2,17 +2,46 @@ import UniformBuffer from '../UniformBuffer.js';
|
|
|
2
2
|
|
|
3
3
|
let _id = 0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A special form of uniform buffer binding type.
|
|
7
|
+
* It's buffer value is managed by a node object.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
* @augments UniformBuffer
|
|
11
|
+
*/
|
|
5
12
|
class NodeUniformBuffer extends UniformBuffer {
|
|
6
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new node-based uniform buffer.
|
|
16
|
+
*
|
|
17
|
+
* @param {BufferNode} nodeUniform - The uniform buffer node.
|
|
18
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
19
|
+
*/
|
|
7
20
|
constructor( nodeUniform, groupNode ) {
|
|
8
21
|
|
|
9
22
|
super( 'UniformBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The uniform buffer node.
|
|
26
|
+
*
|
|
27
|
+
* @type {BufferNode}
|
|
28
|
+
*/
|
|
11
29
|
this.nodeUniform = nodeUniform;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The uniform group node.
|
|
33
|
+
*
|
|
34
|
+
* @type {UniformGroupNode}
|
|
35
|
+
*/
|
|
12
36
|
this.groupNode = groupNode;
|
|
13
37
|
|
|
14
38
|
}
|
|
15
39
|
|
|
40
|
+
/**
|
|
41
|
+
* The uniform buffer.
|
|
42
|
+
*
|
|
43
|
+
* @type {Float32Array}
|
|
44
|
+
*/
|
|
16
45
|
get buffer() {
|
|
17
46
|
|
|
18
47
|
return this.nodeUniform.value;
|
|
@@ -2,37 +2,50 @@ import UniformsGroup from '../UniformsGroup.js';
|
|
|
2
2
|
|
|
3
3
|
let _id = 0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A special form of uniforms group that represents
|
|
7
|
+
* the individual uniforms as node-based uniforms.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
* @augments UniformsGroup
|
|
11
|
+
*/
|
|
5
12
|
class NodeUniformsGroup extends UniformsGroup {
|
|
6
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new node-based uniforms group.
|
|
16
|
+
*
|
|
17
|
+
* @param {String} name - The group's name.
|
|
18
|
+
* @param {UniformGroupNode} groupNode - The uniform group node.
|
|
19
|
+
*/
|
|
7
20
|
constructor( name, groupNode ) {
|
|
8
21
|
|
|
9
22
|
super( name );
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The group's ID.
|
|
26
|
+
*
|
|
27
|
+
* @type {Number}
|
|
28
|
+
*/
|
|
11
29
|
this.id = _id ++;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The uniform group node.
|
|
33
|
+
*
|
|
34
|
+
* @type {UniformGroupNode}
|
|
35
|
+
*/
|
|
12
36
|
this.groupNode = groupNode;
|
|
13
37
|
|
|
38
|
+
/**
|
|
39
|
+
* This flag can be used for type testing.
|
|
40
|
+
*
|
|
41
|
+
* @type {Boolean}
|
|
42
|
+
* @readonly
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
14
45
|
this.isNodeUniformsGroup = true;
|
|
15
46
|
|
|
16
47
|
}
|
|
17
48
|
|
|
18
|
-
getNodes() {
|
|
19
|
-
|
|
20
|
-
const nodes = [];
|
|
21
|
-
|
|
22
|
-
for ( const uniform of this.uniforms ) {
|
|
23
|
-
|
|
24
|
-
const node = uniform.nodeUniform.node;
|
|
25
|
-
|
|
26
|
-
if ( ! node ) throw new Error( 'NodeUniformsGroup: Uniform has no node.' );
|
|
27
|
-
|
|
28
|
-
nodes.push( node );
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return nodes;
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
49
|
}
|
|
37
50
|
|
|
38
51
|
export default NodeUniformsGroup;
|