super-three 0.152.0 → 0.154.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +778 -557
- package/build/three.js +778 -557
- package/build/three.min.js +1 -1
- package/build/three.module.js +769 -539
- package/build/three.module.min.js +1 -1
- package/examples/jsm/cameras/CinematicCamera.js +1 -2
- package/examples/jsm/capabilities/WebGPU.js +15 -1
- package/examples/jsm/controls/ArcballControls.js +2 -1
- package/examples/jsm/controls/FlyControls.js +25 -9
- package/examples/jsm/controls/OrbitControls.js +5 -1
- package/examples/jsm/csm/CSM.js +1 -3
- package/examples/jsm/effects/AnaglyphEffect.js +6 -20
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
- package/examples/jsm/environments/RoomEnvironment.js +6 -2
- package/examples/jsm/exporters/GLTFExporter.js +74 -2
- package/examples/jsm/exporters/USDZExporter.js +170 -129
- package/examples/jsm/helpers/ViewHelper.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +5 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -1
- package/examples/jsm/loaders/DRACOLoader.js +2 -0
- package/examples/jsm/loaders/FBXLoader.js +9 -2
- package/examples/jsm/loaders/GLTFLoader.js +230 -94
- package/examples/jsm/loaders/KTX2Loader.js +106 -47
- package/examples/jsm/loaders/LDrawLoader.js +4 -7
- package/examples/jsm/loaders/MMDLoader.js +40 -13
- package/examples/jsm/loaders/PCDLoader.js +25 -10
- package/examples/jsm/loaders/PDBLoader.js +7 -2
- package/examples/jsm/loaders/PLYLoader.js +30 -8
- package/examples/jsm/loaders/STLLoader.js +8 -3
- package/examples/jsm/loaders/VRMLLoader.js +55 -7
- package/examples/jsm/loaders/VTKLoader.js +12 -4
- package/examples/jsm/loaders/XYZLoader.js +9 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -2
- package/examples/jsm/math/Lut.js +5 -4
- package/examples/jsm/math/MeshSurfaceSampler.js +82 -37
- package/examples/jsm/misc/GPUComputationRenderer.js +1 -0
- package/examples/jsm/misc/VolumeSlice.js +3 -1
- package/examples/jsm/nodes/Nodes.js +22 -16
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
- package/examples/jsm/nodes/accessors/BufferNode.js +2 -2
- package/examples/jsm/nodes/accessors/CameraNode.js +25 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +7 -1
- package/examples/jsm/nodes/accessors/InstanceNode.js +29 -12
- package/examples/jsm/nodes/accessors/MaterialNode.js +55 -47
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -2
- package/examples/jsm/nodes/accessors/ModelNode.js +3 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +4 -9
- package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +3 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +10 -2
- package/examples/jsm/nodes/accessors/ReferenceNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +43 -62
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +2 -2
- package/examples/jsm/nodes/accessors/TangentNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +68 -6
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/code/CodeNode.js +3 -0
- package/examples/jsm/nodes/code/FunctionNode.js +25 -4
- package/examples/jsm/nodes/core/AttributeNode.js +1 -1
- package/examples/jsm/nodes/core/BypassNode.js +2 -2
- package/examples/jsm/nodes/core/ContextNode.js +2 -0
- package/examples/jsm/nodes/core/IndexNode.js +66 -0
- package/examples/jsm/nodes/core/LightingModel.js +2 -1
- package/examples/jsm/nodes/core/Node.js +13 -16
- package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +86 -8
- package/examples/jsm/nodes/core/NodeUtils.js +10 -0
- package/examples/jsm/nodes/core/PropertyNode.js +6 -2
- package/examples/jsm/nodes/core/StackNode.js +8 -1
- package/examples/jsm/nodes/core/UniformNode.js +1 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -3
- package/examples/jsm/nodes/display/BlendModeNode.js +9 -9
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +7 -7
- package/examples/jsm/nodes/display/ColorSpaceNode.js +50 -49
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -3
- package/examples/jsm/nodes/display/ToneMappingNode.js +24 -15
- package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +7 -6
- package/examples/jsm/nodes/display/ViewportTextureNode.js +33 -19
- package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +5 -5
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -8
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +4 -4
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +2 -2
- package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +2 -4
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/examples/jsm/nodes/functions/PhongLightingModel.js +7 -7
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +132 -19
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/examples/jsm/nodes/functions/material/getRoughness.js +3 -3
- package/examples/jsm/nodes/geometry/RangeNode.js +33 -51
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +6 -3
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +107 -62
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightUtils.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +17 -15
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +3 -3
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -15
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -15
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -10
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -9
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +41 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +1 -14
- package/examples/jsm/nodes/materials/NodeMaterial.js +119 -29
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -9
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -14
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -4
- package/examples/jsm/nodes/math/MathNode.js +6 -0
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +60 -33
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -3
- package/examples/jsm/nodes/utils/LoopNode.js +186 -0
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +1 -1
- package/examples/jsm/objects/GroundProjectedSkybox.js +1 -1
- package/examples/jsm/objects/Lensflare.js +3 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -1
- package/examples/jsm/objects/Reflector.js +4 -1
- package/examples/jsm/objects/Refractor.js +1 -1
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +2 -1
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/offscreen/scene.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +93 -133
- package/examples/jsm/postprocessing/AfterimagePass.js +3 -0
- package/examples/jsm/postprocessing/BloomPass.js +7 -2
- package/examples/jsm/postprocessing/BokehPass.js +3 -2
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -1
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +8 -9
- package/examples/jsm/postprocessing/OutputPass.js +72 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +4 -2
- package/examples/jsm/postprocessing/SMAAPass.js +5 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +5 -13
- package/examples/jsm/postprocessing/SSAOPass.js +4 -2
- package/examples/jsm/postprocessing/SSRPass.js +3 -1
- package/examples/jsm/postprocessing/SavePass.js +5 -2
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +17 -4
- package/examples/jsm/postprocessing/TexturePass.js +2 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +13 -13
- package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +2 -2
- package/examples/jsm/renderers/common/Attributes.js +75 -0
- package/examples/jsm/renderers/common/Backend.js +162 -0
- package/examples/jsm/renderers/common/Background.js +134 -0
- package/examples/jsm/renderers/common/Binding.js +11 -0
- package/examples/jsm/renderers/common/Bindings.js +169 -0
- package/examples/jsm/renderers/common/Buffer.js +38 -0
- package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
- package/examples/jsm/renderers/{webgpu/WebGPUWeakMap.js → common/ChainMap.js} +11 -5
- package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
- package/examples/jsm/renderers/common/Constants.js +14 -0
- package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
- package/examples/jsm/renderers/common/DataMap.js +54 -0
- package/examples/jsm/renderers/{webgpu/WebGPUGeometries.js → common/Geometries.js} +38 -37
- package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
- package/examples/jsm/renderers/common/Pipeline.js +13 -0
- package/examples/jsm/renderers/common/Pipelines.js +321 -0
- package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
- package/examples/jsm/renderers/common/RenderContext.js +37 -0
- package/examples/jsm/renderers/common/RenderContexts.js +38 -0
- package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +2 -39
- package/examples/jsm/renderers/common/RenderLists.js +38 -0
- package/examples/jsm/renderers/common/RenderObject.js +113 -0
- package/examples/jsm/renderers/common/RenderObjects.js +92 -0
- package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
- package/examples/jsm/renderers/{webgpu/WebGPURenderTarget.js → common/RenderTarget.js} +2 -2
- package/examples/jsm/renderers/common/Renderer.js +864 -0
- package/examples/jsm/renderers/common/SampledTexture.js +80 -0
- package/examples/jsm/renderers/common/Sampler.js +18 -0
- package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +206 -0
- package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
- package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
- package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodes.js → common/nodes/NodeRender.js} +3 -3
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
- package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +23 -19
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +847 -0
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -1131
- package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +75 -45
- package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
- package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +255 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
- package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +6 -7
- package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +154 -247
- package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +3 -25
- package/examples/jsm/renderers/webgpu/{WebGPUTextures.js → utils/WebGPUTextureUtils.js} +392 -505
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
- package/examples/jsm/shaders/BleachBypassShader.js +2 -0
- package/examples/jsm/shaders/BlendShader.js +1 -2
- package/examples/jsm/shaders/BokehShader2.js +3 -0
- package/examples/jsm/shaders/ColorifyShader.js +2 -0
- package/examples/jsm/shaders/ConvolutionShader.js +2 -0
- package/examples/jsm/shaders/CopyShader.js +4 -2
- package/examples/jsm/shaders/DotScreenShader.js +2 -0
- package/examples/jsm/shaders/ExposureShader.js +44 -0
- package/examples/jsm/shaders/FilmShader.js +2 -0
- package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
- package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
- package/examples/jsm/shaders/OutputShader.js +61 -0
- package/examples/jsm/shaders/RGBShiftShader.js +2 -0
- package/examples/jsm/shaders/SepiaShader.js +2 -0
- package/examples/jsm/shaders/ToonShader.js +13 -5
- package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
- package/examples/jsm/shaders/VignetteShader.js +2 -0
- package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +17 -1
- package/examples/jsm/utils/TextureUtils.js +86 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
- package/examples/jsm/webxr/XRPlanes.js +100 -0
- package/package.json +3 -1
- package/src/Three.Legacy.js +0 -228
- package/src/audio/PositionalAudio.js +8 -0
- package/src/cameras/Camera.js +5 -0
- package/src/cameras/CubeCamera.js +76 -13
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +13 -1
- package/src/core/BufferAttribute.js +3 -25
- package/src/core/BufferGeometry.js +1 -8
- package/src/core/Object3D.js +1 -1
- package/src/extras/core/Curve.js +1 -1
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/Loader.js +2 -0
- package/src/loaders/MaterialLoader.js +5 -0
- package/src/loaders/ObjectLoader.js +1 -0
- package/src/materials/Material.js +13 -1
- package/src/materials/MeshPhysicalMaterial.js +32 -6
- package/src/math/Color.js +16 -11
- package/src/math/Frustum.js +16 -2
- package/src/math/MathUtils.js +16 -0
- package/src/math/Matrix3.js +26 -6
- package/src/math/Matrix4.js +74 -19
- package/src/objects/InstancedMesh.js +3 -0
- package/src/objects/Mesh.js +14 -10
- package/src/objects/Skeleton.js +1 -3
- package/src/objects/SkinnedMesh.js +36 -8
- package/src/renderers/WebGLRenderer.js +126 -21
- package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
- package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +9 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +10 -2
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +10 -5
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +6 -1
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +7 -1
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +6 -1
- package/src/renderers/shaders/ShaderChunk.js +10 -6
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +12 -2
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/points.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib.js +4 -1
- package/src/renderers/shaders/UniformsLib.js +2 -0
- package/src/renderers/webgl/WebGLBindingStates.js +13 -5
- package/src/renderers/webgl/WebGLGeometries.js +12 -0
- package/src/renderers/webgl/WebGLInfo.js +0 -1
- package/src/renderers/webgl/WebGLMaterials.js +18 -0
- package/src/renderers/webgl/WebGLObjects.js +23 -3
- package/src/renderers/webgl/WebGLProgram.js +43 -5
- package/src/renderers/webgl/WebGLPrograms.js +19 -7
- package/src/renderers/webgl/WebGLTextures.js +19 -1
- package/src/renderers/webvr/WebVRManager.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +39 -99
- package/src/scenes/Scene.js +0 -14
- package/src/textures/DepthTexture.js +22 -0
- package/src/textures/FramebufferTexture.js +1 -3
- package/src/textures/Source.js +4 -0
- package/src/textures/Texture.js +1 -1
- package/examples/jsm/exporters/ColladaExporter.js +0 -725
- package/examples/jsm/geometries/LightningStrike.js +0 -1017
- package/examples/jsm/loaders/PRWMLoader.js +0 -299
- package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -26
- package/examples/jsm/objects/LightningStorm.js +0 -245
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -361
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -197
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -190
- package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -270
- package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
- package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -44
- package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +0 -40
- package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +0 -50
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -274
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -54
- package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -75
- package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
- package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
- package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -38
- package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -88
- package/examples/jsm/shaders/ToneMapShader.js +0 -73
- /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
- /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
|
@@ -9,8 +9,7 @@ import {
|
|
|
9
9
|
WebGLRenderTarget
|
|
10
10
|
} from 'three';
|
|
11
11
|
|
|
12
|
-
import { BokehShader } from '../shaders/BokehShader2.js';
|
|
13
|
-
import { BokehDepthShader } from '../shaders/BokehShader2.js';
|
|
12
|
+
import { BokehShader, BokehDepthShader } from '../shaders/BokehShader2.js';
|
|
14
13
|
|
|
15
14
|
class CinematicCamera extends PerspectiveCamera {
|
|
16
15
|
|
|
@@ -4,11 +4,25 @@ if ( window.GPUShaderStage === undefined ) {
|
|
|
4
4
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
let isAvailable = false;
|
|
8
|
+
|
|
9
|
+
if ( navigator.gpu !== undefined ) {
|
|
10
|
+
|
|
11
|
+
const adapter = await navigator.gpu.requestAdapter();
|
|
12
|
+
|
|
13
|
+
if ( adapter !== null ) {
|
|
14
|
+
|
|
15
|
+
isAvailable = true;
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
7
21
|
class WebGPU {
|
|
8
22
|
|
|
9
23
|
static isAvailable() {
|
|
10
24
|
|
|
11
|
-
return
|
|
25
|
+
return isAvailable;
|
|
12
26
|
|
|
13
27
|
}
|
|
14
28
|
|
|
@@ -199,6 +199,7 @@ class ArcballControls extends EventDispatcher {
|
|
|
199
199
|
this.cursorZoom = false; //if wheel zoom should be cursor centered
|
|
200
200
|
this.minFov = 5;
|
|
201
201
|
this.maxFov = 90;
|
|
202
|
+
this.rotateSpeed = 1;
|
|
202
203
|
|
|
203
204
|
this.enabled = true;
|
|
204
205
|
this.enablePan = true;
|
|
@@ -445,7 +446,7 @@ class ArcballControls extends EventDispatcher {
|
|
|
445
446
|
|
|
446
447
|
const distance = this._startCursorPosition.distanceTo( this._currentCursorPosition );
|
|
447
448
|
const angle = this._startCursorPosition.angleTo( this._currentCursorPosition );
|
|
448
|
-
const amount = Math.max( distance / this._tbRadius, angle ); //effective rotation angle
|
|
449
|
+
const amount = Math.max( distance / this._tbRadius, angle ) * this.rotateSpeed; //effective rotation angle
|
|
449
450
|
|
|
450
451
|
this.applyTransformMatrix( this.rotate( this.calculateRotationAxis( this._startCursorPosition, this._currentCursorPosition ), amount ) );
|
|
451
452
|
|
|
@@ -17,6 +17,9 @@ class FlyControls extends EventDispatcher {
|
|
|
17
17
|
|
|
18
18
|
// API
|
|
19
19
|
|
|
20
|
+
// Set to false to disable this control
|
|
21
|
+
this.enabled = true;
|
|
22
|
+
|
|
20
23
|
this.movementSpeed = 1.0;
|
|
21
24
|
this.rollSpeed = 0.005;
|
|
22
25
|
|
|
@@ -44,7 +47,7 @@ class FlyControls extends EventDispatcher {
|
|
|
44
47
|
|
|
45
48
|
this.keydown = function ( event ) {
|
|
46
49
|
|
|
47
|
-
if ( event.altKey ) {
|
|
50
|
+
if ( event.altKey || this.enabled === false ) {
|
|
48
51
|
|
|
49
52
|
return;
|
|
50
53
|
|
|
@@ -82,6 +85,8 @@ class FlyControls extends EventDispatcher {
|
|
|
82
85
|
|
|
83
86
|
this.keyup = function ( event ) {
|
|
84
87
|
|
|
88
|
+
if ( this.enabled === false ) return;
|
|
89
|
+
|
|
85
90
|
switch ( event.code ) {
|
|
86
91
|
|
|
87
92
|
case 'ShiftLeft':
|
|
@@ -114,6 +119,8 @@ class FlyControls extends EventDispatcher {
|
|
|
114
119
|
|
|
115
120
|
this.pointerdown = function ( event ) {
|
|
116
121
|
|
|
122
|
+
if ( this.enabled === false ) return;
|
|
123
|
+
|
|
117
124
|
if ( this.dragToLook ) {
|
|
118
125
|
|
|
119
126
|
this.status ++;
|
|
@@ -135,6 +142,8 @@ class FlyControls extends EventDispatcher {
|
|
|
135
142
|
|
|
136
143
|
this.pointermove = function ( event ) {
|
|
137
144
|
|
|
145
|
+
if ( this.enabled === false ) return;
|
|
146
|
+
|
|
138
147
|
if ( ! this.dragToLook || this.status > 0 ) {
|
|
139
148
|
|
|
140
149
|
const container = this.getContainerDimensions();
|
|
@@ -152,6 +161,8 @@ class FlyControls extends EventDispatcher {
|
|
|
152
161
|
|
|
153
162
|
this.pointerup = function ( event ) {
|
|
154
163
|
|
|
164
|
+
if ( this.enabled === false ) return;
|
|
165
|
+
|
|
155
166
|
if ( this.dragToLook ) {
|
|
156
167
|
|
|
157
168
|
this.status --;
|
|
@@ -175,8 +186,18 @@ class FlyControls extends EventDispatcher {
|
|
|
175
186
|
|
|
176
187
|
};
|
|
177
188
|
|
|
189
|
+
this.contextMenu = function ( event ) {
|
|
190
|
+
|
|
191
|
+
if ( this.enabled === false ) return;
|
|
192
|
+
|
|
193
|
+
event.preventDefault();
|
|
194
|
+
|
|
195
|
+
};
|
|
196
|
+
|
|
178
197
|
this.update = function ( delta ) {
|
|
179
198
|
|
|
199
|
+
if ( this.enabled === false ) return;
|
|
200
|
+
|
|
180
201
|
const moveMult = delta * scope.movementSpeed;
|
|
181
202
|
const rotMult = delta * scope.rollSpeed;
|
|
182
203
|
|
|
@@ -244,7 +265,7 @@ class FlyControls extends EventDispatcher {
|
|
|
244
265
|
|
|
245
266
|
this.dispose = function () {
|
|
246
267
|
|
|
247
|
-
this.domElement.removeEventListener( 'contextmenu',
|
|
268
|
+
this.domElement.removeEventListener( 'contextmenu', _contextmenu );
|
|
248
269
|
this.domElement.removeEventListener( 'pointerdown', _pointerdown );
|
|
249
270
|
this.domElement.removeEventListener( 'pointermove', _pointermove );
|
|
250
271
|
this.domElement.removeEventListener( 'pointerup', _pointerup );
|
|
@@ -254,13 +275,14 @@ class FlyControls extends EventDispatcher {
|
|
|
254
275
|
|
|
255
276
|
};
|
|
256
277
|
|
|
278
|
+
const _contextmenu = this.contextMenu.bind( this );
|
|
257
279
|
const _pointermove = this.pointermove.bind( this );
|
|
258
280
|
const _pointerdown = this.pointerdown.bind( this );
|
|
259
281
|
const _pointerup = this.pointerup.bind( this );
|
|
260
282
|
const _keydown = this.keydown.bind( this );
|
|
261
283
|
const _keyup = this.keyup.bind( this );
|
|
262
284
|
|
|
263
|
-
this.domElement.addEventListener( 'contextmenu',
|
|
285
|
+
this.domElement.addEventListener( 'contextmenu', _contextmenu );
|
|
264
286
|
this.domElement.addEventListener( 'pointerdown', _pointerdown );
|
|
265
287
|
this.domElement.addEventListener( 'pointermove', _pointermove );
|
|
266
288
|
this.domElement.addEventListener( 'pointerup', _pointerup );
|
|
@@ -275,10 +297,4 @@ class FlyControls extends EventDispatcher {
|
|
|
275
297
|
|
|
276
298
|
}
|
|
277
299
|
|
|
278
|
-
function contextmenu( event ) {
|
|
279
|
-
|
|
280
|
-
event.preventDefault();
|
|
281
|
-
|
|
282
|
-
}
|
|
283
|
-
|
|
284
300
|
export { FlyControls };
|
|
@@ -165,6 +165,7 @@ class OrbitControls extends EventDispatcher {
|
|
|
165
165
|
|
|
166
166
|
const lastPosition = new Vector3();
|
|
167
167
|
const lastQuaternion = new Quaternion();
|
|
168
|
+
const lastTargetPosition = new Vector3();
|
|
168
169
|
|
|
169
170
|
const twoPI = 2 * Math.PI;
|
|
170
171
|
|
|
@@ -278,12 +279,15 @@ class OrbitControls extends EventDispatcher {
|
|
|
278
279
|
|
|
279
280
|
if ( zoomChanged ||
|
|
280
281
|
lastPosition.distanceToSquared( scope.object.position ) > EPS ||
|
|
281
|
-
8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS
|
|
282
|
+
8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||
|
|
283
|
+
lastTargetPosition.distanceToSquared( scope.target ) > 0 ) {
|
|
282
284
|
|
|
283
285
|
scope.dispatchEvent( _changeEvent );
|
|
284
286
|
|
|
285
287
|
lastPosition.copy( scope.object.position );
|
|
286
288
|
lastQuaternion.copy( scope.object.quaternion );
|
|
289
|
+
lastTargetPosition.copy( scope.target );
|
|
290
|
+
|
|
287
291
|
zoomChanged = false;
|
|
288
292
|
|
|
289
293
|
return true;
|
package/examples/jsm/csm/CSM.js
CHANGED
|
@@ -24,8 +24,6 @@ export class CSM {
|
|
|
24
24
|
|
|
25
25
|
constructor( data ) {
|
|
26
26
|
|
|
27
|
-
data = data || {};
|
|
28
|
-
|
|
29
27
|
this.camera = data.camera;
|
|
30
28
|
this.parent = data.parent;
|
|
31
29
|
this.cascades = data.cascades || 3;
|
|
@@ -34,7 +32,7 @@ export class CSM {
|
|
|
34
32
|
this.shadowMapSize = data.shadowMapSize || 2048;
|
|
35
33
|
this.shadowBias = data.shadowBias || 0.000001;
|
|
36
34
|
this.lightDirection = data.lightDirection || new Vector3( 1, - 1, 1 ).normalize();
|
|
37
|
-
this.lightIntensity = data.lightIntensity ||
|
|
35
|
+
this.lightIntensity = data.lightIntensity || 3;
|
|
38
36
|
this.lightNear = data.lightNear || 1;
|
|
39
37
|
this.lightFar = data.lightFar || 2000;
|
|
40
38
|
this.lightMargin = data.lightMargin || 200;
|
|
@@ -75,38 +75,24 @@ class AnaglyphEffect {
|
|
|
75
75
|
'uniform mat3 colorMatrixLeft;',
|
|
76
76
|
'uniform mat3 colorMatrixRight;',
|
|
77
77
|
|
|
78
|
-
// These functions implement sRGB linearization and gamma correction
|
|
79
|
-
|
|
80
|
-
'float lin( float c ) {',
|
|
81
|
-
' return c <= 0.04045 ? c * 0.0773993808 :',
|
|
82
|
-
' pow( c * 0.9478672986 + 0.0521327014, 2.4 );',
|
|
83
|
-
'}',
|
|
84
|
-
|
|
85
|
-
'vec4 lin( vec4 c ) {',
|
|
86
|
-
' return vec4( lin( c.r ), lin( c.g ), lin( c.b ), c.a );',
|
|
87
|
-
'}',
|
|
88
|
-
|
|
89
|
-
'float dev( float c ) {',
|
|
90
|
-
' return c <= 0.0031308 ? c * 12.92',
|
|
91
|
-
' : pow( c, 0.41666 ) * 1.055 - 0.055;',
|
|
92
|
-
'}',
|
|
93
|
-
|
|
94
|
-
|
|
95
78
|
'void main() {',
|
|
96
79
|
|
|
97
80
|
' vec2 uv = vUv;',
|
|
98
81
|
|
|
99
|
-
' vec4 colorL =
|
|
100
|
-
' vec4 colorR =
|
|
82
|
+
' vec4 colorL = texture2D( mapLeft, uv );',
|
|
83
|
+
' vec4 colorR = texture2D( mapRight, uv );',
|
|
101
84
|
|
|
102
85
|
' vec3 color = clamp(',
|
|
103
86
|
' colorMatrixLeft * colorL.rgb +',
|
|
104
87
|
' colorMatrixRight * colorR.rgb, 0., 1. );',
|
|
105
88
|
|
|
106
89
|
' gl_FragColor = vec4(',
|
|
107
|
-
'
|
|
90
|
+
' color.r, color.g, color.b,',
|
|
108
91
|
' max( colorL.a, colorR.a ) );',
|
|
109
92
|
|
|
93
|
+
' #include <tonemapping_fragment>',
|
|
94
|
+
' #include <colorspace_fragment>',
|
|
95
|
+
|
|
110
96
|
'}'
|
|
111
97
|
|
|
112
98
|
].join( '\n' )
|
|
@@ -165,7 +165,7 @@ class OutlineEffect {
|
|
|
165
165
|
' gl_FragColor = vec4( outlineColor, outlineAlpha );',
|
|
166
166
|
|
|
167
167
|
' #include <tonemapping_fragment>',
|
|
168
|
-
' #include <
|
|
168
|
+
' #include <colorspace_fragment>',
|
|
169
169
|
' #include <fog_fragment>',
|
|
170
170
|
' #include <premultiplied_alpha_fragment>',
|
|
171
171
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
|
|
15
15
|
class RoomEnvironment extends Scene {
|
|
16
16
|
|
|
17
|
-
constructor() {
|
|
17
|
+
constructor( renderer = null ) {
|
|
18
18
|
|
|
19
19
|
super();
|
|
20
20
|
|
|
@@ -24,7 +24,11 @@ class RoomEnvironment extends Scene {
|
|
|
24
24
|
const roomMaterial = new MeshStandardMaterial( { side: BackSide } );
|
|
25
25
|
const boxMaterial = new MeshStandardMaterial();
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
let intensity = 5;
|
|
28
|
+
|
|
29
|
+
if ( renderer !== null && renderer.useLegacyLights === false ) intensity = 900;
|
|
30
|
+
|
|
31
|
+
const mainLight = new PointLight( 0xffffff, intensity, 28, 2 );
|
|
28
32
|
mainLight.position.set( 0.418, 16.199, 0.300 );
|
|
29
33
|
this.add( mainLight );
|
|
30
34
|
|
|
@@ -21,8 +21,10 @@ import {
|
|
|
21
21
|
Scene,
|
|
22
22
|
Source,
|
|
23
23
|
SRGBColorSpace,
|
|
24
|
+
CompressedTexture,
|
|
24
25
|
Vector3
|
|
25
26
|
} from 'three';
|
|
27
|
+
import { decompress } from './../utils/TextureUtils.js';
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
/**
|
|
@@ -120,6 +122,12 @@ class GLTFExporter {
|
|
|
120
122
|
|
|
121
123
|
} );
|
|
122
124
|
|
|
125
|
+
this.register( function ( writer ) {
|
|
126
|
+
|
|
127
|
+
return new GLTFMaterialsAnisotropyExtension( writer );
|
|
128
|
+
|
|
129
|
+
} );
|
|
130
|
+
|
|
123
131
|
this.register( function ( writer ) {
|
|
124
132
|
|
|
125
133
|
return new GLTFMaterialsEmissiveStrengthExtension( writer );
|
|
@@ -821,6 +829,18 @@ class GLTFWriter {
|
|
|
821
829
|
|
|
822
830
|
console.warn( 'THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.' );
|
|
823
831
|
|
|
832
|
+
if ( metalnessMap instanceof CompressedTexture ) {
|
|
833
|
+
|
|
834
|
+
metalnessMap = decompress( metalnessMap );
|
|
835
|
+
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
if ( roughnessMap instanceof CompressedTexture ) {
|
|
839
|
+
|
|
840
|
+
roughnessMap = decompress( roughnessMap );
|
|
841
|
+
|
|
842
|
+
}
|
|
843
|
+
|
|
824
844
|
const metalness = metalnessMap ? metalnessMap.image : null;
|
|
825
845
|
const roughness = roughnessMap ? roughnessMap.image : null;
|
|
826
846
|
|
|
@@ -1140,7 +1160,7 @@ class GLTFWriter {
|
|
|
1140
1160
|
|
|
1141
1161
|
} else {
|
|
1142
1162
|
|
|
1143
|
-
throw new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type
|
|
1163
|
+
throw new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type: ' + attribute.array.constructor.name );
|
|
1144
1164
|
|
|
1145
1165
|
}
|
|
1146
1166
|
|
|
@@ -1230,7 +1250,7 @@ class GLTFWriter {
|
|
|
1230
1250
|
|
|
1231
1251
|
if ( format !== RGBAFormat ) {
|
|
1232
1252
|
|
|
1233
|
-
console.error( 'GLTFExporter: Only RGBAFormat is supported.' );
|
|
1253
|
+
console.error( 'GLTFExporter: Only RGBAFormat is supported.', format );
|
|
1234
1254
|
|
|
1235
1255
|
}
|
|
1236
1256
|
|
|
@@ -1338,6 +1358,8 @@ class GLTFWriter {
|
|
|
1338
1358
|
*/
|
|
1339
1359
|
processTexture( map ) {
|
|
1340
1360
|
|
|
1361
|
+
const writer = this;
|
|
1362
|
+
const options = writer.options;
|
|
1341
1363
|
const cache = this.cache;
|
|
1342
1364
|
const json = this.json;
|
|
1343
1365
|
|
|
@@ -1345,6 +1367,13 @@ class GLTFWriter {
|
|
|
1345
1367
|
|
|
1346
1368
|
if ( ! json.textures ) json.textures = [];
|
|
1347
1369
|
|
|
1370
|
+
// make non-readable textures (e.g. CompressedTexture) readable by blitting them into a new texture
|
|
1371
|
+
if ( map instanceof CompressedTexture ) {
|
|
1372
|
+
|
|
1373
|
+
map = decompress( map, options.maxTextureSize );
|
|
1374
|
+
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1348
1377
|
let mimeType = map.userData.mimeType;
|
|
1349
1378
|
|
|
1350
1379
|
if ( mimeType === 'image/webp' ) mimeType = 'image/png';
|
|
@@ -2856,6 +2885,49 @@ class GLTFMaterialsSheenExtension {
|
|
|
2856
2885
|
|
|
2857
2886
|
}
|
|
2858
2887
|
|
|
2888
|
+
/**
|
|
2889
|
+
* Anisotropy Materials Extension
|
|
2890
|
+
*
|
|
2891
|
+
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy
|
|
2892
|
+
*/
|
|
2893
|
+
class GLTFMaterialsAnisotropyExtension {
|
|
2894
|
+
|
|
2895
|
+
constructor( writer ) {
|
|
2896
|
+
|
|
2897
|
+
this.writer = writer;
|
|
2898
|
+
this.name = 'KHR_materials_anisotropy';
|
|
2899
|
+
|
|
2900
|
+
}
|
|
2901
|
+
|
|
2902
|
+
writeMaterial( material, materialDef ) {
|
|
2903
|
+
|
|
2904
|
+
if ( ! material.isMeshPhysicalMaterial || material.anisotropy == 0.0 ) return;
|
|
2905
|
+
|
|
2906
|
+
const writer = this.writer;
|
|
2907
|
+
const extensionsUsed = writer.extensionsUsed;
|
|
2908
|
+
|
|
2909
|
+
const extensionDef = {};
|
|
2910
|
+
|
|
2911
|
+
if ( material.anisotropyMap ) {
|
|
2912
|
+
|
|
2913
|
+
const anisotropyMapDef = { index: writer.processTexture( material.anisotropyMap ) };
|
|
2914
|
+
writer.applyTextureTransform( anisotropyMapDef, material.anisotropyMap );
|
|
2915
|
+
extensionDef.anisotropyTexture = anisotropyMapDef;
|
|
2916
|
+
|
|
2917
|
+
}
|
|
2918
|
+
|
|
2919
|
+
extensionDef.anisotropyStrength = material.anisotropy;
|
|
2920
|
+
extensionDef.anisotropyRotation = material.anisotropyRotation;
|
|
2921
|
+
|
|
2922
|
+
materialDef.extensions = materialDef.extensions || {};
|
|
2923
|
+
materialDef.extensions[ this.name ] = extensionDef;
|
|
2924
|
+
|
|
2925
|
+
extensionsUsed[ this.name ] = true;
|
|
2926
|
+
|
|
2927
|
+
}
|
|
2928
|
+
|
|
2929
|
+
}
|
|
2930
|
+
|
|
2859
2931
|
/**
|
|
2860
2932
|
* Materials Emissive Strength Extension
|
|
2861
2933
|
*
|