super-three 0.152.0 → 0.154.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/build/three.cjs +779 -557
- package/build/three.js +779 -557
- package/build/three.min.js +2 -1
- package/build/three.module.js +770 -539
- package/build/three.module.min.js +2 -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
|
@@ -211,13 +211,30 @@ function resolveIncludes( string ) {
|
|
|
211
211
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
const shaderChunkMap = new Map( [
|
|
215
|
+
[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154
|
|
216
|
+
[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154
|
|
217
|
+
[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154
|
|
218
|
+
] );
|
|
219
|
+
|
|
214
220
|
function includeReplacer( match, include ) {
|
|
215
221
|
|
|
216
|
-
|
|
222
|
+
let string = ShaderChunk[ include ];
|
|
217
223
|
|
|
218
224
|
if ( string === undefined ) {
|
|
219
225
|
|
|
220
|
-
|
|
226
|
+
const newInclude = shaderChunkMap.get( include );
|
|
227
|
+
|
|
228
|
+
if ( newInclude !== undefined ) {
|
|
229
|
+
|
|
230
|
+
string = ShaderChunk[ newInclude ];
|
|
231
|
+
console.warn( 'THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
|
|
232
|
+
|
|
233
|
+
} else {
|
|
234
|
+
|
|
235
|
+
throw new Error( 'Can not resolve #include <' + include + '>' );
|
|
236
|
+
|
|
237
|
+
}
|
|
221
238
|
|
|
222
239
|
}
|
|
223
240
|
|
|
@@ -418,6 +435,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
418
435
|
|
|
419
436
|
prefixVertex = [
|
|
420
437
|
|
|
438
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
439
|
+
'#define SHADER_NAME ' + parameters.shaderName,
|
|
440
|
+
|
|
421
441
|
customDefines
|
|
422
442
|
|
|
423
443
|
].filter( filterEmptyLine ).join( '\n' );
|
|
@@ -431,6 +451,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
431
451
|
prefixFragment = [
|
|
432
452
|
|
|
433
453
|
customExtensions,
|
|
454
|
+
|
|
455
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
456
|
+
'#define SHADER_NAME ' + parameters.shaderName,
|
|
457
|
+
|
|
434
458
|
customDefines
|
|
435
459
|
|
|
436
460
|
].filter( filterEmptyLine ).join( '\n' );
|
|
@@ -447,6 +471,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
447
471
|
|
|
448
472
|
generatePrecision( parameters ),
|
|
449
473
|
|
|
474
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
450
475
|
'#define SHADER_NAME ' + parameters.shaderName,
|
|
451
476
|
|
|
452
477
|
customDefines,
|
|
@@ -469,6 +494,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
469
494
|
parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',
|
|
470
495
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
471
496
|
|
|
497
|
+
parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
|
|
498
|
+
|
|
472
499
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
473
500
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
474
501
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
@@ -483,6 +510,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
483
510
|
parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
|
|
484
511
|
parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
|
|
485
512
|
parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
|
|
513
|
+
parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
|
|
486
514
|
|
|
487
515
|
parameters.transmission ? '#define USE_TRANSMISSION' : '',
|
|
488
516
|
parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
|
|
@@ -505,6 +533,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
505
533
|
parameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',
|
|
506
534
|
parameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',
|
|
507
535
|
|
|
536
|
+
parameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',
|
|
537
|
+
|
|
508
538
|
parameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',
|
|
509
539
|
parameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',
|
|
510
540
|
parameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',
|
|
@@ -524,7 +554,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
524
554
|
|
|
525
555
|
//
|
|
526
556
|
|
|
527
|
-
parameters.vertexTangents ? '#define USE_TANGENT' : '',
|
|
557
|
+
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
528
558
|
parameters.vertexColors ? '#define USE_COLOR' : '',
|
|
529
559
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
530
560
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
@@ -551,6 +581,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
551
581
|
|
|
552
582
|
parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',
|
|
553
583
|
|
|
584
|
+
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
585
|
+
|
|
554
586
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
555
587
|
( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
|
|
556
588
|
|
|
@@ -654,6 +686,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
654
686
|
|
|
655
687
|
generatePrecision( parameters ),
|
|
656
688
|
|
|
689
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
657
690
|
'#define SHADER_NAME ' + parameters.shaderName,
|
|
658
691
|
|
|
659
692
|
customDefines,
|
|
@@ -678,6 +711,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
678
711
|
parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
679
712
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
680
713
|
|
|
714
|
+
parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
|
|
715
|
+
parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
|
|
716
|
+
|
|
681
717
|
parameters.clearcoat ? '#define USE_CLEARCOAT' : '',
|
|
682
718
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
683
719
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
@@ -696,6 +732,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
696
732
|
|
|
697
733
|
parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
|
|
698
734
|
parameters.alphaTest ? '#define USE_ALPHATEST' : '',
|
|
735
|
+
parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
|
|
699
736
|
|
|
700
737
|
parameters.sheen ? '#define USE_SHEEN' : '',
|
|
701
738
|
parameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',
|
|
@@ -705,7 +742,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
705
742
|
parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
|
|
706
743
|
parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
|
|
707
744
|
|
|
708
|
-
parameters.vertexTangents ? '#define USE_TANGENT' : '',
|
|
745
|
+
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
709
746
|
parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
|
|
710
747
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
711
748
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
@@ -742,7 +779,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
742
779
|
parameters.dithering ? '#define DITHERING' : '',
|
|
743
780
|
parameters.opaque ? '#define OPAQUE' : '',
|
|
744
781
|
|
|
745
|
-
ShaderChunk[ '
|
|
782
|
+
ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
|
|
746
783
|
getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),
|
|
747
784
|
|
|
748
785
|
parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',
|
|
@@ -949,6 +986,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
949
986
|
|
|
950
987
|
//
|
|
951
988
|
|
|
989
|
+
this.type = parameters.shaderType;
|
|
952
990
|
this.name = parameters.shaderName;
|
|
953
991
|
this.id = programIdCount ++;
|
|
954
992
|
this.cacheKey = cacheKey;
|
|
@@ -37,11 +37,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
37
37
|
|
|
38
38
|
function getChannel( value ) {
|
|
39
39
|
|
|
40
|
-
if ( value ===
|
|
41
|
-
if ( value === 2 ) return 'uv2';
|
|
42
|
-
if ( value === 3 ) return 'uv3';
|
|
40
|
+
if ( value === 0 ) return 'uv';
|
|
43
41
|
|
|
44
|
-
return
|
|
42
|
+
return `uv${ value }`;
|
|
45
43
|
|
|
46
44
|
}
|
|
47
45
|
|
|
@@ -123,11 +121,14 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
123
121
|
const HAS_METALNESSMAP = !! material.metalnessMap;
|
|
124
122
|
const HAS_ROUGHNESSMAP = !! material.roughnessMap;
|
|
125
123
|
|
|
124
|
+
const HAS_ANISOTROPY = material.anisotropy > 0;
|
|
126
125
|
const HAS_CLEARCOAT = material.clearcoat > 0;
|
|
127
126
|
const HAS_IRIDESCENCE = material.iridescence > 0;
|
|
128
127
|
const HAS_SHEEN = material.sheen > 0;
|
|
129
128
|
const HAS_TRANSMISSION = material.transmission > 0;
|
|
130
129
|
|
|
130
|
+
const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;
|
|
131
|
+
|
|
131
132
|
const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;
|
|
132
133
|
const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;
|
|
133
134
|
const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;
|
|
@@ -151,6 +152,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
151
152
|
|
|
152
153
|
const HAS_ALPHATEST = material.alphaTest > 0;
|
|
153
154
|
|
|
155
|
+
const HAS_ALPHAHASH = !! material.alphaHash;
|
|
156
|
+
|
|
154
157
|
const HAS_EXTENSIONS = !! material.extensions;
|
|
155
158
|
|
|
156
159
|
const HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;
|
|
@@ -162,7 +165,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
162
165
|
isWebGL2: IS_WEBGL2,
|
|
163
166
|
|
|
164
167
|
shaderID: shaderID,
|
|
165
|
-
|
|
168
|
+
shaderType: material.type,
|
|
169
|
+
shaderName: material.name,
|
|
166
170
|
|
|
167
171
|
vertexShader: vertexShader,
|
|
168
172
|
fragmentShader: fragmentShader,
|
|
@@ -200,6 +204,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
200
204
|
metalnessMap: HAS_METALNESSMAP,
|
|
201
205
|
roughnessMap: HAS_ROUGHNESSMAP,
|
|
202
206
|
|
|
207
|
+
anisotropy: HAS_ANISOTROPY,
|
|
208
|
+
anisotropyMap: HAS_ANISOTROPYMAP,
|
|
209
|
+
|
|
203
210
|
clearcoat: HAS_CLEARCOAT,
|
|
204
211
|
clearcoatMap: HAS_CLEARCOATMAP,
|
|
205
212
|
clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,
|
|
@@ -227,6 +234,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
227
234
|
|
|
228
235
|
alphaMap: HAS_ALPHAMAP,
|
|
229
236
|
alphaTest: HAS_ALPHATEST,
|
|
237
|
+
alphaHash: HAS_ALPHAHASH,
|
|
230
238
|
|
|
231
239
|
combine: material.combine,
|
|
232
240
|
|
|
@@ -243,6 +251,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
243
251
|
metalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),
|
|
244
252
|
roughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),
|
|
245
253
|
|
|
254
|
+
anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),
|
|
255
|
+
|
|
246
256
|
clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),
|
|
247
257
|
clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),
|
|
248
258
|
clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),
|
|
@@ -264,7 +274,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
264
274
|
|
|
265
275
|
//
|
|
266
276
|
|
|
267
|
-
vertexTangents:
|
|
277
|
+
vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),
|
|
268
278
|
vertexColors: material.vertexColors,
|
|
269
279
|
vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
|
|
270
280
|
vertexUv1s: HAS_ATTRIBUTE_UV1,
|
|
@@ -396,6 +406,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
396
406
|
array.push( parameters.emissiveMapUv );
|
|
397
407
|
array.push( parameters.metalnessMapUv );
|
|
398
408
|
array.push( parameters.roughnessMapUv );
|
|
409
|
+
array.push( parameters.anisotropyMapUv );
|
|
399
410
|
array.push( parameters.clearcoatMapUv );
|
|
400
411
|
array.push( parameters.clearcoatNormalMapUv );
|
|
401
412
|
array.push( parameters.clearcoatRoughnessMapUv );
|
|
@@ -469,6 +480,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
469
480
|
_programLayers.enable( 15 );
|
|
470
481
|
if ( parameters.vertexTangents )
|
|
471
482
|
_programLayers.enable( 16 );
|
|
483
|
+
if ( parameters.anisotropy )
|
|
484
|
+
_programLayers.enable( 17 );
|
|
472
485
|
|
|
473
486
|
array.push( _programLayers.mask );
|
|
474
487
|
_programLayers.disableAll();
|
|
@@ -609,5 +622,4 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
609
622
|
|
|
610
623
|
}
|
|
611
624
|
|
|
612
|
-
|
|
613
625
|
export { WebGLPrograms };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedShortType, UnsignedIntType, UnsignedInt248Type, FloatType, HalfFloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, _SRGBAFormat, NoColorSpace, LinearSRGBColorSpace, SRGBColorSpace } from '../../constants.js';
|
|
1
|
+
import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedShortType, UnsignedIntType, UnsignedInt248Type, FloatType, HalfFloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, _SRGBAFormat, NoColorSpace, LinearSRGBColorSpace, SRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare } from '../../constants.js';
|
|
2
2
|
import * as MathUtils from '../../math/MathUtils.js';
|
|
3
3
|
import { ImageUtils } from '../../extras/ImageUtils.js';
|
|
4
4
|
import { createElementNS } from '../../utils.js';
|
|
@@ -526,6 +526,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
526
526
|
[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR
|
|
527
527
|
};
|
|
528
528
|
|
|
529
|
+
const compareToGL = {
|
|
530
|
+
[ NeverCompare ]: _gl.NEVER,
|
|
531
|
+
[ AlwaysCompare ]: _gl.ALWAYS,
|
|
532
|
+
[ LessCompare ]: _gl.LESS,
|
|
533
|
+
[ LessEqualCompare ]: _gl.LEQUAL,
|
|
534
|
+
[ EqualCompare ]: _gl.EQUAL,
|
|
535
|
+
[ GreaterEqualCompare ]: _gl.GEQUAL,
|
|
536
|
+
[ GreaterCompare ]: _gl.GREATER,
|
|
537
|
+
[ NotEqualCompare ]: _gl.NOTEQUAL
|
|
538
|
+
};
|
|
539
|
+
|
|
529
540
|
function setTextureParameters( textureType, texture, supportsMips ) {
|
|
530
541
|
|
|
531
542
|
if ( supportsMips ) {
|
|
@@ -570,6 +581,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
570
581
|
|
|
571
582
|
}
|
|
572
583
|
|
|
584
|
+
if ( texture.compareFunction ) {
|
|
585
|
+
|
|
586
|
+
_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );
|
|
587
|
+
_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );
|
|
588
|
+
|
|
589
|
+
}
|
|
590
|
+
|
|
573
591
|
if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {
|
|
574
592
|
|
|
575
593
|
const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
|
|
@@ -425,6 +425,18 @@ function WebVRManager( renderer ) {
|
|
|
425
425
|
|
|
426
426
|
};
|
|
427
427
|
|
|
428
|
+
// Dummy getEnvironmentBlendMode to have the same API as WebXR
|
|
429
|
+
|
|
430
|
+
this.getEnvironmentBlendMode = function () {
|
|
431
|
+
|
|
432
|
+
if ( scope.isPresenting ) {
|
|
433
|
+
|
|
434
|
+
return 'opaque';
|
|
435
|
+
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
};
|
|
439
|
+
|
|
428
440
|
//
|
|
429
441
|
|
|
430
442
|
this.getStandingMatrix = function () {
|
|
@@ -43,9 +43,6 @@ class WebXRManager extends EventDispatcher {
|
|
|
43
43
|
const controllers = [];
|
|
44
44
|
const controllerInputSources = [];
|
|
45
45
|
|
|
46
|
-
const planes = new Set();
|
|
47
|
-
const planesLastChangedTimes = new Map();
|
|
48
|
-
|
|
49
46
|
//
|
|
50
47
|
|
|
51
48
|
const cameraL = new PerspectiveCamera();
|
|
@@ -58,9 +55,9 @@ class WebXRManager extends EventDispatcher {
|
|
|
58
55
|
|
|
59
56
|
const cameras = [ cameraL, cameraR ];
|
|
60
57
|
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
const cameraXR = new ArrayCamera();
|
|
59
|
+
cameraXR.layers.enable( 1 );
|
|
60
|
+
cameraXR.layers.enable( 2 );
|
|
64
61
|
|
|
65
62
|
let _currentDepthNear = null;
|
|
66
63
|
let _currentDepthFar = null;
|
|
@@ -545,28 +542,28 @@ class WebXRManager extends EventDispatcher {
|
|
|
545
542
|
|
|
546
543
|
if ( session === null ) return;
|
|
547
544
|
|
|
548
|
-
|
|
549
|
-
|
|
545
|
+
cameraXR.near = cameraR.near = cameraL.near = camera.near;
|
|
546
|
+
cameraXR.far = cameraR.far = cameraL.far = camera.far;
|
|
550
547
|
|
|
551
|
-
if ( _currentDepthNear !==
|
|
548
|
+
if ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {
|
|
552
549
|
|
|
553
550
|
// Note that the new renderState won't apply until the next frame. See #18320
|
|
554
551
|
|
|
555
552
|
session.updateRenderState( {
|
|
556
|
-
depthNear:
|
|
557
|
-
depthFar:
|
|
553
|
+
depthNear: cameraXR.near,
|
|
554
|
+
depthFar: cameraXR.far
|
|
558
555
|
} );
|
|
559
556
|
|
|
560
|
-
_currentDepthNear =
|
|
561
|
-
_currentDepthFar =
|
|
557
|
+
_currentDepthNear = cameraXR.near;
|
|
558
|
+
_currentDepthFar = cameraXR.far;
|
|
562
559
|
|
|
563
560
|
}
|
|
564
561
|
|
|
565
|
-
const cameras =
|
|
562
|
+
const cameras = cameraXR.cameras;
|
|
566
563
|
var object = poseTarget || camera;
|
|
567
564
|
const parent = object.parent;
|
|
568
565
|
|
|
569
|
-
updateCamera(
|
|
566
|
+
updateCamera( cameraXR, parent );
|
|
570
567
|
|
|
571
568
|
for ( let i = 0; i < cameras.length; i ++ ) {
|
|
572
569
|
|
|
@@ -578,39 +575,41 @@ class WebXRManager extends EventDispatcher {
|
|
|
578
575
|
|
|
579
576
|
if ( cameras.length === 2 ) {
|
|
580
577
|
|
|
581
|
-
setProjectionFromUnion(
|
|
578
|
+
setProjectionFromUnion( cameraXR, cameraL, cameraR );
|
|
582
579
|
|
|
583
580
|
} else {
|
|
584
581
|
|
|
585
582
|
// assume single camera setup (AR)
|
|
586
583
|
|
|
587
|
-
|
|
584
|
+
cameraXR.projectionMatrix.copy( cameraL.projectionMatrix );
|
|
588
585
|
|
|
589
586
|
}
|
|
590
587
|
|
|
591
|
-
|
|
592
|
-
updateUserCamera( camera, cameraVR, object );
|
|
588
|
+
updateUserCamera( camera, cameraXR, parent );
|
|
593
589
|
|
|
594
590
|
};
|
|
595
591
|
|
|
596
|
-
function updateUserCamera( camera,
|
|
592
|
+
function updateUserCamera( camera, cameraXR, object ) {
|
|
597
593
|
|
|
598
|
-
|
|
594
|
+
cameraXR.matrixWorld.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );
|
|
599
595
|
|
|
600
|
-
|
|
601
|
-
object.matrix.copy( cameraVR.matrix );
|
|
602
|
-
object.matrix.decompose( object.position, object.quaternion, object.scale );
|
|
596
|
+
if ( object.parent === null ) {
|
|
603
597
|
|
|
604
|
-
|
|
598
|
+
object.matrix.copy( cameraXR.matrixWorld );
|
|
605
599
|
|
|
606
|
-
|
|
600
|
+
} else {
|
|
607
601
|
|
|
608
|
-
|
|
602
|
+
object.matrix.copy( object.parent.matrixWorld );
|
|
603
|
+
object.matrix.invert();
|
|
604
|
+
object.matrix.multiply( cameraXR.matrixWorld );
|
|
609
605
|
|
|
610
606
|
}
|
|
611
607
|
|
|
612
|
-
|
|
613
|
-
|
|
608
|
+
object.matrix.decompose( object.position, object.quaternion, object.scale );
|
|
609
|
+
object.updateMatrixWorld( true );
|
|
610
|
+
|
|
611
|
+
camera.projectionMatrix.copy( cameraXR.projectionMatrix );
|
|
612
|
+
camera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );
|
|
614
613
|
|
|
615
614
|
if ( camera.isPerspectiveCamera ) {
|
|
616
615
|
|
|
@@ -623,7 +622,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
623
622
|
|
|
624
623
|
this.getCamera = function () {
|
|
625
624
|
|
|
626
|
-
return
|
|
625
|
+
return cameraXR;
|
|
627
626
|
|
|
628
627
|
};
|
|
629
628
|
|
|
@@ -660,12 +659,6 @@ class WebXRManager extends EventDispatcher {
|
|
|
660
659
|
|
|
661
660
|
};
|
|
662
661
|
|
|
663
|
-
this.getPlanes = function () {
|
|
664
|
-
|
|
665
|
-
return planes;
|
|
666
|
-
|
|
667
|
-
};
|
|
668
|
-
|
|
669
662
|
// Animation Loop
|
|
670
663
|
|
|
671
664
|
let onAnimationFrameCallback = null;
|
|
@@ -686,14 +679,14 @@ class WebXRManager extends EventDispatcher {
|
|
|
686
679
|
|
|
687
680
|
}
|
|
688
681
|
|
|
689
|
-
let
|
|
682
|
+
let cameraXRNeedsUpdate = false;
|
|
690
683
|
|
|
691
|
-
// check if it's necessary to rebuild
|
|
684
|
+
// check if it's necessary to rebuild cameraXR's camera list
|
|
692
685
|
|
|
693
|
-
if ( views.length !==
|
|
686
|
+
if ( views.length !== cameraXR.cameras.length ) {
|
|
694
687
|
|
|
695
|
-
|
|
696
|
-
|
|
688
|
+
cameraXR.cameras.length = 0;
|
|
689
|
+
cameraXRNeedsUpdate = true;
|
|
697
690
|
|
|
698
691
|
}
|
|
699
692
|
|
|
@@ -745,14 +738,14 @@ class WebXRManager extends EventDispatcher {
|
|
|
745
738
|
|
|
746
739
|
if ( i === 0 ) {
|
|
747
740
|
|
|
748
|
-
|
|
749
|
-
|
|
741
|
+
cameraXR.matrix.copy( camera.matrix );
|
|
742
|
+
cameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );
|
|
750
743
|
|
|
751
744
|
}
|
|
752
745
|
|
|
753
|
-
if (
|
|
746
|
+
if ( cameraXRNeedsUpdate === true ) {
|
|
754
747
|
|
|
755
|
-
|
|
748
|
+
cameraXR.cameras.push( camera );
|
|
756
749
|
|
|
757
750
|
}
|
|
758
751
|
|
|
@@ -779,60 +772,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
779
772
|
|
|
780
773
|
if ( frame.detectedPlanes ) {
|
|
781
774
|
|
|
782
|
-
scope.dispatchEvent( { type: 'planesdetected', data: frame
|
|
783
|
-
|
|
784
|
-
let planesToRemove = null;
|
|
785
|
-
|
|
786
|
-
for ( const plane of planes ) {
|
|
787
|
-
|
|
788
|
-
if ( ! frame.detectedPlanes.has( plane ) ) {
|
|
789
|
-
|
|
790
|
-
if ( planesToRemove === null ) {
|
|
791
|
-
|
|
792
|
-
planesToRemove = [];
|
|
793
|
-
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
planesToRemove.push( plane );
|
|
797
|
-
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
if ( planesToRemove !== null ) {
|
|
803
|
-
|
|
804
|
-
for ( const plane of planesToRemove ) {
|
|
805
|
-
|
|
806
|
-
planes.delete( plane );
|
|
807
|
-
planesLastChangedTimes.delete( plane );
|
|
808
|
-
scope.dispatchEvent( { type: 'planeremoved', data: plane } );
|
|
809
|
-
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
for ( const plane of frame.detectedPlanes ) {
|
|
815
|
-
|
|
816
|
-
if ( ! planes.has( plane ) ) {
|
|
817
|
-
|
|
818
|
-
planes.add( plane );
|
|
819
|
-
planesLastChangedTimes.set( plane, frame.lastChangedTime );
|
|
820
|
-
scope.dispatchEvent( { type: 'planeadded', data: plane } );
|
|
821
|
-
|
|
822
|
-
} else {
|
|
823
|
-
|
|
824
|
-
const lastKnownTime = planesLastChangedTimes.get( plane );
|
|
825
|
-
|
|
826
|
-
if ( plane.lastChangedTime > lastKnownTime ) {
|
|
827
|
-
|
|
828
|
-
planesLastChangedTimes.set( plane, plane.lastChangedTime );
|
|
829
|
-
scope.dispatchEvent( { type: 'planechanged', data: plane } );
|
|
830
|
-
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
}
|
|
775
|
+
scope.dispatchEvent( { type: 'planesdetected', data: frame } );
|
|
836
776
|
|
|
837
777
|
}
|
|
838
778
|
|
package/src/scenes/Scene.js
CHANGED
|
@@ -58,20 +58,6 @@ class Scene extends Object3D {
|
|
|
58
58
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
get autoUpdate() { // @deprecated, r144
|
|
62
|
-
|
|
63
|
-
console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
|
|
64
|
-
return this.matrixWorldAutoUpdate;
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
set autoUpdate( value ) { // @deprecated, r144
|
|
69
|
-
|
|
70
|
-
console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
|
|
71
|
-
this.matrixWorldAutoUpdate = value;
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
61
|
}
|
|
76
62
|
|
|
77
63
|
export { Scene };
|
|
@@ -28,9 +28,31 @@ class DepthTexture extends Texture {
|
|
|
28
28
|
this.flipY = false;
|
|
29
29
|
this.generateMipmaps = false;
|
|
30
30
|
|
|
31
|
+
this.compareFunction = null;
|
|
32
|
+
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
|
|
36
|
+
copy( source ) {
|
|
37
|
+
|
|
38
|
+
super.copy( source );
|
|
39
|
+
|
|
40
|
+
this.compareFunction = source.compareFunction;
|
|
41
|
+
|
|
42
|
+
return this;
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
toJSON( meta ) {
|
|
47
|
+
|
|
48
|
+
const data = super.toJSON( meta );
|
|
49
|
+
|
|
50
|
+
if ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;
|
|
51
|
+
|
|
52
|
+
return data;
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
34
56
|
}
|
|
35
57
|
|
|
36
58
|
export { DepthTexture };
|
|
@@ -3,14 +3,12 @@ import { NearestFilter } from '../constants.js';
|
|
|
3
3
|
|
|
4
4
|
class FramebufferTexture extends Texture {
|
|
5
5
|
|
|
6
|
-
constructor( width, height
|
|
6
|
+
constructor( width, height ) {
|
|
7
7
|
|
|
8
8
|
super( { width, height } );
|
|
9
9
|
|
|
10
10
|
this.isFramebufferTexture = true;
|
|
11
11
|
|
|
12
|
-
this.format = format;
|
|
13
|
-
|
|
14
12
|
this.magFilter = NearestFilter;
|
|
15
13
|
this.minFilter = NearestFilter;
|
|
16
14
|
|
package/src/textures/Source.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { ImageUtils } from '../extras/ImageUtils.js';
|
|
2
2
|
import * as MathUtils from '../math/MathUtils.js';
|
|
3
3
|
|
|
4
|
+
let sourceId = 0;
|
|
5
|
+
|
|
4
6
|
class Source {
|
|
5
7
|
|
|
6
8
|
constructor( data = null ) {
|
|
7
9
|
|
|
8
10
|
this.isSource = true;
|
|
9
11
|
|
|
12
|
+
Object.defineProperty( this, 'id', { value: sourceId ++ } );
|
|
13
|
+
|
|
10
14
|
this.uuid = MathUtils.generateUUID();
|
|
11
15
|
|
|
12
16
|
this.data = data;
|