@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
package/src/nodes/Nodes.js
CHANGED
|
@@ -33,6 +33,7 @@ export { default as StructNode } from './core/StructNode.js';
|
|
|
33
33
|
export { default as StructTypeNode } from './core/StructTypeNode.js';
|
|
34
34
|
export { default as OutputStructNode } from './core/OutputStructNode.js';
|
|
35
35
|
export { default as MRTNode } from './core/MRTNode.js';
|
|
36
|
+
export { default as SubBuildNode } from './core/SubBuildNode.js';
|
|
36
37
|
|
|
37
38
|
import * as NodeUtils from './core/NodeUtils.js';
|
|
38
39
|
export { NodeUtils };
|
|
@@ -40,11 +41,9 @@ export { NodeUtils };
|
|
|
40
41
|
// utils
|
|
41
42
|
export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
|
|
42
43
|
export { default as ConvertNode } from './utils/ConvertNode.js';
|
|
43
|
-
export { default as EquirectUVNode } from './utils/EquirectUVNode.js';
|
|
44
44
|
export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
|
|
45
45
|
export { default as JoinNode } from './utils/JoinNode.js';
|
|
46
46
|
export { default as LoopNode } from './utils/LoopNode.js';
|
|
47
|
-
export { default as MatcapUVNode } from './utils/MatcapUVNode.js';
|
|
48
47
|
export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
|
|
49
48
|
export { default as RemapNode } from './utils/RemapNode.js';
|
|
50
49
|
export { default as RotateNode } from './utils/RotateNode.js';
|
|
@@ -52,11 +51,11 @@ export { default as SetNode } from './utils/SetNode.js';
|
|
|
52
51
|
export { default as SplitNode } from './utils/SplitNode.js';
|
|
53
52
|
export { default as SpriteSheetUVNode } from './utils/SpriteSheetUVNode.js';
|
|
54
53
|
export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
|
|
55
|
-
export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.js';
|
|
56
54
|
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
57
55
|
export { default as RTTNode } from './utils/RTTNode.js';
|
|
58
56
|
export { default as MemberNode } from './utils/MemberNode.js';
|
|
59
57
|
export { default as DebugNode } from './utils/DebugNode.js';
|
|
58
|
+
export { default as EventNode } from './utils/EventNode.js';
|
|
60
59
|
|
|
61
60
|
// accessors
|
|
62
61
|
export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
|
|
@@ -120,6 +119,7 @@ export { default as DirectionalLightNode } from './lighting/DirectionalLightNode
|
|
|
120
119
|
export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
|
|
121
120
|
export { default as SpotLightNode } from './lighting/SpotLightNode.js';
|
|
122
121
|
export { default as IESSpotLightNode } from './lighting/IESSpotLightNode.js';
|
|
122
|
+
export { default as ProjectorLightNode } from './lighting/ProjectorLightNode.js';
|
|
123
123
|
export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
|
|
124
124
|
export { default as LightsNode } from './lighting/LightsNode.js';
|
|
125
125
|
export { default as LightingNode } from './lighting/LightingNode.js';
|
package/src/nodes/TSL.js
CHANGED
|
@@ -24,10 +24,10 @@ export * from './math/MathUtils.js';
|
|
|
24
24
|
export * from './math/TriNoise3D.js';
|
|
25
25
|
|
|
26
26
|
// utils
|
|
27
|
-
export * from './utils/
|
|
27
|
+
export * from './utils/EquirectUV.js';
|
|
28
28
|
export * from './utils/FunctionOverloadingNode.js';
|
|
29
29
|
export * from './utils/LoopNode.js';
|
|
30
|
-
export * from './utils/
|
|
30
|
+
export * from './utils/MatcapUV.js';
|
|
31
31
|
export * from './utils/MaxMipLevelNode.js';
|
|
32
32
|
export * from './utils/Oscillators.js';
|
|
33
33
|
export * from './utils/Packing.js';
|
|
@@ -38,10 +38,12 @@ export * from './utils/ViewportUtils.js';
|
|
|
38
38
|
export * from './utils/RotateNode.js';
|
|
39
39
|
export * from './utils/SpriteSheetUVNode.js';
|
|
40
40
|
export * from './utils/Timer.js';
|
|
41
|
-
export * from './utils/
|
|
41
|
+
export * from './utils/TriplanarTextures.js';
|
|
42
42
|
export * from './utils/ReflectorNode.js';
|
|
43
43
|
export * from './utils/RTTNode.js';
|
|
44
44
|
export * from './utils/PostProcessingUtils.js';
|
|
45
|
+
export * from './utils/SampleNode.js';
|
|
46
|
+
export * from './utils/EventNode.js';
|
|
45
47
|
|
|
46
48
|
// three.js shading language
|
|
47
49
|
export * from './tsl/TSLBase.js';
|
|
@@ -134,6 +136,7 @@ export * from './lighting/LightsNode.js';
|
|
|
134
136
|
export * from './lighting/LightingContextNode.js';
|
|
135
137
|
export * from './lighting/ShadowBaseNode.js';
|
|
136
138
|
export * from './lighting/ShadowNode.js';
|
|
139
|
+
export * from './lighting/ShadowFilterNode.js';
|
|
137
140
|
export * from './lighting/PointShadowNode.js';
|
|
138
141
|
export * from './lighting/PointLightNode.js';
|
|
139
142
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { normalView, transformedNormalView } from './Normal.js';
|
|
1
|
+
import { normalView } from './Normal.js';
|
|
3
2
|
import { tangentView } from './Tangent.js';
|
|
4
|
-
import {
|
|
3
|
+
import { bitangentView } from './Bitangent.js';
|
|
4
|
+
import { Fn, mat3 } from '../tsl/TSLBase.js';
|
|
5
5
|
import { mix } from '../math/MathNode.js';
|
|
6
6
|
import { anisotropy, anisotropyB, roughness } from '../core/PropertyNode.js';
|
|
7
7
|
import { positionViewDirection } from './Position.js';
|
|
@@ -12,7 +12,7 @@ import { positionViewDirection } from './Position.js';
|
|
|
12
12
|
* @tsl
|
|
13
13
|
* @type {Node<mat3>}
|
|
14
14
|
*/
|
|
15
|
-
export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView );
|
|
15
|
+
export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView ).toVar( 'TBNViewMatrix' );
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* TSL object that represents the parallax direction.
|
|
@@ -40,15 +40,14 @@ export const parallaxUV = ( uv, scale ) => uv.sub( parallaxDirection.mul( scale
|
|
|
40
40
|
* @function
|
|
41
41
|
* @returns {Node<vec3>} Bent normals.
|
|
42
42
|
*/
|
|
43
|
-
export const
|
|
43
|
+
export const bentNormalView = /*@__PURE__*/ ( Fn( () => {
|
|
44
44
|
|
|
45
45
|
// https://google.github.io/filament/Filament.md.html#lighting/imagebasedlights/anisotropy
|
|
46
46
|
|
|
47
47
|
let bentNormal = anisotropyB.cross( positionViewDirection );
|
|
48
48
|
bentNormal = bentNormal.cross( anisotropyB ).normalize();
|
|
49
|
-
bentNormal = mix( bentNormal,
|
|
49
|
+
bentNormal = mix( bentNormal, normalView, anisotropy.mul( roughness.oneMinus() ).oneMinus().pow2().pow2() ).normalize();
|
|
50
50
|
|
|
51
51
|
return bentNormal;
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
} )();
|
|
53
|
+
} ).once() )();
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Fn } from '../tsl/TSLCore.js';
|
|
2
|
+
import { normalGeometry, normalLocal, normalView, normalWorld } from './Normal.js';
|
|
3
|
+
import { tangentGeometry, tangentLocal, tangentView, tangentWorld } from './Tangent.js';
|
|
4
|
+
import { bitangentViewFrame } from './TangentUtils.js';
|
|
5
|
+
import { directionToFaceDirection } from '../display/FrontFacingNode.js';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Returns the bitangent node and assigns it to a varying if the material is not flat shaded.
|
|
9
|
+
*
|
|
10
|
+
* @tsl
|
|
11
|
+
* @private
|
|
12
|
+
* @param {Node<vec3>} crossNormalTangent - The cross product of the normal and tangent vectors.
|
|
13
|
+
* @param {string} varyingName - The name of the varying to assign the bitangent to.
|
|
14
|
+
* @returns {Node<vec3>} The bitangent node.
|
|
15
|
+
*/
|
|
16
|
+
const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], { subBuildFn, material } ) => {
|
|
17
|
+
|
|
18
|
+
let bitangent = crossNormalTangent.mul( tangentGeometry.w ).xyz;
|
|
19
|
+
|
|
20
|
+
if ( subBuildFn === 'NORMAL' && material.flatShading !== true ) {
|
|
21
|
+
|
|
22
|
+
bitangent = bitangent.toVarying( varyingName );
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return bitangent;
|
|
27
|
+
|
|
28
|
+
} ).once( [ 'NORMAL' ] );
|
|
7
29
|
|
|
8
30
|
/**
|
|
9
31
|
* TSL object that represents the bitangent attribute of the current rendered object.
|
|
@@ -11,7 +33,7 @@ const getBitangent = ( crossNormalTangent ) => crossNormalTangent.mul( tangentGe
|
|
|
11
33
|
* @tsl
|
|
12
34
|
* @type {Node<vec3>}
|
|
13
35
|
*/
|
|
14
|
-
export const bitangentGeometry = /*@__PURE__*/
|
|
36
|
+
export const bitangentGeometry = /*@__PURE__*/ getBitangent( normalGeometry.cross( tangentGeometry ), 'v_bitangentGeometry' ).normalize().toVar( 'bitangentGeometry' );
|
|
15
37
|
|
|
16
38
|
/**
|
|
17
39
|
* TSL object that represents the vertex bitangent in local space of the current rendered object.
|
|
@@ -19,36 +41,42 @@ export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeom
|
|
|
19
41
|
* @tsl
|
|
20
42
|
* @type {Node<vec3>}
|
|
21
43
|
*/
|
|
22
|
-
export const bitangentLocal = /*@__PURE__*/
|
|
44
|
+
export const bitangentLocal = /*@__PURE__*/ getBitangent( normalLocal.cross( tangentLocal ), 'v_bitangentLocal' ).normalize().toVar( 'bitangentLocal' );
|
|
23
45
|
|
|
24
46
|
/**
|
|
25
47
|
* TSL object that represents the vertex bitangent in view space of the current rendered object.
|
|
26
48
|
*
|
|
27
49
|
* @tsl
|
|
28
|
-
* @type {Node<
|
|
50
|
+
* @type {Node<vec3>}
|
|
29
51
|
*/
|
|
30
|
-
export const bitangentView = /*@__PURE__*/
|
|
52
|
+
export const bitangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, material } ) => {
|
|
31
53
|
|
|
32
|
-
|
|
33
|
-
* TSL object that represents the vertex bitangent in world space of the current rendered object.
|
|
34
|
-
*
|
|
35
|
-
* @tsl
|
|
36
|
-
* @type {Node<vec4>}
|
|
37
|
-
*/
|
|
38
|
-
export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.cross( tangentWorld ) ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
|
|
54
|
+
let node;
|
|
39
55
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
if ( subBuildFn === 'VERTEX' || geometry.hasAttribute( 'tangent' ) ) {
|
|
57
|
+
|
|
58
|
+
node = getBitangent( normalView.cross( tangentView ), 'v_bitangentView' ).normalize();
|
|
59
|
+
|
|
60
|
+
} else {
|
|
61
|
+
|
|
62
|
+
node = bitangentViewFrame;
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if ( material.flatShading !== true ) {
|
|
67
|
+
|
|
68
|
+
node = directionToFaceDirection( node );
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return node;
|
|
73
|
+
|
|
74
|
+
}, 'vec3' ).once( [ 'NORMAL', 'VERTEX' ] ) )().toVar( 'bitangentView' );
|
|
47
75
|
|
|
48
76
|
/**
|
|
49
|
-
* TSL object that represents the
|
|
77
|
+
* TSL object that represents the vertex bitangent in world space of the current rendered object.
|
|
50
78
|
*
|
|
51
79
|
* @tsl
|
|
52
|
-
* @type {Node<
|
|
80
|
+
* @type {Node<vec3>}
|
|
53
81
|
*/
|
|
54
|
-
export const
|
|
82
|
+
export const bitangentWorld = /*@__PURE__*/ getBitangent( normalWorld.cross( tangentWorld ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
|
|
@@ -3,6 +3,7 @@ import { renderGroup, sharedUniformGroup } from '../core/UniformGroupNode.js';
|
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
import { Fn } from '../tsl/TSLBase.js';
|
|
5
5
|
import { uniformArray } from './UniformArrayNode.js';
|
|
6
|
+
import { builtin } from './BuiltinNode.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* TSL object that represents the current `index` value of the camera if used ArrayCamera.
|
|
@@ -10,7 +11,7 @@ import { uniformArray } from './UniformArrayNode.js';
|
|
|
10
11
|
* @tsl
|
|
11
12
|
* @type {UniformNode<uint>}
|
|
12
13
|
*/
|
|
13
|
-
export const cameraIndex = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( sharedUniformGroup( 'cameraIndex' ) ).toVarying( 'v_cameraIndex' );
|
|
14
|
+
export const cameraIndex = /*@__PURE__*/ uniform( 0, 'uint' ).setName( 'u_cameraIndex' ).setGroup( sharedUniformGroup( 'cameraIndex' ) ).toVarying( 'v_cameraIndex' );
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* TSL object that represents the `near` value of the camera used for the current render.
|
|
@@ -18,7 +19,7 @@ export const cameraIndex = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( sharedUn
|
|
|
18
19
|
* @tsl
|
|
19
20
|
* @type {UniformNode<float>}
|
|
20
21
|
*/
|
|
21
|
-
export const cameraNear = /*@__PURE__*/ uniform( 'float' ).
|
|
22
|
+
export const cameraNear = /*@__PURE__*/ uniform( 'float' ).setName( 'cameraNear' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.near );
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* TSL object that represents the `far` value of the camera used for the current render.
|
|
@@ -26,7 +27,7 @@ export const cameraNear = /*@__PURE__*/ uniform( 'float' ).label( 'cameraNear' )
|
|
|
26
27
|
* @tsl
|
|
27
28
|
* @type {UniformNode<float>}
|
|
28
29
|
*/
|
|
29
|
-
export const cameraFar = /*@__PURE__*/ uniform( 'float' ).
|
|
30
|
+
export const cameraFar = /*@__PURE__*/ uniform( 'float' ).setName( 'cameraFar' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.far );
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* TSL object that represents the projection matrix of the camera used for the current render.
|
|
@@ -48,13 +49,13 @@ export const cameraProjectionMatrix = /*@__PURE__*/ ( Fn( ( { camera } ) => {
|
|
|
48
49
|
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
const cameraProjectionMatrices = uniformArray( matrices ).setGroup( renderGroup ).
|
|
52
|
+
const cameraProjectionMatrices = uniformArray( matrices ).setGroup( renderGroup ).setName( 'cameraProjectionMatrices' );
|
|
52
53
|
|
|
53
|
-
cameraProjectionMatrix = cameraProjectionMatrices.element( cameraIndex ).toVar( 'cameraProjectionMatrix' );
|
|
54
|
+
cameraProjectionMatrix = cameraProjectionMatrices.element( camera.isMultiViewCamera ? builtin( 'gl_ViewID_OVR' ) : cameraIndex ).toVar( 'cameraProjectionMatrix' );
|
|
54
55
|
|
|
55
56
|
} else {
|
|
56
57
|
|
|
57
|
-
cameraProjectionMatrix = uniform( 'mat4' ).
|
|
58
|
+
cameraProjectionMatrix = uniform( 'mat4' ).setName( 'cameraProjectionMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrix );
|
|
58
59
|
|
|
59
60
|
}
|
|
60
61
|
|
|
@@ -68,7 +69,33 @@ export const cameraProjectionMatrix = /*@__PURE__*/ ( Fn( ( { camera } ) => {
|
|
|
68
69
|
* @tsl
|
|
69
70
|
* @type {UniformNode<mat4>}
|
|
70
71
|
*/
|
|
71
|
-
export const cameraProjectionMatrixInverse = /*@__PURE__*/
|
|
72
|
+
export const cameraProjectionMatrixInverse = /*@__PURE__*/ ( Fn( ( { camera } ) => {
|
|
73
|
+
|
|
74
|
+
let cameraProjectionMatrixInverse;
|
|
75
|
+
|
|
76
|
+
if ( camera.isArrayCamera && camera.cameras.length > 0 ) {
|
|
77
|
+
|
|
78
|
+
const matrices = [];
|
|
79
|
+
|
|
80
|
+
for ( const subCamera of camera.cameras ) {
|
|
81
|
+
|
|
82
|
+
matrices.push( subCamera.projectionMatrixInverse );
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const cameraProjectionMatricesInverse = uniformArray( matrices ).setGroup( renderGroup ).setName( 'cameraProjectionMatricesInverse' );
|
|
87
|
+
|
|
88
|
+
cameraProjectionMatrixInverse = cameraProjectionMatricesInverse.element( camera.isMultiViewCamera ? builtin( 'gl_ViewID_OVR' ) : cameraIndex ).toVar( 'cameraProjectionMatrixInverse' );
|
|
89
|
+
|
|
90
|
+
} else {
|
|
91
|
+
|
|
92
|
+
cameraProjectionMatrixInverse = uniform( 'mat4' ).setName( 'cameraProjectionMatrixInverse' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrixInverse );
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return cameraProjectionMatrixInverse;
|
|
97
|
+
|
|
98
|
+
} ).once() )();
|
|
72
99
|
|
|
73
100
|
/**
|
|
74
101
|
* TSL object that represents the view matrix of the camera used for the current render.
|
|
@@ -90,13 +117,13 @@ export const cameraViewMatrix = /*@__PURE__*/ ( Fn( ( { camera } ) => {
|
|
|
90
117
|
|
|
91
118
|
}
|
|
92
119
|
|
|
93
|
-
const cameraViewMatrices = uniformArray( matrices ).setGroup( renderGroup ).
|
|
120
|
+
const cameraViewMatrices = uniformArray( matrices ).setGroup( renderGroup ).setName( 'cameraViewMatrices' );
|
|
94
121
|
|
|
95
|
-
cameraViewMatrix = cameraViewMatrices.element( cameraIndex ).toVar( 'cameraViewMatrix' );
|
|
122
|
+
cameraViewMatrix = cameraViewMatrices.element( camera.isMultiViewCamera ? builtin( 'gl_ViewID_OVR' ) : cameraIndex ).toVar( 'cameraViewMatrix' );
|
|
96
123
|
|
|
97
124
|
} else {
|
|
98
125
|
|
|
99
|
-
cameraViewMatrix = uniform( 'mat4' ).
|
|
126
|
+
cameraViewMatrix = uniform( 'mat4' ).setName( 'cameraViewMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorldInverse );
|
|
100
127
|
|
|
101
128
|
}
|
|
102
129
|
|
|
@@ -110,7 +137,7 @@ export const cameraViewMatrix = /*@__PURE__*/ ( Fn( ( { camera } ) => {
|
|
|
110
137
|
* @tsl
|
|
111
138
|
* @type {UniformNode<mat4>}
|
|
112
139
|
*/
|
|
113
|
-
export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).
|
|
140
|
+
export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).setName( 'cameraWorldMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorld );
|
|
114
141
|
|
|
115
142
|
/**
|
|
116
143
|
* TSL object that represents the normal matrix of the camera used for the current render.
|
|
@@ -118,7 +145,7 @@ export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraW
|
|
|
118
145
|
* @tsl
|
|
119
146
|
* @type {UniformNode<mat3>}
|
|
120
147
|
*/
|
|
121
|
-
export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).
|
|
148
|
+
export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).setName( 'cameraNormalMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.normalMatrix );
|
|
122
149
|
|
|
123
150
|
/**
|
|
124
151
|
* TSL object that represents the position in world space of the camera used for the current render.
|
|
@@ -126,4 +153,4 @@ export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).label( 'camera
|
|
|
126
153
|
* @tsl
|
|
127
154
|
* @type {UniformNode<vec3>}
|
|
128
155
|
*/
|
|
129
|
-
export const cameraPosition = /*@__PURE__*/ uniform( new Vector3() ).
|
|
156
|
+
export const cameraPosition = /*@__PURE__*/ uniform( new Vector3() ).setName( 'cameraPosition' ).setGroup( renderGroup ).onRenderUpdate( ( { camera }, self ) => self.value.setFromMatrixPosition( camera.matrixWorld ) );
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import TextureNode from './TextureNode.js';
|
|
2
2
|
import { reflectVector, refractVector } from './ReflectVector.js';
|
|
3
|
-
import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
3
|
+
import { nodeObject, nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
import { CubeReflectionMapping, CubeRefractionMapping, WebGPUCoordinateSystem } from '../../constants.js';
|
|
6
6
|
import { materialEnvRotation } from './MaterialProperties.js';
|
|
7
7
|
|
|
8
|
+
import { CubeTexture } from '../../textures/CubeTexture.js';
|
|
9
|
+
|
|
10
|
+
const EmptyTexture = /*@__PURE__*/ new CubeTexture();
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* This type of uniform node represents a cube texture.
|
|
10
14
|
*
|
|
@@ -138,4 +142,48 @@ export default CubeTextureNode;
|
|
|
138
142
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
139
143
|
* @returns {CubeTextureNode}
|
|
140
144
|
*/
|
|
141
|
-
export const
|
|
145
|
+
export const cubeTextureBase = /*@__PURE__*/ nodeProxy( CubeTextureNode ).setParameterLength( 1, 4 ).setName( 'cubeTexture' );
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* TSL function for creating a cube texture uniform node.
|
|
149
|
+
*
|
|
150
|
+
* @tsl
|
|
151
|
+
* @function
|
|
152
|
+
* @param {?CubeTexture|CubeTextureNode} [value=EmptyTexture] - The cube texture.
|
|
153
|
+
* @param {?Node<vec3>} [uvNode=null] - The uv node.
|
|
154
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
155
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
156
|
+
* @returns {CubeTextureNode}
|
|
157
|
+
*/
|
|
158
|
+
export const cubeTexture = ( value = EmptyTexture, uvNode = null, levelNode = null, biasNode = null ) => {
|
|
159
|
+
|
|
160
|
+
let textureNode;
|
|
161
|
+
|
|
162
|
+
if ( value && value.isCubeTextureNode === true ) {
|
|
163
|
+
|
|
164
|
+
textureNode = nodeObject( value.clone() );
|
|
165
|
+
textureNode.referenceNode = value.getSelf(); // Ensure the reference is set to the original node
|
|
166
|
+
|
|
167
|
+
if ( uvNode !== null ) textureNode.uvNode = nodeObject( uvNode );
|
|
168
|
+
if ( levelNode !== null ) textureNode.levelNode = nodeObject( levelNode );
|
|
169
|
+
if ( biasNode !== null ) textureNode.biasNode = nodeObject( biasNode );
|
|
170
|
+
|
|
171
|
+
} else {
|
|
172
|
+
|
|
173
|
+
textureNode = cubeTextureBase( value, uvNode, levelNode, biasNode );
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return textureNode;
|
|
178
|
+
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* TSL function for creating a uniform cube texture node.
|
|
183
|
+
*
|
|
184
|
+
* @tsl
|
|
185
|
+
* @function
|
|
186
|
+
* @param {?CubeTexture} [value=EmptyTexture] - The cube texture.
|
|
187
|
+
* @returns {CubeTextureNode}
|
|
188
|
+
*/
|
|
189
|
+
export const uniformCubeTexture = ( value = EmptyTexture ) => cubeTextureBase( value );
|
|
@@ -33,9 +33,9 @@ class InstanceNode extends Node {
|
|
|
33
33
|
*
|
|
34
34
|
* @param {number} count - The number of instances.
|
|
35
35
|
* @param {InstancedBufferAttribute} instanceMatrix - Instanced buffer attribute representing the instance transformations.
|
|
36
|
-
* @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
|
|
36
|
+
* @param {?InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
|
|
37
37
|
*/
|
|
38
|
-
constructor( count, instanceMatrix, instanceColor ) {
|
|
38
|
+
constructor( count, instanceMatrix, instanceColor = null ) {
|
|
39
39
|
|
|
40
40
|
super( 'void' );
|
|
41
41
|
|
|
@@ -71,6 +71,7 @@ class InstanceNode extends Node {
|
|
|
71
71
|
* The node that represents the instance color data.
|
|
72
72
|
*
|
|
73
73
|
* @type {?Node}
|
|
74
|
+
* @default null
|
|
74
75
|
*/
|
|
75
76
|
this.instanceColorNode = null;
|
|
76
77
|
|
|
@@ -217,7 +218,7 @@ export default InstanceNode;
|
|
|
217
218
|
* @function
|
|
218
219
|
* @param {number} count - The number of instances.
|
|
219
220
|
* @param {InstancedBufferAttribute} instanceMatrix - Instanced buffer attribute representing the instance transformations.
|
|
220
|
-
* @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
|
|
221
|
+
* @param {?InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
|
|
221
222
|
* @returns {InstanceNode}
|
|
222
223
|
*/
|
|
223
|
-
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode ).setParameterLength( 3 );
|
|
224
|
+
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode ).setParameterLength( 2, 3 );
|
|
@@ -30,9 +30,9 @@ export function lightShadowMatrix( light ) {
|
|
|
30
30
|
|
|
31
31
|
const data = getLightData( light );
|
|
32
32
|
|
|
33
|
-
return data.shadowMatrix || ( data.shadowMatrix = uniform( 'mat4' ).setGroup( renderGroup ).onRenderUpdate( () => {
|
|
33
|
+
return data.shadowMatrix || ( data.shadowMatrix = uniform( 'mat4' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => {
|
|
34
34
|
|
|
35
|
-
if ( light.castShadow !== true ) {
|
|
35
|
+
if ( light.castShadow !== true || frame.renderer.shadowMap.enabled === false ) {
|
|
36
36
|
|
|
37
37
|
light.shadow.updateMatrices( light );
|
|
38
38
|
|
|
@@ -386,6 +386,10 @@ class MaterialNode extends Node {
|
|
|
386
386
|
|
|
387
387
|
node = this.getTexture( scope ).r.sub( 1.0 ).mul( this.getFloat( 'aoMapIntensity' ) ).add( 1.0 );
|
|
388
388
|
|
|
389
|
+
} else if ( scope === MaterialNode.LINE_DASH_OFFSET ) {
|
|
390
|
+
|
|
391
|
+
node = ( material.dashOffset ) ? this.getFloat( scope ) : float( 0 );
|
|
392
|
+
|
|
389
393
|
} else {
|
|
390
394
|
|
|
391
395
|
const outputType = this.getNodeType( builder );
|
|
@@ -123,7 +123,7 @@ export const modelWorldMatrixInverse = /*@__PURE__*/ uniform( new Matrix4() ).on
|
|
|
123
123
|
*/
|
|
124
124
|
export const modelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
125
125
|
|
|
126
|
-
return builder.renderer.
|
|
126
|
+
return builder.renderer.overrideNodes.modelViewMatrix || mediumpModelViewMatrix;
|
|
127
127
|
|
|
128
128
|
} ).once() )().toVar( 'modelViewMatrix' );
|
|
129
129
|
|