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,49 @@
|
|
|
1
|
-
let
|
|
1
|
+
let _id = 0;
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This utility class is used in {@link NodeBuilder} as an internal
|
|
5
|
+
* cache data structure for node data.
|
|
6
|
+
*/
|
|
3
7
|
class NodeCache {
|
|
4
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new node cache.
|
|
11
|
+
*
|
|
12
|
+
* @param {NodeCache?} parent - A reference to a parent cache.
|
|
13
|
+
*/
|
|
5
14
|
constructor( parent = null ) {
|
|
6
15
|
|
|
7
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The id of the cache.
|
|
18
|
+
*
|
|
19
|
+
* @type {Number}
|
|
20
|
+
* @readonly
|
|
21
|
+
*/
|
|
22
|
+
this.id = _id ++;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A weak map for managing node data.
|
|
26
|
+
*
|
|
27
|
+
* @type {WeakMap<Node, Object>}
|
|
28
|
+
*/
|
|
8
29
|
this.nodesData = new WeakMap();
|
|
9
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Reference to a parent node cache.
|
|
33
|
+
*
|
|
34
|
+
* @type {NodeCache?}
|
|
35
|
+
* @default null
|
|
36
|
+
*/
|
|
10
37
|
this.parent = parent;
|
|
11
38
|
|
|
12
39
|
}
|
|
13
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Returns the data for the given node.
|
|
43
|
+
*
|
|
44
|
+
* @param {Node} node - The node.
|
|
45
|
+
* @return {Object?} The data for the node.
|
|
46
|
+
*/
|
|
14
47
|
getData( node ) {
|
|
15
48
|
|
|
16
49
|
let data = this.nodesData.get( node );
|
|
@@ -25,6 +58,12 @@ class NodeCache {
|
|
|
25
58
|
|
|
26
59
|
}
|
|
27
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Sets the data for a given node.
|
|
63
|
+
*
|
|
64
|
+
* @param {Node} node - The node.
|
|
65
|
+
* @param {Object} data - The data that should be cached.
|
|
66
|
+
*/
|
|
28
67
|
setData( node, data ) {
|
|
29
68
|
|
|
30
69
|
this.nodesData.set( node, data );
|
|
@@ -1,9 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link NodeBuilder} is going to create instances of this class during the build process
|
|
3
|
+
* of nodes. They represent user-defined, native shader code portions that are going to be
|
|
4
|
+
* injected by the builder. A dictionary of node codes is maintained in {@link NodeBuilder#codes}
|
|
5
|
+
* for this purpose.
|
|
6
|
+
*/
|
|
1
7
|
class NodeCode {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new code node.
|
|
11
|
+
*
|
|
12
|
+
* @param {String} name - The name of the code.
|
|
13
|
+
* @param {String} type - The node type.
|
|
14
|
+
* @param {String} [code=''] - The native shader code.
|
|
15
|
+
*/
|
|
3
16
|
constructor( name, type, code = '' ) {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The name of the code.
|
|
20
|
+
*
|
|
21
|
+
* @type {String}
|
|
22
|
+
*/
|
|
5
23
|
this.name = name;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The node type.
|
|
27
|
+
*
|
|
28
|
+
* @type {String}
|
|
29
|
+
*/
|
|
6
30
|
this.type = type;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The native shader code.
|
|
34
|
+
*
|
|
35
|
+
* @type {String}
|
|
36
|
+
* @default ''
|
|
37
|
+
*/
|
|
7
38
|
this.code = code;
|
|
8
39
|
|
|
9
40
|
Object.defineProperty( this, 'isNodeCode', { value: true } );
|
|
@@ -1,29 +1,122 @@
|
|
|
1
1
|
import { NodeUpdateType } from './constants.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Management class for updating nodes. The module tracks metrics like
|
|
5
|
+
* the elapsed time, delta time, the render and frame ID to correctly
|
|
6
|
+
* call the node update methods {@link Node#updateBefore}, {@link Node#update}
|
|
7
|
+
* and {@link Node#updateAfter} depending on the node's configuration.
|
|
8
|
+
*/
|
|
3
9
|
class NodeFrame {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new node fame.
|
|
13
|
+
*/
|
|
5
14
|
constructor() {
|
|
6
15
|
|
|
16
|
+
/**
|
|
17
|
+
* The elapsed time in seconds.
|
|
18
|
+
*
|
|
19
|
+
* @type {Number}
|
|
20
|
+
* @default 0
|
|
21
|
+
*/
|
|
7
22
|
this.time = 0;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The delta time in seconds.
|
|
26
|
+
*
|
|
27
|
+
* @type {Number}
|
|
28
|
+
* @default 0
|
|
29
|
+
*/
|
|
8
30
|
this.deltaTime = 0;
|
|
9
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The frame ID.
|
|
34
|
+
*
|
|
35
|
+
* @type {Number}
|
|
36
|
+
* @default 0
|
|
37
|
+
*/
|
|
10
38
|
this.frameId = 0;
|
|
11
|
-
this.renderId = 0;
|
|
12
39
|
|
|
13
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The render ID.
|
|
42
|
+
*
|
|
43
|
+
* @type {Number}
|
|
44
|
+
* @default 0
|
|
45
|
+
*/
|
|
46
|
+
this.renderId = 0;
|
|
14
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Used to control the {@link Node#update} call.
|
|
50
|
+
*
|
|
51
|
+
* @type {WeakMap<Node, Object>}
|
|
52
|
+
*/
|
|
15
53
|
this.updateMap = new WeakMap();
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Used to control the {@link Node#updateBefore} call.
|
|
57
|
+
*
|
|
58
|
+
* @type {WeakMap<Node, Object>}
|
|
59
|
+
*/
|
|
16
60
|
this.updateBeforeMap = new WeakMap();
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Used to control the {@link Node#updateAfter} call.
|
|
64
|
+
*
|
|
65
|
+
* @type {WeakMap<Node, Object>}
|
|
66
|
+
*/
|
|
17
67
|
this.updateAfterMap = new WeakMap();
|
|
18
68
|
|
|
69
|
+
/**
|
|
70
|
+
* A reference to the current renderer.
|
|
71
|
+
*
|
|
72
|
+
* @type {Renderer?}
|
|
73
|
+
* @default null
|
|
74
|
+
*/
|
|
19
75
|
this.renderer = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* A reference to the current material.
|
|
79
|
+
*
|
|
80
|
+
* @type {Material?}
|
|
81
|
+
* @default null
|
|
82
|
+
*/
|
|
20
83
|
this.material = null;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A reference to the current camera.
|
|
87
|
+
*
|
|
88
|
+
* @type {Camera?}
|
|
89
|
+
* @default null
|
|
90
|
+
*/
|
|
21
91
|
this.camera = null;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* A reference to the current 3D object.
|
|
95
|
+
*
|
|
96
|
+
* @type {Object3D?}
|
|
97
|
+
* @default null
|
|
98
|
+
*/
|
|
22
99
|
this.object = null;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* A reference to the current scene.
|
|
103
|
+
*
|
|
104
|
+
* @type {Scene?}
|
|
105
|
+
* @default null
|
|
106
|
+
*/
|
|
23
107
|
this.scene = null;
|
|
24
108
|
|
|
25
109
|
}
|
|
26
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Returns a dictionary for a given node and update map which
|
|
113
|
+
* is used to correctly call node update methods per frame or render.
|
|
114
|
+
*
|
|
115
|
+
* @private
|
|
116
|
+
* @param {WeakMap<Node, Object>} referenceMap - The reference weak map.
|
|
117
|
+
* @param {Node} nodeRef - The reference to the current node.
|
|
118
|
+
* @return {Object<String,WeakMap>} The dictionary.
|
|
119
|
+
*/
|
|
27
120
|
_getMaps( referenceMap, nodeRef ) {
|
|
28
121
|
|
|
29
122
|
let maps = referenceMap.get( nodeRef );
|
|
@@ -43,6 +136,14 @@ class NodeFrame {
|
|
|
43
136
|
|
|
44
137
|
}
|
|
45
138
|
|
|
139
|
+
/**
|
|
140
|
+
* This method executes the {@link Node#updateBefore} for the given node.
|
|
141
|
+
* It makes sure {@link Node#updateBeforeType} is honored meaning the update
|
|
142
|
+
* is only executed once per frame, render or object depending on the update
|
|
143
|
+
* type.
|
|
144
|
+
*
|
|
145
|
+
* @param {Node} node - The node that should be updated.
|
|
146
|
+
*/
|
|
46
147
|
updateBeforeNode( node ) {
|
|
47
148
|
|
|
48
149
|
const updateType = node.getUpdateBeforeType();
|
|
@@ -84,6 +185,14 @@ class NodeFrame {
|
|
|
84
185
|
|
|
85
186
|
}
|
|
86
187
|
|
|
188
|
+
/**
|
|
189
|
+
* This method executes the {@link Node#updateAfter} for the given node.
|
|
190
|
+
* It makes sure {@link Node#updateAfterType} is honored meaning the update
|
|
191
|
+
* is only executed once per frame, render or object depending on the update
|
|
192
|
+
* type.
|
|
193
|
+
*
|
|
194
|
+
* @param {Node} node - The node that should be updated.
|
|
195
|
+
*/
|
|
87
196
|
updateAfterNode( node ) {
|
|
88
197
|
|
|
89
198
|
const updateType = node.getUpdateAfterType();
|
|
@@ -125,6 +234,14 @@ class NodeFrame {
|
|
|
125
234
|
|
|
126
235
|
}
|
|
127
236
|
|
|
237
|
+
/**
|
|
238
|
+
* This method executes the {@link Node#update} for the given node.
|
|
239
|
+
* It makes sure {@link Node#updateType} is honored meaning the update
|
|
240
|
+
* is only executed once per frame, render or object depending on the update
|
|
241
|
+
* type.
|
|
242
|
+
*
|
|
243
|
+
* @param {Node} node - The node that should be updated.
|
|
244
|
+
*/
|
|
128
245
|
updateNode( node ) {
|
|
129
246
|
|
|
130
247
|
const updateType = node.getUpdateType();
|
|
@@ -166,6 +283,10 @@ class NodeFrame {
|
|
|
166
283
|
|
|
167
284
|
}
|
|
168
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Updates the internal state of the node frame. This method is
|
|
288
|
+
* called by the renderer in its internal animation loop.
|
|
289
|
+
*/
|
|
169
290
|
update() {
|
|
170
291
|
|
|
171
292
|
this.frameId ++;
|
|
@@ -1,14 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for node functions. A derived module must be implemented
|
|
3
|
+
* for each supported native shader language. Similar to other `Node*` modules,
|
|
4
|
+
* this class is only relevant during the building process and not used
|
|
5
|
+
* in user-level code.
|
|
6
|
+
*/
|
|
1
7
|
class NodeFunction {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new node function.
|
|
11
|
+
*
|
|
12
|
+
* @param {String} type - The node type. This type is the return type of the node function.
|
|
13
|
+
* @param {Array<NodeFunctionInput>} inputs - The function's inputs.
|
|
14
|
+
* @param {String} [name=''] - The function's name.
|
|
15
|
+
* @param {String} [precision=''] - The precision qualifier.
|
|
16
|
+
*/
|
|
3
17
|
constructor( type, inputs, name = '', precision = '' ) {
|
|
4
18
|
|
|
19
|
+
/**
|
|
20
|
+
* The node type. This type is the return type of the node function.
|
|
21
|
+
*
|
|
22
|
+
* @type {String}
|
|
23
|
+
*/
|
|
5
24
|
this.type = type;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The function's inputs.
|
|
28
|
+
*
|
|
29
|
+
* @type {Array<NodeFunctionInput>}
|
|
30
|
+
*/
|
|
6
31
|
this.inputs = inputs;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The name of the uniform.
|
|
35
|
+
*
|
|
36
|
+
* @type {String}
|
|
37
|
+
* @default ''
|
|
38
|
+
*/
|
|
7
39
|
this.name = name;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The precision qualifier.
|
|
43
|
+
*
|
|
44
|
+
* @type {String}
|
|
45
|
+
* @default ''
|
|
46
|
+
*/
|
|
8
47
|
this.precision = precision;
|
|
9
48
|
|
|
10
49
|
}
|
|
11
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This method returns the native code of the node function.
|
|
53
|
+
*
|
|
54
|
+
* @abstract
|
|
55
|
+
* @param {String} name - The function's name.
|
|
56
|
+
* @return {String} A shader code.
|
|
57
|
+
*/
|
|
12
58
|
getCode( /*name = this.name*/ ) {
|
|
13
59
|
|
|
14
60
|
console.warn( 'Abstract function.' );
|
|
@@ -1,11 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes the input of a {@link NodeFunction}.
|
|
3
|
+
*/
|
|
1
4
|
class NodeFunctionInput {
|
|
2
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Constructs a new node function input.
|
|
8
|
+
*
|
|
9
|
+
* @param {String} type - The input type.
|
|
10
|
+
* @param {String} name - The input name.
|
|
11
|
+
* @param {Number?} [count=null] - If the input is an Array, count will be the length.
|
|
12
|
+
* @param {('in'|'out'|'inout')} [qualifier=''] - The parameter qualifier (only relevant for GLSL).
|
|
13
|
+
* @param {Boolean} [isConst=false] - Whether the input uses a const qualifier or not (only relevant for GLSL).
|
|
14
|
+
*/
|
|
3
15
|
constructor( type, name, count = null, qualifier = '', isConst = false ) {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* The input type.
|
|
19
|
+
*
|
|
20
|
+
* @type {String}
|
|
21
|
+
*/
|
|
5
22
|
this.type = type;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The input name.
|
|
26
|
+
*
|
|
27
|
+
* @type {String}
|
|
28
|
+
*/
|
|
6
29
|
this.name = name;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* If the input is an Array, count will be the length.
|
|
33
|
+
*
|
|
34
|
+
* @type {Number?}
|
|
35
|
+
* @default null
|
|
36
|
+
*/
|
|
7
37
|
this.count = count;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
*The parameter qualifier (only relevant for GLSL).
|
|
41
|
+
*
|
|
42
|
+
* @type {('in'|'out'|'inout')}
|
|
43
|
+
* @default ''
|
|
44
|
+
*/
|
|
8
45
|
this.qualifier = qualifier;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Whether the input uses a const qualifier or not (only relevant for GLSL).
|
|
49
|
+
*
|
|
50
|
+
* @type {Boolean}
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
9
53
|
this.isConst = isConst;
|
|
10
54
|
|
|
11
55
|
}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for node parsers. A derived parser must be implemented
|
|
3
|
+
* for each supported native shader language.
|
|
4
|
+
*/
|
|
1
5
|
class NodeParser {
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* The method parses the given native code an returns a node function.
|
|
9
|
+
*
|
|
10
|
+
* @abstract
|
|
11
|
+
* @param {String} source - The native shader code.
|
|
12
|
+
* @return {NodeFunction} A node function.
|
|
13
|
+
*/
|
|
3
14
|
parseFunction( /*source*/ ) {
|
|
4
15
|
|
|
5
16
|
console.warn( 'Abstract function.' );
|
|
@@ -1,15 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@link NodeBuilder} is going to create instances of this class during the build process
|
|
3
|
+
* of nodes. They represent the final shader uniforms that are going to be generated
|
|
4
|
+
* by the builder. A dictionary of node uniforms is maintained in {@link NodeBuilder#uniforms}
|
|
5
|
+
* for this purpose.
|
|
6
|
+
*/
|
|
1
7
|
class NodeUniform {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new node uniform.
|
|
11
|
+
*
|
|
12
|
+
* @param {String} name - The name of the uniform.
|
|
13
|
+
* @param {String} type - The type of the uniform.
|
|
14
|
+
* @param {UniformNode} node - An reference to the node.
|
|
15
|
+
*/
|
|
3
16
|
constructor( name, type, node ) {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* This flag can be used for type testing.
|
|
20
|
+
*
|
|
21
|
+
* @type {Boolean}
|
|
22
|
+
* @readonly
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
5
25
|
this.isNodeUniform = true;
|
|
6
26
|
|
|
27
|
+
/**
|
|
28
|
+
* The name of the uniform.
|
|
29
|
+
*
|
|
30
|
+
* @type {String}
|
|
31
|
+
*/
|
|
7
32
|
this.name = name;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The type of the uniform.
|
|
36
|
+
*
|
|
37
|
+
* @type {String}
|
|
38
|
+
*/
|
|
8
39
|
this.type = type;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* An reference to the node.
|
|
43
|
+
*
|
|
44
|
+
* @type {UniformNode}
|
|
45
|
+
*/
|
|
9
46
|
this.node = node.getSelf();
|
|
10
47
|
|
|
11
48
|
}
|
|
12
49
|
|
|
50
|
+
/**
|
|
51
|
+
* The value of the uniform node.
|
|
52
|
+
*
|
|
53
|
+
* @type {Any}
|
|
54
|
+
*/
|
|
13
55
|
get value() {
|
|
14
56
|
|
|
15
57
|
return this.node.value;
|
|
@@ -22,12 +64,22 @@ class NodeUniform {
|
|
|
22
64
|
|
|
23
65
|
}
|
|
24
66
|
|
|
67
|
+
/**
|
|
68
|
+
* The id of the uniform node.
|
|
69
|
+
*
|
|
70
|
+
* @type {Number}
|
|
71
|
+
*/
|
|
25
72
|
get id() {
|
|
26
73
|
|
|
27
74
|
return this.node.id;
|
|
28
75
|
|
|
29
76
|
}
|
|
30
77
|
|
|
78
|
+
/**
|
|
79
|
+
* The uniform node's group.
|
|
80
|
+
*
|
|
81
|
+
* @type {UniformGroupNode}
|
|
82
|
+
*/
|
|
31
83
|
get groupNode() {
|
|
32
84
|
|
|
33
85
|
return this.node.groupNode;
|