super-three 0.177.0 → 0.181.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 +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -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 +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- 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 +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- 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/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/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- 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/SimplexNoise.js +1 -1
- 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/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- 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 +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- 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 +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- 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 +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- 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 +8 -6
- 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/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 +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- 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/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- 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 +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- 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/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Clock, Vector3, Quaternion, Matrix4 } from 'three';
|
|
2
2
|
|
|
3
|
-
const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.
|
|
3
|
+
const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.17.3';
|
|
4
4
|
|
|
5
5
|
const frameRate = 60;
|
|
6
6
|
|
|
@@ -15,7 +15,16 @@ function getShape( geometry ) {
|
|
|
15
15
|
|
|
16
16
|
// TODO change type to is*
|
|
17
17
|
|
|
18
|
-
if ( geometry.type === '
|
|
18
|
+
if ( geometry.type === 'RoundedBoxGeometry' ) {
|
|
19
|
+
|
|
20
|
+
const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
|
|
21
|
+
const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
|
|
22
|
+
const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;
|
|
23
|
+
const radius = parameters.radius !== undefined ? parameters.radius : 0.1;
|
|
24
|
+
|
|
25
|
+
return RAPIER.ColliderDesc.roundCuboid( sx - radius, sy - radius, sz - radius, radius );
|
|
26
|
+
|
|
27
|
+
} else if ( geometry.type === 'BoxGeometry' ) {
|
|
19
28
|
|
|
20
29
|
const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
|
|
21
30
|
const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
|
|
@@ -132,18 +141,40 @@ async function RapierPhysics() {
|
|
|
132
141
|
shape.setMass( mass );
|
|
133
142
|
shape.setRestitution( restitution );
|
|
134
143
|
|
|
135
|
-
const body = mesh.isInstancedMesh
|
|
144
|
+
const { body, collider } = mesh.isInstancedMesh
|
|
136
145
|
? createInstancedBody( mesh, mass, shape )
|
|
137
146
|
: createBody( mesh.position, mesh.quaternion, mass, shape );
|
|
138
147
|
|
|
139
148
|
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
140
149
|
|
|
141
150
|
mesh.userData.physics.body = body;
|
|
151
|
+
mesh.userData.physics.collider = collider;
|
|
142
152
|
|
|
143
153
|
if ( mass > 0 ) {
|
|
144
154
|
|
|
145
155
|
meshes.push( mesh );
|
|
146
|
-
meshMap.set( mesh, body );
|
|
156
|
+
meshMap.set( mesh, { body, collider } );
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function removeMesh( mesh ) {
|
|
163
|
+
|
|
164
|
+
const index = meshes.indexOf( mesh );
|
|
165
|
+
|
|
166
|
+
if ( index !== - 1 ) {
|
|
167
|
+
|
|
168
|
+
meshes.splice( index, 1 );
|
|
169
|
+
meshMap.delete( mesh );
|
|
170
|
+
|
|
171
|
+
if ( ! mesh.userData.physics ) return;
|
|
172
|
+
|
|
173
|
+
const body = mesh.userData.physics.body;
|
|
174
|
+
const collider = mesh.userData.physics.collider;
|
|
175
|
+
|
|
176
|
+
if ( body ) removeBody( body );
|
|
177
|
+
if ( collider ) removeCollider( collider );
|
|
147
178
|
|
|
148
179
|
}
|
|
149
180
|
|
|
@@ -154,15 +185,18 @@ async function RapierPhysics() {
|
|
|
154
185
|
const array = mesh.instanceMatrix.array;
|
|
155
186
|
|
|
156
187
|
const bodies = [];
|
|
188
|
+
const colliders = [];
|
|
157
189
|
|
|
158
190
|
for ( let i = 0; i < mesh.count; i ++ ) {
|
|
159
191
|
|
|
160
192
|
const position = _vector.fromArray( array, i * 16 + 12 );
|
|
161
|
-
|
|
193
|
+
const { body, collider } = createBody( position, null, mass, shape );
|
|
194
|
+
bodies.push( body );
|
|
195
|
+
colliders.push( collider );
|
|
162
196
|
|
|
163
197
|
}
|
|
164
198
|
|
|
165
|
-
return bodies;
|
|
199
|
+
return { body: bodies, collider: colliders };
|
|
166
200
|
|
|
167
201
|
}
|
|
168
202
|
|
|
@@ -173,15 +207,51 @@ async function RapierPhysics() {
|
|
|
173
207
|
if ( quaternion !== null ) desc.setRotation( quaternion );
|
|
174
208
|
|
|
175
209
|
const body = world.createRigidBody( desc );
|
|
176
|
-
world.createCollider( shape, body );
|
|
210
|
+
const collider = world.createCollider( shape, body );
|
|
177
211
|
|
|
178
|
-
return body;
|
|
212
|
+
return { body, collider };
|
|
213
|
+
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function removeBody( body ) {
|
|
217
|
+
|
|
218
|
+
if ( Array.isArray( body ) ) {
|
|
219
|
+
|
|
220
|
+
for ( let i = 0; i < body.length; i ++ ) {
|
|
221
|
+
|
|
222
|
+
world.removeRigidBody( body[ i ] );
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
} else {
|
|
227
|
+
|
|
228
|
+
world.removeRigidBody( body );
|
|
229
|
+
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function removeCollider( collider ) {
|
|
235
|
+
|
|
236
|
+
if ( Array.isArray( collider ) ) {
|
|
237
|
+
|
|
238
|
+
for ( let i = 0; i < collider.length; i ++ ) {
|
|
239
|
+
|
|
240
|
+
world.removeCollider( collider[ i ] );
|
|
241
|
+
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
} else {
|
|
245
|
+
|
|
246
|
+
world.removeCollider( collider );
|
|
247
|
+
|
|
248
|
+
}
|
|
179
249
|
|
|
180
250
|
}
|
|
181
251
|
|
|
182
252
|
function setMeshPosition( mesh, position, index = 0 ) {
|
|
183
253
|
|
|
184
|
-
let body = meshMap.get( mesh );
|
|
254
|
+
let { body } = meshMap.get( mesh );
|
|
185
255
|
|
|
186
256
|
if ( mesh.isInstancedMesh ) {
|
|
187
257
|
|
|
@@ -197,7 +267,7 @@ async function RapierPhysics() {
|
|
|
197
267
|
|
|
198
268
|
function setMeshVelocity( mesh, velocity, index = 0 ) {
|
|
199
269
|
|
|
200
|
-
let body = meshMap.get( mesh );
|
|
270
|
+
let { body } = meshMap.get( mesh );
|
|
201
271
|
|
|
202
272
|
if ( mesh.isInstancedMesh ) {
|
|
203
273
|
|
|
@@ -212,17 +282,17 @@ async function RapierPhysics() {
|
|
|
212
282
|
function addHeightfield( mesh, width, depth, heights, scale ) {
|
|
213
283
|
|
|
214
284
|
const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
|
|
215
|
-
|
|
285
|
+
|
|
216
286
|
const bodyDesc = RAPIER.RigidBodyDesc.fixed();
|
|
217
287
|
bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
|
|
218
288
|
bodyDesc.setRotation( mesh.quaternion );
|
|
219
|
-
|
|
289
|
+
|
|
220
290
|
const body = world.createRigidBody( bodyDesc );
|
|
221
291
|
world.createCollider( shape, body );
|
|
222
|
-
|
|
292
|
+
|
|
223
293
|
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
224
294
|
mesh.userData.physics.body = body;
|
|
225
|
-
|
|
295
|
+
|
|
226
296
|
return body;
|
|
227
297
|
|
|
228
298
|
}
|
|
@@ -245,7 +315,7 @@ async function RapierPhysics() {
|
|
|
245
315
|
if ( mesh.isInstancedMesh ) {
|
|
246
316
|
|
|
247
317
|
const array = mesh.instanceMatrix.array;
|
|
248
|
-
const bodies = meshMap.get( mesh );
|
|
318
|
+
const { body: bodies } = meshMap.get( mesh );
|
|
249
319
|
|
|
250
320
|
for ( let j = 0; j < bodies.length; j ++ ) {
|
|
251
321
|
|
|
@@ -263,7 +333,7 @@ async function RapierPhysics() {
|
|
|
263
333
|
|
|
264
334
|
} else {
|
|
265
335
|
|
|
266
|
-
const body = meshMap.get( mesh );
|
|
336
|
+
const { body } = meshMap.get( mesh );
|
|
267
337
|
|
|
268
338
|
mesh.position.copy( body.translation() );
|
|
269
339
|
mesh.quaternion.copy( body.rotation() );
|
|
@@ -306,6 +376,15 @@ async function RapierPhysics() {
|
|
|
306
376
|
*/
|
|
307
377
|
addMesh: addMesh,
|
|
308
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Removes the given mesh from this physics simulation.
|
|
381
|
+
*
|
|
382
|
+
* @method
|
|
383
|
+
* @name RapierPhysics#removeMesh
|
|
384
|
+
* @param {Mesh} mesh The mesh to remove.
|
|
385
|
+
*/
|
|
386
|
+
removeMesh: removeMesh,
|
|
387
|
+
|
|
309
388
|
/**
|
|
310
389
|
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
311
390
|
* method will reset the current simulated velocity of the mesh.
|
|
@@ -103,7 +103,7 @@ class GTAOPass extends Pass {
|
|
|
103
103
|
*/
|
|
104
104
|
this.output = 0;
|
|
105
105
|
this._renderGBuffer = true;
|
|
106
|
-
this._visibilityCache =
|
|
106
|
+
this._visibilityCache = [];
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
109
|
* The AO blend intensity.
|
|
@@ -655,9 +655,12 @@ class GTAOPass extends Pass {
|
|
|
655
655
|
|
|
656
656
|
scene.traverse( function ( object ) {
|
|
657
657
|
|
|
658
|
-
|
|
658
|
+
if ( ( object.isPoints || object.isLine || object.isLine2 ) && object.visible ) {
|
|
659
659
|
|
|
660
|
-
|
|
660
|
+
object.visible = false;
|
|
661
|
+
cache.push( object );
|
|
662
|
+
|
|
663
|
+
}
|
|
661
664
|
|
|
662
665
|
} );
|
|
663
666
|
|
|
@@ -665,17 +668,15 @@ class GTAOPass extends Pass {
|
|
|
665
668
|
|
|
666
669
|
_restoreVisibility() {
|
|
667
670
|
|
|
668
|
-
const scene = this.scene;
|
|
669
671
|
const cache = this._visibilityCache;
|
|
670
672
|
|
|
671
|
-
|
|
673
|
+
for ( let i = 0; i < cache.length; i ++ ) {
|
|
672
674
|
|
|
673
|
-
|
|
674
|
-
object.visible = visible;
|
|
675
|
+
cache[ i ].visible = true;
|
|
675
676
|
|
|
676
|
-
}
|
|
677
|
+
}
|
|
677
678
|
|
|
678
|
-
cache.
|
|
679
|
+
cache.length = 0;
|
|
679
680
|
|
|
680
681
|
}
|
|
681
682
|
|
|
@@ -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
|
|
|
@@ -494,37 +494,37 @@ class OutlinePass extends Pass {
|
|
|
494
494
|
|
|
495
495
|
function VisibilityChangeCallBack( object ) {
|
|
496
496
|
|
|
497
|
-
if ( object.
|
|
497
|
+
if ( object.isPoints || object.isLine || object.isLine2 ) {
|
|
498
498
|
|
|
499
|
-
//
|
|
499
|
+
// the visibility of points and lines is always set to false in order to
|
|
500
|
+
// not affect the outline computation
|
|
500
501
|
|
|
501
|
-
if (
|
|
502
|
+
if ( bVisible === true ) {
|
|
502
503
|
|
|
503
|
-
|
|
504
|
+
object.visible = visibilityCache.get( object ); // restore
|
|
504
505
|
|
|
505
|
-
|
|
506
|
+
} else {
|
|
506
507
|
|
|
507
|
-
|
|
508
|
+
visibilityCache.set( object, object.visible );
|
|
509
|
+
object.visible = bVisible;
|
|
508
510
|
|
|
509
|
-
|
|
511
|
+
}
|
|
510
512
|
|
|
511
|
-
|
|
513
|
+
} else if ( object.isMesh || object.isSprite ) {
|
|
512
514
|
|
|
513
|
-
|
|
515
|
+
// only meshes and sprites are supported by OutlinePass
|
|
514
516
|
|
|
515
|
-
|
|
517
|
+
if ( ! selectionCache.has( object ) ) {
|
|
516
518
|
|
|
517
|
-
|
|
518
|
-
// not affect the outline computation
|
|
519
|
+
const visibility = object.visible;
|
|
519
520
|
|
|
520
|
-
|
|
521
|
+
if ( bVisible === false || visibilityCache.get( object ) === true ) {
|
|
521
522
|
|
|
522
|
-
|
|
523
|
+
object.visible = bVisible;
|
|
523
524
|
|
|
524
|
-
|
|
525
|
+
}
|
|
525
526
|
|
|
526
|
-
visibilityCache.set( object,
|
|
527
|
-
object.visible = bVisible;
|
|
527
|
+
visibilityCache.set( object, visibility );
|
|
528
528
|
|
|
529
529
|
}
|
|
530
530
|
|
|
@@ -139,7 +139,7 @@ class SSAOPass extends Pass {
|
|
|
139
139
|
*/
|
|
140
140
|
this.maxDistance = 0.1;
|
|
141
141
|
|
|
142
|
-
this._visibilityCache =
|
|
142
|
+
this._visibilityCache = [];
|
|
143
143
|
|
|
144
144
|
//
|
|
145
145
|
|
|
@@ -489,9 +489,12 @@ class SSAOPass extends Pass {
|
|
|
489
489
|
|
|
490
490
|
scene.traverse( function ( object ) {
|
|
491
491
|
|
|
492
|
-
|
|
492
|
+
if ( ( object.isPoints || object.isLine || object.isLine2 ) && object.visible ) {
|
|
493
493
|
|
|
494
|
-
|
|
494
|
+
object.visible = false;
|
|
495
|
+
cache.push( object );
|
|
496
|
+
|
|
497
|
+
}
|
|
495
498
|
|
|
496
499
|
} );
|
|
497
500
|
|
|
@@ -499,17 +502,15 @@ class SSAOPass extends Pass {
|
|
|
499
502
|
|
|
500
503
|
_restoreVisibility() {
|
|
501
504
|
|
|
502
|
-
const scene = this.scene;
|
|
503
505
|
const cache = this._visibilityCache;
|
|
504
506
|
|
|
505
|
-
|
|
507
|
+
for ( let i = 0; i < cache.length; i ++ ) {
|
|
506
508
|
|
|
507
|
-
|
|
508
|
-
object.visible = visible;
|
|
509
|
+
cache[ i ].visible = true;
|
|
509
510
|
|
|
510
|
-
}
|
|
511
|
+
}
|
|
511
512
|
|
|
512
|
-
cache.
|
|
513
|
+
cache.length = 0;
|
|
513
514
|
|
|
514
515
|
}
|
|
515
516
|
|
|
@@ -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 );
|
|
@@ -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
|
|
|
@@ -376,10 +378,11 @@ class UnrealBloomPass extends Pass {
|
|
|
376
378
|
_getSeparableBlurMaterial( kernelRadius ) {
|
|
377
379
|
|
|
378
380
|
const coefficients = [];
|
|
381
|
+
const sigma = kernelRadius / 3;
|
|
379
382
|
|
|
380
383
|
for ( let i = 0; i < kernelRadius; i ++ ) {
|
|
381
384
|
|
|
382
|
-
coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / (
|
|
385
|
+
coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( sigma * sigma ) ) / sigma );
|
|
383
386
|
|
|
384
387
|
}
|
|
385
388
|
|
|
@@ -420,10 +423,9 @@ class UnrealBloomPass extends Pass {
|
|
|
420
423
|
vec2 uvOffset = direction * invSize * x;
|
|
421
424
|
vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
|
|
422
425
|
vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
|
|
423
|
-
diffuseSum += (sample1 + sample2) * w;
|
|
424
|
-
weightSum += 2.0 * w;
|
|
426
|
+
diffuseSum += ( sample1 + sample2 ) * w;
|
|
425
427
|
}
|
|
426
|
-
gl_FragColor = vec4(diffuseSum
|
|
428
|
+
gl_FragColor = vec4( diffuseSum, 1.0 );
|
|
427
429
|
}`
|
|
428
430
|
} );
|
|
429
431
|
|
|
@@ -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
|
|
|
@@ -22,7 +22,7 @@ class CSS3DObject extends Object3D {
|
|
|
22
22
|
/**
|
|
23
23
|
* Constructs a new CSS3D object.
|
|
24
24
|
*
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {HTMLElement} [element] - The DOM element.
|
|
26
26
|
*/
|
|
27
27
|
constructor( element = document.createElement( 'div' ) ) {
|
|
28
28
|
|
|
@@ -40,7 +40,7 @@ class CSS3DObject extends Object3D {
|
|
|
40
40
|
/**
|
|
41
41
|
* The DOM element which defines the appearance of this 3D object.
|
|
42
42
|
*
|
|
43
|
-
* @type {
|
|
43
|
+
* @type {HTMLElement}
|
|
44
44
|
* @readonly
|
|
45
45
|
* @default true
|
|
46
46
|
*/
|
|
@@ -56,6 +56,7 @@ class CSS3DObject extends Object3D {
|
|
|
56
56
|
this.traverse( function ( object ) {
|
|
57
57
|
|
|
58
58
|
if (
|
|
59
|
+
object.element &&
|
|
59
60
|
object.element instanceof object.element.ownerDocument.defaultView.Element &&
|
|
60
61
|
object.element.parentNode !== null
|
|
61
62
|
) {
|
|
@@ -94,7 +95,7 @@ class CSS3DSprite extends CSS3DObject {
|
|
|
94
95
|
/**
|
|
95
96
|
* Constructs a new CSS3D sprite object.
|
|
96
97
|
*
|
|
97
|
-
* @param {
|
|
98
|
+
* @param {HTMLElement} [element] - The DOM element.
|
|
98
99
|
*/
|
|
99
100
|
constructor( element ) {
|
|
100
101
|
|
|
@@ -138,7 +139,7 @@ const _matrix2 = new Matrix4();
|
|
|
138
139
|
|
|
139
140
|
/**
|
|
140
141
|
* This renderer can be used to apply hierarchical 3D transformations to DOM elements
|
|
141
|
-
* via the CSS3 [transform]
|
|
142
|
+
* via the CSS3 [transform](https://www.w3schools.com/cssref/css3_pr_transform.asp) property.
|
|
142
143
|
* `CSS3DRenderer` is particularly interesting if you want to apply 3D effects to a website without
|
|
143
144
|
* canvas based rendering. It can also be used in order to combine DOM elements with WebGLcontent.
|
|
144
145
|
*
|
|
@@ -179,7 +180,7 @@ class CSS3DRenderer {
|
|
|
179
180
|
/**
|
|
180
181
|
* The DOM where the renderer appends its child-elements.
|
|
181
182
|
*
|
|
182
|
-
* @type {
|
|
183
|
+
* @type {HTMLElement}
|
|
183
184
|
*/
|
|
184
185
|
this.domElement = domElement;
|
|
185
186
|
|
|
@@ -446,7 +447,7 @@ class CSS3DRenderer {
|
|
|
446
447
|
* Constructor parameters of `CSS3DRenderer`.
|
|
447
448
|
*
|
|
448
449
|
* @typedef {Object} CSS3DRenderer~Parameters
|
|
449
|
-
* @property {
|
|
450
|
+
* @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.
|
|
450
451
|
* If not passed in here, a new div element will be created.
|
|
451
452
|
**/
|
|
452
453
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* ACES Filmic Tone Mapping Shader by Stephen Hill.
|
|
8
|
-
* Reference: [ltc_blit.fs]
|
|
8
|
+
* Reference: [ltc_blit.fs](https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs)
|
|
9
9
|
*
|
|
10
10
|
* This implementation of ACES is modified to accommodate a brighter viewing environment.
|
|
11
11
|
* The scale factor of 1/0.6 is subjective. See discussion in #19621.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Inspired by [Three.js FBO motion trails]
|
|
7
|
+
* Inspired by [Three.js FBO motion trails](https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&).
|
|
8
8
|
*
|
|
9
9
|
* @constant
|
|
10
10
|
* @type {ShaderMaterial~Shader}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass] based on
|
|
9
|
-
* [Nvidia Shader library]
|
|
9
|
+
* [Nvidia Shader library](http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass).
|
|
10
10
|
*
|
|
11
11
|
* @constant
|
|
12
12
|
* @type {ShaderMaterial~Shader}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Depth-of-field shader with bokeh ported from
|
|
8
|
-
* [GLSL shader by Martins Upitis]
|
|
8
|
+
* [GLSL shader by Martins Upitis](http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html).
|
|
9
9
|
*
|
|
10
10
|
* @constant
|
|
11
11
|
* @type {ShaderMaterial~Shader}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Depth-of-field shader with bokeh ported from
|
|
12
|
-
* [GLSL shader by Martins Upitis]
|
|
12
|
+
* [GLSL shader by Martins Upitis](http://blenderartists.org/forum/showthread.php?237488-GLSL-depth-of-field-with-bokeh-v2-4-(update)).
|
|
13
13
|
*
|
|
14
14
|
* Requires #define RINGS and SAMPLES integers
|
|
15
15
|
*
|