super-three 0.179.0 → 0.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +268 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +81 -20
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -65
- package/src/nodes/TSL.js +11 -8
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -144
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
Color,
|
|
3
3
|
Mesh,
|
|
4
4
|
Vector3,
|
|
5
|
-
|
|
5
|
+
NodeMaterial
|
|
6
6
|
} from 'three/webgpu';
|
|
7
7
|
|
|
8
|
-
import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, texture, vec2,
|
|
8
|
+
import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, texture, vec2, max, dot, reflect, pow, length, float, uniform, reflector, mul, mix } from 'three/tsl';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* A basic flat, reflective water effect.
|
|
@@ -15,9 +15,9 @@ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, text
|
|
|
15
15
|
*
|
|
16
16
|
* References:
|
|
17
17
|
*
|
|
18
|
-
* - [Flat mirror for three.js]
|
|
19
|
-
* - [An implementation of water shader based on the flat mirror]
|
|
20
|
-
* - [Water shader explanations in WebGL]
|
|
18
|
+
* - [Flat mirror for three.js](https://github.com/Slayvin)
|
|
19
|
+
* - [An implementation of water shader based on the flat mirror](https://home.adelphi.edu/~stemkoski/)
|
|
20
|
+
* - [Water shader explanations in WebGL](http://29a.ch/slides/2012/webglwater/ )
|
|
21
21
|
*
|
|
22
22
|
* @augments Mesh
|
|
23
23
|
* @three_import import { WaterMesh } from 'three/addons/objects/WaterMesh.js';
|
|
@@ -32,7 +32,7 @@ class WaterMesh extends Mesh {
|
|
|
32
32
|
*/
|
|
33
33
|
constructor( geometry, options ) {
|
|
34
34
|
|
|
35
|
-
const material = new
|
|
35
|
+
const material = new NodeMaterial();
|
|
36
36
|
|
|
37
37
|
super( geometry, material );
|
|
38
38
|
|
|
@@ -51,7 +51,7 @@ class WaterMesh extends Mesh {
|
|
|
51
51
|
* @type {number}
|
|
52
52
|
* @default 0.5
|
|
53
53
|
*/
|
|
54
|
-
this.
|
|
54
|
+
this.resolutionScale = options.resolutionScale !== undefined ? options.resolutionScale : 0.5;
|
|
55
55
|
|
|
56
56
|
// Uniforms
|
|
57
57
|
|
|
@@ -155,21 +155,19 @@ class WaterMesh extends Mesh {
|
|
|
155
155
|
|
|
156
156
|
material.receivedShadowPositionNode = positionWorld.add( distortion );
|
|
157
157
|
|
|
158
|
-
material.setupOutgoingLight = () => diffuseColor.rgb; // backwards compatibility
|
|
159
|
-
|
|
160
158
|
material.colorNode = Fn( () => {
|
|
161
159
|
|
|
162
160
|
const mirrorSampler = reflector();
|
|
163
161
|
mirrorSampler.uvNode = mirrorSampler.uvNode.add( distortion );
|
|
164
|
-
mirrorSampler.
|
|
162
|
+
mirrorSampler.reflector.resolutionScale = this.resolutionScale;
|
|
165
163
|
|
|
166
164
|
this.add( mirrorSampler.target );
|
|
167
165
|
|
|
168
166
|
const theta = max( dot( eyeDirection, surfaceNormal ), 0.0 );
|
|
169
|
-
const rf0 = float( 0.
|
|
167
|
+
const rf0 = float( 0.02 );
|
|
170
168
|
const reflectance = mul( pow( float( 1.0 ).sub( theta ), 5.0 ), float( 1.0 ).sub( rf0 ) ).add( rf0 );
|
|
171
169
|
const scatter = max( 0.0, dot( surfaceNormal, eyeDirection ) ).mul( this.waterColor );
|
|
172
|
-
const albedo = mix( this.sunColor.mul( diffuseLight ).mul( 0.3 ).add( scatter ), mirrorSampler.rgb.
|
|
170
|
+
const albedo = mix( this.sunColor.mul( diffuseLight ).mul( 0.3 ).add( scatter ), mirrorSampler.rgb.add( specularLight ), reflectance );
|
|
173
171
|
|
|
174
172
|
return albedo;
|
|
175
173
|
|
|
@@ -183,7 +181,7 @@ class WaterMesh extends Mesh {
|
|
|
183
181
|
* Constructor options of `WaterMesh`.
|
|
184
182
|
*
|
|
185
183
|
* @typedef {Object} WaterMesh~Options
|
|
186
|
-
* @property {number} [
|
|
184
|
+
* @property {number} [resolutionScale=0.5] - The resolution scale.
|
|
187
185
|
* @property {?Texture} [waterNormals=null] - The water's normal map.
|
|
188
186
|
* @property {number} [alpha=1] - The alpha value.
|
|
189
187
|
* @property {number} [size=1] - The size value.
|
|
@@ -23,7 +23,7 @@ async function AmmoPhysics() {
|
|
|
23
23
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
const AmmoLib = await Ammo();
|
|
26
|
+
const AmmoLib = await Ammo();
|
|
27
27
|
|
|
28
28
|
const frameRate = 60;
|
|
29
29
|
|
|
@@ -66,6 +66,8 @@ async function AmmoPhysics() {
|
|
|
66
66
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
console.error( 'AmmoPhysics: Unsupported geometry type:', geometry.type );
|
|
70
|
+
|
|
69
71
|
return null;
|
|
70
72
|
|
|
71
73
|
}
|
|
@@ -83,7 +85,7 @@ async function AmmoPhysics() {
|
|
|
83
85
|
|
|
84
86
|
if ( physics ) {
|
|
85
87
|
|
|
86
|
-
addMesh( child, physics.mass );
|
|
88
|
+
addMesh( child, physics.mass, physics.restitution );
|
|
87
89
|
|
|
88
90
|
}
|
|
89
91
|
|
|
@@ -93,7 +95,7 @@ async function AmmoPhysics() {
|
|
|
93
95
|
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
function addMesh( mesh, mass = 0 ) {
|
|
98
|
+
function addMesh( mesh, mass = 0, restitution = 0 ) {
|
|
97
99
|
|
|
98
100
|
const shape = getShape( mesh.geometry );
|
|
99
101
|
|
|
@@ -101,11 +103,11 @@ async function AmmoPhysics() {
|
|
|
101
103
|
|
|
102
104
|
if ( mesh.isInstancedMesh ) {
|
|
103
105
|
|
|
104
|
-
handleInstancedMesh( mesh, mass,
|
|
106
|
+
handleInstancedMesh( mesh, shape, mass, restitution );
|
|
105
107
|
|
|
106
108
|
} else if ( mesh.isMesh ) {
|
|
107
109
|
|
|
108
|
-
handleMesh( mesh, mass,
|
|
110
|
+
handleMesh( mesh, shape, mass, restitution );
|
|
109
111
|
|
|
110
112
|
}
|
|
111
113
|
|
|
@@ -113,7 +115,7 @@ async function AmmoPhysics() {
|
|
|
113
115
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
|
-
function handleMesh( mesh, mass,
|
|
118
|
+
function handleMesh( mesh, shape, mass, restitution ) {
|
|
117
119
|
|
|
118
120
|
const position = mesh.position;
|
|
119
121
|
const quaternion = mesh.quaternion;
|
|
@@ -129,6 +131,7 @@ async function AmmoPhysics() {
|
|
|
129
131
|
shape.calculateLocalInertia( mass, localInertia );
|
|
130
132
|
|
|
131
133
|
const rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );
|
|
134
|
+
rbInfo.set_m_restitution( restitution );
|
|
132
135
|
|
|
133
136
|
const body = new AmmoLib.btRigidBody( rbInfo );
|
|
134
137
|
// body.setFriction( 4 );
|
|
@@ -144,7 +147,7 @@ async function AmmoPhysics() {
|
|
|
144
147
|
|
|
145
148
|
}
|
|
146
149
|
|
|
147
|
-
function handleInstancedMesh( mesh, mass,
|
|
150
|
+
function handleInstancedMesh( mesh, shape, mass, restitution ) {
|
|
148
151
|
|
|
149
152
|
const array = mesh.instanceMatrix.array;
|
|
150
153
|
|
|
@@ -163,6 +166,7 @@ async function AmmoPhysics() {
|
|
|
163
166
|
shape.calculateLocalInertia( mass, localInertia );
|
|
164
167
|
|
|
165
168
|
const rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );
|
|
169
|
+
rbInfo.set_m_restitution( restitution );
|
|
166
170
|
|
|
167
171
|
const body = new AmmoLib.btRigidBody( rbInfo );
|
|
168
172
|
world.addRigidBody( body );
|
|
@@ -302,6 +306,7 @@ async function AmmoPhysics() {
|
|
|
302
306
|
* @name AmmoPhysics#addMesh
|
|
303
307
|
* @param {Mesh} mesh The mesh to add.
|
|
304
308
|
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
309
|
+
* @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
|
|
305
310
|
*/
|
|
306
311
|
addMesh: addMesh,
|
|
307
312
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Timer, Vector3, Quaternion, Matrix4 } from 'three';
|
|
2
2
|
|
|
3
|
-
const JOLT_PATH = 'https://cdn.jsdelivr.net/npm/jolt-physics@0.
|
|
3
|
+
const JOLT_PATH = 'https://cdn.jsdelivr.net/npm/jolt-physics@1.0.0/dist/jolt-physics.wasm-compat.js';
|
|
4
4
|
|
|
5
5
|
const frameRate = 60;
|
|
6
6
|
|
|
@@ -28,6 +28,8 @@ function getShape( geometry ) {
|
|
|
28
28
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
console.error( 'JoltPhysics: Unsupported geometry type:', geometry.type );
|
|
32
|
+
|
|
31
33
|
return null;
|
|
32
34
|
|
|
33
35
|
}
|
|
@@ -75,7 +77,7 @@ async function JoltPhysics() {
|
|
|
75
77
|
|
|
76
78
|
if ( Jolt === null ) {
|
|
77
79
|
|
|
78
|
-
const { default: initJolt } = await import(
|
|
80
|
+
const { default: initJolt } = await import( JOLT_PATH /* @vite-ignore */ );
|
|
79
81
|
Jolt = await initJolt();
|
|
80
82
|
|
|
81
83
|
}
|
|
@@ -220,11 +222,13 @@ async function JoltPhysics() {
|
|
|
220
222
|
|
|
221
223
|
//
|
|
222
224
|
|
|
223
|
-
const
|
|
225
|
+
const timer = new Timer();
|
|
224
226
|
|
|
225
227
|
function step() {
|
|
226
228
|
|
|
227
|
-
|
|
229
|
+
timer.update();
|
|
230
|
+
|
|
231
|
+
let deltaTime = timer.getDelta();
|
|
228
232
|
|
|
229
233
|
// Don't go below 30 Hz to prevent spiral of death
|
|
230
234
|
deltaTime = Math.min( deltaTime, 1.0 / 30.0 );
|
|
@@ -305,7 +309,7 @@ async function JoltPhysics() {
|
|
|
305
309
|
* @name JoltPhysics#addMesh
|
|
306
310
|
* @param {Mesh} mesh The mesh to add.
|
|
307
311
|
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
308
|
-
* @param {number} [restitution=0] The restitution
|
|
312
|
+
* @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
|
|
309
313
|
*/
|
|
310
314
|
addMesh: addMesh,
|
|
311
315
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Timer, Vector3, Quaternion, Matrix4 } from 'three';
|
|
2
2
|
|
|
3
3
|
const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.17.3';
|
|
4
4
|
|
|
@@ -73,6 +73,8 @@ function getShape( geometry ) {
|
|
|
73
73
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
console.error( 'RapierPhysics: Unsupported geometry type:', geometry.type );
|
|
77
|
+
|
|
76
78
|
return null;
|
|
77
79
|
|
|
78
80
|
}
|
|
@@ -95,7 +97,7 @@ async function RapierPhysics() {
|
|
|
95
97
|
|
|
96
98
|
if ( RAPIER === null ) {
|
|
97
99
|
|
|
98
|
-
RAPIER = await import(
|
|
100
|
+
RAPIER = await import( RAPIER_PATH /* @vite-ignore */ );
|
|
99
101
|
await RAPIER.init();
|
|
100
102
|
|
|
101
103
|
}
|
|
@@ -299,11 +301,13 @@ async function RapierPhysics() {
|
|
|
299
301
|
|
|
300
302
|
//
|
|
301
303
|
|
|
302
|
-
const
|
|
304
|
+
const timer = new Timer();
|
|
303
305
|
|
|
304
306
|
function step() {
|
|
305
307
|
|
|
306
|
-
|
|
308
|
+
timer.update();
|
|
309
|
+
|
|
310
|
+
world.timestep = timer.getDelta();
|
|
307
311
|
world.step();
|
|
308
312
|
|
|
309
313
|
//
|
|
@@ -372,7 +376,7 @@ async function RapierPhysics() {
|
|
|
372
376
|
* @name RapierPhysics#addMesh
|
|
373
377
|
* @param {Mesh} mesh The mesh to add.
|
|
374
378
|
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
375
|
-
* @param {number} [restitution=0] The restitution
|
|
379
|
+
* @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
|
|
376
380
|
*/
|
|
377
381
|
addMesh: addMesh,
|
|
378
382
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Clock,
|
|
3
2
|
HalfFloatType,
|
|
4
3
|
NoBlending,
|
|
4
|
+
Timer,
|
|
5
5
|
Vector2,
|
|
6
6
|
WebGLRenderTarget
|
|
7
7
|
} from 'three';
|
|
@@ -123,12 +123,12 @@ class EffectComposer {
|
|
|
123
123
|
this.copyPass.material.blending = NoBlending;
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
|
-
* The internal
|
|
126
|
+
* The internal timer for managing time data.
|
|
127
127
|
*
|
|
128
128
|
* @private
|
|
129
|
-
* @type {
|
|
129
|
+
* @type {Timer}
|
|
130
130
|
*/
|
|
131
|
-
this.
|
|
131
|
+
this.timer = new Timer();
|
|
132
132
|
|
|
133
133
|
this.onSessionStateChange = this.onSessionStateChange.bind( this );
|
|
134
134
|
this.renderer.xr.addEventListener( 'sessionstart', this.onSessionStateChange );
|
|
@@ -233,9 +233,11 @@ class EffectComposer {
|
|
|
233
233
|
|
|
234
234
|
// deltaTime value is in seconds
|
|
235
235
|
|
|
236
|
+
this.timer.update();
|
|
237
|
+
|
|
236
238
|
if ( deltaTime === undefined ) {
|
|
237
239
|
|
|
238
|
-
deltaTime = this.
|
|
240
|
+
deltaTime = this.timer.getDelta();
|
|
239
241
|
|
|
240
242
|
}
|
|
241
243
|
|
|
@@ -61,7 +61,7 @@ class GlitchPass extends Pass {
|
|
|
61
61
|
// internals
|
|
62
62
|
|
|
63
63
|
this._heightMap = this._generateHeightmap( dt_size );
|
|
64
|
-
this.uniforms[ 'tDisp' ].value = this.
|
|
64
|
+
this.uniforms[ 'tDisp' ].value = this._heightMap;
|
|
65
65
|
|
|
66
66
|
this._fsQuad = new FullScreenQuad( this.material );
|
|
67
67
|
|
|
@@ -140,7 +140,7 @@ class GlitchPass extends Pass {
|
|
|
140
140
|
|
|
141
141
|
this.material.dispose();
|
|
142
142
|
|
|
143
|
-
this.
|
|
143
|
+
this._heightMap.dispose();
|
|
144
144
|
|
|
145
145
|
this._fsQuad.dispose();
|
|
146
146
|
|
|
@@ -93,6 +93,16 @@ class RenderPass extends Pass {
|
|
|
93
93
|
* @default false
|
|
94
94
|
*/
|
|
95
95
|
this.needsSwap = false;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* This flag indicates that this pass renders the scene itself.
|
|
99
|
+
*
|
|
100
|
+
* @type {boolean}
|
|
101
|
+
* @readonly
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
104
|
+
this.isRenderPass = true;
|
|
105
|
+
|
|
96
106
|
this._oldClearColor = new Color();
|
|
97
107
|
|
|
98
108
|
}
|
|
@@ -114,7 +114,7 @@ class RenderTransitionPass extends Pass {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
|
-
* Sets the texture threshold. This value
|
|
117
|
+
* Sets the texture threshold. This value defines how strong the texture effects
|
|
118
118
|
* the transition. Must be in the range `[0,1]` (0 means full effect, 1 means no effect).
|
|
119
119
|
*
|
|
120
120
|
* @param {boolean|number} value - The threshold value.
|
|
@@ -137,6 +137,8 @@ class SSRPass extends Pass {
|
|
|
137
137
|
|
|
138
138
|
this._selects = selects;
|
|
139
139
|
|
|
140
|
+
this._resolutionScale = 1;
|
|
141
|
+
|
|
140
142
|
/**
|
|
141
143
|
* Whether the pass is selective or not.
|
|
142
144
|
*
|
|
@@ -457,6 +459,29 @@ class SSRPass extends Pass {
|
|
|
457
459
|
|
|
458
460
|
}
|
|
459
461
|
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* The resolution scale. Valid values are in the range
|
|
465
|
+
* `[0,1]`. `1` means best quality but also results in
|
|
466
|
+
* more computational overhead. Setting to `0.5` means
|
|
467
|
+
* the effect is computed in half-resolution.
|
|
468
|
+
*
|
|
469
|
+
* @type {number}
|
|
470
|
+
* @default 1
|
|
471
|
+
*/
|
|
472
|
+
get resolutionScale() {
|
|
473
|
+
|
|
474
|
+
return this._resolutionScale;
|
|
475
|
+
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
set resolutionScale( value ) {
|
|
479
|
+
|
|
480
|
+
this._resolutionScale = value;
|
|
481
|
+
this.setSize( this.width, this.height ); // force a resize when resolution scaling changes
|
|
482
|
+
|
|
483
|
+
}
|
|
484
|
+
|
|
460
485
|
/**
|
|
461
486
|
* Frees the GPU-related resources allocated by this instance. Call this
|
|
462
487
|
* method whenever the pass is no longer used in your app.
|
|
@@ -661,23 +686,27 @@ class SSRPass extends Pass {
|
|
|
661
686
|
this.width = width;
|
|
662
687
|
this.height = height;
|
|
663
688
|
|
|
664
|
-
|
|
689
|
+
const effectiveWidth = Math.round( this.resolutionScale * width );
|
|
690
|
+
const effectiveHeight = Math.round( this.resolutionScale * height );
|
|
691
|
+
|
|
692
|
+
this.ssrMaterial.defines.MAX_STEP = Math.sqrt( effectiveWidth * effectiveWidth + effectiveHeight * effectiveHeight );
|
|
665
693
|
this.ssrMaterial.needsUpdate = true;
|
|
694
|
+
|
|
666
695
|
this.beautyRenderTarget.setSize( width, height );
|
|
667
|
-
this.prevRenderTarget.setSize( width, height );
|
|
668
|
-
this.ssrRenderTarget.setSize( width, height );
|
|
669
696
|
this.normalRenderTarget.setSize( width, height );
|
|
670
697
|
this.metalnessRenderTarget.setSize( width, height );
|
|
671
|
-
this.
|
|
672
|
-
this.
|
|
698
|
+
this.ssrRenderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
699
|
+
this.prevRenderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
700
|
+
this.blurRenderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
701
|
+
this.blurRenderTarget2.setSize( effectiveWidth, effectiveHeight );
|
|
673
702
|
// this.blurRenderTarget3.setSize(width, height);
|
|
674
703
|
|
|
675
|
-
this.ssrMaterial.uniforms[ 'resolution' ].value.set(
|
|
704
|
+
this.ssrMaterial.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
|
|
676
705
|
this.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );
|
|
677
706
|
this.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );
|
|
678
707
|
|
|
679
|
-
this.blurMaterial.uniforms[ 'resolution' ].value.set(
|
|
680
|
-
this.blurMaterial2.uniforms[ 'resolution' ].value.set(
|
|
708
|
+
this.blurMaterial.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
|
|
709
|
+
this.blurMaterial2.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
|
|
681
710
|
|
|
682
711
|
}
|
|
683
712
|
|
|
@@ -22,7 +22,7 @@ import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js
|
|
|
22
22
|
* When using this pass, tone mapping must be enabled in the renderer settings.
|
|
23
23
|
*
|
|
24
24
|
* Reference:
|
|
25
|
-
* - [Bloom in Unreal Engine]
|
|
25
|
+
* - [Bloom in Unreal Engine](https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/)
|
|
26
26
|
*
|
|
27
27
|
* ```js
|
|
28
28
|
* const resolution = new THREE.Vector2( window.innerWidth, window.innerHeight );
|
|
@@ -56,7 +56,7 @@ class UnrealBloomPass extends Pass {
|
|
|
56
56
|
this.strength = strength;
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
|
-
* The Bloom radius.
|
|
59
|
+
* The Bloom radius. Must be in the range `[0,1]`.
|
|
60
60
|
*
|
|
61
61
|
* @type {number}
|
|
62
62
|
*/
|
|
@@ -145,7 +145,9 @@ class UnrealBloomPass extends Pass {
|
|
|
145
145
|
// gaussian blur materials
|
|
146
146
|
|
|
147
147
|
this.separableBlurMaterials = [];
|
|
148
|
-
|
|
148
|
+
// These sizes have been changed to account for the altered coefficients-calculation to avoid blockiness,
|
|
149
|
+
// while retaining the same blur-strength. For details see https://github.com/mrdoob/three.js/pull/31528
|
|
150
|
+
const kernelSizeArray = [ 6, 10, 14, 18, 22 ];
|
|
149
151
|
resx = Math.round( this.resolution.x / 2 );
|
|
150
152
|
resy = Math.round( this.resolution.y / 2 );
|
|
151
153
|
|
|
@@ -185,6 +187,7 @@ class UnrealBloomPass extends Pass {
|
|
|
185
187
|
uniforms: this.copyUniforms,
|
|
186
188
|
vertexShader: CopyShader.vertexShader,
|
|
187
189
|
fragmentShader: CopyShader.fragmentShader,
|
|
190
|
+
premultipliedAlpha: true,
|
|
188
191
|
blending: AdditiveBlending,
|
|
189
192
|
depthTest: false,
|
|
190
193
|
depthWrite: false,
|
|
@@ -376,10 +379,11 @@ class UnrealBloomPass extends Pass {
|
|
|
376
379
|
_getSeparableBlurMaterial( kernelRadius ) {
|
|
377
380
|
|
|
378
381
|
const coefficients = [];
|
|
382
|
+
const sigma = kernelRadius / 3;
|
|
379
383
|
|
|
380
384
|
for ( let i = 0; i < kernelRadius; i ++ ) {
|
|
381
385
|
|
|
382
|
-
coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / (
|
|
386
|
+
coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( sigma * sigma ) ) / sigma );
|
|
383
387
|
|
|
384
388
|
}
|
|
385
389
|
|
|
@@ -396,34 +400,46 @@ class UnrealBloomPass extends Pass {
|
|
|
396
400
|
'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients
|
|
397
401
|
},
|
|
398
402
|
|
|
399
|
-
vertexShader:
|
|
400
|
-
|
|
403
|
+
vertexShader: /* glsl */`
|
|
404
|
+
|
|
405
|
+
varying vec2 vUv;
|
|
406
|
+
|
|
401
407
|
void main() {
|
|
408
|
+
|
|
402
409
|
vUv = uv;
|
|
403
410
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
411
|
+
|
|
404
412
|
}`,
|
|
405
413
|
|
|
406
|
-
fragmentShader:
|
|
407
|
-
|
|
414
|
+
fragmentShader: /* glsl */`
|
|
415
|
+
|
|
416
|
+
#include <common>
|
|
417
|
+
|
|
408
418
|
varying vec2 vUv;
|
|
419
|
+
|
|
409
420
|
uniform sampler2D colorTexture;
|
|
410
421
|
uniform vec2 invSize;
|
|
411
422
|
uniform vec2 direction;
|
|
412
423
|
uniform float gaussianCoefficients[KERNEL_RADIUS];
|
|
413
424
|
|
|
414
425
|
void main() {
|
|
426
|
+
|
|
415
427
|
float weightSum = gaussianCoefficients[0];
|
|
416
428
|
vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;
|
|
417
|
-
|
|
418
|
-
|
|
429
|
+
|
|
430
|
+
for ( int i = 1; i < KERNEL_RADIUS; i ++ ) {
|
|
431
|
+
|
|
432
|
+
float x = float( i );
|
|
419
433
|
float w = gaussianCoefficients[i];
|
|
420
434
|
vec2 uvOffset = direction * invSize * x;
|
|
421
435
|
vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
|
|
422
436
|
vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
|
|
423
|
-
diffuseSum += (sample1 + sample2) * w;
|
|
424
|
-
|
|
437
|
+
diffuseSum += ( sample1 + sample2 ) * w;
|
|
438
|
+
|
|
425
439
|
}
|
|
426
|
-
|
|
440
|
+
|
|
441
|
+
gl_FragColor = vec4( diffuseSum, 1.0 );
|
|
442
|
+
|
|
427
443
|
}`
|
|
428
444
|
} );
|
|
429
445
|
|
|
@@ -449,15 +465,21 @@ class UnrealBloomPass extends Pass {
|
|
|
449
465
|
'bloomRadius': { value: 0.0 }
|
|
450
466
|
},
|
|
451
467
|
|
|
452
|
-
vertexShader:
|
|
453
|
-
|
|
468
|
+
vertexShader: /* glsl */`
|
|
469
|
+
|
|
470
|
+
varying vec2 vUv;
|
|
471
|
+
|
|
454
472
|
void main() {
|
|
473
|
+
|
|
455
474
|
vUv = uv;
|
|
456
475
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
476
|
+
|
|
457
477
|
}`,
|
|
458
478
|
|
|
459
|
-
fragmentShader:
|
|
460
|
-
|
|
479
|
+
fragmentShader: /* glsl */`
|
|
480
|
+
|
|
481
|
+
varying vec2 vUv;
|
|
482
|
+
|
|
461
483
|
uniform sampler2D blurTexture1;
|
|
462
484
|
uniform sampler2D blurTexture2;
|
|
463
485
|
uniform sampler2D blurTexture3;
|
|
@@ -468,17 +490,27 @@ class UnrealBloomPass extends Pass {
|
|
|
468
490
|
uniform float bloomFactors[NUM_MIPS];
|
|
469
491
|
uniform vec3 bloomTintColors[NUM_MIPS];
|
|
470
492
|
|
|
471
|
-
float lerpBloomFactor(const in float factor) {
|
|
493
|
+
float lerpBloomFactor( const in float factor ) {
|
|
494
|
+
|
|
472
495
|
float mirrorFactor = 1.2 - factor;
|
|
473
|
-
return mix(factor, mirrorFactor, bloomRadius);
|
|
496
|
+
return mix( factor, mirrorFactor, bloomRadius );
|
|
497
|
+
|
|
474
498
|
}
|
|
475
499
|
|
|
476
500
|
void main() {
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
lerpBloomFactor(bloomFactors[
|
|
481
|
-
lerpBloomFactor(bloomFactors[
|
|
501
|
+
|
|
502
|
+
// 3.0 for backwards compatibility with previous alpha-based intensity
|
|
503
|
+
vec3 bloom = 3.0 * bloomStrength * (
|
|
504
|
+
lerpBloomFactor( bloomFactors[ 0 ] ) * bloomTintColors[ 0 ] * texture2D( blurTexture1, vUv ).rgb +
|
|
505
|
+
lerpBloomFactor( bloomFactors[ 1 ] ) * bloomTintColors[ 1 ] * texture2D( blurTexture2, vUv ).rgb +
|
|
506
|
+
lerpBloomFactor( bloomFactors[ 2 ] ) * bloomTintColors[ 2 ] * texture2D( blurTexture3, vUv ).rgb +
|
|
507
|
+
lerpBloomFactor( bloomFactors[ 3 ] ) * bloomTintColors[ 3 ] * texture2D( blurTexture4, vUv ).rgb +
|
|
508
|
+
lerpBloomFactor( bloomFactors[ 4 ] ) * bloomTintColors[ 4 ] * texture2D( blurTexture5, vUv ).rgb
|
|
509
|
+
);
|
|
510
|
+
|
|
511
|
+
float bloomAlpha = max( bloom.r, max( bloom.g, bloom.b ) );
|
|
512
|
+
gl_FragColor = vec4( bloom, bloomAlpha );
|
|
513
|
+
|
|
482
514
|
}`
|
|
483
515
|
} );
|
|
484
516
|
|
|
@@ -16,7 +16,7 @@ class CSS2DObject extends Object3D {
|
|
|
16
16
|
/**
|
|
17
17
|
* Constructs a new CSS2D object.
|
|
18
18
|
*
|
|
19
|
-
* @param {
|
|
19
|
+
* @param {HTMLElement} [element] - The DOM element.
|
|
20
20
|
*/
|
|
21
21
|
constructor( element = document.createElement( 'div' ) ) {
|
|
22
22
|
|
|
@@ -34,7 +34,7 @@ class CSS2DObject extends Object3D {
|
|
|
34
34
|
/**
|
|
35
35
|
* The DOM element which defines the appearance of this 3D object.
|
|
36
36
|
*
|
|
37
|
-
* @type {
|
|
37
|
+
* @type {HTMLElement}
|
|
38
38
|
* @readonly
|
|
39
39
|
* @default true
|
|
40
40
|
*/
|
|
@@ -59,6 +59,7 @@ class CSS2DObject extends Object3D {
|
|
|
59
59
|
this.traverse( function ( object ) {
|
|
60
60
|
|
|
61
61
|
if (
|
|
62
|
+
object.element &&
|
|
62
63
|
object.element instanceof object.element.ownerDocument.defaultView.Element &&
|
|
63
64
|
object.element.parentNode !== null
|
|
64
65
|
) {
|
|
@@ -132,10 +133,20 @@ class CSS2DRenderer {
|
|
|
132
133
|
/**
|
|
133
134
|
* The DOM where the renderer appends its child-elements.
|
|
134
135
|
*
|
|
135
|
-
* @type {
|
|
136
|
+
* @type {HTMLElement}
|
|
136
137
|
*/
|
|
137
138
|
this.domElement = domElement;
|
|
138
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements.
|
|
142
|
+
* If set to `true`, z-index values are assigned first based on the `renderOrder`
|
|
143
|
+
* and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.
|
|
144
|
+
*
|
|
145
|
+
* @type {boolean}
|
|
146
|
+
* @default true
|
|
147
|
+
*/
|
|
148
|
+
this.sortObjects = true;
|
|
149
|
+
|
|
139
150
|
/**
|
|
140
151
|
* Returns an object containing the width and height of the renderer.
|
|
141
152
|
*
|
|
@@ -165,7 +176,7 @@ class CSS2DRenderer {
|
|
|
165
176
|
_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
|
|
166
177
|
|
|
167
178
|
renderObject( scene, scene, camera );
|
|
168
|
-
zOrder( scene );
|
|
179
|
+
if ( this.sortObjects ) zOrder( scene );
|
|
169
180
|
|
|
170
181
|
};
|
|
171
182
|
|
|
@@ -310,7 +321,7 @@ class CSS2DRenderer {
|
|
|
310
321
|
* Constructor parameters of `CSS2DRenderer`.
|
|
311
322
|
*
|
|
312
323
|
* @typedef {Object} CSS2DRenderer~Parameters
|
|
313
|
-
* @property {
|
|
324
|
+
* @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.
|
|
314
325
|
* If not passed in here, a new div element will be created.
|
|
315
326
|
**/
|
|
316
327
|
|