@plastic-software/three 0.174.0 → 0.175.1
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 +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- 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 +93 -39
- 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 +171 -48
- 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 +71 -29
- 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 +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- 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 +86 -18
- 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 +38 -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 +81 -61
- 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 +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- 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 +70 -0
- 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 +131 -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 +266 -133
- 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/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- 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 +1 -1
- package/src/Three.TSL.js +3 -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 +168 -18
- 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/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -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/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 +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- 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 +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- 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 +4 -6
- 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 +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- 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 +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- 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 +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- 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 +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* GPUComputationRenderer, based on SimulationRenderer by zz85
|
|
14
|
+
* GPUComputationRenderer, based on SimulationRenderer by @zz85.
|
|
15
15
|
*
|
|
16
16
|
* The GPUComputationRenderer uses the concept of variables. These variables are RGBA float textures that hold 4 floats
|
|
17
|
-
* for each compute element (texel)
|
|
17
|
+
* for each compute element (texel).
|
|
18
18
|
*
|
|
19
19
|
* Each variable has a fragment shader that defines the computation made to obtain the variable in question.
|
|
20
20
|
* You can use as many variables you need, and make dependencies so you can use textures of other variables in the shader
|
|
@@ -29,12 +29,11 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
29
29
|
* a common approach could be to use 'texture' prefixing the variable name; i.e texturePosition, textureVelocity...
|
|
30
30
|
*
|
|
31
31
|
* The size of the computation (sizeX * sizeY) is defined as 'resolution' automatically in the shader. For example:
|
|
32
|
+
* ```
|
|
32
33
|
* #DEFINE resolution vec2( 1024.0, 1024.0 )
|
|
33
|
-
*
|
|
34
|
-
* -------------
|
|
35
|
-
*
|
|
34
|
+
* ```
|
|
36
35
|
* Basic use:
|
|
37
|
-
*
|
|
36
|
+
* ```js
|
|
38
37
|
* // Initialization...
|
|
39
38
|
*
|
|
40
39
|
* // Create computation renderer
|
|
@@ -62,7 +61,6 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
62
61
|
* console.error( error );
|
|
63
62
|
* }
|
|
64
63
|
*
|
|
65
|
-
*
|
|
66
64
|
* // In each frame...
|
|
67
65
|
*
|
|
68
66
|
* // Compute!
|
|
@@ -73,12 +71,12 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
73
71
|
*
|
|
74
72
|
* // Do your rendering
|
|
75
73
|
* renderer.render( myScene, myCamera );
|
|
76
|
-
*
|
|
77
|
-
* -------------
|
|
74
|
+
* ```
|
|
78
75
|
*
|
|
79
76
|
* Also, you can use utility functions to create ShaderMaterial and perform computations (rendering between textures)
|
|
80
77
|
* Note that the shaders can have multiple input textures.
|
|
81
78
|
*
|
|
79
|
+
* ```js
|
|
82
80
|
* const myFilter1 = gpuCompute.createShaderMaterial( myFilterFragmentShader1, { theTexture: { value: null } } );
|
|
83
81
|
* const myFilter2 = gpuCompute.createShaderMaterial( myFilterFragmentShader2, { theTexture: { value: null } } );
|
|
84
82
|
*
|
|
@@ -99,14 +97,16 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
99
97
|
* // And compute each frame, before rendering to screen:
|
|
100
98
|
* gpuCompute.doRenderTarget( myFilter1, myRenderTarget );
|
|
101
99
|
* gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );
|
|
100
|
+
* ```
|
|
102
101
|
*/
|
|
103
|
-
|
|
104
102
|
class GPUComputationRenderer {
|
|
105
103
|
|
|
106
104
|
/**
|
|
107
|
-
*
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
* Constructs a new GPU computation renderer.
|
|
106
|
+
*
|
|
107
|
+
* @param {number} sizeX - Computation problem size is always 2d: sizeX * sizeY elements.
|
|
108
|
+
* @param {number} sizeY - Computation problem size is always 2d: sizeX * sizeY elements.
|
|
109
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
110
110
|
*/
|
|
111
111
|
constructor( sizeX, sizeY, renderer ) {
|
|
112
112
|
|
|
@@ -124,6 +124,12 @@ class GPUComputationRenderer {
|
|
|
124
124
|
|
|
125
125
|
const quad = new FullScreenQuad( passThruShader );
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Sets the data type of the internal textures.
|
|
129
|
+
*
|
|
130
|
+
* @param {(FloatType|HalfFloatType)} type - The type to set.
|
|
131
|
+
* @return {GPUComputationRenderer} A reference to this renderer.
|
|
132
|
+
*/
|
|
127
133
|
this.setDataType = function ( type ) {
|
|
128
134
|
|
|
129
135
|
dataType = type;
|
|
@@ -131,6 +137,14 @@ class GPUComputationRenderer {
|
|
|
131
137
|
|
|
132
138
|
};
|
|
133
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Adds a compute variable to the renderer.
|
|
142
|
+
*
|
|
143
|
+
* @param {string} variableName - The variable name.
|
|
144
|
+
* @param {string} computeFragmentShader - The compute (fragment) shader source.
|
|
145
|
+
* @param {Texture} initialValueTexture - The initial value texture.
|
|
146
|
+
* @return {Object} The compute variable.
|
|
147
|
+
*/
|
|
134
148
|
this.addVariable = function ( variableName, computeFragmentShader, initialValueTexture ) {
|
|
135
149
|
|
|
136
150
|
const material = this.createShaderMaterial( computeFragmentShader );
|
|
@@ -153,12 +167,23 @@ class GPUComputationRenderer {
|
|
|
153
167
|
|
|
154
168
|
};
|
|
155
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Sets variable dependencies.
|
|
172
|
+
*
|
|
173
|
+
* @param {Object} variable - The compute variable.
|
|
174
|
+
* @param {Array<Object>} dependencies - Other compute variables that represents the dependencies.
|
|
175
|
+
*/
|
|
156
176
|
this.setVariableDependencies = function ( variable, dependencies ) {
|
|
157
177
|
|
|
158
178
|
variable.dependencies = dependencies;
|
|
159
179
|
|
|
160
180
|
};
|
|
161
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Initializes the renderer.
|
|
184
|
+
*
|
|
185
|
+
* @return {?string} Returns `null` if no errors are detected. Otherwise returns the error message.
|
|
186
|
+
*/
|
|
162
187
|
this.init = function () {
|
|
163
188
|
|
|
164
189
|
if ( renderer.capabilities.maxVertexTextures === 0 ) {
|
|
@@ -227,6 +252,9 @@ class GPUComputationRenderer {
|
|
|
227
252
|
|
|
228
253
|
};
|
|
229
254
|
|
|
255
|
+
/**
|
|
256
|
+
* Executes the compute. This method is usually called in the animation loop.
|
|
257
|
+
*/
|
|
230
258
|
this.compute = function () {
|
|
231
259
|
|
|
232
260
|
const currentTextureIndex = this.currentTextureIndex;
|
|
@@ -260,18 +288,34 @@ class GPUComputationRenderer {
|
|
|
260
288
|
|
|
261
289
|
};
|
|
262
290
|
|
|
291
|
+
/**
|
|
292
|
+
* Returns the current render target for the given compute variable.
|
|
293
|
+
*
|
|
294
|
+
* @param {Object} variable - The compute variable.
|
|
295
|
+
* @return {WebGLRenderTarget} The current render target.
|
|
296
|
+
*/
|
|
263
297
|
this.getCurrentRenderTarget = function ( variable ) {
|
|
264
298
|
|
|
265
299
|
return variable.renderTargets[ this.currentTextureIndex ];
|
|
266
300
|
|
|
267
301
|
};
|
|
268
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Returns the alternate render target for the given compute variable.
|
|
305
|
+
*
|
|
306
|
+
* @param {Object} variable - The compute variable.
|
|
307
|
+
* @return {WebGLRenderTarget} The alternate render target.
|
|
308
|
+
*/
|
|
269
309
|
this.getAlternateRenderTarget = function ( variable ) {
|
|
270
310
|
|
|
271
311
|
return variable.renderTargets[ this.currentTextureIndex === 0 ? 1 : 0 ];
|
|
272
312
|
|
|
273
313
|
};
|
|
274
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Frees all internal resources. Call this method if you don't need the
|
|
317
|
+
* renderer anymore.
|
|
318
|
+
*/
|
|
275
319
|
this.dispose = function () {
|
|
276
320
|
|
|
277
321
|
quad.dispose();
|
|
@@ -303,6 +347,11 @@ class GPUComputationRenderer {
|
|
|
303
347
|
|
|
304
348
|
}
|
|
305
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Adds a resolution defined for the given material shader.
|
|
352
|
+
*
|
|
353
|
+
* @param {Object} materialShader - The material shader.
|
|
354
|
+
*/
|
|
306
355
|
this.addResolutionDefine = addResolutionDefine;
|
|
307
356
|
|
|
308
357
|
|
|
@@ -327,6 +376,17 @@ class GPUComputationRenderer {
|
|
|
327
376
|
|
|
328
377
|
this.createShaderMaterial = createShaderMaterial;
|
|
329
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Creates a new render target from the given parameters.
|
|
381
|
+
*
|
|
382
|
+
* @param {number} sizeXTexture - The width of the render target.
|
|
383
|
+
* @param {number} sizeYTexture - The height of the render target.
|
|
384
|
+
* @param {number} wrapS - The wrapS value.
|
|
385
|
+
* @param {number} wrapT - The wrapS value.
|
|
386
|
+
* @param {number} minFilter - The minFilter value.
|
|
387
|
+
* @param {number} magFilter - The magFilter value.
|
|
388
|
+
* @return {WebGLRenderTarget} The new render target.
|
|
389
|
+
*/
|
|
330
390
|
this.createRenderTarget = function ( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {
|
|
331
391
|
|
|
332
392
|
sizeXTexture = sizeXTexture || sizeX;
|
|
@@ -352,6 +412,11 @@ class GPUComputationRenderer {
|
|
|
352
412
|
|
|
353
413
|
};
|
|
354
414
|
|
|
415
|
+
/**
|
|
416
|
+
* Creates a new data texture.
|
|
417
|
+
*
|
|
418
|
+
* @return {DataTexture} The new data texture.
|
|
419
|
+
*/
|
|
355
420
|
this.createTexture = function () {
|
|
356
421
|
|
|
357
422
|
const data = new Float32Array( sizeX * sizeY * 4 );
|
|
@@ -361,12 +426,14 @@ class GPUComputationRenderer {
|
|
|
361
426
|
|
|
362
427
|
};
|
|
363
428
|
|
|
429
|
+
/**
|
|
430
|
+
* Renders the given texture into the given render target.
|
|
431
|
+
*
|
|
432
|
+
* @param {Texture} input - The input.
|
|
433
|
+
* @param {WebGLRenderTarget} output - The output.
|
|
434
|
+
*/
|
|
364
435
|
this.renderTexture = function ( input, output ) {
|
|
365
436
|
|
|
366
|
-
// Takes a texture, and render out in rendertarget
|
|
367
|
-
// input = Texture
|
|
368
|
-
// output = RenderTarget
|
|
369
|
-
|
|
370
437
|
passThruUniforms.passThruTexture.value = input;
|
|
371
438
|
|
|
372
439
|
this.doRenderTarget( passThruShader, output );
|
|
@@ -375,6 +442,14 @@ class GPUComputationRenderer {
|
|
|
375
442
|
|
|
376
443
|
};
|
|
377
444
|
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Renders the given material into the given render target
|
|
448
|
+
* with a full-screen pass.
|
|
449
|
+
*
|
|
450
|
+
* @param {Material} material - The material.
|
|
451
|
+
* @param {WebGLRenderTarget} output - The output.
|
|
452
|
+
*/
|
|
378
453
|
this.doRenderTarget = function ( material, output ) {
|
|
379
454
|
|
|
380
455
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
@@ -12,8 +12,19 @@ const _translationWorld = new Vector3();
|
|
|
12
12
|
const _quaternionWorld = new Quaternion();
|
|
13
13
|
const _scaleWorld = new Vector3();
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* A special type of 3D object that takes a position from the scene graph hierarchy
|
|
17
|
+
* but uses its local rotation as world rotation. It works like real-world gyroscope -
|
|
18
|
+
* you can move it around using hierarchy while its orientation stays fixed with
|
|
19
|
+
* respect to the world.
|
|
20
|
+
*
|
|
21
|
+
* @augments Object3D
|
|
22
|
+
*/
|
|
15
23
|
class Gyroscope extends Object3D {
|
|
16
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new gyroscope.
|
|
27
|
+
*/
|
|
17
28
|
constructor() {
|
|
18
29
|
|
|
19
30
|
super();
|
|
@@ -10,33 +10,111 @@ import {
|
|
|
10
10
|
} from 'three';
|
|
11
11
|
import { MD2Loader } from '../loaders/MD2Loader.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* This class represents a management component for animated MD2
|
|
15
|
+
* character assets.
|
|
16
|
+
*/
|
|
13
17
|
class MD2Character {
|
|
14
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new MD2 character.
|
|
21
|
+
*/
|
|
15
22
|
constructor() {
|
|
16
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The mesh scale.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
* @default 1
|
|
29
|
+
*/
|
|
17
30
|
this.scale = 1;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The FPS
|
|
34
|
+
*
|
|
35
|
+
* @type {number}
|
|
36
|
+
* @default 6
|
|
37
|
+
*/
|
|
18
38
|
this.animationFPS = 6;
|
|
19
39
|
|
|
40
|
+
/**
|
|
41
|
+
* The root 3D object
|
|
42
|
+
*
|
|
43
|
+
* @type {Object3D}
|
|
44
|
+
*/
|
|
20
45
|
this.root = new Object3D();
|
|
21
46
|
|
|
47
|
+
/**
|
|
48
|
+
* The body mesh.
|
|
49
|
+
*
|
|
50
|
+
* @type {?Mesh}
|
|
51
|
+
* @default null
|
|
52
|
+
*/
|
|
22
53
|
this.meshBody = null;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The weapon mesh.
|
|
57
|
+
*
|
|
58
|
+
* @type {?Mesh}
|
|
59
|
+
* @default null
|
|
60
|
+
*/
|
|
23
61
|
this.meshWeapon = null;
|
|
24
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The body skins.
|
|
65
|
+
*
|
|
66
|
+
* @type {Array<Texture>}
|
|
67
|
+
*/
|
|
25
68
|
this.skinsBody = [];
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The weapon skins.
|
|
72
|
+
*
|
|
73
|
+
* @type {Array<Texture>}
|
|
74
|
+
*/
|
|
26
75
|
this.skinsWeapon = [];
|
|
27
76
|
|
|
77
|
+
/**
|
|
78
|
+
* The weapon meshes.
|
|
79
|
+
*
|
|
80
|
+
* @type {Array<Mesh>}
|
|
81
|
+
*/
|
|
28
82
|
this.weapons = [];
|
|
29
83
|
|
|
30
|
-
|
|
31
|
-
|
|
84
|
+
/**
|
|
85
|
+
* The name of the active animation clip.
|
|
86
|
+
*
|
|
87
|
+
* @type {?string}
|
|
88
|
+
* @default null
|
|
89
|
+
*/
|
|
90
|
+
this.activeAnimationClipName = null;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The animation mixer.
|
|
94
|
+
*
|
|
95
|
+
* @type {?AnimationMixer}
|
|
96
|
+
* @default null
|
|
97
|
+
*/
|
|
32
98
|
this.mixer = null;
|
|
33
99
|
|
|
100
|
+
/**
|
|
101
|
+
* The `onLoad` callback function.
|
|
102
|
+
*
|
|
103
|
+
* @type {Function}
|
|
104
|
+
*/
|
|
34
105
|
this.onLoadComplete = function () {};
|
|
35
106
|
|
|
107
|
+
// internal
|
|
108
|
+
|
|
36
109
|
this.loadCounter = 0;
|
|
37
110
|
|
|
38
111
|
}
|
|
39
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Loads the character model for the given config.
|
|
115
|
+
*
|
|
116
|
+
* @param {Object} config - The config which defines the model and textures paths.
|
|
117
|
+
*/
|
|
40
118
|
loadParts( config ) {
|
|
41
119
|
|
|
42
120
|
const scope = this;
|
|
@@ -156,6 +234,11 @@ class MD2Character {
|
|
|
156
234
|
|
|
157
235
|
}
|
|
158
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Sets the animation playback rate.
|
|
239
|
+
*
|
|
240
|
+
* @param {number} rate - The playback rate to set.
|
|
241
|
+
*/
|
|
159
242
|
setPlaybackRate( rate ) {
|
|
160
243
|
|
|
161
244
|
if ( rate !== 0 ) {
|
|
@@ -170,6 +253,11 @@ class MD2Character {
|
|
|
170
253
|
|
|
171
254
|
}
|
|
172
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Sets the wireframe material flag.
|
|
258
|
+
*
|
|
259
|
+
* @param {boolean} wireframeEnabled - Whether to enable wireframe rendering or not.
|
|
260
|
+
*/
|
|
173
261
|
setWireframe( wireframeEnabled ) {
|
|
174
262
|
|
|
175
263
|
if ( wireframeEnabled ) {
|
|
@@ -186,6 +274,12 @@ class MD2Character {
|
|
|
186
274
|
|
|
187
275
|
}
|
|
188
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Sets the skin defined by the given skin index. This will result in a different texture
|
|
279
|
+
* for the body mesh.
|
|
280
|
+
*
|
|
281
|
+
* @param {number} index - The skin index.
|
|
282
|
+
*/
|
|
189
283
|
setSkin( index ) {
|
|
190
284
|
|
|
191
285
|
if ( this.meshBody && this.meshBody.material.wireframe === false ) {
|
|
@@ -196,6 +290,12 @@ class MD2Character {
|
|
|
196
290
|
|
|
197
291
|
}
|
|
198
292
|
|
|
293
|
+
/**
|
|
294
|
+
* Sets the weapon defined by the given weapon index. This will result in a different weapon
|
|
295
|
+
* hold by the character.
|
|
296
|
+
*
|
|
297
|
+
* @param {number} index - The weapon index.
|
|
298
|
+
*/
|
|
199
299
|
setWeapon( index ) {
|
|
200
300
|
|
|
201
301
|
for ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;
|
|
@@ -213,6 +313,11 @@ class MD2Character {
|
|
|
213
313
|
|
|
214
314
|
}
|
|
215
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Sets the defined animation clip as the active animation.
|
|
318
|
+
*
|
|
319
|
+
* @param {string} clipName - The name of the animation clip.
|
|
320
|
+
*/
|
|
216
321
|
setAnimation( clipName ) {
|
|
217
322
|
|
|
218
323
|
if ( this.meshBody ) {
|
|
@@ -240,6 +345,9 @@ class MD2Character {
|
|
|
240
345
|
|
|
241
346
|
}
|
|
242
347
|
|
|
348
|
+
/**
|
|
349
|
+
* Synchronizes the weapon with the body animation.
|
|
350
|
+
*/
|
|
243
351
|
syncWeaponAnimation() {
|
|
244
352
|
|
|
245
353
|
const clipName = this.activeClipName;
|
|
@@ -265,6 +373,11 @@ class MD2Character {
|
|
|
265
373
|
|
|
266
374
|
}
|
|
267
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Updates the animations of the mesh. Must be called inside the animation loop.
|
|
378
|
+
*
|
|
379
|
+
* @param {number} delta - The delta time in seconds.
|
|
380
|
+
*/
|
|
268
381
|
update( delta ) {
|
|
269
382
|
|
|
270
383
|
if ( this.mixer ) this.mixer.update( delta );
|