@plastic-software/three 0.181.3 → 0.183.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +11330 -10017
- package/build/three.core.js +10011 -9493
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1414 -631
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +21 -13
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +8007 -5427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +8005 -5426
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -3
- package/examples/jsm/animation/CCDIKSolver.js +2 -2
- package/examples/jsm/controls/ArcballControls.js +3 -3
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +109 -6
- package/examples/jsm/controls/TrackballControls.js +6 -6
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +131 -4
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Inspector.js +74 -14
- package/examples/jsm/inspector/RendererInspector.js +12 -2
- package/examples/jsm/inspector/tabs/Console.js +41 -7
- package/examples/jsm/inspector/tabs/Parameters.js +18 -2
- package/examples/jsm/inspector/tabs/Performance.js +2 -2
- package/examples/jsm/inspector/tabs/Viewer.js +4 -4
- package/examples/jsm/inspector/ui/Profiler.js +1836 -31
- package/examples/jsm/inspector/ui/Style.js +973 -14
- package/examples/jsm/inspector/ui/Tab.js +188 -1
- package/examples/jsm/inspector/ui/Values.js +17 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +6 -5
- package/examples/jsm/lines/LineMaterial.js +6 -0
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +5 -5
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -4
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +122 -171
- package/examples/jsm/loaders/HDRLoader.js +0 -1
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +19 -3
- package/examples/jsm/loaders/LDrawLoader.js +2 -3
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/SVGLoader.js +1 -1
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +37 -24
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/usd/USDAParser.js +447 -366
- package/examples/jsm/loaders/usd/USDCParser.js +1841 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Sky.js +76 -4
- package/examples/jsm/objects/SkyMesh.js +127 -10
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +268 -30
- package/examples/jsm/renderers/SVGRenderer.js +193 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +61 -4
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +1 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/examples/jsm/tsl/display/BloomNode.js +16 -6
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +5 -4
- package/examples/jsm/tsl/display/GaussianBlurNode.js +11 -2
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +3 -3
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +8 -20
- package/examples/jsm/tsl/display/SSRNode.js +8 -8
- package/examples/jsm/tsl/display/SSSNode.js +6 -4
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TRAANode.js +273 -125
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/math/Bayer.js +40 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/package.json +20 -26
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +19 -11
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +90 -5
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +56 -4
- package/src/core/Raycaster.js +2 -2
- package/src/core/RenderTarget.js +3 -4
- package/src/extras/PMREMGenerator.js +7 -18
- package/src/extras/TextureUtils.js +5 -1
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/FileLoader.js +1 -1
- package/src/loaders/ImageBitmapLoader.js +8 -3
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/MaterialLoader.js +2 -1
- package/src/loaders/ObjectLoader.js +21 -2
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +7 -7
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +72 -25
- package/src/materials/nodes/manager/NodeMaterialObserver.js +10 -4
- package/src/math/Line3.js +3 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix4.js +74 -65
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Vector3.js +3 -5
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +87 -68
- package/src/nodes/TSL.js +6 -6
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +98 -12
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +20 -1
- package/src/nodes/accessors/InstanceNode.js +148 -43
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +4 -4
- package/src/nodes/accessors/ReferenceNode.js +4 -4
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +4 -21
- package/src/nodes/accessors/StorageTextureNode.js +37 -1
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +58 -22
- package/src/nodes/accessors/UniformArrayNode.js +4 -2
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionNode.js +1 -2
- package/src/nodes/core/ArrayNode.js +20 -1
- package/src/nodes/core/AssignNode.js +2 -2
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +103 -4
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +29 -3
- package/src/nodes/core/NodeBuilder.js +170 -53
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +10 -8
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +3 -3
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +65 -16
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +16 -2
- package/src/nodes/core/StructTypeNode.js +11 -17
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +47 -22
- package/src/nodes/core/VaryingNode.js +1 -18
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +39 -4
- package/src/nodes/display/PassNode.js +98 -9
- package/src/nodes/display/RenderOutputNode.js +3 -3
- package/src/nodes/display/ScreenNode.js +3 -1
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportTextureNode.js +21 -4
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/geometry/RangeNode.js +4 -2
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -2
- package/src/nodes/gpgpu/ComputeNode.js +5 -4
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +2 -2
- package/src/nodes/lighting/PointShadowNode.js +162 -149
- package/src/nodes/lighting/ShadowFilterNode.js +53 -65
- package/src/nodes/lighting/ShadowNode.js +97 -41
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +2 -2
- package/src/nodes/math/MathNode.js +3 -40
- package/src/nodes/math/OperatorNode.js +2 -1
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLCore.js +17 -14
- package/src/nodes/utils/ArrayElementNode.js +13 -0
- package/src/nodes/utils/DebugNode.js +11 -11
- package/src/nodes/utils/EventNode.js +1 -2
- package/src/nodes/utils/JoinNode.js +2 -2
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +3 -4
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +27 -14
- package/src/objects/InstancedMesh.js +11 -0
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +9 -0
- package/src/renderers/WebGLRenderer.js +178 -92
- package/src/renderers/common/Backend.js +29 -0
- package/src/renderers/common/Background.js +24 -11
- package/src/renderers/common/BindGroup.js +1 -9
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +27 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/CubeRenderTarget.js +50 -6
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +4 -4
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/RenderBundles.js +2 -1
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +15 -3
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +18 -2
- package/src/renderers/common/RenderPipeline.js +203 -17
- package/src/renderers/common/Renderer.js +257 -72
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +17 -1
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +61 -0
- package/src/renderers/common/XRManager.js +3 -2
- package/src/renderers/common/extras/PMREMGenerator.js +2 -8
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +18 -6
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -51
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +0 -3
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLCapabilities.js +3 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +45 -109
- package/src/renderers/webgl/WebGLPrograms.js +45 -49
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +32 -37
- package/src/renderers/webgl/WebGLTextures.js +89 -28
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +148 -18
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +156 -35
- package/src/renderers/webgl-fallback/utils/WebGLState.js +181 -5
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +5 -3
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +9 -9
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +119 -13
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +322 -68
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -17
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +65 -42
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +17 -11
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +3 -3
- package/src/utils.js +258 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
package/src/core/Object3D.js
CHANGED
|
@@ -242,7 +242,8 @@ class Object3D extends EventDispatcher {
|
|
|
242
242
|
|
|
243
243
|
/**
|
|
244
244
|
* When set to `true`, the engine automatically computes the local matrix from position,
|
|
245
|
-
* rotation and scale every frame.
|
|
245
|
+
* rotation and scale every frame. If set to `false`, the app is responsible for recomputing
|
|
246
|
+
* the local matrix by calling `updateMatrix()`.
|
|
246
247
|
*
|
|
247
248
|
* The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
|
|
248
249
|
*
|
|
@@ -253,7 +254,8 @@ class Object3D extends EventDispatcher {
|
|
|
253
254
|
|
|
254
255
|
/**
|
|
255
256
|
* When set to `true`, the engine automatically computes the world matrix from the current local
|
|
256
|
-
* matrix and the object's transformation hierarchy.
|
|
257
|
+
* matrix and the object's transformation hierarchy. If set to `false`, the app is responsible for
|
|
258
|
+
* recomputing the world matrix by directly updating the `matrixWorld` property.
|
|
257
259
|
*
|
|
258
260
|
* The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
|
|
259
261
|
*
|
|
@@ -354,6 +356,19 @@ class Object3D extends EventDispatcher {
|
|
|
354
356
|
*/
|
|
355
357
|
this.customDistanceMaterial = undefined;
|
|
356
358
|
|
|
359
|
+
/**
|
|
360
|
+
* Whether the 3D object is supposed to be static or not. If set to `true`, it means
|
|
361
|
+
* the 3D object is not going to be changed after the initial renderer. This includes
|
|
362
|
+
* geometry and material settings. A static 3D object can be processed by the renderer
|
|
363
|
+
* slightly faster since certain state checks can be bypassed.
|
|
364
|
+
*
|
|
365
|
+
* Only relevant in context of {@link WebGPURenderer}.
|
|
366
|
+
*
|
|
367
|
+
* @type {boolean}
|
|
368
|
+
* @default false
|
|
369
|
+
*/
|
|
370
|
+
this.static = false;
|
|
371
|
+
|
|
357
372
|
/**
|
|
358
373
|
* An object that can be used to store custom data about the 3D object. It
|
|
359
374
|
* should not hold references to functions as these will not be cloned.
|
|
@@ -362,6 +377,16 @@ class Object3D extends EventDispatcher {
|
|
|
362
377
|
*/
|
|
363
378
|
this.userData = {};
|
|
364
379
|
|
|
380
|
+
/**
|
|
381
|
+
* The pivot point for rotation and scale transformations.
|
|
382
|
+
* When set, rotation and scale are applied around this point
|
|
383
|
+
* instead of the object's origin.
|
|
384
|
+
*
|
|
385
|
+
* @type {?Vector3}
|
|
386
|
+
* @default null
|
|
387
|
+
*/
|
|
388
|
+
this.pivot = null;
|
|
389
|
+
|
|
365
390
|
}
|
|
366
391
|
|
|
367
392
|
/**
|
|
@@ -644,7 +669,7 @@ class Object3D extends EventDispatcher {
|
|
|
644
669
|
}
|
|
645
670
|
|
|
646
671
|
/**
|
|
647
|
-
* Converts the given vector from this 3D object's
|
|
672
|
+
* Converts the given vector from this 3D object's world space to local space.
|
|
648
673
|
*
|
|
649
674
|
* @param {Vector3} vector - The vector to convert.
|
|
650
675
|
* @return {Vector3} The converted vector.
|
|
@@ -1109,6 +1134,19 @@ class Object3D extends EventDispatcher {
|
|
|
1109
1134
|
|
|
1110
1135
|
this.matrix.compose( this.position, this.quaternion, this.scale );
|
|
1111
1136
|
|
|
1137
|
+
const pivot = this.pivot;
|
|
1138
|
+
|
|
1139
|
+
if ( pivot !== null ) {
|
|
1140
|
+
|
|
1141
|
+
const px = pivot.x, py = pivot.y, pz = pivot.z;
|
|
1142
|
+
const te = this.matrix.elements;
|
|
1143
|
+
|
|
1144
|
+
te[ 12 ] += px - te[ 0 ] * px - te[ 4 ] * py - te[ 8 ] * pz;
|
|
1145
|
+
te[ 13 ] += py - te[ 1 ] * px - te[ 5 ] * py - te[ 9 ] * pz;
|
|
1146
|
+
te[ 14 ] += pz - te[ 2 ] * px - te[ 6 ] * py - te[ 10 ] * pz;
|
|
1147
|
+
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1112
1150
|
this.matrixWorldNeedsUpdate = true;
|
|
1113
1151
|
|
|
1114
1152
|
}
|
|
@@ -1122,7 +1160,7 @@ class Object3D extends EventDispatcher {
|
|
|
1122
1160
|
* `true` by default. Set these flags to `false` if you need more control over the update matrix process.
|
|
1123
1161
|
*
|
|
1124
1162
|
* @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
|
|
1125
|
-
* when {@link Object3D#
|
|
1163
|
+
* when {@link Object3D#matrixWorldNeedsUpdate} is `false`.
|
|
1126
1164
|
*/
|
|
1127
1165
|
updateMatrixWorld( force ) {
|
|
1128
1166
|
|
|
@@ -1267,14 +1305,20 @@ class Object3D extends EventDispatcher {
|
|
|
1267
1305
|
if ( this.visible === false ) object.visible = false;
|
|
1268
1306
|
if ( this.frustumCulled === false ) object.frustumCulled = false;
|
|
1269
1307
|
if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;
|
|
1308
|
+
if ( this.static !== false ) object.static = this.static;
|
|
1270
1309
|
if ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;
|
|
1271
1310
|
|
|
1272
1311
|
object.layers = this.layers.mask;
|
|
1273
1312
|
object.matrix = this.matrix.toArray();
|
|
1274
1313
|
object.up = this.up.toArray();
|
|
1275
1314
|
|
|
1315
|
+
if ( this.pivot !== null ) object.pivot = this.pivot.toArray();
|
|
1316
|
+
|
|
1276
1317
|
if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;
|
|
1277
1318
|
|
|
1319
|
+
if ( this.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, this.morphTargetDictionary );
|
|
1320
|
+
if ( this.morphTargetInfluences !== undefined ) object.morphTargetInfluences = this.morphTargetInfluences.slice();
|
|
1321
|
+
|
|
1278
1322
|
// object specific properties
|
|
1279
1323
|
|
|
1280
1324
|
if ( this.isInstancedMesh ) {
|
|
@@ -1548,6 +1592,12 @@ class Object3D extends EventDispatcher {
|
|
|
1548
1592
|
this.quaternion.copy( source.quaternion );
|
|
1549
1593
|
this.scale.copy( source.scale );
|
|
1550
1594
|
|
|
1595
|
+
if ( source.pivot !== null ) {
|
|
1596
|
+
|
|
1597
|
+
this.pivot = source.pivot.clone();
|
|
1598
|
+
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1551
1601
|
this.matrix.copy( source.matrix );
|
|
1552
1602
|
this.matrixWorld.copy( source.matrixWorld );
|
|
1553
1603
|
|
|
@@ -1565,6 +1615,8 @@ class Object3D extends EventDispatcher {
|
|
|
1565
1615
|
this.frustumCulled = source.frustumCulled;
|
|
1566
1616
|
this.renderOrder = source.renderOrder;
|
|
1567
1617
|
|
|
1618
|
+
this.static = source.static;
|
|
1619
|
+
|
|
1568
1620
|
this.animations = source.animations.slice();
|
|
1569
1621
|
|
|
1570
1622
|
this.userData = JSON.parse( JSON.stringify( source.userData ) );
|
package/src/core/Raycaster.js
CHANGED
|
@@ -38,7 +38,7 @@ class Raycaster {
|
|
|
38
38
|
this.near = near;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* All results returned are
|
|
41
|
+
* All results returned are closer than far. Far can't be lower than near.
|
|
42
42
|
*
|
|
43
43
|
* @type {number}
|
|
44
44
|
* @default Infinity
|
|
@@ -167,7 +167,7 @@ class Raycaster {
|
|
|
167
167
|
* @property {Object3D} object - The 3D object that has been intersected.
|
|
168
168
|
* @property {Vector2} uv - U,V coordinates at point of intersection.
|
|
169
169
|
* @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.
|
|
170
|
-
* @property {Vector3}
|
|
170
|
+
* @property {Vector3} normal - Interpolated normal vector at point of intersection.
|
|
171
171
|
* @property {number} instanceId - The index number of the instance where the ray
|
|
172
172
|
* intersects the {@link InstancedMesh}.
|
|
173
173
|
*/
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -124,10 +124,6 @@ class RenderTarget extends EventDispatcher {
|
|
|
124
124
|
*/
|
|
125
125
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
126
126
|
|
|
127
|
-
const image = { width: width, height: height, depth: options.depth };
|
|
128
|
-
|
|
129
|
-
const texture = new Texture( image );
|
|
130
|
-
|
|
131
127
|
/**
|
|
132
128
|
* An array of textures. Each color attachment is represented as a separate texture.
|
|
133
129
|
* Has at least a single entry for the default color attachment.
|
|
@@ -136,6 +132,9 @@ class RenderTarget extends EventDispatcher {
|
|
|
136
132
|
*/
|
|
137
133
|
this.textures = [];
|
|
138
134
|
|
|
135
|
+
const image = { width: width, height: height, depth: options.depth };
|
|
136
|
+
const texture = new Texture( image );
|
|
137
|
+
|
|
139
138
|
const count = options.count;
|
|
140
139
|
for ( let i = 0; i < count; i ++ ) {
|
|
141
140
|
|
|
@@ -103,7 +103,7 @@ class PMREMGenerator {
|
|
|
103
103
|
* @param {number} [far=100] - The far plane distance.
|
|
104
104
|
* @param {Object} [options={}] - The configuration options.
|
|
105
105
|
* @param {number} [options.size=256] - The texture size of the PMREM.
|
|
106
|
-
* @param {Vector3} [options.
|
|
106
|
+
* @param {Vector3} [options.position=origin] - The position of the internal cube camera that renders the scene.
|
|
107
107
|
* @return {WebGLRenderTarget} The resulting PMREM.
|
|
108
108
|
*/
|
|
109
109
|
fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {
|
|
@@ -314,6 +314,7 @@ class PMREMGenerator {
|
|
|
314
314
|
( { lodMeshes: this._lodMeshes, sizeLods: this._sizeLods, sigmas: this._sigmas } = _createPlanes( _lodMax ) );
|
|
315
315
|
|
|
316
316
|
this._blurMaterial = _getBlurShader( _lodMax, width, height );
|
|
317
|
+
this._ggxMaterial = _getGGXShader( _lodMax, width, height );
|
|
317
318
|
|
|
318
319
|
}
|
|
319
320
|
|
|
@@ -519,14 +520,6 @@ class PMREMGenerator {
|
|
|
519
520
|
const renderer = this._renderer;
|
|
520
521
|
const pingPongRenderTarget = this._pingPongRenderTarget;
|
|
521
522
|
|
|
522
|
-
if ( this._ggxMaterial === null ) {
|
|
523
|
-
|
|
524
|
-
const width = 3 * Math.max( this._cubeSize, 16 );
|
|
525
|
-
const height = 4 * this._cubeSize;
|
|
526
|
-
this._ggxMaterial = _getGGXShader( this._lodMax, width, height );
|
|
527
|
-
|
|
528
|
-
}
|
|
529
|
-
|
|
530
523
|
const ggxMaterial = this._ggxMaterial;
|
|
531
524
|
const ggxMesh = this._lodMeshes[ lodOut ];
|
|
532
525
|
ggxMesh.material = ggxMaterial;
|
|
@@ -539,7 +532,7 @@ class PMREMGenerator {
|
|
|
539
532
|
const incrementalRoughness = Math.sqrt( targetRoughness * targetRoughness - sourceRoughness * sourceRoughness );
|
|
540
533
|
|
|
541
534
|
// Apply blur strength mapping for better quality across the roughness range
|
|
542
|
-
const blurStrength = 0.
|
|
535
|
+
const blurStrength = 0.0 + targetRoughness * 1.25;
|
|
543
536
|
const adjustedRoughness = incrementalRoughness * blurStrength;
|
|
544
537
|
|
|
545
538
|
// Calculate viewport position based on output LOD level
|
|
@@ -852,24 +845,20 @@ function _getGGXShader( lodMax, width, height ) {
|
|
|
852
845
|
vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) {
|
|
853
846
|
float alpha = roughness * roughness;
|
|
854
847
|
|
|
855
|
-
// Section 3.2: Transform view direction to hemisphere configuration
|
|
856
|
-
vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z));
|
|
857
|
-
|
|
858
848
|
// Section 4.1: Orthonormal basis
|
|
859
|
-
|
|
860
|
-
vec3
|
|
861
|
-
vec3 T2 = cross(Vh, T1);
|
|
849
|
+
vec3 T1 = vec3(1.0, 0.0, 0.0);
|
|
850
|
+
vec3 T2 = cross(V, T1);
|
|
862
851
|
|
|
863
852
|
// Section 4.2: Parameterization of projected area
|
|
864
853
|
float r = sqrt(Xi.x);
|
|
865
854
|
float phi = 2.0 * PI * Xi.y;
|
|
866
855
|
float t1 = r * cos(phi);
|
|
867
856
|
float t2 = r * sin(phi);
|
|
868
|
-
float s = 0.5 * (1.0 +
|
|
857
|
+
float s = 0.5 * (1.0 + V.z);
|
|
869
858
|
t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2;
|
|
870
859
|
|
|
871
860
|
// Section 4.3: Reprojection onto hemisphere
|
|
872
|
-
vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) *
|
|
861
|
+
vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * V;
|
|
873
862
|
|
|
874
863
|
// Section 3.4: Transform back to ellipsoid configuration
|
|
875
864
|
return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z)));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
|
|
1
|
+
import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, R11_EAC_Format, SIGNED_R11_EAC_Format, RG11_EAC_Format, SIGNED_RG11_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Scales the texture as large as possible within its surface without cropping
|
|
@@ -140,8 +140,12 @@ function getByteLength( width, height, format, type ) {
|
|
|
140
140
|
// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/
|
|
141
141
|
case RGB_ETC1_Format:
|
|
142
142
|
case RGB_ETC2_Format:
|
|
143
|
+
case R11_EAC_Format:
|
|
144
|
+
case SIGNED_R11_EAC_Format:
|
|
143
145
|
return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;
|
|
144
146
|
case RGBA_ETC2_EAC_Format:
|
|
147
|
+
case RG11_EAC_Format:
|
|
148
|
+
case SIGNED_RG11_EAC_Format:
|
|
145
149
|
return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;
|
|
146
150
|
|
|
147
151
|
// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/
|
|
@@ -112,9 +112,9 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
112
112
|
|
|
113
113
|
// SETUP TNB variables
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
const isClosed = extrudePath.isCatmullRomCurve3 ? extrudePath.closed : false;
|
|
116
116
|
|
|
117
|
-
splineTube = extrudePath.computeFrenetFrames( steps,
|
|
117
|
+
splineTube = extrudePath.computeFrenetFrames( steps, isClosed );
|
|
118
118
|
|
|
119
119
|
// log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
|
|
120
120
|
|
|
@@ -339,7 +339,7 @@ class PolyhedronGeometry extends BufferGeometry {
|
|
|
339
339
|
*/
|
|
340
340
|
static fromJSON( data ) {
|
|
341
341
|
|
|
342
|
-
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.
|
|
342
|
+
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.detail );
|
|
343
343
|
|
|
344
344
|
}
|
|
345
345
|
|
|
@@ -25,8 +25,10 @@ class TorusGeometry extends BufferGeometry {
|
|
|
25
25
|
* @param {number} [radialSegments=12] - The number of radial segments.
|
|
26
26
|
* @param {number} [tubularSegments=48] - The number of tubular segments.
|
|
27
27
|
* @param {number} [arc=Math.PI*2] - Central angle in radians.
|
|
28
|
+
* @param {number} [thetaStart=0] - Start of the tubular sweep in radians.
|
|
29
|
+
* @param {number} [thetaLength=Math.PI*2] - Length of the tubular sweep in radians.
|
|
28
30
|
*/
|
|
29
|
-
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {
|
|
31
|
+
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
30
32
|
|
|
31
33
|
super();
|
|
32
34
|
|
|
@@ -44,7 +46,9 @@ class TorusGeometry extends BufferGeometry {
|
|
|
44
46
|
tube: tube,
|
|
45
47
|
radialSegments: radialSegments,
|
|
46
48
|
tubularSegments: tubularSegments,
|
|
47
|
-
arc: arc
|
|
49
|
+
arc: arc,
|
|
50
|
+
thetaStart: thetaStart,
|
|
51
|
+
thetaLength: thetaLength,
|
|
48
52
|
};
|
|
49
53
|
|
|
50
54
|
radialSegments = Math.floor( radialSegments );
|
|
@@ -67,10 +71,11 @@ class TorusGeometry extends BufferGeometry {
|
|
|
67
71
|
|
|
68
72
|
for ( let j = 0; j <= radialSegments; j ++ ) {
|
|
69
73
|
|
|
74
|
+
const v = thetaStart + ( j / radialSegments ) * thetaLength;
|
|
75
|
+
|
|
70
76
|
for ( let i = 0; i <= tubularSegments; i ++ ) {
|
|
71
77
|
|
|
72
78
|
const u = i / tubularSegments * arc;
|
|
73
|
-
const v = j / radialSegments * Math.PI * 2;
|
|
74
79
|
|
|
75
80
|
// vertex
|
|
76
81
|
|
|
@@ -18,6 +18,9 @@ const _camera = /*@__PURE__*/ new Camera();
|
|
|
18
18
|
*
|
|
19
19
|
* `CameraHelper` must be a child of the scene.
|
|
20
20
|
*
|
|
21
|
+
* When the camera is transformed or its projection matrix is changed, it's necessary
|
|
22
|
+
* to call the `update()` method of the respective helper.
|
|
23
|
+
*
|
|
21
24
|
* ```js
|
|
22
25
|
* const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
|
|
23
26
|
* const helper = new THREE.CameraHelper( camera );
|
|
@@ -11,9 +11,12 @@ const _v3 = /*@__PURE__*/ new Vector3();
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Helper object to assist with visualizing a {@link DirectionalLight}'s
|
|
14
|
-
* effect on the scene. This consists of plane and a line representing the
|
|
14
|
+
* effect on the scene. This consists of a plane and a line representing the
|
|
15
15
|
* light's position and direction.
|
|
16
16
|
*
|
|
17
|
+
* When the directional light or its target are transformed or light properties
|
|
18
|
+
* are changed, it's necessary to call the `update()` method of the respective helper.
|
|
19
|
+
*
|
|
17
20
|
* ```js
|
|
18
21
|
* const light = new THREE.DirectionalLight( 0xFFFFFF );
|
|
19
22
|
* scene.add( light );
|
|
@@ -14,6 +14,9 @@ const _color2 = /*@__PURE__*/ new Color();
|
|
|
14
14
|
* Creates a visual aid consisting of a spherical mesh for a
|
|
15
15
|
* given {@link HemisphereLight}.
|
|
16
16
|
*
|
|
17
|
+
* When the hemisphere light is transformed or its light properties are changed,
|
|
18
|
+
* it's necessary to call the `update()` method of the respective helper.
|
|
19
|
+
*
|
|
17
20
|
* ```js
|
|
18
21
|
* const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
|
|
19
22
|
* const helper = new THREE.HemisphereLightHelper( light, 5 );
|
|
@@ -38,7 +38,7 @@ class PointLightHelper extends Mesh {
|
|
|
38
38
|
/**
|
|
39
39
|
* The light being visualized.
|
|
40
40
|
*
|
|
41
|
-
* @type {
|
|
41
|
+
* @type {PointLight}
|
|
42
42
|
*/
|
|
43
43
|
this.light = light;
|
|
44
44
|
|
|
@@ -57,30 +57,6 @@ class PointLightHelper extends Mesh {
|
|
|
57
57
|
|
|
58
58
|
this.update();
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
/*
|
|
62
|
-
// TODO: delete this comment?
|
|
63
|
-
const distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );
|
|
64
|
-
const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );
|
|
65
|
-
|
|
66
|
-
this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );
|
|
67
|
-
this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );
|
|
68
|
-
|
|
69
|
-
const d = light.distance;
|
|
70
|
-
|
|
71
|
-
if ( d === 0.0 ) {
|
|
72
|
-
|
|
73
|
-
this.lightDistance.visible = false;
|
|
74
|
-
|
|
75
|
-
} else {
|
|
76
|
-
|
|
77
|
-
this.lightDistance.scale.set( d, d, d );
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
this.add( this.lightDistance );
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
60
|
}
|
|
85
61
|
|
|
86
62
|
/**
|
|
@@ -10,6 +10,9 @@ const _vector = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
/**
|
|
11
11
|
* This displays a cone shaped helper object for a {@link SpotLight}.
|
|
12
12
|
*
|
|
13
|
+
* When the spot light or its target are transformed or light properties are
|
|
14
|
+
* changed, it's necessary to call the `update()` method of the respective helper.
|
|
15
|
+
*
|
|
13
16
|
* ```js
|
|
14
17
|
* const spotLight = new THREE.SpotLight( 0xffffff );
|
|
15
18
|
* spotLight.position.set( 10, 10, 10 );
|
|
@@ -80,6 +80,8 @@ class DirectionalLight extends Light {
|
|
|
80
80
|
|
|
81
81
|
dispose() {
|
|
82
82
|
|
|
83
|
+
super.dispose();
|
|
84
|
+
|
|
83
85
|
this.shadow.dispose();
|
|
84
86
|
|
|
85
87
|
}
|
|
@@ -95,6 +97,17 @@ class DirectionalLight extends Light {
|
|
|
95
97
|
|
|
96
98
|
}
|
|
97
99
|
|
|
100
|
+
toJSON( meta ) {
|
|
101
|
+
|
|
102
|
+
const data = super.toJSON( meta );
|
|
103
|
+
|
|
104
|
+
data.object.shadow = this.shadow.toJSON();
|
|
105
|
+
data.object.target = this.target.uuid;
|
|
106
|
+
|
|
107
|
+
return data;
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
98
111
|
}
|
|
99
112
|
|
|
100
113
|
export { DirectionalLight };
|
package/src/lights/Light.js
CHANGED
|
@@ -54,7 +54,7 @@ class Light extends Object3D {
|
|
|
54
54
|
*/
|
|
55
55
|
dispose() {
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
this.dispatchEvent( { type: 'dispose' } );
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -76,16 +76,6 @@ class Light extends Object3D {
|
|
|
76
76
|
data.object.color = this.color.getHex();
|
|
77
77
|
data.object.intensity = this.intensity;
|
|
78
78
|
|
|
79
|
-
if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();
|
|
80
|
-
|
|
81
|
-
if ( this.distance !== undefined ) data.object.distance = this.distance;
|
|
82
|
-
if ( this.angle !== undefined ) data.object.angle = this.angle;
|
|
83
|
-
if ( this.decay !== undefined ) data.object.decay = this.decay;
|
|
84
|
-
if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;
|
|
85
|
-
|
|
86
|
-
if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();
|
|
87
|
-
if ( this.target !== undefined ) data.object.target = this.target.uuid;
|
|
88
|
-
|
|
89
79
|
return data;
|
|
90
80
|
|
|
91
81
|
}
|
package/src/lights/LightProbe.js
CHANGED
|
@@ -60,21 +60,6 @@ class LightProbe extends Light {
|
|
|
60
60
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
/**
|
|
64
|
-
* Deserializes the light prove from the given JSON.
|
|
65
|
-
*
|
|
66
|
-
* @param {Object} json - The JSON holding the serialized light probe.
|
|
67
|
-
* @return {LightProbe} A reference to this light probe.
|
|
68
|
-
*/
|
|
69
|
-
fromJSON( json ) {
|
|
70
|
-
|
|
71
|
-
this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
|
|
72
|
-
this.sh.fromArray( json.sh );
|
|
73
|
-
|
|
74
|
-
return this;
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
63
|
toJSON( meta ) {
|
|
79
64
|
|
|
80
65
|
const data = super.toJSON( meta );
|
|
@@ -3,7 +3,7 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
5
|
import { Frustum } from '../math/Frustum.js';
|
|
6
|
-
import { UnsignedByteType } from '../constants.js';
|
|
6
|
+
import { UnsignedByteType, WebGPUCoordinateSystem } from '../constants.js';
|
|
7
7
|
|
|
8
8
|
const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
9
9
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
@@ -52,6 +52,16 @@ class LightShadow {
|
|
|
52
52
|
*/
|
|
53
53
|
this.bias = 0;
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* A node version of `bias`. Only supported with `WebGPURenderer`.
|
|
57
|
+
*
|
|
58
|
+
* If a bias node is defined, `bias` has no effect.
|
|
59
|
+
*
|
|
60
|
+
* @type {?Node<float>}
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
63
|
+
this.biasNode = null;
|
|
64
|
+
|
|
55
65
|
/**
|
|
56
66
|
* Defines how much the position used to query the shadow map is offset along
|
|
57
67
|
* the object normal. The default is `0`. Increasing this value can be used to
|
|
@@ -69,9 +79,6 @@ class LightShadow {
|
|
|
69
79
|
* map size will allow for a higher value to be used here before these effects
|
|
70
80
|
* become visible.
|
|
71
81
|
*
|
|
72
|
-
* The property has no effect when the shadow map type is `PCFSoftShadowMap` and
|
|
73
|
-
* and it is recommended to increase softness by decreasing the shadow map size instead.
|
|
74
|
-
*
|
|
75
82
|
* The property has no effect when the shadow map type is `BasicShadowMap`.
|
|
76
83
|
*
|
|
77
84
|
* @type {number}
|
|
@@ -206,12 +213,12 @@ class LightShadow {
|
|
|
206
213
|
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
|
|
207
214
|
this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
|
|
208
215
|
|
|
209
|
-
if ( shadowCamera.reversedDepth ) {
|
|
216
|
+
if ( shadowCamera.coordinateSystem === WebGPUCoordinateSystem || shadowCamera.reversedDepth ) {
|
|
210
217
|
|
|
211
218
|
shadowMatrix.set(
|
|
212
219
|
0.5, 0.0, 0.0, 0.5,
|
|
213
220
|
0.0, 0.5, 0.0, 0.5,
|
|
214
|
-
0.0, 0.0, 1.0, 0.0,
|
|
221
|
+
0.0, 0.0, 1.0, 0.0, // Identity Z (preserving the correct [0, 1] range from the projection matrix)
|
|
215
222
|
0.0, 0.0, 0.0, 1.0
|
|
216
223
|
);
|
|
217
224
|
|
|
@@ -295,6 +302,8 @@ class LightShadow {
|
|
|
295
302
|
|
|
296
303
|
this.mapSize.copy( source.mapSize );
|
|
297
304
|
|
|
305
|
+
this.biasNode = source.biasNode;
|
|
306
|
+
|
|
298
307
|
return this;
|
|
299
308
|
|
|
300
309
|
}
|
package/src/lights/PointLight.js
CHANGED
|
@@ -94,6 +94,8 @@ class PointLight extends Light {
|
|
|
94
94
|
|
|
95
95
|
dispose() {
|
|
96
96
|
|
|
97
|
+
super.dispose();
|
|
98
|
+
|
|
97
99
|
this.shadow.dispose();
|
|
98
100
|
|
|
99
101
|
}
|
|
@@ -111,6 +113,19 @@ class PointLight extends Light {
|
|
|
111
113
|
|
|
112
114
|
}
|
|
113
115
|
|
|
116
|
+
toJSON( meta ) {
|
|
117
|
+
|
|
118
|
+
const data = super.toJSON( meta );
|
|
119
|
+
|
|
120
|
+
data.object.distance = this.distance;
|
|
121
|
+
data.object.decay = this.decay;
|
|
122
|
+
|
|
123
|
+
data.object.shadow = this.shadow.toJSON();
|
|
124
|
+
|
|
125
|
+
return data;
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
114
129
|
}
|
|
115
130
|
|
|
116
131
|
export { PointLight };
|