super-three 0.173.4 → 0.175.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/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -26,7 +26,7 @@ class WebGLBufferRenderer {
|
|
|
26
26
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
info.update( object, count,
|
|
29
|
+
info.update( object, count, 1 );
|
|
30
30
|
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -46,7 +46,7 @@ class WebGLBufferRenderer {
|
|
|
46
46
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
info.update( object, count,
|
|
49
|
+
info.update( object, count, primcount );
|
|
50
50
|
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -85,7 +85,7 @@ class WebGLBufferRenderer {
|
|
|
85
85
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
info.update( object, elementCount,
|
|
88
|
+
info.update( object, elementCount, 1 );
|
|
89
89
|
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -126,7 +126,7 @@ class WebGLBufferRenderer {
|
|
|
126
126
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
info.update( object, elementCount,
|
|
129
|
+
info.update( object, elementCount, 1 );
|
|
130
130
|
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -71,7 +71,7 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
71
71
|
* A dictionary holds for each shader stage ('vertex', 'fragment', 'compute')
|
|
72
72
|
* another dictionary which manages UBOs per group ('render','frame','object').
|
|
73
73
|
*
|
|
74
|
-
* @type {Object<
|
|
74
|
+
* @type {Object<string,Object<string,NodeUniformsGroup>>}
|
|
75
75
|
*/
|
|
76
76
|
this.uniformGroups = {};
|
|
77
77
|
|
|
@@ -79,39 +79,31 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
79
79
|
* An array that holds objects defining the varying and attribute data in
|
|
80
80
|
* context of Transform Feedback.
|
|
81
81
|
*
|
|
82
|
-
* @type {Object<
|
|
82
|
+
* @type {Array<Object<string,AttributeNode|string>>}
|
|
83
83
|
*/
|
|
84
84
|
this.transforms = [];
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* A dictionary that holds for each shader stage a Map of used extensions.
|
|
88
88
|
*
|
|
89
|
-
* @type {Object<
|
|
89
|
+
* @type {Object<string,Map<string,Object>>}
|
|
90
90
|
*/
|
|
91
91
|
this.extensions = {};
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* A dictionary that holds for each shader stage an Array of used builtins.
|
|
95
95
|
*
|
|
96
|
-
* @type {Object<
|
|
96
|
+
* @type {Object<string,Array<string>>}
|
|
97
97
|
*/
|
|
98
98
|
this.builtins = { vertex: [], fragment: [], compute: [] };
|
|
99
99
|
|
|
100
|
-
/**
|
|
101
|
-
* Whether comparison in shader code are generated with methods or not.
|
|
102
|
-
*
|
|
103
|
-
* @type {Boolean}
|
|
104
|
-
* @default true
|
|
105
|
-
*/
|
|
106
|
-
this.useComparisonMethod = true;
|
|
107
|
-
|
|
108
100
|
}
|
|
109
101
|
|
|
110
102
|
/**
|
|
111
103
|
* Checks if the given texture requires a manual conversion to the working color space.
|
|
112
104
|
*
|
|
113
105
|
* @param {Texture} texture - The texture to check.
|
|
114
|
-
* @return {
|
|
106
|
+
* @return {boolean} Whether the given texture requires a conversion to working color space or not.
|
|
115
107
|
*/
|
|
116
108
|
needsToWorkingColorSpace( texture ) {
|
|
117
109
|
|
|
@@ -122,8 +114,8 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
122
114
|
/**
|
|
123
115
|
* Returns the native shader method name for a given generic name.
|
|
124
116
|
*
|
|
125
|
-
* @param {
|
|
126
|
-
* @return {
|
|
117
|
+
* @param {string} method - The method name to resolve.
|
|
118
|
+
* @return {string} The resolved GLSL method name.
|
|
127
119
|
*/
|
|
128
120
|
getMethod( method ) {
|
|
129
121
|
|
|
@@ -134,7 +126,7 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
134
126
|
/**
|
|
135
127
|
* Returns the output struct name. Not relevant for GLSL.
|
|
136
128
|
*
|
|
137
|
-
* @return {
|
|
129
|
+
* @return {string}
|
|
138
130
|
*/
|
|
139
131
|
getOutputStructName() {
|
|
140
132
|
|
|
@@ -146,7 +138,7 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
146
138
|
* Builds the given shader node.
|
|
147
139
|
*
|
|
148
140
|
* @param {ShaderNodeInternal} shaderNode - The shader node.
|
|
149
|
-
* @return {
|
|
141
|
+
* @return {string} The GLSL function code.
|
|
150
142
|
*/
|
|
151
143
|
buildFunctionCode( shaderNode ) {
|
|
152
144
|
|
|
@@ -256,8 +248,8 @@ ${ flowData.code }
|
|
|
256
248
|
* Returns a GLSL snippet that represents the property name of the given node.
|
|
257
249
|
*
|
|
258
250
|
* @param {Node} node - The node.
|
|
259
|
-
* @param {
|
|
260
|
-
* @return {
|
|
251
|
+
* @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
|
|
252
|
+
* @return {string} The property name.
|
|
261
253
|
*/
|
|
262
254
|
getPropertyName( node, shaderStage = this.shaderStage ) {
|
|
263
255
|
|
|
@@ -276,7 +268,7 @@ ${ flowData.code }
|
|
|
276
268
|
* buffer node.
|
|
277
269
|
*
|
|
278
270
|
* @param {StorageArrayElementNode} storageArrayElementNode - The storage array element node.
|
|
279
|
-
* @return {
|
|
271
|
+
* @return {string} The property name.
|
|
280
272
|
*/
|
|
281
273
|
generatePBO( storageArrayElementNode ) {
|
|
282
274
|
|
|
@@ -364,11 +356,11 @@ ${ flowData.code }
|
|
|
364
356
|
* Generates the GLSL snippet that reads a single texel from a texture without sampling or filtering.
|
|
365
357
|
*
|
|
366
358
|
* @param {Texture} texture - The texture.
|
|
367
|
-
* @param {
|
|
368
|
-
* @param {
|
|
369
|
-
* @param {
|
|
370
|
-
* @param {
|
|
371
|
-
* @return {
|
|
359
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
360
|
+
* @param {string} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
361
|
+
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
362
|
+
* @param {string} [levelSnippet='0u'] - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
|
|
363
|
+
* @return {string} The GLSL snippet.
|
|
372
364
|
*/
|
|
373
365
|
generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, levelSnippet = '0' ) {
|
|
374
366
|
|
|
@@ -388,10 +380,10 @@ ${ flowData.code }
|
|
|
388
380
|
* Generates the GLSL snippet for sampling/loading the given texture.
|
|
389
381
|
*
|
|
390
382
|
* @param {Texture} texture - The texture.
|
|
391
|
-
* @param {
|
|
392
|
-
* @param {
|
|
393
|
-
* @param {
|
|
394
|
-
* @return {
|
|
383
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
384
|
+
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
385
|
+
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
386
|
+
* @return {string} The GLSL snippet.
|
|
395
387
|
*/
|
|
396
388
|
generateTexture( texture, textureProperty, uvSnippet, depthSnippet ) {
|
|
397
389
|
|
|
@@ -413,10 +405,10 @@ ${ flowData.code }
|
|
|
413
405
|
* Generates the GLSL snippet when sampling textures with explicit mip level.
|
|
414
406
|
*
|
|
415
407
|
* @param {Texture} texture - The texture.
|
|
416
|
-
* @param {
|
|
417
|
-
* @param {
|
|
418
|
-
* @param {
|
|
419
|
-
* @return {
|
|
408
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
409
|
+
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
410
|
+
* @param {string} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
|
|
411
|
+
* @return {string} The GLSL snippet.
|
|
420
412
|
*/
|
|
421
413
|
generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet ) {
|
|
422
414
|
|
|
@@ -428,10 +420,10 @@ ${ flowData.code }
|
|
|
428
420
|
* Generates the GLSL snippet when sampling textures with a bias to the mip level.
|
|
429
421
|
*
|
|
430
422
|
* @param {Texture} texture - The texture.
|
|
431
|
-
* @param {
|
|
432
|
-
* @param {
|
|
433
|
-
* @param {
|
|
434
|
-
* @return {
|
|
423
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
424
|
+
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
425
|
+
* @param {string} biasSnippet - A GLSL snippet that represents the bias to apply to the mip level before sampling.
|
|
426
|
+
* @return {string} The GLSL snippet.
|
|
435
427
|
*/
|
|
436
428
|
generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet ) {
|
|
437
429
|
|
|
@@ -443,10 +435,10 @@ ${ flowData.code }
|
|
|
443
435
|
* Generates the GLSL snippet for sampling/loading the given texture using explicit gradients.
|
|
444
436
|
*
|
|
445
437
|
* @param {Texture} texture - The texture.
|
|
446
|
-
* @param {
|
|
447
|
-
* @param {
|
|
448
|
-
* @param {Array<
|
|
449
|
-
* @return {
|
|
438
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
439
|
+
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
440
|
+
* @param {Array<string>} gradSnippet - An array holding both gradient GLSL snippets.
|
|
441
|
+
* @return {string} The GLSL snippet.
|
|
450
442
|
*/
|
|
451
443
|
generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet ) {
|
|
452
444
|
|
|
@@ -459,12 +451,12 @@ ${ flowData.code }
|
|
|
459
451
|
* against a reference value.
|
|
460
452
|
*
|
|
461
453
|
* @param {Texture} texture - The texture.
|
|
462
|
-
* @param {
|
|
463
|
-
* @param {
|
|
464
|
-
* @param {
|
|
465
|
-
* @param {
|
|
466
|
-
* @param {
|
|
467
|
-
* @return {
|
|
454
|
+
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
455
|
+
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
456
|
+
* @param {string} compareSnippet - A GLSL snippet that represents the reference value.
|
|
457
|
+
* @param {?string} depthSnippet - A GLSL snippet that represents 0-based texture array index to sample.
|
|
458
|
+
* @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
|
|
459
|
+
* @return {string} The GLSL snippet.
|
|
468
460
|
*/
|
|
469
461
|
generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, shaderStage = this.shaderStage ) {
|
|
470
462
|
|
|
@@ -483,8 +475,8 @@ ${ flowData.code }
|
|
|
483
475
|
/**
|
|
484
476
|
* Returns the variables of the given shader stage as a GLSL string.
|
|
485
477
|
*
|
|
486
|
-
* @param {
|
|
487
|
-
* @return {
|
|
478
|
+
* @param {string} shaderStage - The shader stage.
|
|
479
|
+
* @return {string} The GLSL snippet that defines the variables.
|
|
488
480
|
*/
|
|
489
481
|
getVars( shaderStage ) {
|
|
490
482
|
|
|
@@ -509,8 +501,8 @@ ${ flowData.code }
|
|
|
509
501
|
/**
|
|
510
502
|
* Returns the uniforms of the given shader stage as a GLSL string.
|
|
511
503
|
*
|
|
512
|
-
* @param {
|
|
513
|
-
* @return {
|
|
504
|
+
* @param {string} shaderStage - The shader stage.
|
|
505
|
+
* @return {string} The GLSL snippet that defines the uniforms.
|
|
514
506
|
*/
|
|
515
507
|
getUniforms( shaderStage ) {
|
|
516
508
|
|
|
@@ -524,14 +516,13 @@ ${ flowData.code }
|
|
|
524
516
|
let snippet = null;
|
|
525
517
|
let group = false;
|
|
526
518
|
|
|
527
|
-
if ( uniform.type === 'texture' ) {
|
|
519
|
+
if ( uniform.type === 'texture' || uniform.type === 'texture3D' ) {
|
|
528
520
|
|
|
529
521
|
const texture = uniform.node.value;
|
|
530
522
|
|
|
531
523
|
let typePrefix = '';
|
|
532
524
|
|
|
533
|
-
if ( texture.isDataTexture === true ) {
|
|
534
|
-
|
|
525
|
+
if ( texture.isDataTexture === true || texture.isData3DTexture === true ) {
|
|
535
526
|
|
|
536
527
|
if ( texture.type === UnsignedIntType ) {
|
|
537
528
|
|
|
@@ -545,7 +536,11 @@ ${ flowData.code }
|
|
|
545
536
|
|
|
546
537
|
}
|
|
547
538
|
|
|
548
|
-
if (
|
|
539
|
+
if ( uniform.type === 'texture3D' ) {
|
|
540
|
+
|
|
541
|
+
snippet = `${typePrefix}sampler3D ${ uniform.name };`;
|
|
542
|
+
|
|
543
|
+
} else if ( texture.compareFunction ) {
|
|
549
544
|
|
|
550
545
|
snippet = `sampler2DShadow ${ uniform.name };`;
|
|
551
546
|
|
|
@@ -563,10 +558,6 @@ ${ flowData.code }
|
|
|
563
558
|
|
|
564
559
|
snippet = `samplerCube ${ uniform.name };`;
|
|
565
560
|
|
|
566
|
-
} else if ( uniform.type === 'texture3D' ) {
|
|
567
|
-
|
|
568
|
-
snippet = `sampler3D ${ uniform.name };`;
|
|
569
|
-
|
|
570
561
|
} else if ( uniform.type === 'buffer' ) {
|
|
571
562
|
|
|
572
563
|
const bufferNode = uniform.node;
|
|
@@ -633,7 +624,7 @@ ${ flowData.code }
|
|
|
633
624
|
* Returns the type for a given buffer attribute.
|
|
634
625
|
*
|
|
635
626
|
* @param {BufferAttribute} attribute - The buffer attribute.
|
|
636
|
-
* @return {
|
|
627
|
+
* @return {string} The type.
|
|
637
628
|
*/
|
|
638
629
|
getTypeFromAttribute( attribute ) {
|
|
639
630
|
|
|
@@ -662,8 +653,8 @@ ${ flowData.code }
|
|
|
662
653
|
/**
|
|
663
654
|
* Returns the shader attributes of the given shader stage as a GLSL string.
|
|
664
655
|
*
|
|
665
|
-
* @param {
|
|
666
|
-
* @return {
|
|
656
|
+
* @param {string} shaderStage - The shader stage.
|
|
657
|
+
* @return {string} The GLSL snippet that defines the shader attributes.
|
|
667
658
|
*/
|
|
668
659
|
getAttributes( shaderStage ) {
|
|
669
660
|
|
|
@@ -691,7 +682,7 @@ ${ flowData.code }
|
|
|
691
682
|
* Returns the members of the given struct type node as a GLSL string.
|
|
692
683
|
*
|
|
693
684
|
* @param {StructTypeNode} struct - The struct type node.
|
|
694
|
-
* @return {
|
|
685
|
+
* @return {string} The GLSL snippet that defines the struct members.
|
|
695
686
|
*/
|
|
696
687
|
getStructMembers( struct ) {
|
|
697
688
|
|
|
@@ -710,8 +701,8 @@ ${ flowData.code }
|
|
|
710
701
|
/**
|
|
711
702
|
* Returns the structs of the given shader stage as a GLSL string.
|
|
712
703
|
*
|
|
713
|
-
* @param {
|
|
714
|
-
* @return {
|
|
704
|
+
* @param {string} shaderStage - The shader stage.
|
|
705
|
+
* @return {string} The GLSL snippet that defines the structs.
|
|
715
706
|
*/
|
|
716
707
|
getStructs( shaderStage ) {
|
|
717
708
|
|
|
@@ -755,8 +746,8 @@ ${ flowData.code }
|
|
|
755
746
|
/**
|
|
756
747
|
* Returns the varyings of the given shader stage as a GLSL string.
|
|
757
748
|
*
|
|
758
|
-
* @param {
|
|
759
|
-
* @return {
|
|
749
|
+
* @param {string} shaderStage - The shader stage.
|
|
750
|
+
* @return {string} The GLSL snippet that defines the varyings.
|
|
760
751
|
*/
|
|
761
752
|
getVaryings( shaderStage ) {
|
|
762
753
|
|
|
@@ -776,7 +767,7 @@ ${ flowData.code }
|
|
|
776
767
|
|
|
777
768
|
const flat = type.includes( 'int' ) || type.includes( 'uv' ) || type.includes( 'iv' ) ? 'flat ' : '';
|
|
778
769
|
|
|
779
|
-
snippet += `${flat}
|
|
770
|
+
snippet += `${flat}out ${type} ${varying.name};\n`;
|
|
780
771
|
|
|
781
772
|
} else {
|
|
782
773
|
|
|
@@ -816,7 +807,7 @@ ${ flowData.code }
|
|
|
816
807
|
/**
|
|
817
808
|
* Returns the vertex index builtin.
|
|
818
809
|
*
|
|
819
|
-
* @return {
|
|
810
|
+
* @return {string} The vertex index.
|
|
820
811
|
*/
|
|
821
812
|
getVertexIndex() {
|
|
822
813
|
|
|
@@ -827,7 +818,7 @@ ${ flowData.code }
|
|
|
827
818
|
/**
|
|
828
819
|
* Returns the instance index builtin.
|
|
829
820
|
*
|
|
830
|
-
* @return {
|
|
821
|
+
* @return {string} The instance index.
|
|
831
822
|
*/
|
|
832
823
|
getInstanceIndex() {
|
|
833
824
|
|
|
@@ -838,7 +829,7 @@ ${ flowData.code }
|
|
|
838
829
|
/**
|
|
839
830
|
* Returns the invocation local index builtin.
|
|
840
831
|
*
|
|
841
|
-
* @return {
|
|
832
|
+
* @return {string} The invocation local index.
|
|
842
833
|
*/
|
|
843
834
|
getInvocationLocalIndex() {
|
|
844
835
|
|
|
@@ -853,7 +844,7 @@ ${ flowData.code }
|
|
|
853
844
|
/**
|
|
854
845
|
* Returns the draw index builtin.
|
|
855
846
|
*
|
|
856
|
-
* @return {
|
|
847
|
+
* @return {?string} The drawIndex shader string. Returns `null` if `WEBGL_multi_draw` isn't supported by the device.
|
|
857
848
|
*/
|
|
858
849
|
getDrawIndex() {
|
|
859
850
|
|
|
@@ -872,7 +863,7 @@ ${ flowData.code }
|
|
|
872
863
|
/**
|
|
873
864
|
* Returns the front facing builtin.
|
|
874
865
|
*
|
|
875
|
-
* @return {
|
|
866
|
+
* @return {string} The front facing builtin.
|
|
876
867
|
*/
|
|
877
868
|
getFrontFacing() {
|
|
878
869
|
|
|
@@ -883,7 +874,7 @@ ${ flowData.code }
|
|
|
883
874
|
/**
|
|
884
875
|
* Returns the frag coord builtin.
|
|
885
876
|
*
|
|
886
|
-
* @return {
|
|
877
|
+
* @return {string} The frag coord builtin.
|
|
887
878
|
*/
|
|
888
879
|
getFragCoord() {
|
|
889
880
|
|
|
@@ -894,7 +885,7 @@ ${ flowData.code }
|
|
|
894
885
|
/**
|
|
895
886
|
* Returns the frag depth builtin.
|
|
896
887
|
*
|
|
897
|
-
* @return {
|
|
888
|
+
* @return {string} The frag depth builtin.
|
|
898
889
|
*/
|
|
899
890
|
getFragDepth() {
|
|
900
891
|
|
|
@@ -905,9 +896,9 @@ ${ flowData.code }
|
|
|
905
896
|
/**
|
|
906
897
|
* Enables the given extension.
|
|
907
898
|
*
|
|
908
|
-
* @param {
|
|
909
|
-
* @param {
|
|
910
|
-
* @param {
|
|
899
|
+
* @param {string} name - The extension name.
|
|
900
|
+
* @param {string} behavior - The extension behavior.
|
|
901
|
+
* @param {string} [shaderStage=this.shaderStage] - The shader stage.
|
|
911
902
|
*/
|
|
912
903
|
enableExtension( name, behavior, shaderStage = this.shaderStage ) {
|
|
913
904
|
|
|
@@ -927,8 +918,8 @@ ${ flowData.code }
|
|
|
927
918
|
/**
|
|
928
919
|
* Returns the enabled extensions of the given shader stage as a GLSL string.
|
|
929
920
|
*
|
|
930
|
-
* @param {
|
|
931
|
-
* @return {
|
|
921
|
+
* @param {string} shaderStage - The shader stage.
|
|
922
|
+
* @return {string} The GLSL snippet that defines the enabled extensions.
|
|
932
923
|
*/
|
|
933
924
|
getExtensions( shaderStage ) {
|
|
934
925
|
|
|
@@ -966,7 +957,7 @@ ${ flowData.code }
|
|
|
966
957
|
/**
|
|
967
958
|
* Returns the clip distances builtin.
|
|
968
959
|
*
|
|
969
|
-
* @return {
|
|
960
|
+
* @return {string} The clip distances builtin.
|
|
970
961
|
*/
|
|
971
962
|
getClipDistance() {
|
|
972
963
|
|
|
@@ -977,8 +968,8 @@ ${ flowData.code }
|
|
|
977
968
|
/**
|
|
978
969
|
* Whether the requested feature is available or not.
|
|
979
970
|
*
|
|
980
|
-
* @param {
|
|
981
|
-
* @return {
|
|
971
|
+
* @param {string} name - The requested feature.
|
|
972
|
+
* @return {boolean} Whether the requested feature is supported or not.
|
|
982
973
|
*/
|
|
983
974
|
isAvailable( name ) {
|
|
984
975
|
|
|
@@ -1026,7 +1017,7 @@ ${ flowData.code }
|
|
|
1026
1017
|
/**
|
|
1027
1018
|
* Whether to flip texture data along its vertical axis or not.
|
|
1028
1019
|
*
|
|
1029
|
-
* @return {
|
|
1020
|
+
* @return {boolean} Returns always `true` in context of GLSL.
|
|
1030
1021
|
*/
|
|
1031
1022
|
isFlipY() {
|
|
1032
1023
|
|
|
@@ -1037,7 +1028,7 @@ ${ flowData.code }
|
|
|
1037
1028
|
/**
|
|
1038
1029
|
* Enables hardware clipping.
|
|
1039
1030
|
*
|
|
1040
|
-
* @param {
|
|
1031
|
+
* @param {string} planeCount - The clipping plane count.
|
|
1041
1032
|
*/
|
|
1042
1033
|
enableHardwareClipping( planeCount ) {
|
|
1043
1034
|
|
|
@@ -1050,7 +1041,7 @@ ${ flowData.code }
|
|
|
1050
1041
|
/**
|
|
1051
1042
|
* Registers a transform in context of Transform Feedback.
|
|
1052
1043
|
*
|
|
1053
|
-
* @param {
|
|
1044
|
+
* @param {string} varyingName - The varying name.
|
|
1054
1045
|
* @param {AttributeNode} attributeNode - The attribute node.
|
|
1055
1046
|
*/
|
|
1056
1047
|
registerTransform( varyingName, attributeNode ) {
|
|
@@ -1062,8 +1053,8 @@ ${ flowData.code }
|
|
|
1062
1053
|
/**
|
|
1063
1054
|
* Returns the transforms of the given shader stage as a GLSL string.
|
|
1064
1055
|
*
|
|
1065
|
-
* @param {
|
|
1066
|
-
* @return {
|
|
1056
|
+
* @param {string} shaderStage - The shader stage.
|
|
1057
|
+
* @return {string} The GLSL snippet that defines the transforms.
|
|
1067
1058
|
*/
|
|
1068
1059
|
getTransforms( /* shaderStage */ ) {
|
|
1069
1060
|
|
|
@@ -1074,10 +1065,9 @@ ${ flowData.code }
|
|
|
1074
1065
|
for ( let i = 0; i < transforms.length; i ++ ) {
|
|
1075
1066
|
|
|
1076
1067
|
const transform = transforms[ i ];
|
|
1077
|
-
|
|
1078
1068
|
const attributeName = this.getPropertyName( transform.attributeNode );
|
|
1079
1069
|
|
|
1080
|
-
snippet += `${ transform.varyingName } = ${ attributeName };\n\t`;
|
|
1070
|
+
if ( attributeName ) snippet += `${ transform.varyingName } = ${ attributeName };\n\t`;
|
|
1081
1071
|
|
|
1082
1072
|
}
|
|
1083
1073
|
|
|
@@ -1089,9 +1079,9 @@ ${ flowData.code }
|
|
|
1089
1079
|
* Returns a GLSL struct based on the given name and variables.
|
|
1090
1080
|
*
|
|
1091
1081
|
* @private
|
|
1092
|
-
* @param {
|
|
1093
|
-
* @param {
|
|
1094
|
-
* @return {
|
|
1082
|
+
* @param {string} name - The struct name.
|
|
1083
|
+
* @param {string} vars - The struct variables.
|
|
1084
|
+
* @return {string} The GLSL snippet representing a struct.
|
|
1095
1085
|
*/
|
|
1096
1086
|
_getGLSLUniformStruct( name, vars ) {
|
|
1097
1087
|
|
|
@@ -1107,7 +1097,7 @@ ${vars}
|
|
|
1107
1097
|
*
|
|
1108
1098
|
* @private
|
|
1109
1099
|
* @param {Object} shaderData - The shader data.
|
|
1110
|
-
* @return {
|
|
1100
|
+
* @return {string} The vertex shader.
|
|
1111
1101
|
*/
|
|
1112
1102
|
_getGLSLVertexCode( shaderData ) {
|
|
1113
1103
|
|
|
@@ -1115,7 +1105,7 @@ ${vars}
|
|
|
1115
1105
|
|
|
1116
1106
|
${ this.getSignature() }
|
|
1117
1107
|
|
|
1118
|
-
// extensions
|
|
1108
|
+
// extensions
|
|
1119
1109
|
${shaderData.extensions}
|
|
1120
1110
|
|
|
1121
1111
|
// precision
|
|
@@ -1156,7 +1146,7 @@ void main() {
|
|
|
1156
1146
|
*
|
|
1157
1147
|
* @private
|
|
1158
1148
|
* @param {Object} shaderData - The shader data.
|
|
1159
|
-
* @return {
|
|
1149
|
+
* @return {string} The vertex shader.
|
|
1160
1150
|
*/
|
|
1161
1151
|
_getGLSLFragmentCode( shaderData ) {
|
|
1162
1152
|
|
|
@@ -1283,9 +1273,9 @@ void main() {
|
|
|
1283
1273
|
* and layouts.
|
|
1284
1274
|
*
|
|
1285
1275
|
* @param {UniformNode} node - The uniform node.
|
|
1286
|
-
* @param {
|
|
1287
|
-
* @param {
|
|
1288
|
-
* @param {
|
|
1276
|
+
* @param {string} type - The node data type.
|
|
1277
|
+
* @param {string} shaderStage - The shader stage.
|
|
1278
|
+
* @param {?string} [name=null] - An optional uniform name.
|
|
1289
1279
|
* @return {NodeUniform} The node uniform object.
|
|
1290
1280
|
*/
|
|
1291
1281
|
getUniformFromNode( node, type, shaderStage, name = null ) {
|
|
@@ -22,7 +22,7 @@ class WebGLCapabilities {
|
|
|
22
22
|
/**
|
|
23
23
|
* This value holds the cached max anisotropy value.
|
|
24
24
|
*
|
|
25
|
-
* @type {
|
|
25
|
+
* @type {?number}
|
|
26
26
|
* @default null
|
|
27
27
|
*/
|
|
28
28
|
this.maxAnisotropy = null;
|
|
@@ -34,7 +34,7 @@ class WebGLCapabilities {
|
|
|
34
34
|
* depends on the device and is reported by the `EXT_texture_filter_anisotropic`
|
|
35
35
|
* WebGL extension.
|
|
36
36
|
*
|
|
37
|
-
* @return {
|
|
37
|
+
* @return {number} The maximum anisotropy texture filtering value.
|
|
38
38
|
*/
|
|
39
39
|
getMaxAnisotropy() {
|
|
40
40
|
|
|
@@ -29,7 +29,7 @@ class WebGLExtensions {
|
|
|
29
29
|
/**
|
|
30
30
|
* A list with all the supported WebGL extensions.
|
|
31
31
|
*
|
|
32
|
-
* @type {Array<
|
|
32
|
+
* @type {Array<string>}
|
|
33
33
|
*/
|
|
34
34
|
this.availableExtensions = this.gl.getSupportedExtensions();
|
|
35
35
|
|
|
@@ -38,7 +38,7 @@ class WebGLExtensions {
|
|
|
38
38
|
* The key is the name of the extension, the value
|
|
39
39
|
* the requested extension object.
|
|
40
40
|
*
|
|
41
|
-
* @type {Object<
|
|
41
|
+
* @type {Object<string,Object>}
|
|
42
42
|
*/
|
|
43
43
|
this.extensions = {};
|
|
44
44
|
|
|
@@ -47,7 +47,7 @@ class WebGLExtensions {
|
|
|
47
47
|
/**
|
|
48
48
|
* Returns the extension object for the given extension name.
|
|
49
49
|
*
|
|
50
|
-
* @param {
|
|
50
|
+
* @param {string} name - The extension name.
|
|
51
51
|
* @return {Object} The extension object.
|
|
52
52
|
*/
|
|
53
53
|
get( name ) {
|
|
@@ -69,8 +69,8 @@ class WebGLExtensions {
|
|
|
69
69
|
/**
|
|
70
70
|
* Returns `true` if the requested extension is available.
|
|
71
71
|
*
|
|
72
|
-
* @param {
|
|
73
|
-
* @return {
|
|
72
|
+
* @param {string} name - The extension name.
|
|
73
|
+
* @return {boolean} Whether the given extension is available or not.
|
|
74
74
|
*/
|
|
75
75
|
has( name ) {
|
|
76
76
|
|