super-three 0.171.0 → 0.173.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- 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 +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -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 +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- 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 -2
- 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/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- 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 +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.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/OutputPass.js +2 -0
- 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/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- 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 +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- 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/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- 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/ImageUtils.js +1 -11
- 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/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 +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- 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 +113 -3
- 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/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- 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 +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -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 +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -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/ArrayNode.js +125 -0
- 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 +32 -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 +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- 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 +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- 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 +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -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 +110 -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 +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -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 +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- 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 +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- 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 +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -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 +54 -0
- package/src/nodes/utils/Timer.js +40 -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 +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -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 +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -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 +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- 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 +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -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 +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -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 +243 -2
- 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 +352 -78
- 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/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -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 +674 -52
- 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 +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -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/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- 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,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;
|
|
@@ -1,24 +1,51 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NumberUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
|
|
3
|
-
ColorUniform, Matrix3Uniform, Matrix4Uniform
|
|
3
|
+
ColorUniform, Matrix2Uniform, 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,101 @@ class ColorNodeUniform extends ColorUniform {
|
|
|
123
258
|
|
|
124
259
|
}
|
|
125
260
|
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* A special form of Matrix2 uniform binding type.
|
|
264
|
+
* It's value is managed by a node object.
|
|
265
|
+
*
|
|
266
|
+
* @private
|
|
267
|
+
* @augments Matrix2Uniform
|
|
268
|
+
*/
|
|
269
|
+
class Matrix2NodeUniform extends Matrix2Uniform {
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Constructs a new node-based Matrix2 uniform.
|
|
273
|
+
*
|
|
274
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
275
|
+
*/
|
|
276
|
+
constructor( nodeUniform ) {
|
|
277
|
+
|
|
278
|
+
super( nodeUniform.name, nodeUniform.value );
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* The node uniform.
|
|
282
|
+
*
|
|
283
|
+
* @type {NodeUniform}
|
|
284
|
+
*/
|
|
285
|
+
this.nodeUniform = nodeUniform;
|
|
286
|
+
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Overwritten to return the value of the node uniform.
|
|
291
|
+
*
|
|
292
|
+
* @return {Matrix2} The value.
|
|
293
|
+
*/
|
|
294
|
+
getValue() {
|
|
295
|
+
|
|
296
|
+
return this.nodeUniform.value;
|
|
297
|
+
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Returns the node uniform data type.
|
|
302
|
+
*
|
|
303
|
+
* @return {String} The data type.
|
|
304
|
+
*/
|
|
305
|
+
getType() {
|
|
306
|
+
|
|
307
|
+
return this.nodeUniform.type;
|
|
308
|
+
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* A special form of Matrix3 uniform binding type.
|
|
315
|
+
* It's value is managed by a node object.
|
|
316
|
+
*
|
|
317
|
+
* @private
|
|
318
|
+
* @augments Matrix3Uniform
|
|
319
|
+
*/
|
|
126
320
|
class Matrix3NodeUniform extends Matrix3Uniform {
|
|
127
321
|
|
|
322
|
+
/**
|
|
323
|
+
* Constructs a new node-based Matrix3 uniform.
|
|
324
|
+
*
|
|
325
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
326
|
+
*/
|
|
128
327
|
constructor( nodeUniform ) {
|
|
129
328
|
|
|
130
329
|
super( nodeUniform.name, nodeUniform.value );
|
|
131
330
|
|
|
331
|
+
/**
|
|
332
|
+
* The node uniform.
|
|
333
|
+
*
|
|
334
|
+
* @type {NodeUniform}
|
|
335
|
+
*/
|
|
132
336
|
this.nodeUniform = nodeUniform;
|
|
133
337
|
|
|
134
338
|
}
|
|
135
339
|
|
|
340
|
+
/**
|
|
341
|
+
* Overwritten to return the value of the node uniform.
|
|
342
|
+
*
|
|
343
|
+
* @return {Matrix3} The value.
|
|
344
|
+
*/
|
|
136
345
|
getValue() {
|
|
137
346
|
|
|
138
347
|
return this.nodeUniform.value;
|
|
139
348
|
|
|
140
349
|
}
|
|
141
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Returns the node uniform data type.
|
|
353
|
+
*
|
|
354
|
+
* @return {String} The data type.
|
|
355
|
+
*/
|
|
142
356
|
getType() {
|
|
143
357
|
|
|
144
358
|
return this.nodeUniform.type;
|
|
@@ -147,22 +361,49 @@ class Matrix3NodeUniform extends Matrix3Uniform {
|
|
|
147
361
|
|
|
148
362
|
}
|
|
149
363
|
|
|
364
|
+
/**
|
|
365
|
+
* A special form of Matrix4 uniform binding type.
|
|
366
|
+
* It's value is managed by a node object.
|
|
367
|
+
*
|
|
368
|
+
* @private
|
|
369
|
+
* @augments Matrix4Uniform
|
|
370
|
+
*/
|
|
150
371
|
class Matrix4NodeUniform extends Matrix4Uniform {
|
|
151
372
|
|
|
373
|
+
/**
|
|
374
|
+
* Constructs a new node-based Matrix4 uniform.
|
|
375
|
+
*
|
|
376
|
+
* @param {NodeUniform} nodeUniform - The node uniform.
|
|
377
|
+
*/
|
|
152
378
|
constructor( nodeUniform ) {
|
|
153
379
|
|
|
154
380
|
super( nodeUniform.name, nodeUniform.value );
|
|
155
381
|
|
|
382
|
+
/**
|
|
383
|
+
* The node uniform.
|
|
384
|
+
*
|
|
385
|
+
* @type {NodeUniform}
|
|
386
|
+
*/
|
|
156
387
|
this.nodeUniform = nodeUniform;
|
|
157
388
|
|
|
158
389
|
}
|
|
159
390
|
|
|
391
|
+
/**
|
|
392
|
+
* Overwritten to return the value of the node uniform.
|
|
393
|
+
*
|
|
394
|
+
* @return {Matrix4} The value.
|
|
395
|
+
*/
|
|
160
396
|
getValue() {
|
|
161
397
|
|
|
162
398
|
return this.nodeUniform.value;
|
|
163
399
|
|
|
164
400
|
}
|
|
165
401
|
|
|
402
|
+
/**
|
|
403
|
+
* Returns the node uniform data type.
|
|
404
|
+
*
|
|
405
|
+
* @return {String} The data type.
|
|
406
|
+
*/
|
|
166
407
|
getType() {
|
|
167
408
|
|
|
168
409
|
return this.nodeUniform.type;
|
|
@@ -173,5 +414,5 @@ class Matrix4NodeUniform extends Matrix4Uniform {
|
|
|
173
414
|
|
|
174
415
|
export {
|
|
175
416
|
NumberNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
|
|
176
|
-
ColorNodeUniform, Matrix3NodeUniform, Matrix4NodeUniform
|
|
417
|
+
ColorNodeUniform, Matrix2NodeUniform, Matrix3NodeUniform, Matrix4NodeUniform
|
|
177
418
|
};
|
|
@@ -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;
|