@needle-tools/three 0.145.4 → 0.146.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +32586 -35951
- package/build/three.js +32600 -35965
- package/build/three.min.js +6 -7
- package/build/three.module.js +1547 -1154
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +75 -19
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
package/src/math/Sphere.js
CHANGED
|
@@ -3,8 +3,7 @@ import { Vector3 } from './Vector3.js';
|
|
|
3
3
|
|
|
4
4
|
const _box = /*@__PURE__*/ new Box3();
|
|
5
5
|
const _v1 = /*@__PURE__*/ new Vector3();
|
|
6
|
-
const
|
|
7
|
-
const _toPoint = /*@__PURE__*/ new Vector3();
|
|
6
|
+
const _v2 = /*@__PURE__*/ new Vector3();
|
|
8
7
|
|
|
9
8
|
class Sphere {
|
|
10
9
|
|
|
@@ -164,29 +163,28 @@ class Sphere {
|
|
|
164
163
|
if ( this.isEmpty() ) {
|
|
165
164
|
|
|
166
165
|
this.center.copy( point );
|
|
166
|
+
|
|
167
167
|
this.radius = 0;
|
|
168
168
|
|
|
169
169
|
return this;
|
|
170
170
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
_toPoint.subVectors( point, this.center );
|
|
173
|
+
_v1.subVectors( point, this.center );
|
|
176
174
|
|
|
177
|
-
const lengthSq =
|
|
175
|
+
const lengthSq = _v1.lengthSq();
|
|
178
176
|
|
|
179
177
|
if ( lengthSq > ( this.radius * this.radius ) ) {
|
|
180
178
|
|
|
179
|
+
// calculate the minimal sphere
|
|
180
|
+
|
|
181
181
|
const length = Math.sqrt( lengthSq );
|
|
182
|
-
const missingRadiusHalf = ( length - this.radius ) * 0.5;
|
|
183
182
|
|
|
184
|
-
|
|
185
|
-
// and the other half to position. This gives a tighter enclosure, instead of if
|
|
186
|
-
// the whole missing distance were just added to radius.
|
|
183
|
+
const delta = ( length - this.radius ) * 0.5;
|
|
187
184
|
|
|
188
|
-
this.center.
|
|
189
|
-
|
|
185
|
+
this.center.addScaledVector( _v1, delta / length );
|
|
186
|
+
|
|
187
|
+
this.radius += delta;
|
|
190
188
|
|
|
191
189
|
}
|
|
192
190
|
|
|
@@ -196,12 +194,13 @@ class Sphere {
|
|
|
196
194
|
|
|
197
195
|
union( sphere ) {
|
|
198
196
|
|
|
199
|
-
// handle empty sphere cases
|
|
200
197
|
if ( sphere.isEmpty() ) {
|
|
201
198
|
|
|
202
199
|
return this;
|
|
203
200
|
|
|
204
|
-
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if ( this.isEmpty() ) {
|
|
205
204
|
|
|
206
205
|
this.copy( sphere );
|
|
207
206
|
|
|
@@ -209,26 +208,20 @@ class Sphere {
|
|
|
209
208
|
|
|
210
209
|
}
|
|
211
210
|
|
|
212
|
-
|
|
211
|
+
if ( this.center.equals( sphere.center ) === true ) {
|
|
213
212
|
|
|
214
|
-
|
|
215
|
-
// 1) Enclose the farthest point on the other sphere into this sphere.
|
|
216
|
-
// 2) Enclose the opposite point of the farthest point into this sphere.
|
|
213
|
+
this.radius = Math.max( this.radius, sphere.radius );
|
|
217
214
|
|
|
218
|
-
|
|
215
|
+
} else {
|
|
219
216
|
|
|
220
|
-
|
|
217
|
+
_v2.subVectors( sphere.center, this.center ).setLength( sphere.radius );
|
|
221
218
|
|
|
219
|
+
this.expandByPoint( _v1.copy( sphere.center ).add( _v2 ) );
|
|
222
220
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );
|
|
221
|
+
this.expandByPoint( _v1.copy( sphere.center ).sub( _v2 ) );
|
|
226
222
|
|
|
227
223
|
}
|
|
228
224
|
|
|
229
|
-
this.expandByPoint( _v1.copy( sphere.center ).add( _toFarthestPoint ) );
|
|
230
|
-
this.expandByPoint( _v1.copy( sphere.center ).sub( _toFarthestPoint ) );
|
|
231
|
-
|
|
232
225
|
return this;
|
|
233
226
|
|
|
234
227
|
}
|
|
@@ -7,6 +7,7 @@ const _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();
|
|
|
7
7
|
|
|
8
8
|
const _instanceIntersects = [];
|
|
9
9
|
|
|
10
|
+
const _identity = /*@__PURE__*/ new Matrix4();
|
|
10
11
|
const _mesh = /*@__PURE__*/ new Mesh();
|
|
11
12
|
|
|
12
13
|
class InstancedMesh extends Mesh {
|
|
@@ -24,6 +25,12 @@ class InstancedMesh extends Mesh {
|
|
|
24
25
|
|
|
25
26
|
this.frustumCulled = false;
|
|
26
27
|
|
|
28
|
+
for ( let i = 0; i < count; i ++ ) {
|
|
29
|
+
|
|
30
|
+
this.setMatrixAt( i, _identity );
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
copy( source, recursive ) {
|
package/src/objects/LOD.js
CHANGED
|
@@ -38,7 +38,7 @@ class LOD extends Object3D {
|
|
|
38
38
|
|
|
39
39
|
const level = levels[ i ];
|
|
40
40
|
|
|
41
|
-
this.addLevel( level.object.clone(), level.distance );
|
|
41
|
+
this.addLevel( level.object.clone(), level.distance, level.hysteresis );
|
|
42
42
|
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -48,7 +48,7 @@ class LOD extends Object3D {
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
addLevel( object, distance = 0 ) {
|
|
51
|
+
addLevel( object, distance = 0, hysteresis = 0 ) {
|
|
52
52
|
|
|
53
53
|
distance = Math.abs( distance );
|
|
54
54
|
|
|
@@ -66,7 +66,7 @@ class LOD extends Object3D {
|
|
|
66
66
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
levels.splice( l, 0, { distance: distance, object: object } );
|
|
69
|
+
levels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );
|
|
70
70
|
|
|
71
71
|
this.add( object );
|
|
72
72
|
|
|
@@ -80,6 +80,8 @@ class LOD extends Object3D {
|
|
|
80
80
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
|
|
84
|
+
|
|
83
85
|
getObjectForDistance( distance ) {
|
|
84
86
|
|
|
85
87
|
const levels = this.levels;
|
|
@@ -90,7 +92,15 @@ class LOD extends Object3D {
|
|
|
90
92
|
|
|
91
93
|
for ( i = 1, l = levels.length; i < l; i ++ ) {
|
|
92
94
|
|
|
93
|
-
|
|
95
|
+
let levelDistance = levels[ i ].distance;
|
|
96
|
+
|
|
97
|
+
if ( levels[ i ].object.visible ) {
|
|
98
|
+
|
|
99
|
+
levelDistance -= levelDistance * levels[ i ].hysteresis;
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if ( distance < levelDistance ) {
|
|
94
104
|
|
|
95
105
|
break;
|
|
96
106
|
|
|
@@ -139,7 +149,15 @@ class LOD extends Object3D {
|
|
|
139
149
|
|
|
140
150
|
for ( i = 1, l = levels.length; i < l; i ++ ) {
|
|
141
151
|
|
|
142
|
-
|
|
152
|
+
let levelDistance = levels[ i ].distance;
|
|
153
|
+
|
|
154
|
+
if ( levels[ i ].object.visible ) {
|
|
155
|
+
|
|
156
|
+
levelDistance -= levelDistance * levels[ i ].hysteresis;
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if ( distance >= levelDistance ) {
|
|
143
161
|
|
|
144
162
|
levels[ i - 1 ].object.visible = false;
|
|
145
163
|
levels[ i ].object.visible = true;
|
|
@@ -180,7 +198,8 @@ class LOD extends Object3D {
|
|
|
180
198
|
|
|
181
199
|
data.object.levels.push( {
|
|
182
200
|
object: level.object.uuid,
|
|
183
|
-
distance: level.distance
|
|
201
|
+
distance: level.distance,
|
|
202
|
+
hysteresis: level.hysteresis
|
|
184
203
|
} );
|
|
185
204
|
|
|
186
205
|
}
|
|
@@ -2,7 +2,7 @@ import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
|
2
2
|
|
|
3
3
|
class WebGLMultipleRenderTargets extends WebGLRenderTarget {
|
|
4
4
|
|
|
5
|
-
constructor( width, height, count, options = {} ) {
|
|
5
|
+
constructor( width = 1, height = 1, count = 1, options = {} ) {
|
|
6
6
|
|
|
7
7
|
super( width, height, options );
|
|
8
8
|
|
|
@@ -134,28 +134,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
134
134
|
this.toneMapping = NoToneMapping;
|
|
135
135
|
this.toneMappingExposure = 1.0;
|
|
136
136
|
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
Object.defineProperties( this, {
|
|
140
|
-
|
|
141
|
-
// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d
|
|
142
|
-
|
|
143
|
-
gammaFactor: {
|
|
144
|
-
get: function () {
|
|
145
|
-
|
|
146
|
-
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
147
|
-
return 2;
|
|
148
|
-
|
|
149
|
-
},
|
|
150
|
-
set: function () {
|
|
151
|
-
|
|
152
|
-
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
} );
|
|
158
|
-
|
|
159
137
|
// internal properties
|
|
160
138
|
|
|
161
139
|
const _this = this;
|
|
@@ -337,7 +315,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
337
315
|
materials = new WebGLMaterials( _this, properties );
|
|
338
316
|
renderLists = new WebGLRenderLists();
|
|
339
317
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
340
|
-
background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
|
|
318
|
+
background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, _premultipliedAlpha );
|
|
341
319
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
342
320
|
uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
|
|
343
321
|
|
|
@@ -722,31 +700,48 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
722
700
|
//
|
|
723
701
|
|
|
724
702
|
let index = geometry.index;
|
|
725
|
-
|
|
703
|
+
let rangeFactor = 1;
|
|
704
|
+
|
|
705
|
+
if ( material.wireframe === true ) {
|
|
706
|
+
|
|
707
|
+
index = geometries.getWireframeAttribute( geometry );
|
|
708
|
+
rangeFactor = 2;
|
|
709
|
+
|
|
710
|
+
}
|
|
726
711
|
|
|
727
712
|
//
|
|
728
713
|
|
|
729
|
-
|
|
714
|
+
const drawRange = geometry.drawRange;
|
|
715
|
+
const position = geometry.attributes.position;
|
|
730
716
|
|
|
731
|
-
|
|
717
|
+
let drawStart = drawRange.start * rangeFactor;
|
|
718
|
+
let drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;
|
|
732
719
|
|
|
733
|
-
|
|
720
|
+
if ( group !== null ) {
|
|
734
721
|
|
|
735
|
-
|
|
722
|
+
drawStart = Math.max( drawStart, group.start * rangeFactor );
|
|
723
|
+
drawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );
|
|
736
724
|
|
|
737
725
|
}
|
|
738
726
|
|
|
739
|
-
|
|
727
|
+
if ( index !== null ) {
|
|
740
728
|
|
|
741
|
-
|
|
729
|
+
drawStart = Math.max( drawStart, 0 );
|
|
730
|
+
drawEnd = Math.min( drawEnd, index.count );
|
|
742
731
|
|
|
743
|
-
if (
|
|
732
|
+
} else if ( position !== undefined && position !== null ) {
|
|
744
733
|
|
|
745
|
-
|
|
746
|
-
|
|
734
|
+
drawStart = Math.max( drawStart, 0 );
|
|
735
|
+
drawEnd = Math.min( drawEnd, position.count );
|
|
747
736
|
|
|
748
737
|
}
|
|
749
738
|
|
|
739
|
+
const drawCount = drawEnd - drawStart;
|
|
740
|
+
|
|
741
|
+
if ( drawCount < 0 || drawCount === Infinity ) return;
|
|
742
|
+
|
|
743
|
+
//
|
|
744
|
+
|
|
750
745
|
bindingStates.setup( object, material, program, geometry, index );
|
|
751
746
|
|
|
752
747
|
let attribute;
|
|
@@ -763,23 +758,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
763
758
|
|
|
764
759
|
//
|
|
765
760
|
|
|
766
|
-
const dataCount = ( index !== null ) ? index.count : position.count;
|
|
767
|
-
|
|
768
|
-
const rangeStart = geometry.drawRange.start * rangeFactor;
|
|
769
|
-
const rangeCount = geometry.drawRange.count * rangeFactor;
|
|
770
|
-
|
|
771
|
-
const groupStart = group !== null ? group.start * rangeFactor : 0;
|
|
772
|
-
const groupCount = group !== null ? group.count * rangeFactor : Infinity;
|
|
773
|
-
|
|
774
|
-
const drawStart = Math.max( rangeStart, groupStart );
|
|
775
|
-
const drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;
|
|
776
|
-
|
|
777
|
-
const drawCount = Math.max( 0, drawEnd - drawStart + 1 );
|
|
778
|
-
|
|
779
|
-
if ( drawCount === 0 ) return;
|
|
780
|
-
|
|
781
|
-
//
|
|
782
|
-
|
|
783
761
|
if ( object.isMesh ) {
|
|
784
762
|
|
|
785
763
|
if ( material.wireframe === true ) {
|
|
@@ -831,7 +809,8 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
831
809
|
|
|
832
810
|
} else if ( geometry.isInstancedBufferGeometry ) {
|
|
833
811
|
|
|
834
|
-
const
|
|
812
|
+
const maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;
|
|
813
|
+
const instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );
|
|
835
814
|
|
|
836
815
|
renderer.renderInstances( drawStart, drawCount, instanceCount );
|
|
837
816
|
|
|
@@ -1935,6 +1914,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1935
1914
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
1936
1915
|
|
|
1937
1916
|
let useDefaultFramebuffer = true;
|
|
1917
|
+
let framebuffer = null;
|
|
1918
|
+
let isCube = false;
|
|
1919
|
+
let isRenderTarget3D = false;
|
|
1938
1920
|
|
|
1939
1921
|
if ( renderTarget ) {
|
|
1940
1922
|
|
|
@@ -1957,17 +1939,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1957
1939
|
|
|
1958
1940
|
}
|
|
1959
1941
|
|
|
1960
|
-
}
|
|
1961
|
-
|
|
1962
|
-
let framebuffer = null;
|
|
1963
|
-
let isCube = false;
|
|
1964
|
-
let isRenderTarget3D = false;
|
|
1965
|
-
|
|
1966
|
-
if ( renderTarget ) {
|
|
1967
|
-
|
|
1968
1942
|
const texture = renderTarget.texture;
|
|
1969
1943
|
|
|
1970
|
-
if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
|
|
1944
|
+
if ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
|
|
1971
1945
|
|
|
1972
1946
|
isRenderTarget3D = true;
|
|
1973
1947
|
|
|
@@ -2208,7 +2182,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2208
2182
|
|
|
2209
2183
|
} else {
|
|
2210
2184
|
|
|
2211
|
-
if ( srcTexture.
|
|
2185
|
+
if ( srcTexture.isCompressedArrayTexture ) {
|
|
2212
2186
|
|
|
2213
2187
|
console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );
|
|
2214
2188
|
_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
|
|
@@ -2244,7 +2218,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2244
2218
|
|
|
2245
2219
|
textures.setTexture3D( texture, 0 );
|
|
2246
2220
|
|
|
2247
|
-
} else if ( texture.isDataArrayTexture ) {
|
|
2221
|
+
} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
|
|
2248
2222
|
|
|
2249
2223
|
textures.setTexture2DArray( texture, 0 );
|
|
2250
2224
|
|
|
@@ -38,10 +38,6 @@ export default /* glsl */`
|
|
|
38
38
|
|
|
39
39
|
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
|
|
40
40
|
|
|
41
|
-
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
|
42
|
-
|
|
43
|
-
vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
|
|
44
|
-
|
|
45
41
|
#else
|
|
46
42
|
|
|
47
43
|
vec4 envColor = vec4( 0.0 );
|
|
@@ -5,7 +5,6 @@ export default /* glsl */`
|
|
|
5
5
|
*
|
|
6
6
|
* Instructions for use:
|
|
7
7
|
* - Ensure that both RE_Direct, RE_IndirectDiffuse and RE_IndirectSpecular are defined
|
|
8
|
-
* - If you have defined an RE_IndirectSpecular, you need to also provide a Material_LightProbeLOD. <---- ???
|
|
9
8
|
* - Create a material parameter that is to be passed as the third parameter to your lighting functions.
|
|
10
9
|
*
|
|
11
10
|
* TODO:
|
|
@@ -25,6 +25,14 @@ float unpackRGBAToDepth( const in vec4 v ) {
|
|
|
25
25
|
return dot( v, UnpackFactors );
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
vec2 packDepthToRG( in highp float v ) {
|
|
29
|
+
return packDepthToRGBA( v ).yx;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
float unpackRGToDepth( const in highp vec2 v ) {
|
|
33
|
+
return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
vec4 pack2HalfToRGBA( vec2 v ) {
|
|
29
37
|
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
|
|
30
38
|
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
|
|
@@ -106,6 +106,7 @@ import uv2_vertex from './ShaderChunk/uv2_vertex.glsl.js';
|
|
|
106
106
|
import worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl.js';
|
|
107
107
|
|
|
108
108
|
import * as background from './ShaderLib/background.glsl.js';
|
|
109
|
+
import * as backgroundCube from './ShaderLib/backgroundCube.glsl.js';
|
|
109
110
|
import * as cube from './ShaderLib/cube.glsl.js';
|
|
110
111
|
import * as depth from './ShaderLib/depth.glsl.js';
|
|
111
112
|
import * as distanceRGBA from './ShaderLib/distanceRGBA.glsl.js';
|
|
@@ -232,6 +233,8 @@ export const ShaderChunk = {
|
|
|
232
233
|
|
|
233
234
|
background_vert: background.vertex,
|
|
234
235
|
background_frag: background.fragment,
|
|
236
|
+
backgroundCube_vert: backgroundCube.vertex,
|
|
237
|
+
backgroundCube_frag: backgroundCube.fragment,
|
|
235
238
|
cube_vert: cube.vertex,
|
|
236
239
|
cube_frag: cube.fragment,
|
|
237
240
|
depth_vert: depth.vertex,
|
|
@@ -13,21 +13,26 @@ void main() {
|
|
|
13
13
|
|
|
14
14
|
export const fragment = /* glsl */`
|
|
15
15
|
uniform sampler2D t2D;
|
|
16
|
+
uniform float backgroundIntensity;
|
|
16
17
|
|
|
17
18
|
varying vec2 vUv;
|
|
18
19
|
|
|
19
20
|
void main() {
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
vec4 texColor = texture2D( t2D, vUv );
|
|
22
23
|
|
|
23
24
|
#ifdef DECODE_VIDEO_TEXTURE
|
|
24
25
|
|
|
25
26
|
// inline sRGB decode (TODO: Remove this code when https://crbug.com/1256340 is solved)
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
|
|
28
29
|
|
|
29
30
|
#endif
|
|
30
31
|
|
|
32
|
+
texColor.rgb *= backgroundIntensity;
|
|
33
|
+
|
|
34
|
+
gl_FragColor = texColor;
|
|
35
|
+
|
|
31
36
|
#include <tonemapping_fragment>
|
|
32
37
|
#include <encodings_fragment>
|
|
33
38
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const vertex = /* glsl */`
|
|
2
|
+
varying vec3 vWorldDirection;
|
|
3
|
+
|
|
4
|
+
#include <common>
|
|
5
|
+
|
|
6
|
+
void main() {
|
|
7
|
+
|
|
8
|
+
vWorldDirection = transformDirection( position, modelMatrix );
|
|
9
|
+
|
|
10
|
+
#include <begin_vertex>
|
|
11
|
+
#include <project_vertex>
|
|
12
|
+
|
|
13
|
+
gl_Position.z = gl_Position.w; // set z to camera.far
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
export const fragment = /* glsl */`
|
|
19
|
+
|
|
20
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
21
|
+
|
|
22
|
+
uniform samplerCube envMap;
|
|
23
|
+
|
|
24
|
+
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
|
25
|
+
|
|
26
|
+
uniform sampler2D envMap;
|
|
27
|
+
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
uniform float flipEnvMap;
|
|
31
|
+
uniform float backgroundBlurriness;
|
|
32
|
+
uniform float backgroundIntensity;
|
|
33
|
+
|
|
34
|
+
varying vec3 vWorldDirection;
|
|
35
|
+
|
|
36
|
+
#include <cube_uv_reflection_fragment>
|
|
37
|
+
|
|
38
|
+
void main() {
|
|
39
|
+
|
|
40
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
41
|
+
|
|
42
|
+
vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
|
|
43
|
+
|
|
44
|
+
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
|
45
|
+
|
|
46
|
+
vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );
|
|
47
|
+
|
|
48
|
+
#else
|
|
49
|
+
|
|
50
|
+
vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
|
|
51
|
+
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
texColor.rgb *= backgroundIntensity;
|
|
55
|
+
|
|
56
|
+
gl_FragColor = texColor;
|
|
57
|
+
|
|
58
|
+
#include <tonemapping_fragment>
|
|
59
|
+
#include <encodings_fragment>
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
@@ -16,19 +16,17 @@ void main() {
|
|
|
16
16
|
`;
|
|
17
17
|
|
|
18
18
|
export const fragment = /* glsl */`
|
|
19
|
-
|
|
19
|
+
uniform samplerCube tCube;
|
|
20
|
+
uniform float tFlip;
|
|
20
21
|
uniform float opacity;
|
|
21
22
|
|
|
22
23
|
varying vec3 vWorldDirection;
|
|
23
24
|
|
|
24
|
-
#include <cube_uv_reflection_fragment>
|
|
25
|
-
|
|
26
25
|
void main() {
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
#include <envmap_fragment>
|
|
27
|
+
vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
|
|
30
28
|
|
|
31
|
-
gl_FragColor =
|
|
29
|
+
gl_FragColor = texColor;
|
|
32
30
|
gl_FragColor.a *= opacity;
|
|
33
31
|
|
|
34
32
|
#include <tonemapping_fragment>
|
|
@@ -218,6 +218,7 @@ const ShaderLib = {
|
|
|
218
218
|
uniforms: {
|
|
219
219
|
uvTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
220
220
|
t2D: { value: null },
|
|
221
|
+
backgroundIntensity: { value: 1 }
|
|
221
222
|
},
|
|
222
223
|
|
|
223
224
|
vertexShader: ShaderChunk.background_vert,
|
|
@@ -225,14 +226,27 @@ const ShaderLib = {
|
|
|
225
226
|
|
|
226
227
|
},
|
|
227
228
|
|
|
229
|
+
backgroundCube: {
|
|
230
|
+
|
|
231
|
+
uniforms: {
|
|
232
|
+
envMap: { value: null },
|
|
233
|
+
flipEnvMap: { value: - 1 },
|
|
234
|
+
backgroundBlurriness: { value: 0 },
|
|
235
|
+
backgroundIntensity: { value: 1 }
|
|
236
|
+
},
|
|
237
|
+
|
|
238
|
+
vertexShader: ShaderChunk.backgroundCube_vert,
|
|
239
|
+
fragmentShader: ShaderChunk.backgroundCube_frag
|
|
240
|
+
|
|
241
|
+
},
|
|
242
|
+
|
|
228
243
|
cube: {
|
|
229
244
|
|
|
230
|
-
uniforms:
|
|
231
|
-
|
|
232
|
-
{
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
] ),
|
|
245
|
+
uniforms: {
|
|
246
|
+
tCube: { value: null },
|
|
247
|
+
tFlip: { value: - 1 },
|
|
248
|
+
opacity: { value: 1.0 }
|
|
249
|
+
},
|
|
236
250
|
|
|
237
251
|
vertexShader: ShaderChunk.cube_vert,
|
|
238
252
|
fragmentShader: ShaderChunk.cube_frag
|
|
@@ -34,7 +34,7 @@ const UniformsLib = {
|
|
|
34
34
|
flipEnvMap: { value: - 1 },
|
|
35
35
|
reflectivity: { value: 1.0 }, // basic, lambert, phong
|
|
36
36
|
ior: { value: 1.5 }, // physical
|
|
37
|
-
refractionRatio: { value: 0.98 } // basic, lambert, phong
|
|
37
|
+
refractionRatio: { value: 0.98 }, // basic, lambert, phong
|
|
38
38
|
|
|
39
39
|
},
|
|
40
40
|
|