@plastic-software/three 0.175.14 → 0.179.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/README.md +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +62 -14
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +22 -8
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +57 -38
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +679 -300
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +48 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -2
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +213 -30
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +4 -3
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +22 -19
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +149 -13
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +22 -19
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +12 -10
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -46,6 +46,7 @@ import chevrotain from '../libs/chevrotain.module.min.js';
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* @augments Loader
|
|
49
|
+
* @three_import import { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';
|
|
49
50
|
*/
|
|
50
51
|
class VRMLLoader extends Loader {
|
|
51
52
|
|
|
@@ -3140,7 +3141,7 @@ class VRMLLoader extends Loader {
|
|
|
3140
3141
|
|
|
3141
3142
|
color.fromBufferAttribute( attribute, i );
|
|
3142
3143
|
|
|
3143
|
-
ColorManagement.
|
|
3144
|
+
ColorManagement.colorSpaceToWorking( color, SRGBColorSpace );
|
|
3144
3145
|
|
|
3145
3146
|
attribute.setXYZ( i, color.r, color.g, color.b );
|
|
3146
3147
|
|
|
@@ -3247,7 +3248,7 @@ class VRMLLoader extends Loader {
|
|
|
3247
3248
|
|
|
3248
3249
|
color.copy( colorA ).lerp( colorB, t );
|
|
3249
3250
|
|
|
3250
|
-
ColorManagement.
|
|
3251
|
+
ColorManagement.colorSpaceToWorking( color, SRGBColorSpace );
|
|
3251
3252
|
|
|
3252
3253
|
colorAttribute.setXYZ( index, color.r, color.g, color.b );
|
|
3253
3254
|
|
|
@@ -86,7 +86,7 @@ class IFFParser {
|
|
|
86
86
|
|
|
87
87
|
this.debugger.offset = this.reader.offset;
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
const topForm = this.reader.getIDTag();
|
|
90
90
|
|
|
91
91
|
if ( topForm !== 'FORM' ) {
|
|
92
92
|
|
|
@@ -95,12 +95,12 @@ class IFFParser {
|
|
|
95
95
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
const length = this.reader.getUint32();
|
|
99
99
|
|
|
100
100
|
this.debugger.dataOffset = this.reader.offset;
|
|
101
101
|
this.debugger.length = length;
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
const type = this.reader.getIDTag();
|
|
104
104
|
|
|
105
105
|
if ( type === 'LWO2' ) {
|
|
106
106
|
|
|
@@ -129,7 +129,7 @@ class IFFParser {
|
|
|
129
129
|
// FORM ::= 'FORM'[ID4], length[U4], type[ID4], ( chunk[CHUNK] | form[FORM] ) * }
|
|
130
130
|
parseForm( length ) {
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
const type = this.reader.getIDTag();
|
|
133
133
|
|
|
134
134
|
switch ( type ) {
|
|
135
135
|
|
|
@@ -350,9 +350,9 @@ class IFFParser {
|
|
|
350
350
|
|
|
351
351
|
this.reader.skip( 8 ); // unknown Uint32 x2
|
|
352
352
|
|
|
353
|
-
|
|
353
|
+
const name = this.reader.getString();
|
|
354
354
|
|
|
355
|
-
|
|
355
|
+
const surface = {
|
|
356
356
|
attributes: {}, // LWO2 style non-node attributes will go here
|
|
357
357
|
connections: {},
|
|
358
358
|
name: name,
|
|
@@ -372,9 +372,9 @@ class IFFParser {
|
|
|
372
372
|
|
|
373
373
|
parseSurfaceLwo2( length ) {
|
|
374
374
|
|
|
375
|
-
|
|
375
|
+
const name = this.reader.getString();
|
|
376
376
|
|
|
377
|
-
|
|
377
|
+
const surface = {
|
|
378
378
|
attributes: {}, // LWO2 style non-node attributes will go here
|
|
379
379
|
connections: {},
|
|
380
380
|
name: name,
|
|
@@ -398,9 +398,9 @@ class IFFParser {
|
|
|
398
398
|
// some subnodes can be renamed, but Input and Surface cannot
|
|
399
399
|
|
|
400
400
|
this.reader.skip( 8 ); // NRNM + length
|
|
401
|
-
|
|
401
|
+
const name = this.reader.getString();
|
|
402
402
|
|
|
403
|
-
|
|
403
|
+
const node = {
|
|
404
404
|
name: name
|
|
405
405
|
};
|
|
406
406
|
this.currentForm = node;
|
|
@@ -425,7 +425,7 @@ class IFFParser {
|
|
|
425
425
|
parseEntryForm( length ) {
|
|
426
426
|
|
|
427
427
|
this.reader.skip( 8 ); // NAME + length
|
|
428
|
-
|
|
428
|
+
const name = this.reader.getString();
|
|
429
429
|
this.currentForm = this.currentNode.attributes;
|
|
430
430
|
|
|
431
431
|
this.setupForm( name, length );
|
|
@@ -438,7 +438,7 @@ class IFFParser {
|
|
|
438
438
|
|
|
439
439
|
this.reader.skip( 8 ); // unknown + length
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
const valueType = this.reader.getString();
|
|
442
442
|
|
|
443
443
|
if ( valueType === 'double' ) {
|
|
444
444
|
|
|
@@ -480,7 +480,7 @@ class IFFParser {
|
|
|
480
480
|
|
|
481
481
|
if ( ! this.currentForm.maps ) this.currentForm.maps = [];
|
|
482
482
|
|
|
483
|
-
|
|
483
|
+
const map = {};
|
|
484
484
|
this.currentForm.maps.push( map );
|
|
485
485
|
this.currentForm = map;
|
|
486
486
|
|
|
@@ -541,7 +541,7 @@ class IFFParser {
|
|
|
541
541
|
// level and they have a different format in each case
|
|
542
542
|
parseClip( length ) {
|
|
543
543
|
|
|
544
|
-
|
|
544
|
+
const tag = this.reader.getIDTag();
|
|
545
545
|
|
|
546
546
|
// inside surface node
|
|
547
547
|
if ( tag === 'FORM' ) {
|
|
@@ -562,7 +562,7 @@ class IFFParser {
|
|
|
562
562
|
|
|
563
563
|
this.reader.skip( 8 ); // unknown
|
|
564
564
|
|
|
565
|
-
|
|
565
|
+
const texture = {
|
|
566
566
|
index: this.reader.getUint32()
|
|
567
567
|
};
|
|
568
568
|
this.tree.textures.push( texture );
|
|
@@ -572,7 +572,7 @@ class IFFParser {
|
|
|
572
572
|
|
|
573
573
|
parseClipLwo2( length ) {
|
|
574
574
|
|
|
575
|
-
|
|
575
|
+
const texture = {
|
|
576
576
|
index: this.reader.getUint32(),
|
|
577
577
|
fileName: ''
|
|
578
578
|
};
|
|
@@ -580,8 +580,8 @@ class IFFParser {
|
|
|
580
580
|
// search STIL block
|
|
581
581
|
while ( true ) {
|
|
582
582
|
|
|
583
|
-
|
|
584
|
-
|
|
583
|
+
const tag = this.reader.getIDTag();
|
|
584
|
+
const n_length = this.reader.getUint16();
|
|
585
585
|
if ( tag === 'STIL' ) {
|
|
586
586
|
|
|
587
587
|
texture.fileName = this.reader.getString();
|
|
@@ -611,7 +611,7 @@ class IFFParser {
|
|
|
611
611
|
|
|
612
612
|
parseXVAL( type, length ) {
|
|
613
613
|
|
|
614
|
-
|
|
614
|
+
const endOffset = this.reader.offset + length - 4;
|
|
615
615
|
this.reader.skip( 8 );
|
|
616
616
|
|
|
617
617
|
this.currentForm[ type ] = this.reader.getFloat32();
|
|
@@ -622,7 +622,7 @@ class IFFParser {
|
|
|
622
622
|
|
|
623
623
|
parseXVAL3( type, length ) {
|
|
624
624
|
|
|
625
|
-
|
|
625
|
+
const endOffset = this.reader.offset + length - 4;
|
|
626
626
|
this.reader.skip( 8 );
|
|
627
627
|
|
|
628
628
|
this.currentForm[ type ] = {
|
|
@@ -651,10 +651,10 @@ class IFFParser {
|
|
|
651
651
|
// LAYR: number[U2], flags[U2], pivot[VEC12], name[S0], parent[U2]
|
|
652
652
|
parseLayer( length ) {
|
|
653
653
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
654
|
+
const number = this.reader.getUint16();
|
|
655
|
+
const flags = this.reader.getUint16(); // If the least significant bit of flags is set, the layer is hidden.
|
|
656
|
+
const pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
657
|
+
const layer = {
|
|
658
658
|
number: number,
|
|
659
659
|
flags: flags, // If the least significant bit of flags is set, the layer is hidden.
|
|
660
660
|
pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
@@ -664,7 +664,7 @@ class IFFParser {
|
|
|
664
664
|
this.tree.layers.push( layer );
|
|
665
665
|
this.currentLayer = layer;
|
|
666
666
|
|
|
667
|
-
|
|
667
|
+
const parsedLength = 16 + stringOffset( this.currentLayer.name ); // index ( 2 ) + flags( 2 ) + pivot( 12 ) + stringlength
|
|
668
668
|
|
|
669
669
|
// if we have not reached then end of the layer block, there must be a parent defined
|
|
670
670
|
this.currentLayer.parent = ( parsedLength < length ) ? this.reader.getUint16() : - 1; // omitted or -1 for no parent
|
|
@@ -677,7 +677,7 @@ class IFFParser {
|
|
|
677
677
|
parsePoints( length ) {
|
|
678
678
|
|
|
679
679
|
this.currentPoints = [];
|
|
680
|
-
for (
|
|
680
|
+
for ( let i = 0; i < length / 4; i += 3 ) {
|
|
681
681
|
|
|
682
682
|
// x -> -x to match three.js right handed coords
|
|
683
683
|
this.currentPoints.push( - this.reader.getFloat32(), this.reader.getFloat32(), this.reader.getFloat32() );
|
|
@@ -698,9 +698,9 @@ class IFFParser {
|
|
|
698
698
|
// VMAD { type[ID4], dimension[U2], name[S0], ( vert[VX], poly[VX], value[F4] # dimension ) * }
|
|
699
699
|
parseVertexMapping( length, discontinuous ) {
|
|
700
700
|
|
|
701
|
-
|
|
701
|
+
const finalOffset = this.reader.offset + length;
|
|
702
702
|
|
|
703
|
-
|
|
703
|
+
const channelName = this.reader.getString();
|
|
704
704
|
|
|
705
705
|
if ( this.reader.offset === finalOffset ) {
|
|
706
706
|
|
|
@@ -713,12 +713,12 @@ class IFFParser {
|
|
|
713
713
|
// otherwise reset to initial length and parse normal VMAP CHUNK
|
|
714
714
|
this.reader.setOffset( this.reader.offset - stringOffset( channelName ) );
|
|
715
715
|
|
|
716
|
-
|
|
716
|
+
const type = this.reader.getIDTag();
|
|
717
717
|
|
|
718
718
|
this.reader.getUint16(); // dimension
|
|
719
|
-
|
|
719
|
+
const name = this.reader.getString();
|
|
720
720
|
|
|
721
|
-
|
|
721
|
+
const remainingLength = length - 6 - stringOffset( name );
|
|
722
722
|
|
|
723
723
|
switch ( type ) {
|
|
724
724
|
|
|
@@ -749,9 +749,9 @@ class IFFParser {
|
|
|
749
749
|
|
|
750
750
|
parseUVMapping( name, finalOffset, discontinuous ) {
|
|
751
751
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
752
|
+
const uvIndices = [];
|
|
753
|
+
const polyIndices = [];
|
|
754
|
+
const uvs = [];
|
|
755
755
|
|
|
756
756
|
while ( this.reader.offset < finalOffset ) {
|
|
757
757
|
|
|
@@ -788,8 +788,8 @@ class IFFParser {
|
|
|
788
788
|
|
|
789
789
|
parseMorphTargets( name, finalOffset, type ) {
|
|
790
790
|
|
|
791
|
-
|
|
792
|
-
|
|
791
|
+
const indices = [];
|
|
792
|
+
const points = [];
|
|
793
793
|
|
|
794
794
|
type = ( type === 'MORF' ) ? 'relative' : 'absolute';
|
|
795
795
|
|
|
@@ -815,27 +815,27 @@ class IFFParser {
|
|
|
815
815
|
// POLS { type[ID4], ( numvert+flags[U2], vert[VX] # numvert ) * }
|
|
816
816
|
parsePolygonList( length ) {
|
|
817
817
|
|
|
818
|
-
|
|
819
|
-
|
|
818
|
+
const finalOffset = this.reader.offset + length;
|
|
819
|
+
const type = this.reader.getIDTag();
|
|
820
820
|
|
|
821
|
-
|
|
821
|
+
const indices = [];
|
|
822
822
|
|
|
823
823
|
// hold a list of polygon sizes, to be split up later
|
|
824
|
-
|
|
824
|
+
const polygonDimensions = [];
|
|
825
825
|
|
|
826
826
|
while ( this.reader.offset < finalOffset ) {
|
|
827
827
|
|
|
828
|
-
|
|
828
|
+
let numverts = this.reader.getUint16();
|
|
829
829
|
|
|
830
|
-
//
|
|
830
|
+
//const flags = numverts & 64512; // 6 high order bits are flags - ignoring for now
|
|
831
831
|
numverts = numverts & 1023; // remaining ten low order bits are vertex num
|
|
832
832
|
polygonDimensions.push( numverts );
|
|
833
833
|
|
|
834
|
-
for (
|
|
834
|
+
for ( let j = 0; j < numverts; j ++ ) indices.push( this.reader.getVariableLengthIndex() );
|
|
835
835
|
|
|
836
836
|
}
|
|
837
837
|
|
|
838
|
-
|
|
838
|
+
const geometryData = {
|
|
839
839
|
type: type,
|
|
840
840
|
vertexIndices: indices,
|
|
841
841
|
polygonDimensions: polygonDimensions,
|
|
@@ -862,8 +862,8 @@ class IFFParser {
|
|
|
862
862
|
// PTAG { type[ID4], ( poly[VX], tag[U2] ) * }
|
|
863
863
|
parsePolygonTagMapping( length ) {
|
|
864
864
|
|
|
865
|
-
|
|
866
|
-
|
|
865
|
+
const finalOffset = this.reader.offset + length;
|
|
866
|
+
const type = this.reader.getIDTag();
|
|
867
867
|
if ( type === 'SURF' ) this.parseMaterialIndices( finalOffset );
|
|
868
868
|
else { //PART, SMGP, COLR not supported
|
|
869
869
|
|
|
@@ -880,8 +880,8 @@ class IFFParser {
|
|
|
880
880
|
|
|
881
881
|
while ( this.reader.offset < finalOffset ) {
|
|
882
882
|
|
|
883
|
-
|
|
884
|
-
|
|
883
|
+
const polygonIndex = this.reader.getVariableLengthIndex();
|
|
884
|
+
const materialIndex = this.reader.getUint16();
|
|
885
885
|
|
|
886
886
|
this.currentLayer.geometry.materialIndices.push( polygonIndex, materialIndex );
|
|
887
887
|
|
|
@@ -896,7 +896,7 @@ class IFFParser {
|
|
|
896
896
|
// print the chunk plus some bytes padding either side
|
|
897
897
|
// printBuffer( this.reader.dv.buffer, this.reader.offset - 20, length + 40 );
|
|
898
898
|
|
|
899
|
-
|
|
899
|
+
const data = this.reader.getString( length );
|
|
900
900
|
|
|
901
901
|
this.currentForm[ blockID ] = data;
|
|
902
902
|
|
|
@@ -951,7 +951,7 @@ class DataViewReader {
|
|
|
951
951
|
|
|
952
952
|
getUint8() {
|
|
953
953
|
|
|
954
|
-
|
|
954
|
+
const value = this.dv.getUint8( this.offset );
|
|
955
955
|
this.offset += 1;
|
|
956
956
|
return value;
|
|
957
957
|
|
|
@@ -959,7 +959,7 @@ class DataViewReader {
|
|
|
959
959
|
|
|
960
960
|
getUint16() {
|
|
961
961
|
|
|
962
|
-
|
|
962
|
+
const value = this.dv.getUint16( this.offset );
|
|
963
963
|
this.offset += 2;
|
|
964
964
|
return value;
|
|
965
965
|
|
|
@@ -967,7 +967,7 @@ class DataViewReader {
|
|
|
967
967
|
|
|
968
968
|
getInt32() {
|
|
969
969
|
|
|
970
|
-
|
|
970
|
+
const value = this.dv.getInt32( this.offset, false );
|
|
971
971
|
this.offset += 4;
|
|
972
972
|
return value;
|
|
973
973
|
|
|
@@ -975,7 +975,7 @@ class DataViewReader {
|
|
|
975
975
|
|
|
976
976
|
getUint32() {
|
|
977
977
|
|
|
978
|
-
|
|
978
|
+
const value = this.dv.getUint32( this.offset, false );
|
|
979
979
|
this.offset += 4;
|
|
980
980
|
return value;
|
|
981
981
|
|
|
@@ -983,17 +983,15 @@ class DataViewReader {
|
|
|
983
983
|
|
|
984
984
|
getUint64() {
|
|
985
985
|
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
high = this.getUint32();
|
|
989
|
-
low = this.getUint32();
|
|
986
|
+
const low = this.getUint32();
|
|
987
|
+
const high = this.getUint32();
|
|
990
988
|
return high * 0x100000000 + low;
|
|
991
989
|
|
|
992
990
|
}
|
|
993
991
|
|
|
994
992
|
getFloat32() {
|
|
995
993
|
|
|
996
|
-
|
|
994
|
+
const value = this.dv.getFloat32( this.offset, false );
|
|
997
995
|
this.offset += 4;
|
|
998
996
|
return value;
|
|
999
997
|
|
|
@@ -1001,9 +999,9 @@ class DataViewReader {
|
|
|
1001
999
|
|
|
1002
1000
|
getFloat32Array( size ) {
|
|
1003
1001
|
|
|
1004
|
-
|
|
1002
|
+
const a = [];
|
|
1005
1003
|
|
|
1006
|
-
for (
|
|
1004
|
+
for ( let i = 0; i < size; i ++ ) {
|
|
1007
1005
|
|
|
1008
1006
|
a.push( this.getFloat32() );
|
|
1009
1007
|
|
|
@@ -1015,7 +1013,7 @@ class DataViewReader {
|
|
|
1015
1013
|
|
|
1016
1014
|
getFloat64() {
|
|
1017
1015
|
|
|
1018
|
-
|
|
1016
|
+
const value = this.dv.getFloat64( this.offset, this.littleEndian );
|
|
1019
1017
|
this.offset += 8;
|
|
1020
1018
|
return value;
|
|
1021
1019
|
|
|
@@ -1023,9 +1021,9 @@ class DataViewReader {
|
|
|
1023
1021
|
|
|
1024
1022
|
getFloat64Array( size ) {
|
|
1025
1023
|
|
|
1026
|
-
|
|
1024
|
+
const a = [];
|
|
1027
1025
|
|
|
1028
|
-
for (
|
|
1026
|
+
for ( let i = 0; i < size; i ++ ) {
|
|
1029
1027
|
|
|
1030
1028
|
a.push( this.getFloat64() );
|
|
1031
1029
|
|
|
@@ -1043,7 +1041,7 @@ class DataViewReader {
|
|
|
1043
1041
|
// the four-byte form is being used and the first byte should be discarded or masked out.
|
|
1044
1042
|
getVariableLengthIndex() {
|
|
1045
1043
|
|
|
1046
|
-
|
|
1044
|
+
const firstByte = this.getUint8();
|
|
1047
1045
|
|
|
1048
1046
|
if ( firstByte === 255 ) {
|
|
1049
1047
|
|
|
@@ -1099,7 +1097,7 @@ class DataViewReader {
|
|
|
1099
1097
|
|
|
1100
1098
|
getStringArray( size ) {
|
|
1101
1099
|
|
|
1102
|
-
|
|
1100
|
+
let a = this.getString( size );
|
|
1103
1101
|
a = a.split( '\0' );
|
|
1104
1102
|
|
|
1105
1103
|
return a.filter( Boolean ); // return array with any empty strings removed
|
|
@@ -1118,6 +1116,14 @@ class Debugger {
|
|
|
1118
1116
|
this.active = false;
|
|
1119
1117
|
this.depth = 0;
|
|
1120
1118
|
this.formList = [];
|
|
1119
|
+
this.offset = 0;
|
|
1120
|
+
|
|
1121
|
+
this.node = 0; // 0 = FORM, 1 = CHUNK, 2 = SUBNODE
|
|
1122
|
+
this.nodeID = 'FORM';
|
|
1123
|
+
|
|
1124
|
+
this.dataOffset = 0;
|
|
1125
|
+
this.length = 0;
|
|
1126
|
+
this.skipped = false;
|
|
1121
1127
|
|
|
1122
1128
|
}
|
|
1123
1129
|
|
|
@@ -1131,7 +1137,7 @@ class Debugger {
|
|
|
1131
1137
|
|
|
1132
1138
|
if ( ! this.active ) return;
|
|
1133
1139
|
|
|
1134
|
-
|
|
1140
|
+
let nodeType;
|
|
1135
1141
|
|
|
1136
1142
|
switch ( this.node ) {
|
|
1137
1143
|
|
|
@@ -1174,7 +1180,7 @@ class Debugger {
|
|
|
1174
1180
|
|
|
1175
1181
|
if ( ! this.active ) return;
|
|
1176
1182
|
|
|
1177
|
-
for (
|
|
1183
|
+
for ( let i = this.formList.length - 1; i >= 0; i -- ) {
|
|
1178
1184
|
|
|
1179
1185
|
if ( this.offset >= this.formList[ i ] ) {
|
|
1180
1186
|
|
|
@@ -1192,17 +1198,11 @@ class Debugger {
|
|
|
1192
1198
|
|
|
1193
1199
|
// ************** UTILITY FUNCTIONS **************
|
|
1194
1200
|
|
|
1195
|
-
function isEven( num ) {
|
|
1196
|
-
|
|
1197
|
-
return num % 2;
|
|
1198
|
-
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
1201
|
// calculate the length of the string in the buffer
|
|
1202
1202
|
// this will be string.length + nullbyte + optional padbyte to make the length even
|
|
1203
1203
|
function stringOffset( string ) {
|
|
1204
1204
|
|
|
1205
|
-
return string.length + 1 + (
|
|
1205
|
+
return string.length + 1 + ( ( string.length + 1 ) % 2 );
|
|
1206
1206
|
|
|
1207
1207
|
}
|
|
1208
1208
|
|