super-three 0.144.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +735 -387
- package/build/three.js +735 -387
- package/build/three.min.js +1 -1
- package/build/three.module.js +910 -408
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- 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 +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- 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 +141 -317
- 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 +113 -27
- 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 +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- 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 +40 -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 +228 -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 +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- 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/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 +62 -48
- 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 +185 -141
- 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 +26 -16
- 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/RenderPixelatedPass.js +215 -0
- 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 -8
- 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 +236 -170
- 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 +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- 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 +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- 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 +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- 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/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- 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/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- 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/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -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 +21 -1
- 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 +56 -35
- 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 +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -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/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -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/materials/MeshPhysicalMaterial.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 +36 -21
- 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/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- 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/vsm.glsl.js +0 -3
- 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 +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +70 -2
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- 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
|
@@ -135,28 +135,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
135
135
|
this.toneMapping = NoToneMapping;
|
|
136
136
|
this.toneMappingExposure = 1.0;
|
|
137
137
|
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
Object.defineProperties( this, {
|
|
141
|
-
|
|
142
|
-
// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d
|
|
143
|
-
|
|
144
|
-
gammaFactor: {
|
|
145
|
-
get: function () {
|
|
146
|
-
|
|
147
|
-
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
148
|
-
return 2;
|
|
149
|
-
|
|
150
|
-
},
|
|
151
|
-
set: function () {
|
|
152
|
-
|
|
153
|
-
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
} );
|
|
159
|
-
|
|
160
138
|
// internal properties
|
|
161
139
|
|
|
162
140
|
const _this = this;
|
|
@@ -338,7 +316,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
338
316
|
materials = new WebGLMaterials( _this, properties );
|
|
339
317
|
renderLists = new WebGLRenderLists();
|
|
340
318
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
341
|
-
background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
|
|
319
|
+
background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, _premultipliedAlpha );
|
|
342
320
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
343
321
|
uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
|
|
344
322
|
|
|
@@ -721,31 +699,48 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
721
699
|
//
|
|
722
700
|
|
|
723
701
|
let index = geometry.index;
|
|
724
|
-
|
|
702
|
+
let rangeFactor = 1;
|
|
703
|
+
|
|
704
|
+
if ( material.wireframe === true ) {
|
|
705
|
+
|
|
706
|
+
index = geometries.getWireframeAttribute( geometry );
|
|
707
|
+
rangeFactor = 2;
|
|
708
|
+
|
|
709
|
+
}
|
|
725
710
|
|
|
726
711
|
//
|
|
727
712
|
|
|
728
|
-
|
|
713
|
+
const drawRange = geometry.drawRange;
|
|
714
|
+
const position = geometry.attributes.position;
|
|
729
715
|
|
|
730
|
-
|
|
716
|
+
let drawStart = drawRange.start * rangeFactor;
|
|
717
|
+
let drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;
|
|
731
718
|
|
|
732
|
-
|
|
719
|
+
if ( group !== null ) {
|
|
733
720
|
|
|
734
|
-
|
|
721
|
+
drawStart = Math.max( drawStart, group.start * rangeFactor );
|
|
722
|
+
drawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );
|
|
735
723
|
|
|
736
724
|
}
|
|
737
725
|
|
|
738
|
-
|
|
726
|
+
if ( index !== null ) {
|
|
739
727
|
|
|
740
|
-
|
|
728
|
+
drawStart = Math.max( drawStart, 0 );
|
|
729
|
+
drawEnd = Math.min( drawEnd, index.count );
|
|
741
730
|
|
|
742
|
-
if (
|
|
731
|
+
} else if ( position !== undefined && position !== null ) {
|
|
743
732
|
|
|
744
|
-
|
|
745
|
-
|
|
733
|
+
drawStart = Math.max( drawStart, 0 );
|
|
734
|
+
drawEnd = Math.min( drawEnd, position.count );
|
|
746
735
|
|
|
747
736
|
}
|
|
748
737
|
|
|
738
|
+
const drawCount = drawEnd - drawStart;
|
|
739
|
+
|
|
740
|
+
if ( drawCount < 0 || drawCount === Infinity ) return;
|
|
741
|
+
|
|
742
|
+
//
|
|
743
|
+
|
|
749
744
|
bindingStates.setup( object, material, program, geometry, index );
|
|
750
745
|
|
|
751
746
|
let attribute;
|
|
@@ -762,23 +757,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
762
757
|
|
|
763
758
|
//
|
|
764
759
|
|
|
765
|
-
const dataCount = ( index !== null ) ? index.count : position.count;
|
|
766
|
-
|
|
767
|
-
const rangeStart = geometry.drawRange.start * rangeFactor;
|
|
768
|
-
const rangeCount = geometry.drawRange.count * rangeFactor;
|
|
769
|
-
|
|
770
|
-
const groupStart = group !== null ? group.start * rangeFactor : 0;
|
|
771
|
-
const groupCount = group !== null ? group.count * rangeFactor : Infinity;
|
|
772
|
-
|
|
773
|
-
const drawStart = Math.max( rangeStart, groupStart );
|
|
774
|
-
const drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;
|
|
775
|
-
|
|
776
|
-
const drawCount = Math.max( 0, drawEnd - drawStart + 1 );
|
|
777
|
-
|
|
778
|
-
if ( drawCount === 0 ) return;
|
|
779
|
-
|
|
780
|
-
//
|
|
781
|
-
|
|
782
760
|
if ( object.isMesh ) {
|
|
783
761
|
|
|
784
762
|
if ( material.wireframe === true ) {
|
|
@@ -830,7 +808,8 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
830
808
|
|
|
831
809
|
} else if ( geometry.isInstancedBufferGeometry ) {
|
|
832
810
|
|
|
833
|
-
const
|
|
811
|
+
const maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;
|
|
812
|
+
const instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );
|
|
834
813
|
|
|
835
814
|
renderer.renderInstances( drawStart, drawCount, instanceCount );
|
|
836
815
|
|
|
@@ -1965,6 +1944,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1965
1944
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
1966
1945
|
|
|
1967
1946
|
let useDefaultFramebuffer = true;
|
|
1947
|
+
let framebuffer = null;
|
|
1948
|
+
let isCube = false;
|
|
1949
|
+
let isRenderTarget3D = false;
|
|
1968
1950
|
|
|
1969
1951
|
if ( renderTarget ) {
|
|
1970
1952
|
|
|
@@ -1987,17 +1969,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1987
1969
|
|
|
1988
1970
|
}
|
|
1989
1971
|
|
|
1990
|
-
}
|
|
1991
|
-
|
|
1992
|
-
let framebuffer = null;
|
|
1993
|
-
let isCube = false;
|
|
1994
|
-
let isRenderTarget3D = false;
|
|
1995
|
-
|
|
1996
|
-
if ( renderTarget ) {
|
|
1997
|
-
|
|
1998
1972
|
const texture = renderTarget.texture;
|
|
1999
1973
|
|
|
2000
|
-
if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
|
|
1974
|
+
if ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
|
|
2001
1975
|
|
|
2002
1976
|
isRenderTarget3D = true;
|
|
2003
1977
|
|
|
@@ -2238,7 +2212,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2238
2212
|
|
|
2239
2213
|
} else {
|
|
2240
2214
|
|
|
2241
|
-
if ( srcTexture.
|
|
2215
|
+
if ( srcTexture.isCompressedArrayTexture ) {
|
|
2242
2216
|
|
|
2243
2217
|
console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );
|
|
2244
2218
|
_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
|
|
@@ -2274,7 +2248,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2274
2248
|
|
|
2275
2249
|
textures.setTexture3D( texture, 0 );
|
|
2276
2250
|
|
|
2277
|
-
} else if ( texture.isDataArrayTexture ) {
|
|
2251
|
+
} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
|
|
2278
2252
|
|
|
2279
2253
|
textures.setTexture2DArray( texture, 0 );
|
|
2280
2254
|
|
|
@@ -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:
|
|
@@ -3,10 +3,8 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
|
|
|
3
3
|
|
|
4
4
|
#ifdef FLAT_SHADED
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );
|
|
9
|
-
vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );
|
|
6
|
+
vec3 fdx = dFdx( vViewPosition );
|
|
7
|
+
vec3 fdy = dFdy( vViewPosition );
|
|
10
8
|
vec3 normal = normalize( cross( fdx, fdy ) );
|
|
11
9
|
|
|
12
10
|
#else
|
|
@@ -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 );
|
|
@@ -71,9 +71,9 @@ export default /* glsl */`
|
|
|
71
71
|
|
|
72
72
|
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
73
73
|
|
|
74
|
-
if ( attenuationDistance
|
|
74
|
+
if ( isinf( attenuationDistance ) ) {
|
|
75
75
|
|
|
76
|
-
// Attenuation distance is
|
|
76
|
+
// Attenuation distance is +∞, i.e. the transmitted color is not attenuated at all.
|
|
77
77
|
return radiance;
|
|
78
78
|
|
|
79
79
|
} else {
|
|
@@ -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>
|
|
@@ -20,9 +20,6 @@ void main() {
|
|
|
20
20
|
float mean = 0.0;
|
|
21
21
|
float squared_mean = 0.0;
|
|
22
22
|
|
|
23
|
-
// This seems totally useless but it's a crazy work around for a Adreno compiler bug
|
|
24
|
-
// float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );
|
|
25
|
-
|
|
26
23
|
float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
|
|
27
24
|
float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
|
|
28
25
|
for ( float i = 0.0; i < samples; i ++ ) {
|
|
@@ -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
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { sRGBEncoding, LinearSRGBColorSpace, SRGBColorSpace } from '../../constants.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Uniform Utilities
|
|
3
5
|
*/
|
|
@@ -73,6 +75,19 @@ export function cloneUniformsGroups( src ) {
|
|
|
73
75
|
|
|
74
76
|
}
|
|
75
77
|
|
|
78
|
+
export function getUnlitUniformColorSpace( renderer ) {
|
|
79
|
+
|
|
80
|
+
if ( renderer.getRenderTarget() === null ) {
|
|
81
|
+
|
|
82
|
+
// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398
|
|
83
|
+
return renderer.outputEncoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return LinearSRGBColorSpace;
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
76
91
|
// Legacy
|
|
77
92
|
|
|
78
93
|
const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
|
|
@@ -5,9 +5,11 @@ import { ShaderMaterial } from '../../materials/ShaderMaterial.js';
|
|
|
5
5
|
import { Color } from '../../math/Color.js';
|
|
6
6
|
import { Mesh } from '../../objects/Mesh.js';
|
|
7
7
|
import { ShaderLib } from '../shaders/ShaderLib.js';
|
|
8
|
-
import { cloneUniforms } from '../shaders/UniformsUtils.js';
|
|
8
|
+
import { cloneUniforms, getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
const _rgb = { r: 0, b: 0, g: 0 };
|
|
11
|
+
|
|
12
|
+
function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {
|
|
11
13
|
|
|
12
14
|
const clearColor = new Color( 0x000000 );
|
|
13
15
|
let clearAlpha = alpha === true ? 0 : 1;
|
|
@@ -26,7 +28,8 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
|
|
|
26
28
|
|
|
27
29
|
if ( background && background.isTexture ) {
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
const usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background
|
|
32
|
+
background = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );
|
|
30
33
|
|
|
31
34
|
}
|
|
32
35
|
|
|
@@ -67,9 +70,9 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
|
|
|
67
70
|
new BoxGeometry( 1, 1, 1 ),
|
|
68
71
|
new ShaderMaterial( {
|
|
69
72
|
name: 'BackgroundCubeMaterial',
|
|
70
|
-
uniforms: cloneUniforms( ShaderLib.
|
|
71
|
-
vertexShader: ShaderLib.
|
|
72
|
-
fragmentShader: ShaderLib.
|
|
73
|
+
uniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),
|
|
74
|
+
vertexShader: ShaderLib.backgroundCube.vertexShader,
|
|
75
|
+
fragmentShader: ShaderLib.backgroundCube.fragmentShader,
|
|
73
76
|
side: BackSide,
|
|
74
77
|
depthTest: false,
|
|
75
78
|
depthWrite: false,
|
|
@@ -103,6 +106,8 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
|
|
|
103
106
|
|
|
104
107
|
boxMesh.material.uniforms.envMap.value = background;
|
|
105
108
|
boxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;
|
|
109
|
+
boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;
|
|
110
|
+
boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
|
|
106
111
|
|
|
107
112
|
if ( currentBackground !== background ||
|
|
108
113
|
currentBackgroundVersion !== background.version ||
|
|
@@ -157,6 +162,7 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
|
|
|
157
162
|
}
|
|
158
163
|
|
|
159
164
|
planeMesh.material.uniforms.t2D.value = background;
|
|
165
|
+
planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
|
|
160
166
|
|
|
161
167
|
if ( background.matrixAutoUpdate === true ) {
|
|
162
168
|
|
|
@@ -189,7 +195,9 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
|
|
|
189
195
|
|
|
190
196
|
function setClear( color, alpha ) {
|
|
191
197
|
|
|
192
|
-
|
|
198
|
+
color.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );
|
|
199
|
+
|
|
200
|
+
state.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );
|
|
193
201
|
|
|
194
202
|
}
|
|
195
203
|
|
|
@@ -333,10 +333,6 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
333
333
|
|
|
334
334
|
const uniforms = cache.get( light );
|
|
335
335
|
|
|
336
|
-
// (a) intensity is the total visible light emitted
|
|
337
|
-
//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );
|
|
338
|
-
|
|
339
|
-
// (b) intensity is the brightness of the light
|
|
340
336
|
uniforms.color.copy( color ).multiplyScalar( intensity );
|
|
341
337
|
|
|
342
338
|
uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BackSide } from '../../constants.js';
|
|
2
|
+
import { getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
|
|
2
3
|
|
|
3
4
|
function WebGLMaterials( renderer, properties ) {
|
|
4
5
|
|
|
5
6
|
function refreshFogUniforms( uniforms, fog ) {
|
|
6
7
|
|
|
7
|
-
uniforms.fogColor.value
|
|
8
|
+
fog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );
|
|
8
9
|
|
|
9
10
|
if ( fog.isFog ) {
|
|
10
11
|
|
|
@@ -244,7 +244,8 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
244
244
|
|
|
245
245
|
if ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||
|
|
246
246
|
( material.displacementMap && material.displacementScale !== 0 ) ||
|
|
247
|
-
( material.alphaMap && material.alphaTest > 0 )
|
|
247
|
+
( material.alphaMap && material.alphaTest > 0 ) ||
|
|
248
|
+
( material.map && material.alphaTest > 0 ) ) {
|
|
248
249
|
|
|
249
250
|
// in this case we need a unique material instance reflecting the
|
|
250
251
|
// appropriate state
|
|
@@ -288,6 +289,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
288
289
|
|
|
289
290
|
result.alphaMap = material.alphaMap;
|
|
290
291
|
result.alphaTest = material.alphaTest;
|
|
292
|
+
result.map = material.map;
|
|
291
293
|
|
|
292
294
|
result.clipShadows = material.clipShadows;
|
|
293
295
|
result.clippingPlanes = material.clippingPlanes;
|