@plastic-software/three 0.181.3 → 0.183.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 +11330 -10017
- package/build/three.core.js +10011 -9493
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1414 -631
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +21 -13
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +8007 -5427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +8005 -5426
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -3
- package/examples/jsm/animation/CCDIKSolver.js +2 -2
- package/examples/jsm/controls/ArcballControls.js +3 -3
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +109 -6
- package/examples/jsm/controls/TrackballControls.js +6 -6
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +131 -4
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Inspector.js +74 -14
- package/examples/jsm/inspector/RendererInspector.js +12 -2
- package/examples/jsm/inspector/tabs/Console.js +41 -7
- package/examples/jsm/inspector/tabs/Parameters.js +18 -2
- package/examples/jsm/inspector/tabs/Performance.js +2 -2
- package/examples/jsm/inspector/tabs/Viewer.js +4 -4
- package/examples/jsm/inspector/ui/Profiler.js +1836 -31
- package/examples/jsm/inspector/ui/Style.js +973 -14
- package/examples/jsm/inspector/ui/Tab.js +188 -1
- package/examples/jsm/inspector/ui/Values.js +17 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +6 -5
- package/examples/jsm/lines/LineMaterial.js +6 -0
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +5 -5
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -4
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +122 -171
- package/examples/jsm/loaders/HDRLoader.js +0 -1
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +19 -3
- package/examples/jsm/loaders/LDrawLoader.js +2 -3
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/SVGLoader.js +1 -1
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +37 -24
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/usd/USDAParser.js +447 -366
- package/examples/jsm/loaders/usd/USDCParser.js +1841 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Sky.js +76 -4
- package/examples/jsm/objects/SkyMesh.js +127 -10
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- 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/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +268 -30
- package/examples/jsm/renderers/SVGRenderer.js +193 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +61 -4
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +1 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/examples/jsm/tsl/display/BloomNode.js +16 -6
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +5 -4
- package/examples/jsm/tsl/display/GaussianBlurNode.js +11 -2
- package/examples/jsm/tsl/display/GodraysNode.js +624 -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 +3 -3
- 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 +8 -20
- package/examples/jsm/tsl/display/SSRNode.js +8 -8
- package/examples/jsm/tsl/display/SSSNode.js +6 -4
- package/examples/jsm/tsl/display/Shape.js +29 -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/TRAANode.js +273 -125
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/math/Bayer.js +40 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/package.json +20 -26
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +19 -11
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- 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 +1 -1
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +90 -5
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +56 -4
- package/src/core/Raycaster.js +2 -2
- package/src/core/RenderTarget.js +3 -4
- package/src/extras/PMREMGenerator.js +7 -18
- package/src/extras/TextureUtils.js +5 -1
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- 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/loaders/Cache.js +28 -0
- package/src/loaders/FileLoader.js +1 -1
- package/src/loaders/ImageBitmapLoader.js +8 -3
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/MaterialLoader.js +2 -1
- package/src/loaders/ObjectLoader.js +21 -2
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +7 -7
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +72 -25
- package/src/materials/nodes/manager/NodeMaterialObserver.js +10 -4
- package/src/math/Line3.js +3 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix4.js +74 -65
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Vector3.js +3 -5
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +87 -68
- package/src/nodes/TSL.js +6 -6
- 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 +98 -12
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +20 -1
- package/src/nodes/accessors/InstanceNode.js +148 -43
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +4 -4
- package/src/nodes/accessors/ReferenceNode.js +4 -4
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +4 -21
- package/src/nodes/accessors/StorageTextureNode.js +37 -1
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +58 -22
- package/src/nodes/accessors/UniformArrayNode.js +4 -2
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionNode.js +1 -2
- package/src/nodes/core/ArrayNode.js +20 -1
- package/src/nodes/core/AssignNode.js +2 -2
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +103 -4
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +29 -3
- package/src/nodes/core/NodeBuilder.js +170 -53
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +10 -8
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +3 -3
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +65 -16
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +16 -2
- package/src/nodes/core/StructTypeNode.js +11 -17
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +47 -22
- package/src/nodes/core/VaryingNode.js +1 -18
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +39 -4
- package/src/nodes/display/PassNode.js +98 -9
- package/src/nodes/display/RenderOutputNode.js +3 -3
- package/src/nodes/display/ScreenNode.js +3 -1
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportTextureNode.js +21 -4
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- 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 +1 -1
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/geometry/RangeNode.js +4 -2
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -2
- package/src/nodes/gpgpu/ComputeNode.js +5 -4
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +2 -2
- package/src/nodes/lighting/PointShadowNode.js +162 -149
- package/src/nodes/lighting/ShadowFilterNode.js +53 -65
- package/src/nodes/lighting/ShadowNode.js +97 -41
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +2 -2
- package/src/nodes/math/MathNode.js +3 -40
- package/src/nodes/math/OperatorNode.js +2 -1
- 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 +9 -15
- package/src/nodes/tsl/TSLCore.js +17 -14
- package/src/nodes/utils/ArrayElementNode.js +13 -0
- package/src/nodes/utils/DebugNode.js +11 -11
- package/src/nodes/utils/EventNode.js +1 -2
- package/src/nodes/utils/JoinNode.js +2 -2
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +3 -4
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +27 -14
- package/src/objects/InstancedMesh.js +11 -0
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +9 -0
- package/src/renderers/WebGLRenderer.js +178 -92
- package/src/renderers/common/Backend.js +29 -0
- package/src/renderers/common/Background.js +24 -11
- package/src/renderers/common/BindGroup.js +1 -9
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +27 -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/ChainMap.js +30 -6
- package/src/renderers/common/CubeRenderTarget.js +50 -6
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +4 -4
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/RenderBundles.js +2 -1
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +15 -3
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +18 -2
- package/src/renderers/common/RenderPipeline.js +203 -17
- package/src/renderers/common/Renderer.js +257 -72
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +17 -1
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +61 -0
- package/src/renderers/common/XRManager.js +3 -2
- package/src/renderers/common/extras/PMREMGenerator.js +2 -8
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +18 -6
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- 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/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -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_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -51
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- 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 +3 -3
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- 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 -5
- package/src/renderers/shaders/UniformsLib.js +0 -3
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLCapabilities.js +3 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +45 -109
- package/src/renderers/webgl/WebGLPrograms.js +45 -49
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +32 -37
- package/src/renderers/webgl/WebGLTextures.js +89 -28
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +148 -18
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +156 -35
- package/src/renderers/webgl-fallback/utils/WebGLState.js +181 -5
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +5 -3
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +9 -9
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +119 -13
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +322 -68
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -17
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +65 -42
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +17 -11
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +3 -3
- package/src/utils.js +258 -3
- 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 -145
- 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 -71
- 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.
|
|
@@ -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
|
|
|
@@ -155,8 +155,6 @@ 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();
|
|
@@ -166,10 +164,10 @@ class WaterMesh extends Mesh {
|
|
|
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
|
|
|
@@ -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';
|
|
@@ -121,12 +121,12 @@ class EffectComposer {
|
|
|
121
121
|
this.copyPass.material.blending = NoBlending;
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
|
-
* The internal
|
|
124
|
+
* The internal timer for managing time data.
|
|
125
125
|
*
|
|
126
126
|
* @private
|
|
127
|
-
* @type {
|
|
127
|
+
* @type {Timer}
|
|
128
128
|
*/
|
|
129
|
-
this.
|
|
129
|
+
this.timer = new Timer();
|
|
130
130
|
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -215,9 +215,11 @@ class EffectComposer {
|
|
|
215
215
|
|
|
216
216
|
// deltaTime value is in seconds
|
|
217
217
|
|
|
218
|
+
this.timer.update();
|
|
219
|
+
|
|
218
220
|
if ( deltaTime === undefined ) {
|
|
219
221
|
|
|
220
|
-
deltaTime = this.
|
|
222
|
+
deltaTime = this.timer.getDelta();
|
|
221
223
|
|
|
222
224
|
}
|
|
223
225
|
|
|
@@ -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.
|
|
@@ -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
|
*/
|
|
@@ -187,6 +187,7 @@ class UnrealBloomPass extends Pass {
|
|
|
187
187
|
uniforms: this.copyUniforms,
|
|
188
188
|
vertexShader: CopyShader.vertexShader,
|
|
189
189
|
fragmentShader: CopyShader.fragmentShader,
|
|
190
|
+
premultipliedAlpha: true,
|
|
190
191
|
blending: AdditiveBlending,
|
|
191
192
|
depthTest: false,
|
|
192
193
|
depthWrite: false,
|
|
@@ -399,33 +400,46 @@ class UnrealBloomPass extends Pass {
|
|
|
399
400
|
'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients
|
|
400
401
|
},
|
|
401
402
|
|
|
402
|
-
vertexShader:
|
|
403
|
-
|
|
403
|
+
vertexShader: /* glsl */`
|
|
404
|
+
|
|
405
|
+
varying vec2 vUv;
|
|
406
|
+
|
|
404
407
|
void main() {
|
|
408
|
+
|
|
405
409
|
vUv = uv;
|
|
406
410
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
411
|
+
|
|
407
412
|
}`,
|
|
408
413
|
|
|
409
|
-
fragmentShader:
|
|
410
|
-
|
|
414
|
+
fragmentShader: /* glsl */`
|
|
415
|
+
|
|
416
|
+
#include <common>
|
|
417
|
+
|
|
411
418
|
varying vec2 vUv;
|
|
419
|
+
|
|
412
420
|
uniform sampler2D colorTexture;
|
|
413
421
|
uniform vec2 invSize;
|
|
414
422
|
uniform vec2 direction;
|
|
415
423
|
uniform float gaussianCoefficients[KERNEL_RADIUS];
|
|
416
424
|
|
|
417
425
|
void main() {
|
|
426
|
+
|
|
418
427
|
float weightSum = gaussianCoefficients[0];
|
|
419
428
|
vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;
|
|
420
|
-
|
|
421
|
-
|
|
429
|
+
|
|
430
|
+
for ( int i = 1; i < KERNEL_RADIUS; i ++ ) {
|
|
431
|
+
|
|
432
|
+
float x = float( i );
|
|
422
433
|
float w = gaussianCoefficients[i];
|
|
423
434
|
vec2 uvOffset = direction * invSize * x;
|
|
424
435
|
vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
|
|
425
436
|
vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
|
|
426
437
|
diffuseSum += ( sample1 + sample2 ) * w;
|
|
438
|
+
|
|
427
439
|
}
|
|
440
|
+
|
|
428
441
|
gl_FragColor = vec4( diffuseSum, 1.0 );
|
|
442
|
+
|
|
429
443
|
}`
|
|
430
444
|
} );
|
|
431
445
|
|
|
@@ -451,15 +465,21 @@ class UnrealBloomPass extends Pass {
|
|
|
451
465
|
'bloomRadius': { value: 0.0 }
|
|
452
466
|
},
|
|
453
467
|
|
|
454
|
-
vertexShader:
|
|
455
|
-
|
|
468
|
+
vertexShader: /* glsl */`
|
|
469
|
+
|
|
470
|
+
varying vec2 vUv;
|
|
471
|
+
|
|
456
472
|
void main() {
|
|
473
|
+
|
|
457
474
|
vUv = uv;
|
|
458
475
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
476
|
+
|
|
459
477
|
}`,
|
|
460
478
|
|
|
461
|
-
fragmentShader:
|
|
462
|
-
|
|
479
|
+
fragmentShader: /* glsl */`
|
|
480
|
+
|
|
481
|
+
varying vec2 vUv;
|
|
482
|
+
|
|
463
483
|
uniform sampler2D blurTexture1;
|
|
464
484
|
uniform sampler2D blurTexture2;
|
|
465
485
|
uniform sampler2D blurTexture3;
|
|
@@ -470,17 +490,27 @@ class UnrealBloomPass extends Pass {
|
|
|
470
490
|
uniform float bloomFactors[NUM_MIPS];
|
|
471
491
|
uniform vec3 bloomTintColors[NUM_MIPS];
|
|
472
492
|
|
|
473
|
-
float lerpBloomFactor(const in float factor) {
|
|
493
|
+
float lerpBloomFactor( const in float factor ) {
|
|
494
|
+
|
|
474
495
|
float mirrorFactor = 1.2 - factor;
|
|
475
|
-
return mix(factor, mirrorFactor, bloomRadius);
|
|
496
|
+
return mix( factor, mirrorFactor, bloomRadius );
|
|
497
|
+
|
|
476
498
|
}
|
|
477
499
|
|
|
478
500
|
void main() {
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
lerpBloomFactor(bloomFactors[
|
|
483
|
-
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
|
+
|
|
484
514
|
}`
|
|
485
515
|
} );
|
|
486
516
|
|
|
@@ -141,7 +141,7 @@ const _matrix2 = new Matrix4();
|
|
|
141
141
|
* This renderer can be used to apply hierarchical 3D transformations to DOM elements
|
|
142
142
|
* via the CSS3 [transform](https://www.w3schools.com/cssref/css3_pr_transform.asp) property.
|
|
143
143
|
* `CSS3DRenderer` is particularly interesting if you want to apply 3D effects to a website without
|
|
144
|
-
* canvas based rendering. It can also be used in order to combine DOM elements with
|
|
144
|
+
* canvas based rendering. It can also be used in order to combine DOM elements with WebGL content.
|
|
145
145
|
*
|
|
146
146
|
* There are, however, some important limitations:
|
|
147
147
|
*
|