three-stdlib 2.35.3 → 2.35.4
Sign up to get free protection for your applications and to get access to all the features.
- package/_polyfill/CapsuleGeometry.cjs +20 -17
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +20 -17
- package/_polyfill/CapsuleGeometry.js.map +1 -1
- package/_polyfill/constants.cjs +1 -1
- package/_polyfill/constants.cjs.map +1 -1
- package/_polyfill/constants.js +1 -1
- package/_polyfill/constants.js.map +1 -1
- package/animation/AnimationClipCreator.cjs +13 -13
- package/animation/AnimationClipCreator.cjs.map +1 -1
- package/animation/AnimationClipCreator.js +13 -13
- package/animation/AnimationClipCreator.js.map +1 -1
- package/animation/CCDIKSolver.cjs +11 -11
- package/animation/CCDIKSolver.cjs.map +1 -1
- package/animation/CCDIKSolver.js +12 -12
- package/animation/CCDIKSolver.js.map +1 -1
- package/animation/MMDAnimationHelper.cjs +1 -1
- package/animation/MMDAnimationHelper.cjs.map +1 -1
- package/animation/MMDAnimationHelper.js +1 -1
- package/animation/MMDAnimationHelper.js.map +1 -1
- package/animation/MMDPhysics.cjs +4 -4
- package/animation/MMDPhysics.cjs.map +1 -1
- package/animation/MMDPhysics.js +4 -4
- package/animation/MMDPhysics.js.map +1 -1
- package/controls/ArcballControls.cjs +2 -2
- package/controls/ArcballControls.cjs.map +1 -1
- package/controls/ArcballControls.js +3 -3
- package/controls/ArcballControls.js.map +1 -1
- package/controls/FirstPersonControls.cjs +1 -1
- package/controls/FirstPersonControls.cjs.map +1 -1
- package/controls/FirstPersonControls.js +1 -1
- package/controls/FirstPersonControls.js.map +1 -1
- package/controls/OrbitControls.cjs +2 -2
- package/controls/OrbitControls.cjs.map +1 -1
- package/controls/OrbitControls.js +3 -3
- package/controls/OrbitControls.js.map +1 -1
- package/controls/PointerLockControls.cjs +2 -2
- package/controls/PointerLockControls.cjs.map +1 -1
- package/controls/PointerLockControls.js +3 -3
- package/controls/PointerLockControls.js.map +1 -1
- package/csm/CSM.cjs +4 -4
- package/csm/CSM.cjs.map +1 -1
- package/csm/CSM.js +5 -5
- package/csm/CSM.js.map +1 -1
- package/csm/CSMFrustum.cjs +1 -1
- package/csm/CSMFrustum.cjs.map +1 -1
- package/csm/CSMFrustum.js +2 -2
- package/csm/CSMFrustum.js.map +1 -1
- package/deprecated/Geometry.cjs +722 -715
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +723 -716
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +2 -1
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +3 -2
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +2 -1
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +3 -2
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +2 -1
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +3 -2
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +133 -122
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +23 -21
- package/exporters/DRACOExporter.js +133 -122
- package/exporters/DRACOExporter.js.map +1 -1
- package/exporters/GLTFExporter.cjs +170 -167
- package/exporters/GLTFExporter.cjs.map +1 -1
- package/exporters/GLTFExporter.js +170 -167
- package/exporters/GLTFExporter.js.map +1 -1
- package/geometries/LightningStrike.cjs +524 -515
- package/geometries/LightningStrike.cjs.map +1 -1
- package/geometries/LightningStrike.js +524 -515
- package/geometries/LightningStrike.js.map +1 -1
- package/geometries/RoundedBoxGeometry.cjs +1 -1
- package/geometries/RoundedBoxGeometry.cjs.map +1 -1
- package/geometries/RoundedBoxGeometry.js +2 -2
- package/geometries/RoundedBoxGeometry.js.map +1 -1
- package/helpers/RaycasterHelper.cjs +2 -2
- package/helpers/RaycasterHelper.cjs.map +1 -1
- package/helpers/RaycasterHelper.js +3 -3
- package/helpers/RaycasterHelper.js.map +1 -1
- package/helpers/VertexNormalsHelper.cjs +3 -3
- package/helpers/VertexNormalsHelper.cjs.map +1 -1
- package/helpers/VertexNormalsHelper.js +4 -4
- package/helpers/VertexNormalsHelper.js.map +1 -1
- package/helpers/VertexTangentsHelper.cjs +2 -2
- package/helpers/VertexTangentsHelper.cjs.map +1 -1
- package/helpers/VertexTangentsHelper.js +3 -3
- package/helpers/VertexTangentsHelper.js.map +1 -1
- package/interactive/InteractiveGroup.cjs +1 -1
- package/interactive/InteractiveGroup.cjs.map +1 -1
- package/interactive/InteractiveGroup.js +2 -2
- package/interactive/InteractiveGroup.js.map +1 -1
- package/interactive/SelectionBox.cjs +15 -15
- package/interactive/SelectionBox.cjs.map +1 -1
- package/interactive/SelectionBox.js +16 -16
- package/interactive/SelectionBox.js.map +1 -1
- package/libs/chevrotain.cjs +1 -1
- package/libs/chevrotain.cjs.map +1 -1
- package/libs/chevrotain.js +1 -1
- package/libs/chevrotain.js.map +1 -1
- package/libs/lottie.cjs +1 -1
- package/libs/lottie.cjs.map +1 -1
- package/libs/lottie.js +1 -1
- package/libs/lottie.js.map +1 -1
- package/libs/opentype.cjs +1 -1
- package/libs/opentype.cjs.map +1 -1
- package/libs/opentype.js +1 -1
- package/libs/opentype.js.map +1 -1
- package/lights/LightProbeGenerator.cjs +5 -5
- package/lights/LightProbeGenerator.cjs.map +1 -1
- package/lights/LightProbeGenerator.js +5 -5
- package/lights/LightProbeGenerator.js.map +1 -1
- package/lights/RectAreaLightUniformsLib.cjs +3 -3
- package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
- package/lights/RectAreaLightUniformsLib.js +3 -3
- package/lights/RectAreaLightUniformsLib.js.map +1 -1
- package/lines/LineMaterial.cjs +2 -1
- package/lines/LineMaterial.cjs.map +1 -1
- package/lines/LineMaterial.js +3 -2
- package/lines/LineMaterial.js.map +1 -1
- package/lines/LineSegments2.cjs +13 -13
- package/lines/LineSegments2.cjs.map +1 -1
- package/lines/LineSegments2.js +14 -14
- package/lines/LineSegments2.js.map +1 -1
- package/lines/LineSegmentsGeometry.cjs +2 -2
- package/lines/LineSegmentsGeometry.cjs.map +1 -1
- package/lines/LineSegmentsGeometry.js +3 -3
- package/lines/LineSegmentsGeometry.js.map +1 -1
- package/lines/Wireframe.cjs +3 -3
- package/lines/Wireframe.cjs.map +1 -1
- package/lines/Wireframe.js +4 -4
- package/lines/Wireframe.js.map +1 -1
- package/loaders/BasisTextureLoader.cjs +441 -435
- package/loaders/BasisTextureLoader.cjs.map +1 -1
- package/loaders/BasisTextureLoader.js +441 -435
- package/loaders/BasisTextureLoader.js.map +1 -1
- package/loaders/EXRLoader.cjs +2 -1
- package/loaders/EXRLoader.cjs.map +1 -1
- package/loaders/EXRLoader.js +3 -2
- package/loaders/EXRLoader.js.map +1 -1
- package/loaders/FBXLoader.cjs +2 -2
- package/loaders/FBXLoader.cjs.map +1 -1
- package/loaders/FBXLoader.js +2 -2
- package/loaders/FBXLoader.js.map +1 -1
- package/loaders/FontLoader.cjs +2 -2
- package/loaders/FontLoader.cjs.map +1 -1
- package/loaders/FontLoader.d.ts +2 -2
- package/loaders/FontLoader.js +2 -2
- package/loaders/FontLoader.js.map +1 -1
- package/loaders/GLTFLoader.cjs +2 -2
- package/loaders/GLTFLoader.cjs.map +1 -1
- package/loaders/GLTFLoader.js +2 -2
- package/loaders/GLTFLoader.js.map +1 -1
- package/loaders/KTX2Loader.cjs +377 -374
- package/loaders/KTX2Loader.cjs.map +1 -1
- package/loaders/KTX2Loader.js +377 -374
- package/loaders/KTX2Loader.js.map +1 -1
- package/loaders/LDrawLoader.cjs +5 -4
- package/loaders/LDrawLoader.cjs.map +1 -1
- package/loaders/LDrawLoader.js +6 -5
- package/loaders/LDrawLoader.js.map +1 -1
- package/loaders/OBJLoader.cjs +5 -5
- package/loaders/OBJLoader.cjs.map +1 -1
- package/loaders/OBJLoader.js +6 -6
- package/loaders/OBJLoader.js.map +1 -1
- package/loaders/PRWMLoader.cjs +46 -43
- package/loaders/PRWMLoader.cjs.map +1 -1
- package/loaders/PRWMLoader.js +46 -43
- package/loaders/PRWMLoader.js.map +1 -1
- package/loaders/SVGLoader.cjs +1694 -1688
- package/loaders/SVGLoader.cjs.map +1 -1
- package/loaders/SVGLoader.js +1694 -1688
- package/loaders/SVGLoader.js.map +1 -1
- package/loaders/XLoader.cjs +1 -1
- package/loaders/XLoader.cjs.map +1 -1
- package/loaders/XLoader.js +1 -1
- package/loaders/XLoader.js.map +1 -1
- package/math/Capsule.cjs +3 -3
- package/math/Capsule.cjs.map +1 -1
- package/math/Capsule.js +3 -3
- package/math/Capsule.js.map +1 -1
- package/math/ColorConverter.cjs +9 -9
- package/math/ColorConverter.cjs.map +1 -1
- package/math/ColorConverter.js +9 -9
- package/math/ColorConverter.js.map +1 -1
- package/math/ConvexHull.cjs +53 -50
- package/math/ConvexHull.cjs.map +1 -1
- package/math/ConvexHull.js +53 -50
- package/math/ConvexHull.js.map +1 -1
- package/math/ImprovedNoise.cjs +1 -1
- package/math/ImprovedNoise.cjs.map +1 -1
- package/math/ImprovedNoise.js +1 -1
- package/math/ImprovedNoise.js.map +1 -1
- package/math/MeshSurfaceSampler.cjs +2 -2
- package/math/MeshSurfaceSampler.cjs.map +1 -1
- package/math/MeshSurfaceSampler.js +2 -2
- package/math/MeshSurfaceSampler.js.map +1 -1
- package/math/OBB.cjs +14 -14
- package/math/OBB.cjs.map +1 -1
- package/math/OBB.js +15 -15
- package/math/OBB.js.map +1 -1
- package/math/Octree.cjs +7 -7
- package/math/Octree.cjs.map +1 -1
- package/math/Octree.js +8 -8
- package/math/Octree.js.map +1 -1
- package/misc/ConvexObjectBreaker.cjs +271 -268
- package/misc/ConvexObjectBreaker.cjs.map +1 -1
- package/misc/ConvexObjectBreaker.js +272 -269
- package/misc/ConvexObjectBreaker.js.map +1 -1
- package/misc/Gyroscope.cjs +6 -6
- package/misc/Gyroscope.cjs.map +1 -1
- package/misc/Gyroscope.js +7 -7
- package/misc/Gyroscope.js.map +1 -1
- package/modifiers/CurveModifier.cjs +1 -1
- package/modifiers/CurveModifier.cjs.map +1 -1
- package/modifiers/CurveModifier.js +2 -2
- package/modifiers/CurveModifier.js.map +1 -1
- package/modifiers/SimplifyModifier.cjs +2 -2
- package/modifiers/SimplifyModifier.cjs.map +1 -1
- package/modifiers/SimplifyModifier.js +2 -2
- package/modifiers/SimplifyModifier.js.map +1 -1
- package/objects/BatchedMesh.cjs +2 -2
- package/objects/BatchedMesh.cjs.map +1 -1
- package/objects/BatchedMesh.js +3 -3
- package/objects/BatchedMesh.js.map +1 -1
- package/objects/GroundProjectedEnv.cjs +2 -1
- package/objects/GroundProjectedEnv.cjs.map +1 -1
- package/objects/GroundProjectedEnv.js +3 -2
- package/objects/GroundProjectedEnv.js.map +1 -1
- package/objects/Lensflare.cjs +209 -206
- package/objects/Lensflare.cjs.map +1 -1
- package/objects/Lensflare.js +209 -206
- package/objects/Lensflare.js.map +1 -1
- package/objects/Reflector.cjs +154 -146
- package/objects/Reflector.cjs.map +1 -1
- package/objects/Reflector.js +154 -146
- package/objects/Reflector.js.map +1 -1
- package/objects/ReflectorForSSRPass.cjs +183 -180
- package/objects/ReflectorForSSRPass.cjs.map +1 -1
- package/objects/ReflectorForSSRPass.js +183 -180
- package/objects/ReflectorForSSRPass.js.map +1 -1
- package/objects/Refractor.cjs +164 -161
- package/objects/Refractor.cjs.map +1 -1
- package/objects/Refractor.js +164 -161
- package/objects/Refractor.js.map +1 -1
- package/objects/ShadowMesh.cjs +1 -1
- package/objects/ShadowMesh.cjs.map +1 -1
- package/objects/ShadowMesh.js +2 -2
- package/objects/ShadowMesh.js.map +1 -1
- package/objects/Sky.cjs +35 -32
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +100 -6
- package/objects/Sky.js +35 -32
- package/objects/Sky.js.map +1 -1
- package/objects/Water.cjs +2 -1
- package/objects/Water.cjs.map +1 -1
- package/objects/Water.js +3 -2
- package/objects/Water.js.map +1 -1
- package/objects/Water2.cjs +143 -140
- package/objects/Water2.cjs.map +1 -1
- package/objects/Water2.js +143 -140
- package/objects/Water2.js.map +1 -1
- package/package.json +1 -1
- package/postprocessing/SAOPass.cjs +267 -264
- package/postprocessing/SAOPass.cjs.map +1 -1
- package/postprocessing/SAOPass.js +267 -264
- package/postprocessing/SAOPass.js.map +1 -1
- package/postprocessing/SSAOPass.cjs +253 -250
- package/postprocessing/SSAOPass.cjs.map +1 -1
- package/postprocessing/SSAOPass.js +253 -250
- package/postprocessing/SSAOPass.js.map +1 -1
- package/postprocessing/SSRPass.cjs +379 -376
- package/postprocessing/SSRPass.cjs.map +1 -1
- package/postprocessing/SSRPass.js +379 -376
- package/postprocessing/SSRPass.js.map +1 -1
- package/postprocessing/UnrealBloomPass.cjs +205 -202
- package/postprocessing/UnrealBloomPass.cjs.map +1 -1
- package/postprocessing/UnrealBloomPass.js +205 -202
- package/postprocessing/UnrealBloomPass.js.map +1 -1
- package/renderers/CSS2DRenderer.cjs +5 -5
- package/renderers/CSS2DRenderer.cjs.map +1 -1
- package/renderers/CSS2DRenderer.js +5 -5
- package/renderers/CSS2DRenderer.js.map +1 -1
- package/renderers/CSS3DRenderer.cjs +5 -5
- package/renderers/CSS3DRenderer.cjs.map +1 -1
- package/renderers/CSS3DRenderer.js +6 -6
- package/renderers/CSS3DRenderer.js.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
- package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.js +71 -46
- package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
- package/shaders/AfterimageShader.cjs +41 -22
- package/shaders/AfterimageShader.cjs.map +1 -1
- package/shaders/AfterimageShader.js +41 -22
- package/shaders/AfterimageShader.js.map +1 -1
- package/shaders/BasicShader.cjs +20 -6
- package/shaders/BasicShader.cjs.map +1 -1
- package/shaders/BasicShader.js +20 -6
- package/shaders/BasicShader.js.map +1 -1
- package/shaders/BleachBypassShader.cjs +46 -26
- package/shaders/BleachBypassShader.cjs.map +1 -1
- package/shaders/BleachBypassShader.js +46 -26
- package/shaders/BleachBypassShader.js.map +1 -1
- package/shaders/BlendShader.cjs +33 -19
- package/shaders/BlendShader.cjs.map +1 -1
- package/shaders/BlendShader.js +33 -19
- package/shaders/BlendShader.js.map +1 -1
- package/shaders/BokehShader.cjs +117 -90
- package/shaders/BokehShader.cjs.map +1 -1
- package/shaders/BokehShader.js +117 -90
- package/shaders/BokehShader.js.map +1 -1
- package/shaders/BokehShader2.cjs +333 -232
- package/shaders/BokehShader2.cjs.map +1 -1
- package/shaders/BokehShader2.js +333 -232
- package/shaders/BokehShader2.js.map +1 -1
- package/shaders/BrightnessContrastShader.cjs +38 -22
- package/shaders/BrightnessContrastShader.cjs.map +1 -1
- package/shaders/BrightnessContrastShader.js +38 -22
- package/shaders/BrightnessContrastShader.js.map +1 -1
- package/shaders/ColorCorrectionShader.cjs +35 -21
- package/shaders/ColorCorrectionShader.cjs.map +1 -1
- package/shaders/ColorCorrectionShader.js +35 -21
- package/shaders/ColorCorrectionShader.js.map +1 -1
- package/shaders/ColorifyShader.cjs +34 -19
- package/shaders/ColorifyShader.cjs.map +1 -1
- package/shaders/ColorifyShader.js +34 -19
- package/shaders/ColorifyShader.js.map +1 -1
- package/shaders/ConvolutionShader.cjs +43 -24
- package/shaders/ConvolutionShader.cjs.map +1 -1
- package/shaders/ConvolutionShader.js +43 -24
- package/shaders/ConvolutionShader.js.map +1 -1
- package/shaders/CopyShader.cjs +30 -16
- package/shaders/CopyShader.cjs.map +1 -1
- package/shaders/CopyShader.js +30 -16
- package/shaders/CopyShader.js.map +1 -1
- package/shaders/DOFMipMapShader.cjs +38 -21
- package/shaders/DOFMipMapShader.cjs.map +1 -1
- package/shaders/DOFMipMapShader.js +38 -21
- package/shaders/DOFMipMapShader.js.map +1 -1
- package/shaders/DepthLimitedBlurShader.cjs +98 -69
- package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
- package/shaders/DepthLimitedBlurShader.js +98 -69
- package/shaders/DepthLimitedBlurShader.js.map +1 -1
- package/shaders/DigitalGlitch.cjs +70 -59
- package/shaders/DigitalGlitch.cjs.map +1 -1
- package/shaders/DigitalGlitch.js +70 -59
- package/shaders/DigitalGlitch.js.map +1 -1
- package/shaders/DotScreenShader.cjs +49 -28
- package/shaders/DotScreenShader.cjs.map +1 -1
- package/shaders/DotScreenShader.js +49 -28
- package/shaders/DotScreenShader.js.map +1 -1
- package/shaders/FXAAShader.cjs +1098 -1089
- package/shaders/FXAAShader.cjs.map +1 -1
- package/shaders/FXAAShader.js +1098 -1089
- package/shaders/FXAAShader.js.map +1 -1
- package/shaders/FilmShader.cjs +57 -29
- package/shaders/FilmShader.cjs.map +1 -1
- package/shaders/FilmShader.js +57 -29
- package/shaders/FilmShader.js.map +1 -1
- package/shaders/FocusShader.cjs +70 -43
- package/shaders/FocusShader.cjs.map +1 -1
- package/shaders/FocusShader.js +70 -43
- package/shaders/FocusShader.js.map +1 -1
- package/shaders/FreiChenShader.cjs +74 -53
- package/shaders/FreiChenShader.cjs.map +1 -1
- package/shaders/FreiChenShader.js +74 -53
- package/shaders/FreiChenShader.js.map +1 -1
- package/shaders/FresnelShader.cjs +55 -35
- package/shaders/FresnelShader.cjs.map +1 -1
- package/shaders/FresnelShader.js +55 -35
- package/shaders/FresnelShader.js.map +1 -1
- package/shaders/GammaCorrectionShader.cjs +33 -19
- package/shaders/GammaCorrectionShader.cjs.map +1 -1
- package/shaders/GammaCorrectionShader.js +33 -19
- package/shaders/GammaCorrectionShader.js.map +1 -1
- package/shaders/GodRaysShader.cjs +193 -116
- package/shaders/GodRaysShader.cjs.map +1 -1
- package/shaders/GodRaysShader.js +193 -116
- package/shaders/GodRaysShader.js.map +1 -1
- package/shaders/HalftoneShader.cjs +270 -192
- package/shaders/HalftoneShader.cjs.map +1 -1
- package/shaders/HalftoneShader.js +270 -192
- package/shaders/HalftoneShader.js.map +1 -1
- package/shaders/HorizontalTiltShiftShader.cjs +43 -27
- package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
- package/shaders/HorizontalTiltShiftShader.js +43 -27
- package/shaders/HorizontalTiltShiftShader.js.map +1 -1
- package/shaders/HueSaturationShader.cjs +47 -31
- package/shaders/HueSaturationShader.cjs.map +1 -1
- package/shaders/HueSaturationShader.js +47 -31
- package/shaders/HueSaturationShader.js.map +1 -1
- package/shaders/KaleidoShader.cjs +37 -24
- package/shaders/KaleidoShader.cjs.map +1 -1
- package/shaders/KaleidoShader.js +37 -24
- package/shaders/KaleidoShader.js.map +1 -1
- package/shaders/LuminosityHighPassShader.cjs +43 -24
- package/shaders/LuminosityHighPassShader.cjs.map +1 -1
- package/shaders/LuminosityHighPassShader.js +43 -24
- package/shaders/LuminosityHighPassShader.js.map +1 -1
- package/shaders/LuminosityShader.cjs +34 -17
- package/shaders/LuminosityShader.cjs.map +1 -1
- package/shaders/LuminosityShader.js +34 -17
- package/shaders/LuminosityShader.js.map +1 -1
- package/shaders/MirrorShader.cjs +39 -26
- package/shaders/MirrorShader.cjs.map +1 -1
- package/shaders/MirrorShader.js +39 -26
- package/shaders/MirrorShader.js.map +1 -1
- package/shaders/NormalMapShader.cjs +36 -21
- package/shaders/NormalMapShader.cjs.map +1 -1
- package/shaders/NormalMapShader.js +36 -21
- package/shaders/NormalMapShader.js.map +1 -1
- package/shaders/ParallaxShader.cjs +147 -97
- package/shaders/ParallaxShader.cjs.map +1 -1
- package/shaders/ParallaxShader.js +147 -97
- package/shaders/ParallaxShader.js.map +1 -1
- package/shaders/PixelShader.cjs +31 -18
- package/shaders/PixelShader.cjs.map +1 -1
- package/shaders/PixelShader.js +31 -18
- package/shaders/PixelShader.js.map +1 -1
- package/shaders/RGBShiftShader.cjs +33 -20
- package/shaders/RGBShiftShader.cjs.map +1 -1
- package/shaders/RGBShiftShader.js +33 -20
- package/shaders/RGBShiftShader.js.map +1 -1
- package/shaders/SAOShader.cjs +154 -117
- package/shaders/SAOShader.cjs.map +1 -1
- package/shaders/SAOShader.js +154 -117
- package/shaders/SAOShader.js.map +1 -1
- package/shaders/SMAAShader.cjs +358 -270
- package/shaders/SMAAShader.cjs.map +1 -1
- package/shaders/SMAAShader.js +358 -270
- package/shaders/SMAAShader.js.map +1 -1
- package/shaders/SSAOShader.cjs +236 -142
- package/shaders/SSAOShader.cjs.map +1 -1
- package/shaders/SSAOShader.js +236 -142
- package/shaders/SSAOShader.js.map +1 -1
- package/shaders/SSRShader.cjs +4 -4
- package/shaders/SSRShader.cjs.map +1 -1
- package/shaders/SSRShader.js +4 -4
- package/shaders/SSRShader.js.map +1 -1
- package/shaders/SepiaShader.cjs +36 -20
- package/shaders/SepiaShader.cjs.map +1 -1
- package/shaders/SepiaShader.js +36 -20
- package/shaders/SepiaShader.js.map +1 -1
- package/shaders/SobelOperatorShader.cjs +64 -37
- package/shaders/SobelOperatorShader.cjs.map +1 -1
- package/shaders/SobelOperatorShader.js +64 -37
- package/shaders/SobelOperatorShader.js.map +1 -1
- package/shaders/TechnicolorShader.cjs +29 -16
- package/shaders/TechnicolorShader.cjs.map +1 -1
- package/shaders/TechnicolorShader.js +29 -16
- package/shaders/TechnicolorShader.js.map +1 -1
- package/shaders/ToneMapShader.cjs +55 -35
- package/shaders/ToneMapShader.cjs.map +1 -1
- package/shaders/ToneMapShader.js +55 -35
- package/shaders/ToneMapShader.js.map +1 -1
- package/shaders/ToonShader.cjs +275 -165
- package/shaders/ToonShader.cjs.map +1 -1
- package/shaders/ToonShader.js +275 -165
- package/shaders/ToonShader.js.map +1 -1
- package/shaders/TriangleBlurShader.cjs +50 -27
- package/shaders/TriangleBlurShader.cjs.map +1 -1
- package/shaders/TriangleBlurShader.js +50 -27
- package/shaders/TriangleBlurShader.js.map +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs +32 -17
- package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
- package/shaders/UnpackDepthRGBAShader.js +32 -17
- package/shaders/UnpackDepthRGBAShader.js.map +1 -1
- package/shaders/VerticalTiltShiftShader.cjs +43 -27
- package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
- package/shaders/VerticalTiltShiftShader.js +43 -27
- package/shaders/VerticalTiltShiftShader.js.map +1 -1
- package/shaders/VignetteShader.cjs +43 -27
- package/shaders/VignetteShader.cjs.map +1 -1
- package/shaders/VignetteShader.js +43 -27
- package/shaders/VignetteShader.js.map +1 -1
- package/shaders/VolumeShader.cjs +264 -213
- package/shaders/VolumeShader.cjs.map +1 -1
- package/shaders/VolumeShader.js +264 -213
- package/shaders/VolumeShader.js.map +1 -1
- package/shaders/WaterRefractionShader.cjs +63 -35
- package/shaders/WaterRefractionShader.cjs.map +1 -1
- package/shaders/WaterRefractionShader.js +63 -35
- package/shaders/WaterRefractionShader.js.map +1 -1
- package/utils/GeometryCompressionUtils.cjs +2 -1
- package/utils/GeometryCompressionUtils.cjs.map +1 -1
- package/utils/GeometryCompressionUtils.js +3 -2
- package/utils/GeometryCompressionUtils.js.map +1 -1
- package/utils/RoughnessMipmapper.cjs +3 -3
- package/utils/RoughnessMipmapper.cjs.map +1 -1
- package/utils/RoughnessMipmapper.js +4 -4
- package/utils/RoughnessMipmapper.js.map +1 -1
- package/webxr/ARButton.cjs +109 -106
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +4 -3
- package/webxr/ARButton.js +109 -106
- package/webxr/ARButton.js.map +1 -1
- package/webxr/OculusHandPointerModel.cjs +2 -2
- package/webxr/OculusHandPointerModel.cjs.map +1 -1
- package/webxr/OculusHandPointerModel.js +2 -2
- package/webxr/OculusHandPointerModel.js.map +1 -1
- package/webxr/VRButton.cjs +98 -95
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +6 -5
- package/webxr/VRButton.js +98 -95
- package/webxr/VRButton.js.map +1 -1
- package/webxr/XRHandPrimitiveModel.cjs +2 -2
- package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
- package/webxr/XRHandPrimitiveModel.js +3 -3
- package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UnrealBloomPass.cjs","sources":["../../src/postprocessing/UnrealBloomPass.js"],"sourcesContent":["import {\n AdditiveBlending,\n Color,\n HalfFloatType,\n MeshBasicMaterial,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n} from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader'\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nclass UnrealBloomPass extends Pass {\n static BlurDirectionX = new Vector2(1.0, 0.0)\n static BlurDirectionY = new Vector2(0.0, 1.0)\n\n constructor(resolution, strength, radius, threshold) {\n super()\n\n this.strength = strength !== undefined ? strength : 1\n this.radius = radius\n this.threshold = threshold\n this.resolution = resolution !== undefined ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256)\n\n // create color only once here, reuse it later inside the render function\n this.clearColor = new Color(0, 0, 0)\n\n // render targets\n this.renderTargetsHorizontal = []\n this.renderTargetsVertical = []\n this.nMips = 5\n let resx = Math.round(this.resolution.x / 2)\n let resy = Math.round(this.resolution.y / 2)\n\n this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n this.renderTargetBright.texture.name = 'UnrealBloomPass.bright'\n this.renderTargetBright.texture.generateMipmaps = false\n\n for (let i = 0; i < this.nMips; i++) {\n const renderTargetHorizonal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetHorizonal.texture.name = 'UnrealBloomPass.h' + i\n renderTargetHorizonal.texture.generateMipmaps = false\n\n this.renderTargetsHorizontal.push(renderTargetHorizonal)\n\n const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetVertical.texture.name = 'UnrealBloomPass.v' + i\n renderTargetVertical.texture.generateMipmaps = false\n\n this.renderTargetsVertical.push(renderTargetVertical)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // luminosity high pass material\n\n const highPassShader = LuminosityHighPassShader\n this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms)\n\n this.highPassUniforms['luminosityThreshold'].value = threshold\n this.highPassUniforms['smoothWidth'].value = 0.01\n\n this.materialHighPassFilter = new ShaderMaterial({\n uniforms: this.highPassUniforms,\n vertexShader: highPassShader.vertexShader,\n fragmentShader: highPassShader.fragmentShader,\n defines: {},\n })\n\n // Gaussian Blur Materials\n this.separableBlurMaterials = []\n const kernelSizeArray = [3, 5, 7, 9, 11]\n resx = Math.round(this.resolution.x / 2)\n resy = Math.round(this.resolution.y / 2)\n\n for (let i = 0; i < this.nMips; i++) {\n this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]))\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // Composite material\n this.compositeMaterial = this.getCompositeMaterial(this.nMips)\n this.compositeMaterial.uniforms['blurTexture1'].value = this.renderTargetsVertical[0].texture\n this.compositeMaterial.uniforms['blurTexture2'].value = this.renderTargetsVertical[1].texture\n this.compositeMaterial.uniforms['blurTexture3'].value = this.renderTargetsVertical[2].texture\n this.compositeMaterial.uniforms['blurTexture4'].value = this.renderTargetsVertical[3].texture\n this.compositeMaterial.uniforms['blurTexture5'].value = this.renderTargetsVertical[4].texture\n this.compositeMaterial.uniforms['bloomStrength'].value = strength\n this.compositeMaterial.uniforms['bloomRadius'].value = 0.1\n this.compositeMaterial.needsUpdate = true\n\n const bloomFactors = [1.0, 0.8, 0.6, 0.4, 0.2]\n this.compositeMaterial.uniforms['bloomFactors'].value = bloomFactors\n this.bloomTintColors = [\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n ]\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n // copy material\n\n const copyShader = CopyShader\n\n this.copyUniforms = UniformsUtils.clone(copyShader.uniforms)\n this.copyUniforms['opacity'].value = 1.0\n\n this.materialCopy = new ShaderMaterial({\n uniforms: this.copyUniforms,\n vertexShader: copyShader.vertexShader,\n fragmentShader: copyShader.fragmentShader,\n blending: AdditiveBlending,\n depthTest: false,\n depthWrite: false,\n transparent: true,\n })\n\n this.enabled = true\n this.needsSwap = false\n\n this._oldClearColor = new Color()\n this.oldClearAlpha = 1\n\n this.basic = new MeshBasicMaterial()\n\n this.fsQuad = new FullScreenQuad(null)\n }\n\n dispose() {\n for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {\n this.renderTargetsHorizontal[i].dispose()\n }\n\n for (let i = 0; i < this.renderTargetsVertical.length; i++) {\n this.renderTargetsVertical[i].dispose()\n }\n\n this.renderTargetBright.dispose()\n\n //\n\n for (let i = 0; i < this.separableBlurMaterials.length; i++) {\n this.separableBlurMaterials[i].dispose()\n }\n\n this.compositeMaterial.dispose()\n this.materialCopy.dispose()\n this.basic.dispose()\n\n //\n\n this.fsQuad.dispose()\n }\n\n setSize(width, height) {\n let resx = Math.round(width / 2)\n let resy = Math.round(height / 2)\n\n this.renderTargetBright.setSize(resx, resy)\n\n for (let i = 0; i < this.nMips; i++) {\n this.renderTargetsHorizontal[i].setSize(resx, resy)\n this.renderTargetsVertical[i].setSize(resx, resy)\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n resy = Math.round(resy / 2)\n }\n }\n\n render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n renderer.getClearColor(this._oldClearColor)\n this.oldClearAlpha = renderer.getClearAlpha()\n const oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n renderer.setClearColor(this.clearColor, 0)\n\n if (maskActive) renderer.state.buffers.stencil.setTest(false)\n\n // Render input to screen\n\n if (this.renderToScreen) {\n this.fsQuad.material = this.basic\n this.basic.map = readBuffer.texture\n\n renderer.setRenderTarget(null)\n renderer.clear()\n this.fsQuad.render(renderer)\n }\n\n // 1. Extract Bright Areas\n\n this.highPassUniforms['tDiffuse'].value = readBuffer.texture\n this.highPassUniforms['luminosityThreshold'].value = this.threshold\n this.fsQuad.material = this.materialHighPassFilter\n\n renderer.setRenderTarget(this.renderTargetBright)\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // 2. Blur All the mips progressively\n\n let inputRenderTarget = this.renderTargetBright\n\n for (let i = 0; i < this.nMips; i++) {\n this.fsQuad.material = this.separableBlurMaterials[i]\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = inputRenderTarget.texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionX\n renderer.setRenderTarget(this.renderTargetsHorizontal[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = this.renderTargetsHorizontal[i].texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionY\n renderer.setRenderTarget(this.renderTargetsVertical[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n inputRenderTarget = this.renderTargetsVertical[i]\n }\n\n // Composite All the mips\n\n this.fsQuad.material = this.compositeMaterial\n this.compositeMaterial.uniforms['bloomStrength'].value = this.strength\n this.compositeMaterial.uniforms['bloomRadius'].value = this.radius\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n renderer.setRenderTarget(this.renderTargetsHorizontal[0])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // Blend it additively over the input texture\n\n this.fsQuad.material = this.materialCopy\n this.copyUniforms['tDiffuse'].value = this.renderTargetsHorizontal[0].texture\n\n if (maskActive) renderer.state.buffers.stencil.setTest(true)\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(readBuffer)\n this.fsQuad.render(renderer)\n }\n\n // Restore renderer settings\n\n renderer.setClearColor(this._oldClearColor, this.oldClearAlpha)\n renderer.autoClear = oldAutoClear\n }\n\n getSeperableBlurMaterial(kernelRadius) {\n return new ShaderMaterial({\n defines: {\n KERNEL_RADIUS: kernelRadius,\n SIGMA: kernelRadius,\n },\n\n uniforms: {\n colorTexture: { value: null },\n texSize: { value: new Vector2(0.5, 0.5) },\n direction: { value: new Vector2(0.5, 0.5) },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `#include <common>\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`,\n })\n }\n\n getCompositeMaterial(nMips) {\n return new ShaderMaterial({\n defines: {\n NUM_MIPS: nMips,\n },\n\n uniforms: {\n blurTexture1: { value: null },\n blurTexture2: { value: null },\n blurTexture3: { value: null },\n blurTexture4: { value: null },\n blurTexture5: { value: null },\n bloomStrength: { value: 1.0 },\n bloomFactors: { value: null },\n bloomTintColors: { value: null },\n bloomRadius: { value: 0.0 },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`,\n })\n }\n}\n\nexport { UnrealBloomPass }\n"],"names":["Pass","Vector2","Color","WebGLRenderTarget","HalfFloatType","LuminosityHighPassShader","UniformsUtils","ShaderMaterial","Vector3","CopyShader","AdditiveBlending","MeshBasicMaterial","FullScreenQuad"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"UnrealBloomPass.cjs","sources":["../../src/postprocessing/UnrealBloomPass.js"],"sourcesContent":["import {\n AdditiveBlending,\n Color,\n HalfFloatType,\n MeshBasicMaterial,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n} from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader'\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nconst UnrealBloomPass = /* @__PURE__ */ (() => {\n class UnrealBloomPass extends Pass {\n static BlurDirectionX = new Vector2(1.0, 0.0)\n static BlurDirectionY = new Vector2(0.0, 1.0)\n\n constructor(resolution, strength, radius, threshold) {\n super()\n\n this.strength = strength !== undefined ? strength : 1\n this.radius = radius\n this.threshold = threshold\n this.resolution = resolution !== undefined ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256)\n\n // create color only once here, reuse it later inside the render function\n this.clearColor = new Color(0, 0, 0)\n\n // render targets\n this.renderTargetsHorizontal = []\n this.renderTargetsVertical = []\n this.nMips = 5\n let resx = Math.round(this.resolution.x / 2)\n let resy = Math.round(this.resolution.y / 2)\n\n this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n this.renderTargetBright.texture.name = 'UnrealBloomPass.bright'\n this.renderTargetBright.texture.generateMipmaps = false\n\n for (let i = 0; i < this.nMips; i++) {\n const renderTargetHorizonal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetHorizonal.texture.name = 'UnrealBloomPass.h' + i\n renderTargetHorizonal.texture.generateMipmaps = false\n\n this.renderTargetsHorizontal.push(renderTargetHorizonal)\n\n const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetVertical.texture.name = 'UnrealBloomPass.v' + i\n renderTargetVertical.texture.generateMipmaps = false\n\n this.renderTargetsVertical.push(renderTargetVertical)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // luminosity high pass material\n\n const highPassShader = LuminosityHighPassShader\n this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms)\n\n this.highPassUniforms['luminosityThreshold'].value = threshold\n this.highPassUniforms['smoothWidth'].value = 0.01\n\n this.materialHighPassFilter = new ShaderMaterial({\n uniforms: this.highPassUniforms,\n vertexShader: highPassShader.vertexShader,\n fragmentShader: highPassShader.fragmentShader,\n defines: {},\n })\n\n // Gaussian Blur Materials\n this.separableBlurMaterials = []\n const kernelSizeArray = [3, 5, 7, 9, 11]\n resx = Math.round(this.resolution.x / 2)\n resy = Math.round(this.resolution.y / 2)\n\n for (let i = 0; i < this.nMips; i++) {\n this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]))\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // Composite material\n this.compositeMaterial = this.getCompositeMaterial(this.nMips)\n this.compositeMaterial.uniforms['blurTexture1'].value = this.renderTargetsVertical[0].texture\n this.compositeMaterial.uniforms['blurTexture2'].value = this.renderTargetsVertical[1].texture\n this.compositeMaterial.uniforms['blurTexture3'].value = this.renderTargetsVertical[2].texture\n this.compositeMaterial.uniforms['blurTexture4'].value = this.renderTargetsVertical[3].texture\n this.compositeMaterial.uniforms['blurTexture5'].value = this.renderTargetsVertical[4].texture\n this.compositeMaterial.uniforms['bloomStrength'].value = strength\n this.compositeMaterial.uniforms['bloomRadius'].value = 0.1\n this.compositeMaterial.needsUpdate = true\n\n const bloomFactors = [1.0, 0.8, 0.6, 0.4, 0.2]\n this.compositeMaterial.uniforms['bloomFactors'].value = bloomFactors\n this.bloomTintColors = [\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n ]\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n // copy material\n\n const copyShader = CopyShader\n\n this.copyUniforms = UniformsUtils.clone(copyShader.uniforms)\n this.copyUniforms['opacity'].value = 1.0\n\n this.materialCopy = new ShaderMaterial({\n uniforms: this.copyUniforms,\n vertexShader: copyShader.vertexShader,\n fragmentShader: copyShader.fragmentShader,\n blending: AdditiveBlending,\n depthTest: false,\n depthWrite: false,\n transparent: true,\n })\n\n this.enabled = true\n this.needsSwap = false\n\n this._oldClearColor = new Color()\n this.oldClearAlpha = 1\n\n this.basic = new MeshBasicMaterial()\n\n this.fsQuad = new FullScreenQuad(null)\n }\n\n dispose() {\n for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {\n this.renderTargetsHorizontal[i].dispose()\n }\n\n for (let i = 0; i < this.renderTargetsVertical.length; i++) {\n this.renderTargetsVertical[i].dispose()\n }\n\n this.renderTargetBright.dispose()\n\n //\n\n for (let i = 0; i < this.separableBlurMaterials.length; i++) {\n this.separableBlurMaterials[i].dispose()\n }\n\n this.compositeMaterial.dispose()\n this.materialCopy.dispose()\n this.basic.dispose()\n\n //\n\n this.fsQuad.dispose()\n }\n\n setSize(width, height) {\n let resx = Math.round(width / 2)\n let resy = Math.round(height / 2)\n\n this.renderTargetBright.setSize(resx, resy)\n\n for (let i = 0; i < this.nMips; i++) {\n this.renderTargetsHorizontal[i].setSize(resx, resy)\n this.renderTargetsVertical[i].setSize(resx, resy)\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n resy = Math.round(resy / 2)\n }\n }\n\n render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n renderer.getClearColor(this._oldClearColor)\n this.oldClearAlpha = renderer.getClearAlpha()\n const oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n renderer.setClearColor(this.clearColor, 0)\n\n if (maskActive) renderer.state.buffers.stencil.setTest(false)\n\n // Render input to screen\n\n if (this.renderToScreen) {\n this.fsQuad.material = this.basic\n this.basic.map = readBuffer.texture\n\n renderer.setRenderTarget(null)\n renderer.clear()\n this.fsQuad.render(renderer)\n }\n\n // 1. Extract Bright Areas\n\n this.highPassUniforms['tDiffuse'].value = readBuffer.texture\n this.highPassUniforms['luminosityThreshold'].value = this.threshold\n this.fsQuad.material = this.materialHighPassFilter\n\n renderer.setRenderTarget(this.renderTargetBright)\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // 2. Blur All the mips progressively\n\n let inputRenderTarget = this.renderTargetBright\n\n for (let i = 0; i < this.nMips; i++) {\n this.fsQuad.material = this.separableBlurMaterials[i]\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = inputRenderTarget.texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionX\n renderer.setRenderTarget(this.renderTargetsHorizontal[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = this.renderTargetsHorizontal[i].texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionY\n renderer.setRenderTarget(this.renderTargetsVertical[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n inputRenderTarget = this.renderTargetsVertical[i]\n }\n\n // Composite All the mips\n\n this.fsQuad.material = this.compositeMaterial\n this.compositeMaterial.uniforms['bloomStrength'].value = this.strength\n this.compositeMaterial.uniforms['bloomRadius'].value = this.radius\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n renderer.setRenderTarget(this.renderTargetsHorizontal[0])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // Blend it additively over the input texture\n\n this.fsQuad.material = this.materialCopy\n this.copyUniforms['tDiffuse'].value = this.renderTargetsHorizontal[0].texture\n\n if (maskActive) renderer.state.buffers.stencil.setTest(true)\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(readBuffer)\n this.fsQuad.render(renderer)\n }\n\n // Restore renderer settings\n\n renderer.setClearColor(this._oldClearColor, this.oldClearAlpha)\n renderer.autoClear = oldAutoClear\n }\n\n getSeperableBlurMaterial(kernelRadius) {\n return new ShaderMaterial({\n defines: {\n KERNEL_RADIUS: kernelRadius,\n SIGMA: kernelRadius,\n },\n\n uniforms: {\n colorTexture: { value: null },\n texSize: { value: new Vector2(0.5, 0.5) },\n direction: { value: new Vector2(0.5, 0.5) },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `#include <common>\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`,\n })\n }\n\n getCompositeMaterial(nMips) {\n return new ShaderMaterial({\n defines: {\n NUM_MIPS: nMips,\n },\n\n uniforms: {\n blurTexture1: { value: null },\n blurTexture2: { value: null },\n blurTexture3: { value: null },\n blurTexture4: { value: null },\n blurTexture5: { value: null },\n bloomStrength: { value: 1.0 },\n bloomFactors: { value: null },\n bloomTintColors: { value: null },\n bloomRadius: { value: 0.0 },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`,\n })\n }\n }\n\n return UnrealBloomPass\n})()\n\nexport { UnrealBloomPass }\n"],"names":["Pass","Vector2","Color","WebGLRenderTarget","HalfFloatType","LuminosityHighPassShader","UniformsUtils","ShaderMaterial","Vector3","CopyShader","AdditiveBlending","MeshBasicMaterial","FullScreenQuad","UnrealBloomPass"],"mappings":"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"}
|
@@ -8,194 +8,195 @@ import { Vector2, Color, WebGLRenderTarget, HalfFloatType, UniformsUtils, Shader
|
|
8
8
|
import { Pass, FullScreenQuad } from "./Pass.js";
|
9
9
|
import { CopyShader } from "../shaders/CopyShader.js";
|
10
10
|
import { LuminosityHighPassShader } from "../shaders/LuminosityHighPassShader.js";
|
11
|
-
const
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
11
|
+
const UnrealBloomPass = /* @__PURE__ */ (() => {
|
12
|
+
const _UnrealBloomPass = class extends Pass {
|
13
|
+
constructor(resolution, strength, radius, threshold) {
|
14
|
+
super();
|
15
|
+
this.strength = strength !== void 0 ? strength : 1;
|
16
|
+
this.radius = radius;
|
17
|
+
this.threshold = threshold;
|
18
|
+
this.resolution = resolution !== void 0 ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256);
|
19
|
+
this.clearColor = new Color(0, 0, 0);
|
20
|
+
this.renderTargetsHorizontal = [];
|
21
|
+
this.renderTargetsVertical = [];
|
22
|
+
this.nMips = 5;
|
23
|
+
let resx = Math.round(this.resolution.x / 2);
|
24
|
+
let resy = Math.round(this.resolution.y / 2);
|
25
|
+
this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType });
|
26
|
+
this.renderTargetBright.texture.name = "UnrealBloomPass.bright";
|
27
|
+
this.renderTargetBright.texture.generateMipmaps = false;
|
28
|
+
for (let i = 0; i < this.nMips; i++) {
|
29
|
+
const renderTargetHorizonal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType });
|
30
|
+
renderTargetHorizonal.texture.name = "UnrealBloomPass.h" + i;
|
31
|
+
renderTargetHorizonal.texture.generateMipmaps = false;
|
32
|
+
this.renderTargetsHorizontal.push(renderTargetHorizonal);
|
33
|
+
const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType });
|
34
|
+
renderTargetVertical.texture.name = "UnrealBloomPass.v" + i;
|
35
|
+
renderTargetVertical.texture.generateMipmaps = false;
|
36
|
+
this.renderTargetsVertical.push(renderTargetVertical);
|
37
|
+
resx = Math.round(resx / 2);
|
38
|
+
resy = Math.round(resy / 2);
|
39
|
+
}
|
40
|
+
const highPassShader = LuminosityHighPassShader;
|
41
|
+
this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms);
|
42
|
+
this.highPassUniforms["luminosityThreshold"].value = threshold;
|
43
|
+
this.highPassUniforms["smoothWidth"].value = 0.01;
|
44
|
+
this.materialHighPassFilter = new ShaderMaterial({
|
45
|
+
uniforms: this.highPassUniforms,
|
46
|
+
vertexShader: highPassShader.vertexShader,
|
47
|
+
fragmentShader: highPassShader.fragmentShader,
|
48
|
+
defines: {}
|
49
|
+
});
|
50
|
+
this.separableBlurMaterials = [];
|
51
|
+
const kernelSizeArray = [3, 5, 7, 9, 11];
|
52
|
+
resx = Math.round(this.resolution.x / 2);
|
53
|
+
resy = Math.round(this.resolution.y / 2);
|
54
|
+
for (let i = 0; i < this.nMips; i++) {
|
55
|
+
this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]));
|
56
|
+
this.separableBlurMaterials[i].uniforms["texSize"].value = new Vector2(resx, resy);
|
57
|
+
resx = Math.round(resx / 2);
|
58
|
+
resy = Math.round(resy / 2);
|
59
|
+
}
|
60
|
+
this.compositeMaterial = this.getCompositeMaterial(this.nMips);
|
61
|
+
this.compositeMaterial.uniforms["blurTexture1"].value = this.renderTargetsVertical[0].texture;
|
62
|
+
this.compositeMaterial.uniforms["blurTexture2"].value = this.renderTargetsVertical[1].texture;
|
63
|
+
this.compositeMaterial.uniforms["blurTexture3"].value = this.renderTargetsVertical[2].texture;
|
64
|
+
this.compositeMaterial.uniforms["blurTexture4"].value = this.renderTargetsVertical[3].texture;
|
65
|
+
this.compositeMaterial.uniforms["blurTexture5"].value = this.renderTargetsVertical[4].texture;
|
66
|
+
this.compositeMaterial.uniforms["bloomStrength"].value = strength;
|
67
|
+
this.compositeMaterial.uniforms["bloomRadius"].value = 0.1;
|
68
|
+
this.compositeMaterial.needsUpdate = true;
|
69
|
+
const bloomFactors = [1, 0.8, 0.6, 0.4, 0.2];
|
70
|
+
this.compositeMaterial.uniforms["bloomFactors"].value = bloomFactors;
|
71
|
+
this.bloomTintColors = [
|
72
|
+
new Vector3(1, 1, 1),
|
73
|
+
new Vector3(1, 1, 1),
|
74
|
+
new Vector3(1, 1, 1),
|
75
|
+
new Vector3(1, 1, 1),
|
76
|
+
new Vector3(1, 1, 1)
|
77
|
+
];
|
78
|
+
this.compositeMaterial.uniforms["bloomTintColors"].value = this.bloomTintColors;
|
79
|
+
const copyShader = CopyShader;
|
80
|
+
this.copyUniforms = UniformsUtils.clone(copyShader.uniforms);
|
81
|
+
this.copyUniforms["opacity"].value = 1;
|
82
|
+
this.materialCopy = new ShaderMaterial({
|
83
|
+
uniforms: this.copyUniforms,
|
84
|
+
vertexShader: copyShader.vertexShader,
|
85
|
+
fragmentShader: copyShader.fragmentShader,
|
86
|
+
blending: AdditiveBlending,
|
87
|
+
depthTest: false,
|
88
|
+
depthWrite: false,
|
89
|
+
transparent: true
|
90
|
+
});
|
91
|
+
this.enabled = true;
|
92
|
+
this.needsSwap = false;
|
93
|
+
this._oldClearColor = new Color();
|
94
|
+
this.oldClearAlpha = 1;
|
95
|
+
this.basic = new MeshBasicMaterial();
|
96
|
+
this.fsQuad = new FullScreenQuad(null);
|
38
97
|
}
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]));
|
55
|
-
this.separableBlurMaterials[i].uniforms["texSize"].value = new Vector2(resx, resy);
|
56
|
-
resx = Math.round(resx / 2);
|
57
|
-
resy = Math.round(resy / 2);
|
98
|
+
dispose() {
|
99
|
+
for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {
|
100
|
+
this.renderTargetsHorizontal[i].dispose();
|
101
|
+
}
|
102
|
+
for (let i = 0; i < this.renderTargetsVertical.length; i++) {
|
103
|
+
this.renderTargetsVertical[i].dispose();
|
104
|
+
}
|
105
|
+
this.renderTargetBright.dispose();
|
106
|
+
for (let i = 0; i < this.separableBlurMaterials.length; i++) {
|
107
|
+
this.separableBlurMaterials[i].dispose();
|
108
|
+
}
|
109
|
+
this.compositeMaterial.dispose();
|
110
|
+
this.materialCopy.dispose();
|
111
|
+
this.basic.dispose();
|
112
|
+
this.fsQuad.dispose();
|
58
113
|
}
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
this.bloomTintColors = [
|
71
|
-
new Vector3(1, 1, 1),
|
72
|
-
new Vector3(1, 1, 1),
|
73
|
-
new Vector3(1, 1, 1),
|
74
|
-
new Vector3(1, 1, 1),
|
75
|
-
new Vector3(1, 1, 1)
|
76
|
-
];
|
77
|
-
this.compositeMaterial.uniforms["bloomTintColors"].value = this.bloomTintColors;
|
78
|
-
const copyShader = CopyShader;
|
79
|
-
this.copyUniforms = UniformsUtils.clone(copyShader.uniforms);
|
80
|
-
this.copyUniforms["opacity"].value = 1;
|
81
|
-
this.materialCopy = new ShaderMaterial({
|
82
|
-
uniforms: this.copyUniforms,
|
83
|
-
vertexShader: copyShader.vertexShader,
|
84
|
-
fragmentShader: copyShader.fragmentShader,
|
85
|
-
blending: AdditiveBlending,
|
86
|
-
depthTest: false,
|
87
|
-
depthWrite: false,
|
88
|
-
transparent: true
|
89
|
-
});
|
90
|
-
this.enabled = true;
|
91
|
-
this.needsSwap = false;
|
92
|
-
this._oldClearColor = new Color();
|
93
|
-
this.oldClearAlpha = 1;
|
94
|
-
this.basic = new MeshBasicMaterial();
|
95
|
-
this.fsQuad = new FullScreenQuad(null);
|
96
|
-
}
|
97
|
-
dispose() {
|
98
|
-
for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {
|
99
|
-
this.renderTargetsHorizontal[i].dispose();
|
114
|
+
setSize(width, height) {
|
115
|
+
let resx = Math.round(width / 2);
|
116
|
+
let resy = Math.round(height / 2);
|
117
|
+
this.renderTargetBright.setSize(resx, resy);
|
118
|
+
for (let i = 0; i < this.nMips; i++) {
|
119
|
+
this.renderTargetsHorizontal[i].setSize(resx, resy);
|
120
|
+
this.renderTargetsVertical[i].setSize(resx, resy);
|
121
|
+
this.separableBlurMaterials[i].uniforms["texSize"].value = new Vector2(resx, resy);
|
122
|
+
resx = Math.round(resx / 2);
|
123
|
+
resy = Math.round(resy / 2);
|
124
|
+
}
|
100
125
|
}
|
101
|
-
|
102
|
-
this.
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
this.
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
this.
|
119
|
-
this.
|
120
|
-
this.separableBlurMaterials[i].uniforms["texSize"].value = new Vector2(resx, resy);
|
121
|
-
resx = Math.round(resx / 2);
|
122
|
-
resy = Math.round(resy / 2);
|
123
|
-
}
|
124
|
-
}
|
125
|
-
render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {
|
126
|
-
renderer.getClearColor(this._oldClearColor);
|
127
|
-
this.oldClearAlpha = renderer.getClearAlpha();
|
128
|
-
const oldAutoClear = renderer.autoClear;
|
129
|
-
renderer.autoClear = false;
|
130
|
-
renderer.setClearColor(this.clearColor, 0);
|
131
|
-
if (maskActive)
|
132
|
-
renderer.state.buffers.stencil.setTest(false);
|
133
|
-
if (this.renderToScreen) {
|
134
|
-
this.fsQuad.material = this.basic;
|
135
|
-
this.basic.map = readBuffer.texture;
|
136
|
-
renderer.setRenderTarget(null);
|
137
|
-
renderer.clear();
|
138
|
-
this.fsQuad.render(renderer);
|
139
|
-
}
|
140
|
-
this.highPassUniforms["tDiffuse"].value = readBuffer.texture;
|
141
|
-
this.highPassUniforms["luminosityThreshold"].value = this.threshold;
|
142
|
-
this.fsQuad.material = this.materialHighPassFilter;
|
143
|
-
renderer.setRenderTarget(this.renderTargetBright);
|
144
|
-
renderer.clear();
|
145
|
-
this.fsQuad.render(renderer);
|
146
|
-
let inputRenderTarget = this.renderTargetBright;
|
147
|
-
for (let i = 0; i < this.nMips; i++) {
|
148
|
-
this.fsQuad.material = this.separableBlurMaterials[i];
|
149
|
-
this.separableBlurMaterials[i].uniforms["colorTexture"].value = inputRenderTarget.texture;
|
150
|
-
this.separableBlurMaterials[i].uniforms["direction"].value = _UnrealBloomPass.BlurDirectionX;
|
151
|
-
renderer.setRenderTarget(this.renderTargetsHorizontal[i]);
|
126
|
+
render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {
|
127
|
+
renderer.getClearColor(this._oldClearColor);
|
128
|
+
this.oldClearAlpha = renderer.getClearAlpha();
|
129
|
+
const oldAutoClear = renderer.autoClear;
|
130
|
+
renderer.autoClear = false;
|
131
|
+
renderer.setClearColor(this.clearColor, 0);
|
132
|
+
if (maskActive)
|
133
|
+
renderer.state.buffers.stencil.setTest(false);
|
134
|
+
if (this.renderToScreen) {
|
135
|
+
this.fsQuad.material = this.basic;
|
136
|
+
this.basic.map = readBuffer.texture;
|
137
|
+
renderer.setRenderTarget(null);
|
138
|
+
renderer.clear();
|
139
|
+
this.fsQuad.render(renderer);
|
140
|
+
}
|
141
|
+
this.highPassUniforms["tDiffuse"].value = readBuffer.texture;
|
142
|
+
this.highPassUniforms["luminosityThreshold"].value = this.threshold;
|
143
|
+
this.fsQuad.material = this.materialHighPassFilter;
|
144
|
+
renderer.setRenderTarget(this.renderTargetBright);
|
152
145
|
renderer.clear();
|
153
146
|
this.fsQuad.render(renderer);
|
154
|
-
|
155
|
-
|
156
|
-
|
147
|
+
let inputRenderTarget = this.renderTargetBright;
|
148
|
+
for (let i = 0; i < this.nMips; i++) {
|
149
|
+
this.fsQuad.material = this.separableBlurMaterials[i];
|
150
|
+
this.separableBlurMaterials[i].uniforms["colorTexture"].value = inputRenderTarget.texture;
|
151
|
+
this.separableBlurMaterials[i].uniforms["direction"].value = _UnrealBloomPass.BlurDirectionX;
|
152
|
+
renderer.setRenderTarget(this.renderTargetsHorizontal[i]);
|
153
|
+
renderer.clear();
|
154
|
+
this.fsQuad.render(renderer);
|
155
|
+
this.separableBlurMaterials[i].uniforms["colorTexture"].value = this.renderTargetsHorizontal[i].texture;
|
156
|
+
this.separableBlurMaterials[i].uniforms["direction"].value = _UnrealBloomPass.BlurDirectionY;
|
157
|
+
renderer.setRenderTarget(this.renderTargetsVertical[i]);
|
158
|
+
renderer.clear();
|
159
|
+
this.fsQuad.render(renderer);
|
160
|
+
inputRenderTarget = this.renderTargetsVertical[i];
|
161
|
+
}
|
162
|
+
this.fsQuad.material = this.compositeMaterial;
|
163
|
+
this.compositeMaterial.uniforms["bloomStrength"].value = this.strength;
|
164
|
+
this.compositeMaterial.uniforms["bloomRadius"].value = this.radius;
|
165
|
+
this.compositeMaterial.uniforms["bloomTintColors"].value = this.bloomTintColors;
|
166
|
+
renderer.setRenderTarget(this.renderTargetsHorizontal[0]);
|
157
167
|
renderer.clear();
|
158
168
|
this.fsQuad.render(renderer);
|
159
|
-
|
169
|
+
this.fsQuad.material = this.materialCopy;
|
170
|
+
this.copyUniforms["tDiffuse"].value = this.renderTargetsHorizontal[0].texture;
|
171
|
+
if (maskActive)
|
172
|
+
renderer.state.buffers.stencil.setTest(true);
|
173
|
+
if (this.renderToScreen) {
|
174
|
+
renderer.setRenderTarget(null);
|
175
|
+
this.fsQuad.render(renderer);
|
176
|
+
} else {
|
177
|
+
renderer.setRenderTarget(readBuffer);
|
178
|
+
this.fsQuad.render(renderer);
|
179
|
+
}
|
180
|
+
renderer.setClearColor(this._oldClearColor, this.oldClearAlpha);
|
181
|
+
renderer.autoClear = oldAutoClear;
|
160
182
|
}
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
renderer.setRenderTarget(null);
|
174
|
-
this.fsQuad.render(renderer);
|
175
|
-
} else {
|
176
|
-
renderer.setRenderTarget(readBuffer);
|
177
|
-
this.fsQuad.render(renderer);
|
178
|
-
}
|
179
|
-
renderer.setClearColor(this._oldClearColor, this.oldClearAlpha);
|
180
|
-
renderer.autoClear = oldAutoClear;
|
181
|
-
}
|
182
|
-
getSeperableBlurMaterial(kernelRadius) {
|
183
|
-
return new ShaderMaterial({
|
184
|
-
defines: {
|
185
|
-
KERNEL_RADIUS: kernelRadius,
|
186
|
-
SIGMA: kernelRadius
|
187
|
-
},
|
188
|
-
uniforms: {
|
189
|
-
colorTexture: { value: null },
|
190
|
-
texSize: { value: new Vector2(0.5, 0.5) },
|
191
|
-
direction: { value: new Vector2(0.5, 0.5) }
|
192
|
-
},
|
193
|
-
vertexShader: `varying vec2 vUv;
|
183
|
+
getSeperableBlurMaterial(kernelRadius) {
|
184
|
+
return new ShaderMaterial({
|
185
|
+
defines: {
|
186
|
+
KERNEL_RADIUS: kernelRadius,
|
187
|
+
SIGMA: kernelRadius
|
188
|
+
},
|
189
|
+
uniforms: {
|
190
|
+
colorTexture: { value: null },
|
191
|
+
texSize: { value: new Vector2(0.5, 0.5) },
|
192
|
+
direction: { value: new Vector2(0.5, 0.5) }
|
193
|
+
},
|
194
|
+
vertexShader: `varying vec2 vUv;
|
194
195
|
void main() {
|
195
196
|
vUv = uv;
|
196
197
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
197
198
|
}`,
|
198
|
-
|
199
|
+
fragmentShader: `#include <common>
|
199
200
|
varying vec2 vUv;
|
200
201
|
uniform sampler2D colorTexture;
|
201
202
|
uniform vec2 texSize;
|
@@ -220,30 +221,30 @@ const _UnrealBloomPass = class extends Pass {
|
|
220
221
|
}
|
221
222
|
gl_FragColor = vec4(diffuseSum/weightSum, 1.0);
|
222
223
|
}`
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
224
|
+
});
|
225
|
+
}
|
226
|
+
getCompositeMaterial(nMips) {
|
227
|
+
return new ShaderMaterial({
|
228
|
+
defines: {
|
229
|
+
NUM_MIPS: nMips
|
230
|
+
},
|
231
|
+
uniforms: {
|
232
|
+
blurTexture1: { value: null },
|
233
|
+
blurTexture2: { value: null },
|
234
|
+
blurTexture3: { value: null },
|
235
|
+
blurTexture4: { value: null },
|
236
|
+
blurTexture5: { value: null },
|
237
|
+
bloomStrength: { value: 1 },
|
238
|
+
bloomFactors: { value: null },
|
239
|
+
bloomTintColors: { value: null },
|
240
|
+
bloomRadius: { value: 0 }
|
241
|
+
},
|
242
|
+
vertexShader: `varying vec2 vUv;
|
242
243
|
void main() {
|
243
244
|
vUv = uv;
|
244
245
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
245
246
|
}`,
|
246
|
-
|
247
|
+
fragmentShader: `varying vec2 vUv;
|
247
248
|
uniform sampler2D blurTexture1;
|
248
249
|
uniform sampler2D blurTexture2;
|
249
250
|
uniform sampler2D blurTexture3;
|
@@ -266,12 +267,14 @@ const _UnrealBloomPass = class extends Pass {
|
|
266
267
|
lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +
|
267
268
|
lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );
|
268
269
|
}`
|
269
|
-
|
270
|
-
|
271
|
-
};
|
272
|
-
let
|
273
|
-
__publicField(
|
274
|
-
__publicField(
|
270
|
+
});
|
271
|
+
}
|
272
|
+
};
|
273
|
+
let UnrealBloomPass2 = _UnrealBloomPass;
|
274
|
+
__publicField(UnrealBloomPass2, "BlurDirectionX", new Vector2(1, 0));
|
275
|
+
__publicField(UnrealBloomPass2, "BlurDirectionY", new Vector2(0, 1));
|
276
|
+
return UnrealBloomPass2;
|
277
|
+
})();
|
275
278
|
export {
|
276
279
|
UnrealBloomPass
|
277
280
|
};
|