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
|
@@ -6,18 +6,55 @@ import { DepthStencilFormat, DepthFormat, UnsignedIntType, UnsignedInt248Type, E
|
|
|
6
6
|
|
|
7
7
|
const _size = /*@__PURE__*/ new Vector3();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* This module manages the textures of the renderer.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
* @augments DataMap
|
|
14
|
+
*/
|
|
9
15
|
class Textures extends DataMap {
|
|
10
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new texture management component.
|
|
19
|
+
*
|
|
20
|
+
* @param {Renderer} renderer - The renderer.
|
|
21
|
+
* @param {Backend} backend - The renderer's backend.
|
|
22
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
23
|
+
*/
|
|
11
24
|
constructor( renderer, backend, info ) {
|
|
12
25
|
|
|
13
26
|
super();
|
|
14
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The renderer.
|
|
30
|
+
*
|
|
31
|
+
* @type {Renderer}
|
|
32
|
+
*/
|
|
15
33
|
this.renderer = renderer;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The backend.
|
|
37
|
+
*
|
|
38
|
+
* @type {Backend}
|
|
39
|
+
*/
|
|
16
40
|
this.backend = backend;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Renderer component for managing metrics and monitoring data.
|
|
44
|
+
*
|
|
45
|
+
* @type {Info}
|
|
46
|
+
*/
|
|
17
47
|
this.info = info;
|
|
18
48
|
|
|
19
49
|
}
|
|
20
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Updates the given render target. Based on the given render target configuration,
|
|
53
|
+
* it updates the texture states representing the attachments of the framebuffer.
|
|
54
|
+
*
|
|
55
|
+
* @param {RenderTarget} renderTarget - The render target to update.
|
|
56
|
+
* @param {Number} [activeMipmapLevel=0] - The active mipmap level.
|
|
57
|
+
*/
|
|
21
58
|
updateRenderTarget( renderTarget, activeMipmapLevel = 0 ) {
|
|
22
59
|
|
|
23
60
|
const renderTargetData = this.get( renderTarget );
|
|
@@ -87,21 +124,28 @@ class Textures extends DataMap {
|
|
|
87
124
|
|
|
88
125
|
//
|
|
89
126
|
|
|
127
|
+
|
|
90
128
|
const options = { sampleCount };
|
|
91
129
|
|
|
92
|
-
|
|
130
|
+
// XR render targets require no texture updates
|
|
93
131
|
|
|
94
|
-
|
|
132
|
+
if ( renderTarget.isXRRenderTarget !== true ) {
|
|
95
133
|
|
|
96
|
-
|
|
134
|
+
for ( let i = 0; i < textures.length; i ++ ) {
|
|
97
135
|
|
|
98
|
-
|
|
136
|
+
const texture = textures[ i ];
|
|
99
137
|
|
|
100
|
-
|
|
138
|
+
if ( textureNeedsUpdate ) texture.needsUpdate = true;
|
|
139
|
+
|
|
140
|
+
this.updateTexture( texture, options );
|
|
101
141
|
|
|
102
|
-
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if ( depthTexture ) {
|
|
103
145
|
|
|
104
|
-
|
|
146
|
+
this.updateTexture( depthTexture, options );
|
|
147
|
+
|
|
148
|
+
}
|
|
105
149
|
|
|
106
150
|
}
|
|
107
151
|
|
|
@@ -139,6 +183,14 @@ class Textures extends DataMap {
|
|
|
139
183
|
|
|
140
184
|
}
|
|
141
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Updates the given texture. Depending on the texture state, this method
|
|
188
|
+
* triggers the upload of texture data to the GPU memory. If the texture data are
|
|
189
|
+
* not yet ready for the upload, it uses default texture data for as a placeholder.
|
|
190
|
+
*
|
|
191
|
+
* @param {Texture} texture - The texture to update.
|
|
192
|
+
* @param {Object} [options={}] - The options.
|
|
193
|
+
*/
|
|
142
194
|
updateTexture( texture, options = {} ) {
|
|
143
195
|
|
|
144
196
|
const textureData = this.get( texture );
|
|
@@ -292,6 +344,18 @@ class Textures extends DataMap {
|
|
|
292
344
|
|
|
293
345
|
}
|
|
294
346
|
|
|
347
|
+
/**
|
|
348
|
+
* Computes the size of the given texture and writes the result
|
|
349
|
+
* into the target vector. This vector is also returned by the
|
|
350
|
+
* method.
|
|
351
|
+
*
|
|
352
|
+
* If no texture data are available for the compute yet, the method
|
|
353
|
+
* returns default size values.
|
|
354
|
+
*
|
|
355
|
+
* @param {Texture} texture - The texture to compute the size for.
|
|
356
|
+
* @param {Vector3} target - The target vector.
|
|
357
|
+
* @return {Vector3} The target vector.
|
|
358
|
+
*/
|
|
295
359
|
getSize( texture, target = _size ) {
|
|
296
360
|
|
|
297
361
|
let image = texture.images ? texture.images[ 0 ] : texture.image;
|
|
@@ -314,6 +378,14 @@ class Textures extends DataMap {
|
|
|
314
378
|
|
|
315
379
|
}
|
|
316
380
|
|
|
381
|
+
/**
|
|
382
|
+
* Computes the number of mipmap levels for the given texture.
|
|
383
|
+
*
|
|
384
|
+
* @param {Texture} texture - The texture.
|
|
385
|
+
* @param {Number} width - The texture's width.
|
|
386
|
+
* @param {Number} height - The texture's height.
|
|
387
|
+
* @return {Number} The number of mipmap levels.
|
|
388
|
+
*/
|
|
317
389
|
getMipLevels( texture, width, height ) {
|
|
318
390
|
|
|
319
391
|
let mipLevelCount;
|
|
@@ -340,12 +412,24 @@ class Textures extends DataMap {
|
|
|
340
412
|
|
|
341
413
|
}
|
|
342
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Returns `true` if the given texture requires mipmaps.
|
|
417
|
+
*
|
|
418
|
+
* @param {Texture} texture - The texture.
|
|
419
|
+
* @return {Boolean} Whether mipmaps are required or not.
|
|
420
|
+
*/
|
|
343
421
|
needsMipmaps( texture ) {
|
|
344
422
|
|
|
345
423
|
return this.isEnvironmentTexture( texture ) || texture.isCompressedTexture === true || texture.generateMipmaps;
|
|
346
424
|
|
|
347
425
|
}
|
|
348
426
|
|
|
427
|
+
/**
|
|
428
|
+
* Returns `true` if the given texture is an environment map.
|
|
429
|
+
*
|
|
430
|
+
* @param {Texture} texture - The texture.
|
|
431
|
+
* @return {Boolean} Whether the given texture is an environment map or not.
|
|
432
|
+
*/
|
|
349
433
|
isEnvironmentTexture( texture ) {
|
|
350
434
|
|
|
351
435
|
const mapping = texture.mapping;
|
|
@@ -354,6 +438,12 @@ class Textures extends DataMap {
|
|
|
354
438
|
|
|
355
439
|
}
|
|
356
440
|
|
|
441
|
+
/**
|
|
442
|
+
* Frees internal resource when the given texture isn't
|
|
443
|
+
* required anymore.
|
|
444
|
+
*
|
|
445
|
+
* @param {Texture} texture - The texture to destroy.
|
|
446
|
+
*/
|
|
357
447
|
_destroyTexture( texture ) {
|
|
358
448
|
|
|
359
449
|
this.backend.destroySampler( texture );
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
class TimestampQueryPool {
|
|
2
|
+
|
|
3
|
+
constructor( maxQueries = 256 ) {
|
|
4
|
+
|
|
5
|
+
this.trackTimestamp = true;
|
|
6
|
+
this.maxQueries = maxQueries;
|
|
7
|
+
this.currentQueryIndex = 0; // how many queries allocated so far
|
|
8
|
+
this.queryOffsets = new Map(); // track offsets for different contexts
|
|
9
|
+
this.isDisposed = false;
|
|
10
|
+
this.lastValue = 0;
|
|
11
|
+
this.pendingResolve = false;
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Allocate queries for a specific renderContext.
|
|
17
|
+
*
|
|
18
|
+
* @abstract
|
|
19
|
+
*/
|
|
20
|
+
allocateQueriesForContext( /* renderContext */ ) {}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Resolve all timestamps and return data (or process them).
|
|
24
|
+
*
|
|
25
|
+
* @abstract
|
|
26
|
+
* @returns {Promise<Number>|Number} The resolved timestamp value.
|
|
27
|
+
*/
|
|
28
|
+
async resolveQueriesAsync() {}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Dispose of the query pool.
|
|
32
|
+
*
|
|
33
|
+
* @abstract
|
|
34
|
+
*/
|
|
35
|
+
dispose() {}
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default TimestampQueryPool;
|
|
@@ -1,30 +1,84 @@
|
|
|
1
1
|
import { Color } from '../../math/Color.js';
|
|
2
|
+
import { Matrix2 } from '../../math/Matrix2.js';
|
|
2
3
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
3
4
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
4
5
|
import { Vector2 } from '../../math/Vector2.js';
|
|
5
6
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
7
|
import { Vector4 } from '../../math/Vector4.js';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base class for uniforms.
|
|
11
|
+
*
|
|
12
|
+
* @abstract
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
8
15
|
class Uniform {
|
|
9
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new uniform.
|
|
19
|
+
*
|
|
20
|
+
* @param {String} name - The uniform's name.
|
|
21
|
+
* @param {Any} value - The uniform's value.
|
|
22
|
+
*/
|
|
10
23
|
constructor( name, value ) {
|
|
11
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The uniform's name.
|
|
27
|
+
*
|
|
28
|
+
* @type {String}
|
|
29
|
+
*/
|
|
12
30
|
this.name = name;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The uniform's value.
|
|
34
|
+
*
|
|
35
|
+
* @type {Any}
|
|
36
|
+
*/
|
|
13
37
|
this.value = value;
|
|
14
38
|
|
|
15
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Used to build the uniform buffer according to the STD140 layout.
|
|
41
|
+
* Derived uniforms will set this property to a data type specific
|
|
42
|
+
* value.
|
|
43
|
+
*
|
|
44
|
+
* @type {Number}
|
|
45
|
+
*/
|
|
46
|
+
this.boundary = 0;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The item size. Derived uniforms will set this property to a data
|
|
50
|
+
* type specific value.
|
|
51
|
+
*
|
|
52
|
+
* @type {Number}
|
|
53
|
+
*/
|
|
16
54
|
this.itemSize = 0;
|
|
17
55
|
|
|
18
|
-
|
|
56
|
+
/**
|
|
57
|
+
* This property is set by {@link UniformsGroup} and marks
|
|
58
|
+
* the start position in the uniform buffer.
|
|
59
|
+
*
|
|
60
|
+
* @type {Number}
|
|
61
|
+
*/
|
|
62
|
+
this.offset = 0;
|
|
19
63
|
|
|
20
64
|
}
|
|
21
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Sets the uniform's value.
|
|
68
|
+
*
|
|
69
|
+
* @param {Any} value - The value to set.
|
|
70
|
+
*/
|
|
22
71
|
setValue( value ) {
|
|
23
72
|
|
|
24
73
|
this.value = value;
|
|
25
74
|
|
|
26
75
|
}
|
|
27
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Returns the uniform's value.
|
|
79
|
+
*
|
|
80
|
+
* @return {Any} The value.
|
|
81
|
+
*/
|
|
28
82
|
getValue() {
|
|
29
83
|
|
|
30
84
|
return this.value;
|
|
@@ -33,12 +87,31 @@ class Uniform {
|
|
|
33
87
|
|
|
34
88
|
}
|
|
35
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Represents a Number uniform.
|
|
92
|
+
*
|
|
93
|
+
* @private
|
|
94
|
+
* @augments Uniform
|
|
95
|
+
*/
|
|
36
96
|
class NumberUniform extends Uniform {
|
|
37
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Constructs a new Number uniform.
|
|
100
|
+
*
|
|
101
|
+
* @param {String} name - The uniform's name.
|
|
102
|
+
* @param {Number} value - The uniform's value.
|
|
103
|
+
*/
|
|
38
104
|
constructor( name, value = 0 ) {
|
|
39
105
|
|
|
40
106
|
super( name, value );
|
|
41
107
|
|
|
108
|
+
/**
|
|
109
|
+
* This flag can be used for type testing.
|
|
110
|
+
*
|
|
111
|
+
* @type {Boolean}
|
|
112
|
+
* @readonly
|
|
113
|
+
* @default true
|
|
114
|
+
*/
|
|
42
115
|
this.isNumberUniform = true;
|
|
43
116
|
|
|
44
117
|
this.boundary = 4;
|
|
@@ -48,12 +121,31 @@ class NumberUniform extends Uniform {
|
|
|
48
121
|
|
|
49
122
|
}
|
|
50
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Represents a Vector2 uniform.
|
|
126
|
+
*
|
|
127
|
+
* @private
|
|
128
|
+
* @augments Uniform
|
|
129
|
+
*/
|
|
51
130
|
class Vector2Uniform extends Uniform {
|
|
52
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Constructs a new Number uniform.
|
|
134
|
+
*
|
|
135
|
+
* @param {String} name - The uniform's name.
|
|
136
|
+
* @param {Vector2} value - The uniform's value.
|
|
137
|
+
*/
|
|
53
138
|
constructor( name, value = new Vector2() ) {
|
|
54
139
|
|
|
55
140
|
super( name, value );
|
|
56
141
|
|
|
142
|
+
/**
|
|
143
|
+
* This flag can be used for type testing.
|
|
144
|
+
*
|
|
145
|
+
* @type {Boolean}
|
|
146
|
+
* @readonly
|
|
147
|
+
* @default true
|
|
148
|
+
*/
|
|
57
149
|
this.isVector2Uniform = true;
|
|
58
150
|
|
|
59
151
|
this.boundary = 8;
|
|
@@ -63,12 +155,31 @@ class Vector2Uniform extends Uniform {
|
|
|
63
155
|
|
|
64
156
|
}
|
|
65
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Represents a Vector3 uniform.
|
|
160
|
+
*
|
|
161
|
+
* @private
|
|
162
|
+
* @augments Uniform
|
|
163
|
+
*/
|
|
66
164
|
class Vector3Uniform extends Uniform {
|
|
67
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Constructs a new Number uniform.
|
|
168
|
+
*
|
|
169
|
+
* @param {String} name - The uniform's name.
|
|
170
|
+
* @param {Vector3} value - The uniform's value.
|
|
171
|
+
*/
|
|
68
172
|
constructor( name, value = new Vector3() ) {
|
|
69
173
|
|
|
70
174
|
super( name, value );
|
|
71
175
|
|
|
176
|
+
/**
|
|
177
|
+
* This flag can be used for type testing.
|
|
178
|
+
*
|
|
179
|
+
* @type {Boolean}
|
|
180
|
+
* @readonly
|
|
181
|
+
* @default true
|
|
182
|
+
*/
|
|
72
183
|
this.isVector3Uniform = true;
|
|
73
184
|
|
|
74
185
|
this.boundary = 16;
|
|
@@ -78,12 +189,31 @@ class Vector3Uniform extends Uniform {
|
|
|
78
189
|
|
|
79
190
|
}
|
|
80
191
|
|
|
192
|
+
/**
|
|
193
|
+
* Represents a Vector4 uniform.
|
|
194
|
+
*
|
|
195
|
+
* @private
|
|
196
|
+
* @augments Uniform
|
|
197
|
+
*/
|
|
81
198
|
class Vector4Uniform extends Uniform {
|
|
82
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Constructs a new Number uniform.
|
|
202
|
+
*
|
|
203
|
+
* @param {String} name - The uniform's name.
|
|
204
|
+
* @param {Vector4} value - The uniform's value.
|
|
205
|
+
*/
|
|
83
206
|
constructor( name, value = new Vector4() ) {
|
|
84
207
|
|
|
85
208
|
super( name, value );
|
|
86
209
|
|
|
210
|
+
/**
|
|
211
|
+
* This flag can be used for type testing.
|
|
212
|
+
*
|
|
213
|
+
* @type {Boolean}
|
|
214
|
+
* @readonly
|
|
215
|
+
* @default true
|
|
216
|
+
*/
|
|
87
217
|
this.isVector4Uniform = true;
|
|
88
218
|
|
|
89
219
|
this.boundary = 16;
|
|
@@ -93,12 +223,31 @@ class Vector4Uniform extends Uniform {
|
|
|
93
223
|
|
|
94
224
|
}
|
|
95
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Represents a Color uniform.
|
|
228
|
+
*
|
|
229
|
+
* @private
|
|
230
|
+
* @augments Uniform
|
|
231
|
+
*/
|
|
96
232
|
class ColorUniform extends Uniform {
|
|
97
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Constructs a new Number uniform.
|
|
236
|
+
*
|
|
237
|
+
* @param {String} name - The uniform's name.
|
|
238
|
+
* @param {Color} value - The uniform's value.
|
|
239
|
+
*/
|
|
98
240
|
constructor( name, value = new Color() ) {
|
|
99
241
|
|
|
100
242
|
super( name, value );
|
|
101
243
|
|
|
244
|
+
/**
|
|
245
|
+
* This flag can be used for type testing.
|
|
246
|
+
*
|
|
247
|
+
* @type {Boolean}
|
|
248
|
+
* @readonly
|
|
249
|
+
* @default true
|
|
250
|
+
*/
|
|
102
251
|
this.isColorUniform = true;
|
|
103
252
|
|
|
104
253
|
this.boundary = 16;
|
|
@@ -108,12 +257,66 @@ class ColorUniform extends Uniform {
|
|
|
108
257
|
|
|
109
258
|
}
|
|
110
259
|
|
|
260
|
+
/**
|
|
261
|
+
* Represents a Matrix2 uniform.
|
|
262
|
+
*
|
|
263
|
+
* @private
|
|
264
|
+
* @augments Uniform
|
|
265
|
+
*/
|
|
266
|
+
class Matrix2Uniform extends Uniform {
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Constructs a new Number uniform.
|
|
270
|
+
*
|
|
271
|
+
* @param {String} name - The uniform's name.
|
|
272
|
+
* @param {Matrix2} value - The uniform's value.
|
|
273
|
+
*/
|
|
274
|
+
constructor( name, value = new Matrix2() ) {
|
|
275
|
+
|
|
276
|
+
super( name, value );
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* This flag can be used for type testing.
|
|
280
|
+
*
|
|
281
|
+
* @type {Boolean}
|
|
282
|
+
* @readonly
|
|
283
|
+
* @default true
|
|
284
|
+
*/
|
|
285
|
+
this.isMatrix2Uniform = true;
|
|
286
|
+
|
|
287
|
+
this.boundary = 16;
|
|
288
|
+
this.itemSize = 4;
|
|
289
|
+
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Represents a Matrix3 uniform.
|
|
297
|
+
*
|
|
298
|
+
* @private
|
|
299
|
+
* @augments Uniform
|
|
300
|
+
*/
|
|
111
301
|
class Matrix3Uniform extends Uniform {
|
|
112
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Constructs a new Number uniform.
|
|
305
|
+
*
|
|
306
|
+
* @param {String} name - The uniform's name.
|
|
307
|
+
* @param {Matrix3} value - The uniform's value.
|
|
308
|
+
*/
|
|
113
309
|
constructor( name, value = new Matrix3() ) {
|
|
114
310
|
|
|
115
311
|
super( name, value );
|
|
116
312
|
|
|
313
|
+
/**
|
|
314
|
+
* This flag can be used for type testing.
|
|
315
|
+
*
|
|
316
|
+
* @type {Boolean}
|
|
317
|
+
* @readonly
|
|
318
|
+
* @default true
|
|
319
|
+
*/
|
|
117
320
|
this.isMatrix3Uniform = true;
|
|
118
321
|
|
|
119
322
|
this.boundary = 48;
|
|
@@ -123,12 +326,31 @@ class Matrix3Uniform extends Uniform {
|
|
|
123
326
|
|
|
124
327
|
}
|
|
125
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Represents a Matrix4 uniform.
|
|
331
|
+
*
|
|
332
|
+
* @private
|
|
333
|
+
* @augments Uniform
|
|
334
|
+
*/
|
|
126
335
|
class Matrix4Uniform extends Uniform {
|
|
127
336
|
|
|
337
|
+
/**
|
|
338
|
+
* Constructs a new Number uniform.
|
|
339
|
+
*
|
|
340
|
+
* @param {String} name - The uniform's name.
|
|
341
|
+
* @param {Matrix4} value - The uniform's value.
|
|
342
|
+
*/
|
|
128
343
|
constructor( name, value = new Matrix4() ) {
|
|
129
344
|
|
|
130
345
|
super( name, value );
|
|
131
346
|
|
|
347
|
+
/**
|
|
348
|
+
* This flag can be used for type testing.
|
|
349
|
+
*
|
|
350
|
+
* @type {Boolean}
|
|
351
|
+
* @readonly
|
|
352
|
+
* @default true
|
|
353
|
+
*/
|
|
132
354
|
this.isMatrix4Uniform = true;
|
|
133
355
|
|
|
134
356
|
this.boundary = 64;
|
|
@@ -141,5 +363,5 @@ class Matrix4Uniform extends Uniform {
|
|
|
141
363
|
export {
|
|
142
364
|
NumberUniform,
|
|
143
365
|
Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform,
|
|
144
|
-
Matrix3Uniform, Matrix4Uniform
|
|
366
|
+
Matrix2Uniform, Matrix3Uniform, Matrix4Uniform
|
|
145
367
|
};
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
import Buffer from './Buffer.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a uniform buffer binding type.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @augments Buffer
|
|
8
|
+
*/
|
|
3
9
|
class UniformBuffer extends Buffer {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new uniform buffer.
|
|
13
|
+
*
|
|
14
|
+
* @param {String} name - The buffer's name.
|
|
15
|
+
* @param {TypedArray} [buffer=null] - The buffer.
|
|
16
|
+
*/
|
|
5
17
|
constructor( name, buffer = null ) {
|
|
6
18
|
|
|
7
19
|
super( name, buffer );
|
|
8
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {Boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
9
28
|
this.isUniformBuffer = true;
|
|
10
29
|
|
|
11
30
|
}
|