three-stdlib 2.35.4 → 2.35.5
Sign up to get free protection for your applications and to get access to all the features.
- package/_polyfill/CapsuleGeometry.cjs +17 -20
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +17 -20
- 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 +715 -722
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +716 -723
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +1 -2
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +2 -3
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +1 -2
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +2 -3
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +1 -2
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +2 -3
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +122 -133
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +21 -23
- package/exporters/DRACOExporter.js +122 -133
- package/exporters/DRACOExporter.js.map +1 -1
- package/exporters/GLTFExporter.cjs +167 -170
- package/exporters/GLTFExporter.cjs.map +1 -1
- package/exporters/GLTFExporter.js +167 -170
- package/exporters/GLTFExporter.js.map +1 -1
- package/geometries/LightningStrike.cjs +515 -524
- package/geometries/LightningStrike.cjs.map +1 -1
- package/geometries/LightningStrike.js +515 -524
- 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 +1 -2
- package/lines/LineMaterial.cjs.map +1 -1
- package/lines/LineMaterial.js +2 -3
- 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 +435 -441
- package/loaders/BasisTextureLoader.cjs.map +1 -1
- package/loaders/BasisTextureLoader.js +435 -441
- package/loaders/BasisTextureLoader.js.map +1 -1
- package/loaders/EXRLoader.cjs +1 -2
- package/loaders/EXRLoader.cjs.map +1 -1
- package/loaders/EXRLoader.js +2 -3
- 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 +374 -377
- package/loaders/KTX2Loader.cjs.map +1 -1
- package/loaders/KTX2Loader.js +374 -377
- package/loaders/KTX2Loader.js.map +1 -1
- package/loaders/LDrawLoader.cjs +4 -5
- package/loaders/LDrawLoader.cjs.map +1 -1
- package/loaders/LDrawLoader.js +5 -6
- 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 +43 -46
- package/loaders/PRWMLoader.cjs.map +1 -1
- package/loaders/PRWMLoader.js +43 -46
- package/loaders/PRWMLoader.js.map +1 -1
- package/loaders/SVGLoader.cjs +1688 -1694
- package/loaders/SVGLoader.cjs.map +1 -1
- package/loaders/SVGLoader.js +1688 -1694
- 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 +50 -53
- package/math/ConvexHull.cjs.map +1 -1
- package/math/ConvexHull.js +50 -53
- 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 +268 -271
- package/misc/ConvexObjectBreaker.cjs.map +1 -1
- package/misc/ConvexObjectBreaker.js +269 -272
- 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 +1 -2
- package/objects/GroundProjectedEnv.cjs.map +1 -1
- package/objects/GroundProjectedEnv.js +2 -3
- package/objects/GroundProjectedEnv.js.map +1 -1
- package/objects/Lensflare.cjs +206 -209
- package/objects/Lensflare.cjs.map +1 -1
- package/objects/Lensflare.js +206 -209
- package/objects/Lensflare.js.map +1 -1
- package/objects/Reflector.cjs +146 -154
- package/objects/Reflector.cjs.map +1 -1
- package/objects/Reflector.js +146 -154
- package/objects/Reflector.js.map +1 -1
- package/objects/ReflectorForSSRPass.cjs +180 -183
- package/objects/ReflectorForSSRPass.cjs.map +1 -1
- package/objects/ReflectorForSSRPass.js +180 -183
- package/objects/ReflectorForSSRPass.js.map +1 -1
- package/objects/Refractor.cjs +161 -164
- package/objects/Refractor.cjs.map +1 -1
- package/objects/Refractor.js +161 -164
- 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 +32 -35
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +6 -100
- package/objects/Sky.js +32 -35
- package/objects/Sky.js.map +1 -1
- package/objects/Water.cjs +1 -2
- package/objects/Water.cjs.map +1 -1
- package/objects/Water.js +2 -3
- package/objects/Water.js.map +1 -1
- package/objects/Water2.cjs +140 -143
- package/objects/Water2.cjs.map +1 -1
- package/objects/Water2.js +140 -143
- package/objects/Water2.js.map +1 -1
- package/package.json +1 -1
- package/postprocessing/SAOPass.cjs +264 -267
- package/postprocessing/SAOPass.cjs.map +1 -1
- package/postprocessing/SAOPass.js +264 -267
- package/postprocessing/SAOPass.js.map +1 -1
- package/postprocessing/SSAOPass.cjs +250 -253
- package/postprocessing/SSAOPass.cjs.map +1 -1
- package/postprocessing/SSAOPass.js +250 -253
- package/postprocessing/SSAOPass.js.map +1 -1
- package/postprocessing/SSRPass.cjs +376 -379
- package/postprocessing/SSRPass.cjs.map +1 -1
- package/postprocessing/SSRPass.js +376 -379
- package/postprocessing/SSRPass.js.map +1 -1
- package/postprocessing/UnrealBloomPass.cjs +202 -205
- package/postprocessing/UnrealBloomPass.cjs.map +1 -1
- package/postprocessing/UnrealBloomPass.js +202 -205
- 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 +46 -71
- package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.js +46 -71
- package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
- package/shaders/AfterimageShader.cjs +22 -41
- package/shaders/AfterimageShader.cjs.map +1 -1
- package/shaders/AfterimageShader.js +22 -41
- package/shaders/AfterimageShader.js.map +1 -1
- package/shaders/BasicShader.cjs +6 -20
- package/shaders/BasicShader.cjs.map +1 -1
- package/shaders/BasicShader.js +6 -20
- package/shaders/BasicShader.js.map +1 -1
- package/shaders/BleachBypassShader.cjs +26 -46
- package/shaders/BleachBypassShader.cjs.map +1 -1
- package/shaders/BleachBypassShader.js +26 -46
- package/shaders/BleachBypassShader.js.map +1 -1
- package/shaders/BlendShader.cjs +19 -33
- package/shaders/BlendShader.cjs.map +1 -1
- package/shaders/BlendShader.js +19 -33
- package/shaders/BlendShader.js.map +1 -1
- package/shaders/BokehShader.cjs +90 -117
- package/shaders/BokehShader.cjs.map +1 -1
- package/shaders/BokehShader.js +90 -117
- package/shaders/BokehShader.js.map +1 -1
- package/shaders/BokehShader2.cjs +232 -333
- package/shaders/BokehShader2.cjs.map +1 -1
- package/shaders/BokehShader2.js +232 -333
- package/shaders/BokehShader2.js.map +1 -1
- package/shaders/BrightnessContrastShader.cjs +22 -38
- package/shaders/BrightnessContrastShader.cjs.map +1 -1
- package/shaders/BrightnessContrastShader.js +22 -38
- package/shaders/BrightnessContrastShader.js.map +1 -1
- package/shaders/ColorCorrectionShader.cjs +21 -35
- package/shaders/ColorCorrectionShader.cjs.map +1 -1
- package/shaders/ColorCorrectionShader.js +21 -35
- package/shaders/ColorCorrectionShader.js.map +1 -1
- package/shaders/ColorifyShader.cjs +19 -34
- package/shaders/ColorifyShader.cjs.map +1 -1
- package/shaders/ColorifyShader.js +19 -34
- package/shaders/ColorifyShader.js.map +1 -1
- package/shaders/ConvolutionShader.cjs +24 -43
- package/shaders/ConvolutionShader.cjs.map +1 -1
- package/shaders/ConvolutionShader.js +24 -43
- package/shaders/ConvolutionShader.js.map +1 -1
- package/shaders/CopyShader.cjs +16 -30
- package/shaders/CopyShader.cjs.map +1 -1
- package/shaders/CopyShader.js +16 -30
- package/shaders/CopyShader.js.map +1 -1
- package/shaders/DOFMipMapShader.cjs +21 -38
- package/shaders/DOFMipMapShader.cjs.map +1 -1
- package/shaders/DOFMipMapShader.js +21 -38
- package/shaders/DOFMipMapShader.js.map +1 -1
- package/shaders/DepthLimitedBlurShader.cjs +69 -98
- package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
- package/shaders/DepthLimitedBlurShader.js +69 -98
- package/shaders/DepthLimitedBlurShader.js.map +1 -1
- package/shaders/DigitalGlitch.cjs +59 -70
- package/shaders/DigitalGlitch.cjs.map +1 -1
- package/shaders/DigitalGlitch.js +59 -70
- package/shaders/DigitalGlitch.js.map +1 -1
- package/shaders/DotScreenShader.cjs +28 -49
- package/shaders/DotScreenShader.cjs.map +1 -1
- package/shaders/DotScreenShader.js +28 -49
- package/shaders/DotScreenShader.js.map +1 -1
- package/shaders/FXAAShader.cjs +1089 -1098
- package/shaders/FXAAShader.cjs.map +1 -1
- package/shaders/FXAAShader.js +1089 -1098
- package/shaders/FXAAShader.js.map +1 -1
- package/shaders/FilmShader.cjs +29 -57
- package/shaders/FilmShader.cjs.map +1 -1
- package/shaders/FilmShader.js +29 -57
- package/shaders/FilmShader.js.map +1 -1
- package/shaders/FocusShader.cjs +43 -70
- package/shaders/FocusShader.cjs.map +1 -1
- package/shaders/FocusShader.js +43 -70
- package/shaders/FocusShader.js.map +1 -1
- package/shaders/FreiChenShader.cjs +53 -74
- package/shaders/FreiChenShader.cjs.map +1 -1
- package/shaders/FreiChenShader.js +53 -74
- package/shaders/FreiChenShader.js.map +1 -1
- package/shaders/FresnelShader.cjs +35 -55
- package/shaders/FresnelShader.cjs.map +1 -1
- package/shaders/FresnelShader.js +35 -55
- package/shaders/FresnelShader.js.map +1 -1
- package/shaders/GammaCorrectionShader.cjs +19 -33
- package/shaders/GammaCorrectionShader.cjs.map +1 -1
- package/shaders/GammaCorrectionShader.js +19 -33
- package/shaders/GammaCorrectionShader.js.map +1 -1
- package/shaders/GodRaysShader.cjs +116 -193
- package/shaders/GodRaysShader.cjs.map +1 -1
- package/shaders/GodRaysShader.js +116 -193
- package/shaders/GodRaysShader.js.map +1 -1
- package/shaders/HalftoneShader.cjs +192 -270
- package/shaders/HalftoneShader.cjs.map +1 -1
- package/shaders/HalftoneShader.js +192 -270
- package/shaders/HalftoneShader.js.map +1 -1
- package/shaders/HorizontalTiltShiftShader.cjs +27 -43
- package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
- package/shaders/HorizontalTiltShiftShader.js +27 -43
- package/shaders/HorizontalTiltShiftShader.js.map +1 -1
- package/shaders/HueSaturationShader.cjs +31 -47
- package/shaders/HueSaturationShader.cjs.map +1 -1
- package/shaders/HueSaturationShader.js +31 -47
- package/shaders/HueSaturationShader.js.map +1 -1
- package/shaders/KaleidoShader.cjs +24 -37
- package/shaders/KaleidoShader.cjs.map +1 -1
- package/shaders/KaleidoShader.js +24 -37
- package/shaders/KaleidoShader.js.map +1 -1
- package/shaders/LuminosityHighPassShader.cjs +24 -43
- package/shaders/LuminosityHighPassShader.cjs.map +1 -1
- package/shaders/LuminosityHighPassShader.js +24 -43
- package/shaders/LuminosityHighPassShader.js.map +1 -1
- package/shaders/LuminosityShader.cjs +17 -34
- package/shaders/LuminosityShader.cjs.map +1 -1
- package/shaders/LuminosityShader.js +17 -34
- package/shaders/LuminosityShader.js.map +1 -1
- package/shaders/MirrorShader.cjs +26 -39
- package/shaders/MirrorShader.cjs.map +1 -1
- package/shaders/MirrorShader.js +26 -39
- package/shaders/MirrorShader.js.map +1 -1
- package/shaders/NormalMapShader.cjs +21 -36
- package/shaders/NormalMapShader.cjs.map +1 -1
- package/shaders/NormalMapShader.js +21 -36
- package/shaders/NormalMapShader.js.map +1 -1
- package/shaders/ParallaxShader.cjs +97 -147
- package/shaders/ParallaxShader.cjs.map +1 -1
- package/shaders/ParallaxShader.js +97 -147
- package/shaders/ParallaxShader.js.map +1 -1
- package/shaders/PixelShader.cjs +18 -31
- package/shaders/PixelShader.cjs.map +1 -1
- package/shaders/PixelShader.js +18 -31
- package/shaders/PixelShader.js.map +1 -1
- package/shaders/RGBShiftShader.cjs +20 -33
- package/shaders/RGBShiftShader.cjs.map +1 -1
- package/shaders/RGBShiftShader.js +20 -33
- package/shaders/RGBShiftShader.js.map +1 -1
- package/shaders/SAOShader.cjs +117 -154
- package/shaders/SAOShader.cjs.map +1 -1
- package/shaders/SAOShader.js +117 -154
- package/shaders/SAOShader.js.map +1 -1
- package/shaders/SMAAShader.cjs +270 -358
- package/shaders/SMAAShader.cjs.map +1 -1
- package/shaders/SMAAShader.js +270 -358
- package/shaders/SMAAShader.js.map +1 -1
- package/shaders/SSAOShader.cjs +142 -236
- package/shaders/SSAOShader.cjs.map +1 -1
- package/shaders/SSAOShader.js +142 -236
- 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 +20 -36
- package/shaders/SepiaShader.cjs.map +1 -1
- package/shaders/SepiaShader.js +20 -36
- package/shaders/SepiaShader.js.map +1 -1
- package/shaders/SobelOperatorShader.cjs +37 -64
- package/shaders/SobelOperatorShader.cjs.map +1 -1
- package/shaders/SobelOperatorShader.js +37 -64
- package/shaders/SobelOperatorShader.js.map +1 -1
- package/shaders/TechnicolorShader.cjs +16 -29
- package/shaders/TechnicolorShader.cjs.map +1 -1
- package/shaders/TechnicolorShader.js +16 -29
- package/shaders/TechnicolorShader.js.map +1 -1
- package/shaders/ToneMapShader.cjs +35 -55
- package/shaders/ToneMapShader.cjs.map +1 -1
- package/shaders/ToneMapShader.js +35 -55
- package/shaders/ToneMapShader.js.map +1 -1
- package/shaders/ToonShader.cjs +165 -275
- package/shaders/ToonShader.cjs.map +1 -1
- package/shaders/ToonShader.js +165 -275
- package/shaders/ToonShader.js.map +1 -1
- package/shaders/TriangleBlurShader.cjs +27 -50
- package/shaders/TriangleBlurShader.cjs.map +1 -1
- package/shaders/TriangleBlurShader.js +27 -50
- package/shaders/TriangleBlurShader.js.map +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs +17 -32
- package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
- package/shaders/UnpackDepthRGBAShader.js +17 -32
- package/shaders/UnpackDepthRGBAShader.js.map +1 -1
- package/shaders/VerticalTiltShiftShader.cjs +27 -43
- package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
- package/shaders/VerticalTiltShiftShader.js +27 -43
- package/shaders/VerticalTiltShiftShader.js.map +1 -1
- package/shaders/VignetteShader.cjs +27 -43
- package/shaders/VignetteShader.cjs.map +1 -1
- package/shaders/VignetteShader.js +27 -43
- package/shaders/VignetteShader.js.map +1 -1
- package/shaders/VolumeShader.cjs +213 -264
- package/shaders/VolumeShader.cjs.map +1 -1
- package/shaders/VolumeShader.js +213 -264
- package/shaders/VolumeShader.js.map +1 -1
- package/shaders/WaterRefractionShader.cjs +35 -63
- package/shaders/WaterRefractionShader.cjs.map +1 -1
- package/shaders/WaterRefractionShader.js +35 -63
- package/shaders/WaterRefractionShader.js.map +1 -1
- package/utils/GeometryCompressionUtils.cjs +1 -2
- package/utils/GeometryCompressionUtils.cjs.map +1 -1
- package/utils/GeometryCompressionUtils.js +2 -3
- 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 +106 -109
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +3 -4
- package/webxr/ARButton.js +106 -109
- 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 +95 -98
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +5 -6
- package/webxr/VRButton.js +95 -98
- 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
@@ -5,184 +5,183 @@ var __publicField = (obj, key, value) => {
|
|
5
5
|
return value;
|
6
6
|
};
|
7
7
|
import { Mesh, Matrix4, Vector2, Color, Vector3, PerspectiveCamera, DepthTexture, UnsignedShortType, NearestFilter, WebGLRenderTarget, ShaderMaterial, UniformsUtils, Plane, HalfFloatType } from "three";
|
8
|
-
const
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
38
|
-
|
39
|
-
scope.material.needsUpdate = true;
|
40
|
-
}
|
41
|
-
});
|
42
|
-
scope._fresnel = _ReflectorForSSRPass.ReflectorShader.defines.FRESNEL;
|
43
|
-
Object.defineProperty(scope, "fresnel", {
|
44
|
-
get() {
|
45
|
-
return scope._fresnel;
|
46
|
-
},
|
47
|
-
set(val) {
|
48
|
-
if (scope._fresnel === val)
|
49
|
-
return;
|
50
|
-
scope._fresnel = val;
|
51
|
-
scope.material.defines.FRESNEL = val;
|
52
|
-
scope.material.needsUpdate = true;
|
53
|
-
}
|
54
|
-
});
|
55
|
-
const normal = new Vector3();
|
56
|
-
const reflectorWorldPosition = new Vector3();
|
57
|
-
const cameraWorldPosition = new Vector3();
|
58
|
-
const rotationMatrix = new Matrix4();
|
59
|
-
const lookAtPosition = new Vector3(0, 0, -1);
|
60
|
-
const view = new Vector3();
|
61
|
-
const target = new Vector3();
|
62
|
-
const textureMatrix = new Matrix4();
|
63
|
-
const virtualCamera = new PerspectiveCamera();
|
64
|
-
let depthTexture;
|
65
|
-
if (useDepthTexture) {
|
66
|
-
depthTexture = new DepthTexture();
|
67
|
-
depthTexture.type = UnsignedShortType;
|
68
|
-
depthTexture.minFilter = NearestFilter;
|
69
|
-
depthTexture.magFilter = NearestFilter;
|
70
|
-
}
|
71
|
-
const parameters = {
|
72
|
-
depthTexture: useDepthTexture ? depthTexture : null,
|
73
|
-
type: HalfFloatType
|
74
|
-
};
|
75
|
-
const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, parameters);
|
76
|
-
const material = new ShaderMaterial({
|
77
|
-
transparent: useDepthTexture,
|
78
|
-
defines: Object.assign({}, _ReflectorForSSRPass.ReflectorShader.defines, {
|
79
|
-
useDepthTexture
|
80
|
-
}),
|
81
|
-
uniforms: UniformsUtils.clone(shader.uniforms),
|
82
|
-
fragmentShader: shader.fragmentShader,
|
83
|
-
vertexShader: shader.vertexShader
|
84
|
-
});
|
85
|
-
material.uniforms["tDiffuse"].value = renderTarget.texture;
|
86
|
-
material.uniforms["color"].value = scope.color;
|
87
|
-
material.uniforms["textureMatrix"].value = textureMatrix;
|
88
|
-
if (useDepthTexture) {
|
89
|
-
material.uniforms["tDepth"].value = renderTarget.depthTexture;
|
8
|
+
const _ReflectorForSSRPass = class extends Mesh {
|
9
|
+
constructor(geometry, options = {}) {
|
10
|
+
super(geometry);
|
11
|
+
this.isReflectorForSSRPass = true;
|
12
|
+
this.type = "ReflectorForSSRPass";
|
13
|
+
const scope = this;
|
14
|
+
const color = options.color !== void 0 ? new Color(options.color) : new Color(8355711);
|
15
|
+
const textureWidth = options.textureWidth || 512;
|
16
|
+
const textureHeight = options.textureHeight || 512;
|
17
|
+
const clipBias = options.clipBias || 0;
|
18
|
+
const shader = options.shader || _ReflectorForSSRPass.ReflectorShader;
|
19
|
+
const useDepthTexture = options.useDepthTexture === true;
|
20
|
+
const yAxis = new Vector3(0, 1, 0);
|
21
|
+
const vecTemp0 = new Vector3();
|
22
|
+
const vecTemp1 = new Vector3();
|
23
|
+
scope.needsUpdate = false;
|
24
|
+
scope.maxDistance = _ReflectorForSSRPass.ReflectorShader.uniforms.maxDistance.value;
|
25
|
+
scope.opacity = _ReflectorForSSRPass.ReflectorShader.uniforms.opacity.value;
|
26
|
+
scope.color = color;
|
27
|
+
scope.resolution = options.resolution || new Vector2(window.innerWidth, window.innerHeight);
|
28
|
+
scope._distanceAttenuation = _ReflectorForSSRPass.ReflectorShader.defines.DISTANCE_ATTENUATION;
|
29
|
+
Object.defineProperty(scope, "distanceAttenuation", {
|
30
|
+
get() {
|
31
|
+
return scope._distanceAttenuation;
|
32
|
+
},
|
33
|
+
set(val) {
|
34
|
+
if (scope._distanceAttenuation === val)
|
35
|
+
return;
|
36
|
+
scope._distanceAttenuation = val;
|
37
|
+
scope.material.defines.DISTANCE_ATTENUATION = val;
|
38
|
+
scope.material.needsUpdate = true;
|
90
39
|
}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
vecTemp1.copy(vecTemp0).reflect(yAxis);
|
100
|
-
material.uniforms["fresnelCoe"].value = (vecTemp0.dot(vecTemp1) + 1) / 2;
|
101
|
-
reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);
|
102
|
-
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
|
103
|
-
rotationMatrix.extractRotation(scope.matrixWorld);
|
104
|
-
normal.set(0, 0, 1);
|
105
|
-
normal.applyMatrix4(rotationMatrix);
|
106
|
-
view.subVectors(reflectorWorldPosition, cameraWorldPosition);
|
107
|
-
if (view.dot(normal) > 0)
|
40
|
+
});
|
41
|
+
scope._fresnel = _ReflectorForSSRPass.ReflectorShader.defines.FRESNEL;
|
42
|
+
Object.defineProperty(scope, "fresnel", {
|
43
|
+
get() {
|
44
|
+
return scope._fresnel;
|
45
|
+
},
|
46
|
+
set(val) {
|
47
|
+
if (scope._fresnel === val)
|
108
48
|
return;
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
material.uniforms["virtualCameraProjectionMatrix"].value = camera.projectionMatrix;
|
130
|
-
material.uniforms["virtualCameraProjectionMatrixInverse"].value = camera.projectionMatrixInverse;
|
131
|
-
material.uniforms["resolution"].value = scope.resolution;
|
132
|
-
textureMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);
|
133
|
-
textureMatrix.multiply(virtualCamera.projectionMatrix);
|
134
|
-
textureMatrix.multiply(virtualCamera.matrixWorldInverse);
|
135
|
-
textureMatrix.multiply(scope.matrixWorld);
|
136
|
-
const currentRenderTarget = renderer.getRenderTarget();
|
137
|
-
const currentXrEnabled = renderer.xr.enabled;
|
138
|
-
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
139
|
-
const currentClippingPlanes = renderer.clippingPlanes;
|
140
|
-
renderer.xr.enabled = false;
|
141
|
-
renderer.shadowMap.autoUpdate = false;
|
142
|
-
renderer.clippingPlanes = globalPlanes;
|
143
|
-
renderer.setRenderTarget(renderTarget);
|
144
|
-
renderer.state.buffers.depth.setMask(true);
|
145
|
-
if (renderer.autoClear === false)
|
146
|
-
renderer.clear();
|
147
|
-
renderer.render(scene, virtualCamera);
|
148
|
-
renderer.xr.enabled = currentXrEnabled;
|
149
|
-
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
150
|
-
renderer.clippingPlanes = currentClippingPlanes;
|
151
|
-
renderer.setRenderTarget(currentRenderTarget);
|
152
|
-
const viewport = camera.viewport;
|
153
|
-
if (viewport !== void 0) {
|
154
|
-
renderer.state.viewport(viewport);
|
155
|
-
}
|
156
|
-
};
|
157
|
-
this.getRenderTarget = function() {
|
158
|
-
return renderTarget;
|
159
|
-
};
|
49
|
+
scope._fresnel = val;
|
50
|
+
scope.material.defines.FRESNEL = val;
|
51
|
+
scope.material.needsUpdate = true;
|
52
|
+
}
|
53
|
+
});
|
54
|
+
const normal = new Vector3();
|
55
|
+
const reflectorWorldPosition = new Vector3();
|
56
|
+
const cameraWorldPosition = new Vector3();
|
57
|
+
const rotationMatrix = new Matrix4();
|
58
|
+
const lookAtPosition = new Vector3(0, 0, -1);
|
59
|
+
const view = new Vector3();
|
60
|
+
const target = new Vector3();
|
61
|
+
const textureMatrix = new Matrix4();
|
62
|
+
const virtualCamera = new PerspectiveCamera();
|
63
|
+
let depthTexture;
|
64
|
+
if (useDepthTexture) {
|
65
|
+
depthTexture = new DepthTexture();
|
66
|
+
depthTexture.type = UnsignedShortType;
|
67
|
+
depthTexture.minFilter = NearestFilter;
|
68
|
+
depthTexture.magFilter = NearestFilter;
|
160
69
|
}
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
70
|
+
const parameters = {
|
71
|
+
depthTexture: useDepthTexture ? depthTexture : null,
|
72
|
+
type: HalfFloatType
|
73
|
+
};
|
74
|
+
const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, parameters);
|
75
|
+
const material = new ShaderMaterial({
|
76
|
+
transparent: useDepthTexture,
|
77
|
+
defines: Object.assign({}, _ReflectorForSSRPass.ReflectorShader.defines, {
|
78
|
+
useDepthTexture
|
79
|
+
}),
|
80
|
+
uniforms: UniformsUtils.clone(shader.uniforms),
|
81
|
+
fragmentShader: shader.fragmentShader,
|
82
|
+
vertexShader: shader.vertexShader
|
83
|
+
});
|
84
|
+
material.uniforms["tDiffuse"].value = renderTarget.texture;
|
85
|
+
material.uniforms["color"].value = scope.color;
|
86
|
+
material.uniforms["textureMatrix"].value = textureMatrix;
|
87
|
+
if (useDepthTexture) {
|
88
|
+
material.uniforms["tDepth"].value = renderTarget.depthTexture;
|
89
|
+
}
|
90
|
+
this.material = material;
|
91
|
+
const globalPlane = new Plane(new Vector3(0, 1, 0), clipBias);
|
92
|
+
const globalPlanes = [globalPlane];
|
93
|
+
this.doRender = function(renderer, scene, camera) {
|
94
|
+
material.uniforms["maxDistance"].value = scope.maxDistance;
|
95
|
+
material.uniforms["color"].value = scope.color;
|
96
|
+
material.uniforms["opacity"].value = scope.opacity;
|
97
|
+
vecTemp0.copy(camera.position).normalize();
|
98
|
+
vecTemp1.copy(vecTemp0).reflect(yAxis);
|
99
|
+
material.uniforms["fresnelCoe"].value = (vecTemp0.dot(vecTemp1) + 1) / 2;
|
100
|
+
reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);
|
101
|
+
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
|
102
|
+
rotationMatrix.extractRotation(scope.matrixWorld);
|
103
|
+
normal.set(0, 0, 1);
|
104
|
+
normal.applyMatrix4(rotationMatrix);
|
105
|
+
view.subVectors(reflectorWorldPosition, cameraWorldPosition);
|
106
|
+
if (view.dot(normal) > 0)
|
107
|
+
return;
|
108
|
+
view.reflect(normal).negate();
|
109
|
+
view.add(reflectorWorldPosition);
|
110
|
+
rotationMatrix.extractRotation(camera.matrixWorld);
|
111
|
+
lookAtPosition.set(0, 0, -1);
|
112
|
+
lookAtPosition.applyMatrix4(rotationMatrix);
|
113
|
+
lookAtPosition.add(cameraWorldPosition);
|
114
|
+
target.subVectors(reflectorWorldPosition, lookAtPosition);
|
115
|
+
target.reflect(normal).negate();
|
116
|
+
target.add(reflectorWorldPosition);
|
117
|
+
virtualCamera.position.copy(view);
|
118
|
+
virtualCamera.up.set(0, 1, 0);
|
119
|
+
virtualCamera.up.applyMatrix4(rotationMatrix);
|
120
|
+
virtualCamera.up.reflect(normal);
|
121
|
+
virtualCamera.lookAt(target);
|
122
|
+
virtualCamera.far = camera.far;
|
123
|
+
virtualCamera.updateMatrixWorld();
|
124
|
+
virtualCamera.projectionMatrix.copy(camera.projectionMatrix);
|
125
|
+
material.uniforms["virtualCameraNear"].value = camera.near;
|
126
|
+
material.uniforms["virtualCameraFar"].value = camera.far;
|
127
|
+
material.uniforms["virtualCameraMatrixWorld"].value = virtualCamera.matrixWorld;
|
128
|
+
material.uniforms["virtualCameraProjectionMatrix"].value = camera.projectionMatrix;
|
129
|
+
material.uniforms["virtualCameraProjectionMatrixInverse"].value = camera.projectionMatrixInverse;
|
130
|
+
material.uniforms["resolution"].value = scope.resolution;
|
131
|
+
textureMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);
|
132
|
+
textureMatrix.multiply(virtualCamera.projectionMatrix);
|
133
|
+
textureMatrix.multiply(virtualCamera.matrixWorldInverse);
|
134
|
+
textureMatrix.multiply(scope.matrixWorld);
|
135
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
136
|
+
const currentXrEnabled = renderer.xr.enabled;
|
137
|
+
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
138
|
+
const currentClippingPlanes = renderer.clippingPlanes;
|
139
|
+
renderer.xr.enabled = false;
|
140
|
+
renderer.shadowMap.autoUpdate = false;
|
141
|
+
renderer.clippingPlanes = globalPlanes;
|
142
|
+
renderer.setRenderTarget(renderTarget);
|
143
|
+
renderer.state.buffers.depth.setMask(true);
|
144
|
+
if (renderer.autoClear === false)
|
145
|
+
renderer.clear();
|
146
|
+
renderer.render(scene, virtualCamera);
|
147
|
+
renderer.xr.enabled = currentXrEnabled;
|
148
|
+
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
149
|
+
renderer.clippingPlanes = currentClippingPlanes;
|
150
|
+
renderer.setRenderTarget(currentRenderTarget);
|
151
|
+
const viewport = camera.viewport;
|
152
|
+
if (viewport !== void 0) {
|
153
|
+
renderer.state.viewport(viewport);
|
154
|
+
}
|
155
|
+
};
|
156
|
+
this.getRenderTarget = function() {
|
157
|
+
return renderTarget;
|
158
|
+
};
|
159
|
+
}
|
160
|
+
};
|
161
|
+
let ReflectorForSSRPass = _ReflectorForSSRPass;
|
162
|
+
__publicField(ReflectorForSSRPass, "ReflectorShader", {
|
163
|
+
defines: {
|
164
|
+
DISTANCE_ATTENUATION: true,
|
165
|
+
FRESNEL: true
|
166
|
+
},
|
167
|
+
uniforms: {
|
168
|
+
color: { value: null },
|
169
|
+
tDiffuse: { value: null },
|
170
|
+
tDepth: { value: null },
|
171
|
+
textureMatrix: { value: new Matrix4() },
|
172
|
+
maxDistance: { value: 180 },
|
173
|
+
opacity: { value: 0.5 },
|
174
|
+
fresnelCoe: { value: null },
|
175
|
+
virtualCameraNear: { value: null },
|
176
|
+
virtualCameraFar: { value: null },
|
177
|
+
virtualCameraProjectionMatrix: { value: new Matrix4() },
|
178
|
+
virtualCameraMatrixWorld: { value: new Matrix4() },
|
179
|
+
virtualCameraProjectionMatrixInverse: { value: new Matrix4() },
|
180
|
+
resolution: { value: new Vector2() }
|
181
|
+
},
|
182
|
+
vertexShader: (
|
183
|
+
/* glsl */
|
184
|
+
`
|
186
185
|
uniform mat4 textureMatrix;
|
187
186
|
varying vec4 vUv;
|
188
187
|
|
@@ -193,10 +192,10 @@ const ReflectorForSSRPass = /* @__PURE__ */ (() => {
|
|
193
192
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
194
193
|
|
195
194
|
}`
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
195
|
+
),
|
196
|
+
fragmentShader: (
|
197
|
+
/* glsl */
|
198
|
+
`
|
200
199
|
uniform vec3 color;
|
201
200
|
uniform sampler2D tDiffuse;
|
202
201
|
uniform sampler2D tDepth;
|
@@ -254,10 +253,8 @@ const ReflectorForSSRPass = /* @__PURE__ */ (() => {
|
|
254
253
|
#endif
|
255
254
|
}
|
256
255
|
`
|
257
|
-
|
258
|
-
|
259
|
-
return ReflectorForSSRPass2;
|
260
|
-
})();
|
256
|
+
)
|
257
|
+
});
|
261
258
|
export {
|
262
259
|
ReflectorForSSRPass
|
263
260
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ReflectorForSSRPass.js","sources":["../../src/objects/ReflectorForSSRPass.js"],"sourcesContent":["import {\n Color,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n DepthTexture,\n UnsignedShortType,\n NearestFilter,\n Plane,\n HalfFloatType,\n} from 'three'\n\nconst ReflectorForSSRPass = /* @__PURE__ */ (() => {\n class ReflectorForSSRPass extends Mesh {\n static ReflectorShader = {\n defines: {\n DISTANCE_ATTENUATION: true,\n FRESNEL: true,\n },\n\n uniforms: {\n color: { value: null },\n tDiffuse: { value: null },\n tDepth: { value: null },\n textureMatrix: { value: new Matrix4() },\n maxDistance: { value: 180 },\n opacity: { value: 0.5 },\n fresnelCoe: { value: null },\n virtualCameraNear: { value: null },\n virtualCameraFar: { value: null },\n virtualCameraProjectionMatrix: { value: new Matrix4() },\n virtualCameraMatrixWorld: { value: new Matrix4() },\n virtualCameraProjectionMatrixInverse: { value: new Matrix4() },\n resolution: { value: new Vector2() },\n },\n\n vertexShader: /* glsl */ `\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n fragmentShader: /* glsl */ `\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\t\tuniform float maxDistance;\n\t\tuniform float opacity;\n\t\tuniform float fresnelCoe;\n\t\tuniform float virtualCameraNear;\n\t\tuniform float virtualCameraFar;\n\t\tuniform mat4 virtualCameraProjectionMatrix;\n\t\tuniform mat4 virtualCameraProjectionMatrixInverse;\n\t\tuniform mat4 virtualCameraMatrixWorld;\n\t\tuniform vec2 resolution;\n\t\tvarying vec4 vUv;\n\t\t#include <packing>\n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\treturn perspectiveDepthToViewZ( depth, virtualCameraNear, virtualCameraFar );\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( virtualCameraProjectionMatrixInverse * clipPosition ).xyz;//view\n\t\t}\n\t\tvoid main() {\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\t#ifdef useDepthTexture\n\t\t\t\tvec2 uv=(gl_FragCoord.xy-.5)/resolution.xy;\n\t\t\t\tuv.x=1.-uv.x;\n\t\t\t\tfloat depth = texture2DProj( tDepth, vUv ).r;\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\t\tfloat clipW = virtualCameraProjectionMatrix[2][3] * viewZ+virtualCameraProjectionMatrix[3][3];\n\t\t\t\tvec3 viewPosition=getViewPosition( uv, depth, clipW );\n\t\t\t\tvec3 worldPosition=(virtualCameraMatrixWorld*vec4(viewPosition,1)).xyz;\n\t\t\t\tif(worldPosition.y>maxDistance) discard;\n\t\t\t\tfloat op=opacity;\n\t\t\t\t#ifdef DISTANCE_ATTENUATION\n\t\t\t\t\tfloat ratio=1.-(worldPosition.y/maxDistance);\n\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t#endif\n\t\t\t\t#ifdef FRESNEL\n\t\t\t\t\top*=fresnelCoe;\n\t\t\t\t#endif\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), op );\n\t\t\t#else\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\t\t\t#endif\n\t\t}\n\t`,\n }\n\n constructor(geometry, options = {}) {\n super(geometry)\n\n this.isReflectorForSSRPass = true\n\n this.type = 'ReflectorForSSRPass'\n\n const scope = this\n\n const color = options.color !== undefined ? new Color(options.color) : new Color(0x7f7f7f)\n const textureWidth = options.textureWidth || 512\n const textureHeight = options.textureHeight || 512\n const clipBias = options.clipBias || 0\n const shader = options.shader || ReflectorForSSRPass.ReflectorShader\n const useDepthTexture = options.useDepthTexture === true\n const yAxis = new Vector3(0, 1, 0)\n const vecTemp0 = new Vector3()\n const vecTemp1 = new Vector3()\n\n //\n\n scope.needsUpdate = false\n scope.maxDistance = ReflectorForSSRPass.ReflectorShader.uniforms.maxDistance.value\n scope.opacity = ReflectorForSSRPass.ReflectorShader.uniforms.opacity.value\n scope.color = color\n scope.resolution = options.resolution || new Vector2(window.innerWidth, window.innerHeight)\n\n scope._distanceAttenuation = ReflectorForSSRPass.ReflectorShader.defines.DISTANCE_ATTENUATION\n Object.defineProperty(scope, 'distanceAttenuation', {\n get() {\n return scope._distanceAttenuation\n },\n set(val) {\n if (scope._distanceAttenuation === val) return\n scope._distanceAttenuation = val\n scope.material.defines.DISTANCE_ATTENUATION = val\n scope.material.needsUpdate = true\n },\n })\n\n scope._fresnel = ReflectorForSSRPass.ReflectorShader.defines.FRESNEL\n Object.defineProperty(scope, 'fresnel', {\n get() {\n return scope._fresnel\n },\n set(val) {\n if (scope._fresnel === val) return\n scope._fresnel = val\n scope.material.defines.FRESNEL = val\n scope.material.needsUpdate = true\n },\n })\n\n const normal = new Vector3()\n const reflectorWorldPosition = new Vector3()\n const cameraWorldPosition = new Vector3()\n const rotationMatrix = new Matrix4()\n const lookAtPosition = new Vector3(0, 0, -1)\n\n const view = new Vector3()\n const target = new Vector3()\n\n const textureMatrix = new Matrix4()\n const virtualCamera = new PerspectiveCamera()\n\n let depthTexture\n\n if (useDepthTexture) {\n depthTexture = new DepthTexture()\n depthTexture.type = UnsignedShortType\n depthTexture.minFilter = NearestFilter\n depthTexture.magFilter = NearestFilter\n }\n\n const parameters = {\n depthTexture: useDepthTexture ? depthTexture : null,\n type: HalfFloatType,\n }\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, parameters)\n\n const material = new ShaderMaterial({\n transparent: useDepthTexture,\n defines: Object.assign({}, ReflectorForSSRPass.ReflectorShader.defines, {\n useDepthTexture,\n }),\n uniforms: UniformsUtils.clone(shader.uniforms),\n fragmentShader: shader.fragmentShader,\n vertexShader: shader.vertexShader,\n })\n\n material.uniforms['tDiffuse'].value = renderTarget.texture\n material.uniforms['color'].value = scope.color\n material.uniforms['textureMatrix'].value = textureMatrix\n if (useDepthTexture) {\n material.uniforms['tDepth'].value = renderTarget.depthTexture\n }\n\n this.material = material\n\n const globalPlane = new Plane(new Vector3(0, 1, 0), clipBias)\n const globalPlanes = [globalPlane]\n\n this.doRender = function (renderer, scene, camera) {\n material.uniforms['maxDistance'].value = scope.maxDistance\n material.uniforms['color'].value = scope.color\n material.uniforms['opacity'].value = scope.opacity\n\n vecTemp0.copy(camera.position).normalize()\n vecTemp1.copy(vecTemp0).reflect(yAxis)\n material.uniforms['fresnelCoe'].value = (vecTemp0.dot(vecTemp1) + 1) / 2 // TODO: Also need to use glsl viewPosition and viewNormal per pixel.\n\n reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld)\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld)\n\n rotationMatrix.extractRotation(scope.matrixWorld)\n\n normal.set(0, 0, 1)\n normal.applyMatrix4(rotationMatrix)\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition)\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(normal) > 0) return\n\n view.reflect(normal).negate()\n view.add(reflectorWorldPosition)\n\n rotationMatrix.extractRotation(camera.matrixWorld)\n\n lookAtPosition.set(0, 0, -1)\n lookAtPosition.applyMatrix4(rotationMatrix)\n lookAtPosition.add(cameraWorldPosition)\n\n target.subVectors(reflectorWorldPosition, lookAtPosition)\n target.reflect(normal).negate()\n target.add(reflectorWorldPosition)\n\n virtualCamera.position.copy(view)\n virtualCamera.up.set(0, 1, 0)\n virtualCamera.up.applyMatrix4(rotationMatrix)\n virtualCamera.up.reflect(normal)\n virtualCamera.lookAt(target)\n\n virtualCamera.far = camera.far // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld()\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix)\n\n material.uniforms['virtualCameraNear'].value = camera.near\n material.uniforms['virtualCameraFar'].value = camera.far\n material.uniforms['virtualCameraMatrixWorld'].value = virtualCamera.matrixWorld\n material.uniforms['virtualCameraProjectionMatrix'].value = camera.projectionMatrix\n material.uniforms['virtualCameraProjectionMatrixInverse'].value = camera.projectionMatrixInverse\n material.uniforms['resolution'].value = scope.resolution\n\n // Update the texture matrix\n textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0)\n textureMatrix.multiply(virtualCamera.projectionMatrix)\n textureMatrix.multiply(virtualCamera.matrixWorldInverse)\n textureMatrix.multiply(scope.matrixWorld)\n\n // scope.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget()\n\n const currentXrEnabled = renderer.xr.enabled\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate\n const currentClippingPlanes = renderer.clippingPlanes\n\n renderer.xr.enabled = false // Avoid camera modification\n renderer.shadowMap.autoUpdate = false // Avoid re-computing shadows\n renderer.clippingPlanes = globalPlanes\n\n renderer.setRenderTarget(renderTarget)\n\n renderer.state.buffers.depth.setMask(true) // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear()\n renderer.render(scene, virtualCamera)\n\n renderer.xr.enabled = currentXrEnabled\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate\n renderer.clippingPlanes = currentClippingPlanes\n\n renderer.setRenderTarget(currentRenderTarget)\n\n // Restore viewport\n\n const viewport = camera.viewport\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport)\n }\n\n // scope.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget\n }\n }\n }\n\n return ReflectorForSSRPass\n})()\n\nexport { ReflectorForSSRPass }\n"],"names":["ReflectorForSSRPass"],"mappings":";;;;;;;AAiBK,MAAC,sBAAuC,uBAAM;AACjD,QAAM,uBAAN,cAAkC,KAAK;AAAA,IA+FrC,YAAY,UAAU,UAAU,IAAI;AAClC,YAAM,QAAQ;AAEd,WAAK,wBAAwB;AAE7B,WAAK,OAAO;AAEZ,YAAM,QAAQ;AAEd,YAAM,QAAQ,QAAQ,UAAU,SAAY,IAAI,MAAM,QAAQ,KAAK,IAAI,IAAI,MAAM,OAAQ;AACzF,YAAM,eAAe,QAAQ,gBAAgB;AAC7C,YAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,YAAM,WAAW,QAAQ,YAAY;AACrC,YAAM,SAAS,QAAQ,UAAU,qBAAoB;AACrD,YAAM,kBAAkB,QAAQ,oBAAoB;AACpD,YAAM,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC;AACjC,YAAM,WAAW,IAAI,QAAS;AAC9B,YAAM,WAAW,IAAI,QAAS;AAI9B,YAAM,cAAc;AACpB,YAAM,cAAc,qBAAoB,gBAAgB,SAAS,YAAY;AAC7E,YAAM,UAAU,qBAAoB,gBAAgB,SAAS,QAAQ;AACrE,YAAM,QAAQ;AACd,YAAM,aAAa,QAAQ,cAAc,IAAI,QAAQ,OAAO,YAAY,OAAO,WAAW;AAE1F,YAAM,uBAAuB,qBAAoB,gBAAgB,QAAQ;AACzE,aAAO,eAAe,OAAO,uBAAuB;AAAA,QAClD,MAAM;AACJ,iBAAO,MAAM;AAAA,QACd;AAAA,QACD,IAAI,KAAK;AACP,cAAI,MAAM,yBAAyB;AAAK;AACxC,gBAAM,uBAAuB;AAC7B,gBAAM,SAAS,QAAQ,uBAAuB;AAC9C,gBAAM,SAAS,cAAc;AAAA,QAC9B;AAAA,MACT,CAAO;AAED,YAAM,WAAW,qBAAoB,gBAAgB,QAAQ;AAC7D,aAAO,eAAe,OAAO,WAAW;AAAA,QACtC,MAAM;AACJ,iBAAO,MAAM;AAAA,QACd;AAAA,QACD,IAAI,KAAK;AACP,cAAI,MAAM,aAAa;AAAK;AAC5B,gBAAM,WAAW;AACjB,gBAAM,SAAS,QAAQ,UAAU;AACjC,gBAAM,SAAS,cAAc;AAAA,QAC9B;AAAA,MACT,CAAO;AAED,YAAM,SAAS,IAAI,QAAS;AAC5B,YAAM,yBAAyB,IAAI,QAAS;AAC5C,YAAM,sBAAsB,IAAI,QAAS;AACzC,YAAM,iBAAiB,IAAI,QAAS;AACpC,YAAM,iBAAiB,IAAI,QAAQ,GAAG,GAAG,EAAE;AAE3C,YAAM,OAAO,IAAI,QAAS;AAC1B,YAAM,SAAS,IAAI,QAAS;AAE5B,YAAM,gBAAgB,IAAI,QAAS;AACnC,YAAM,gBAAgB,IAAI,kBAAmB;AAE7C,UAAI;AAEJ,UAAI,iBAAiB;AACnB,uBAAe,IAAI,aAAc;AACjC,qBAAa,OAAO;AACpB,qBAAa,YAAY;AACzB,qBAAa,YAAY;AAAA,MAC1B;AAED,YAAM,aAAa;AAAA,QACjB,cAAc,kBAAkB,eAAe;AAAA,QAC/C,MAAM;AAAA,MACP;AAED,YAAM,eAAe,IAAI,kBAAkB,cAAc,eAAe,UAAU;AAElF,YAAM,WAAW,IAAI,eAAe;AAAA,QAClC,aAAa;AAAA,QACb,SAAS,OAAO,OAAO,CAAE,GAAE,qBAAoB,gBAAgB,SAAS;AAAA,UACtE;AAAA,QACV,CAAS;AAAA,QACD,UAAU,cAAc,MAAM,OAAO,QAAQ;AAAA,QAC7C,gBAAgB,OAAO;AAAA,QACvB,cAAc,OAAO;AAAA,MAC7B,CAAO;AAED,eAAS,SAAS,UAAU,EAAE,QAAQ,aAAa;AACnD,eAAS,SAAS,OAAO,EAAE,QAAQ,MAAM;AACzC,eAAS,SAAS,eAAe,EAAE,QAAQ;AAC3C,UAAI,iBAAiB;AACnB,iBAAS,SAAS,QAAQ,EAAE,QAAQ,aAAa;AAAA,MAClD;AAED,WAAK,WAAW;AAEhB,YAAM,cAAc,IAAI,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,QAAQ;AAC5D,YAAM,eAAe,CAAC,WAAW;AAEjC,WAAK,WAAW,SAAU,UAAU,OAAO,QAAQ;AACjD,iBAAS,SAAS,aAAa,EAAE,QAAQ,MAAM;AAC/C,iBAAS,SAAS,OAAO,EAAE,QAAQ,MAAM;AACzC,iBAAS,SAAS,SAAS,EAAE,QAAQ,MAAM;AAE3C,iBAAS,KAAK,OAAO,QAAQ,EAAE,UAAW;AAC1C,iBAAS,KAAK,QAAQ,EAAE,QAAQ,KAAK;AACrC,iBAAS,SAAS,YAAY,EAAE,SAAS,SAAS,IAAI,QAAQ,IAAI,KAAK;AAEvE,+BAAuB,sBAAsB,MAAM,WAAW;AAC9D,4BAAoB,sBAAsB,OAAO,WAAW;AAE5D,uBAAe,gBAAgB,MAAM,WAAW;AAEhD,eAAO,IAAI,GAAG,GAAG,CAAC;AAClB,eAAO,aAAa,cAAc;AAElC,aAAK,WAAW,wBAAwB,mBAAmB;AAI3D,YAAI,KAAK,IAAI,MAAM,IAAI;AAAG;AAE1B,aAAK,QAAQ,MAAM,EAAE,OAAQ;AAC7B,aAAK,IAAI,sBAAsB;AAE/B,uBAAe,gBAAgB,OAAO,WAAW;AAEjD,uBAAe,IAAI,GAAG,GAAG,EAAE;AAC3B,uBAAe,aAAa,cAAc;AAC1C,uBAAe,IAAI,mBAAmB;AAEtC,eAAO,WAAW,wBAAwB,cAAc;AACxD,eAAO,QAAQ,MAAM,EAAE,OAAQ;AAC/B,eAAO,IAAI,sBAAsB;AAEjC,sBAAc,SAAS,KAAK,IAAI;AAChC,sBAAc,GAAG,IAAI,GAAG,GAAG,CAAC;AAC5B,sBAAc,GAAG,aAAa,cAAc;AAC5C,sBAAc,GAAG,QAAQ,MAAM;AAC/B,sBAAc,OAAO,MAAM;AAE3B,sBAAc,MAAM,OAAO;AAE3B,sBAAc,kBAAmB;AACjC,sBAAc,iBAAiB,KAAK,OAAO,gBAAgB;AAE3D,iBAAS,SAAS,mBAAmB,EAAE,QAAQ,OAAO;AACtD,iBAAS,SAAS,kBAAkB,EAAE,QAAQ,OAAO;AACrD,iBAAS,SAAS,0BAA0B,EAAE,QAAQ,cAAc;AACpE,iBAAS,SAAS,+BAA+B,EAAE,QAAQ,OAAO;AAClE,iBAAS,SAAS,sCAAsC,EAAE,QAAQ,OAAO;AACzE,iBAAS,SAAS,YAAY,EAAE,QAAQ,MAAM;AAG9C,sBAAc,IAAI,KAAK,GAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,GAAK,KAAK,KAAK,GAAK,GAAK,GAAK,CAAG;AAChG,sBAAc,SAAS,cAAc,gBAAgB;AACrD,sBAAc,SAAS,cAAc,kBAAkB;AACvD,sBAAc,SAAS,MAAM,WAAW;AAIxC,cAAM,sBAAsB,SAAS,gBAAiB;AAEtD,cAAM,mBAAmB,SAAS,GAAG;AACrC,cAAM,0BAA0B,SAAS,UAAU;AACnD,cAAM,wBAAwB,SAAS;AAEvC,iBAAS,GAAG,UAAU;AACtB,iBAAS,UAAU,aAAa;AAChC,iBAAS,iBAAiB;AAE1B,iBAAS,gBAAgB,YAAY;AAErC,iBAAS,MAAM,QAAQ,MAAM,QAAQ,IAAI;AAEzC,YAAI,SAAS,cAAc;AAAO,mBAAS,MAAO;AAClD,iBAAS,OAAO,OAAO,aAAa;AAEpC,iBAAS,GAAG,UAAU;AACtB,iBAAS,UAAU,aAAa;AAChC,iBAAS,iBAAiB;AAE1B,iBAAS,gBAAgB,mBAAmB;AAI5C,cAAM,WAAW,OAAO;AAExB,YAAI,aAAa,QAAW;AAC1B,mBAAS,MAAM,SAAS,QAAQ;AAAA,QACjC;AAAA,MAGF;AAED,WAAK,kBAAkB,WAAY;AACjC,eAAO;AAAA,MACR;AAAA,IACF;AAAA,EACF;AA1SD,MAAMA,uBAAN;AACE,gBADIA,sBACG,mBAAkB;AAAA,IACvB,SAAS;AAAA,MACP,sBAAsB;AAAA,MACtB,SAAS;AAAA,IACV;AAAA,IAED,UAAU;AAAA,MACR,OAAO,EAAE,OAAO,KAAM;AAAA,MACtB,UAAU,EAAE,OAAO,KAAM;AAAA,MACzB,QAAQ,EAAE,OAAO,KAAM;AAAA,MACvB,eAAe,EAAE,OAAO,IAAI,UAAW;AAAA,MACvC,aAAa,EAAE,OAAO,IAAK;AAAA,MAC3B,SAAS,EAAE,OAAO,IAAK;AAAA,MACvB,YAAY,EAAE,OAAO,KAAM;AAAA,MAC3B,mBAAmB,EAAE,OAAO,KAAM;AAAA,MAClC,kBAAkB,EAAE,OAAO,KAAM;AAAA,MACjC,+BAA+B,EAAE,OAAO,IAAI,UAAW;AAAA,MACvD,0BAA0B,EAAE,OAAO,IAAI,UAAW;AAAA,MAClD,sCAAsC,EAAE,OAAO,IAAI,UAAW;AAAA,MAC9D,YAAY,EAAE,OAAO,IAAI,UAAW;AAAA,IACrC;AAAA,IAED;AAAA;AAAA,MAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYzB;AAAA;AAAA,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0D5B;AA+MH,SAAOA;AACT,GAAC;"}
|
1
|
+
{"version":3,"file":"ReflectorForSSRPass.js","sources":["../../src/objects/ReflectorForSSRPass.js"],"sourcesContent":["import {\n Color,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n DepthTexture,\n UnsignedShortType,\n NearestFilter,\n Plane,\n HalfFloatType,\n} from 'three'\n\nclass ReflectorForSSRPass extends Mesh {\n static ReflectorShader = {\n defines: {\n DISTANCE_ATTENUATION: true,\n FRESNEL: true,\n },\n\n uniforms: {\n color: { value: null },\n tDiffuse: { value: null },\n tDepth: { value: null },\n textureMatrix: { value: new Matrix4() },\n maxDistance: { value: 180 },\n opacity: { value: 0.5 },\n fresnelCoe: { value: null },\n virtualCameraNear: { value: null },\n virtualCameraFar: { value: null },\n virtualCameraProjectionMatrix: { value: new Matrix4() },\n virtualCameraMatrixWorld: { value: new Matrix4() },\n virtualCameraProjectionMatrixInverse: { value: new Matrix4() },\n resolution: { value: new Vector2() },\n },\n\n vertexShader: /* glsl */ `\n\t\tuniform mat4 textureMatrix;\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n fragmentShader: /* glsl */ `\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\t\tuniform float maxDistance;\n\t\tuniform float opacity;\n\t\tuniform float fresnelCoe;\n\t\tuniform float virtualCameraNear;\n\t\tuniform float virtualCameraFar;\n\t\tuniform mat4 virtualCameraProjectionMatrix;\n\t\tuniform mat4 virtualCameraProjectionMatrixInverse;\n\t\tuniform mat4 virtualCameraMatrixWorld;\n\t\tuniform vec2 resolution;\n\t\tvarying vec4 vUv;\n\t\t#include <packing>\n\t\tfloat blendOverlay( float base, float blend ) {\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\t\t}\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\t\t}\n\t\tfloat getDepth( const in vec2 uv ) {\n\t\t\treturn texture2D( tDepth, uv ).x;\n\t\t}\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\treturn perspectiveDepthToViewZ( depth, virtualCameraNear, virtualCameraFar );\n\t\t}\n\t\tvec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) {\n\t\t\tvec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc\n\t\t\tclipPosition *= clipW; //clip\n\t\t\treturn ( virtualCameraProjectionMatrixInverse * clipPosition ).xyz;//view\n\t\t}\n\t\tvoid main() {\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\t#ifdef useDepthTexture\n\t\t\t\tvec2 uv=(gl_FragCoord.xy-.5)/resolution.xy;\n\t\t\t\tuv.x=1.-uv.x;\n\t\t\t\tfloat depth = texture2DProj( tDepth, vUv ).r;\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\t\t\t\tfloat clipW = virtualCameraProjectionMatrix[2][3] * viewZ+virtualCameraProjectionMatrix[3][3];\n\t\t\t\tvec3 viewPosition=getViewPosition( uv, depth, clipW );\n\t\t\t\tvec3 worldPosition=(virtualCameraMatrixWorld*vec4(viewPosition,1)).xyz;\n\t\t\t\tif(worldPosition.y>maxDistance) discard;\n\t\t\t\tfloat op=opacity;\n\t\t\t\t#ifdef DISTANCE_ATTENUATION\n\t\t\t\t\tfloat ratio=1.-(worldPosition.y/maxDistance);\n\t\t\t\t\tfloat attenuation=ratio*ratio;\n\t\t\t\t\top=opacity*attenuation;\n\t\t\t\t#endif\n\t\t\t\t#ifdef FRESNEL\n\t\t\t\t\top*=fresnelCoe;\n\t\t\t\t#endif\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), op );\n\t\t\t#else\n\t\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\t\t\t#endif\n\t\t}\n\t`,\n }\n\n constructor(geometry, options = {}) {\n super(geometry)\n\n this.isReflectorForSSRPass = true\n\n this.type = 'ReflectorForSSRPass'\n\n const scope = this\n\n const color = options.color !== undefined ? new Color(options.color) : new Color(0x7f7f7f)\n const textureWidth = options.textureWidth || 512\n const textureHeight = options.textureHeight || 512\n const clipBias = options.clipBias || 0\n const shader = options.shader || ReflectorForSSRPass.ReflectorShader\n const useDepthTexture = options.useDepthTexture === true\n const yAxis = new Vector3(0, 1, 0)\n const vecTemp0 = new Vector3()\n const vecTemp1 = new Vector3()\n\n //\n\n scope.needsUpdate = false\n scope.maxDistance = ReflectorForSSRPass.ReflectorShader.uniforms.maxDistance.value\n scope.opacity = ReflectorForSSRPass.ReflectorShader.uniforms.opacity.value\n scope.color = color\n scope.resolution = options.resolution || new Vector2(window.innerWidth, window.innerHeight)\n\n scope._distanceAttenuation = ReflectorForSSRPass.ReflectorShader.defines.DISTANCE_ATTENUATION\n Object.defineProperty(scope, 'distanceAttenuation', {\n get() {\n return scope._distanceAttenuation\n },\n set(val) {\n if (scope._distanceAttenuation === val) return\n scope._distanceAttenuation = val\n scope.material.defines.DISTANCE_ATTENUATION = val\n scope.material.needsUpdate = true\n },\n })\n\n scope._fresnel = ReflectorForSSRPass.ReflectorShader.defines.FRESNEL\n Object.defineProperty(scope, 'fresnel', {\n get() {\n return scope._fresnel\n },\n set(val) {\n if (scope._fresnel === val) return\n scope._fresnel = val\n scope.material.defines.FRESNEL = val\n scope.material.needsUpdate = true\n },\n })\n\n const normal = new Vector3()\n const reflectorWorldPosition = new Vector3()\n const cameraWorldPosition = new Vector3()\n const rotationMatrix = new Matrix4()\n const lookAtPosition = new Vector3(0, 0, -1)\n\n const view = new Vector3()\n const target = new Vector3()\n\n const textureMatrix = new Matrix4()\n const virtualCamera = new PerspectiveCamera()\n\n let depthTexture\n\n if (useDepthTexture) {\n depthTexture = new DepthTexture()\n depthTexture.type = UnsignedShortType\n depthTexture.minFilter = NearestFilter\n depthTexture.magFilter = NearestFilter\n }\n\n const parameters = {\n depthTexture: useDepthTexture ? depthTexture : null,\n type: HalfFloatType,\n }\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, parameters)\n\n const material = new ShaderMaterial({\n transparent: useDepthTexture,\n defines: Object.assign({}, ReflectorForSSRPass.ReflectorShader.defines, {\n useDepthTexture,\n }),\n uniforms: UniformsUtils.clone(shader.uniforms),\n fragmentShader: shader.fragmentShader,\n vertexShader: shader.vertexShader,\n })\n\n material.uniforms['tDiffuse'].value = renderTarget.texture\n material.uniforms['color'].value = scope.color\n material.uniforms['textureMatrix'].value = textureMatrix\n if (useDepthTexture) {\n material.uniforms['tDepth'].value = renderTarget.depthTexture\n }\n\n this.material = material\n\n const globalPlane = new Plane(new Vector3(0, 1, 0), clipBias)\n const globalPlanes = [globalPlane]\n\n this.doRender = function (renderer, scene, camera) {\n material.uniforms['maxDistance'].value = scope.maxDistance\n material.uniforms['color'].value = scope.color\n material.uniforms['opacity'].value = scope.opacity\n\n vecTemp0.copy(camera.position).normalize()\n vecTemp1.copy(vecTemp0).reflect(yAxis)\n material.uniforms['fresnelCoe'].value = (vecTemp0.dot(vecTemp1) + 1) / 2 // TODO: Also need to use glsl viewPosition and viewNormal per pixel.\n\n reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld)\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld)\n\n rotationMatrix.extractRotation(scope.matrixWorld)\n\n normal.set(0, 0, 1)\n normal.applyMatrix4(rotationMatrix)\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition)\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(normal) > 0) return\n\n view.reflect(normal).negate()\n view.add(reflectorWorldPosition)\n\n rotationMatrix.extractRotation(camera.matrixWorld)\n\n lookAtPosition.set(0, 0, -1)\n lookAtPosition.applyMatrix4(rotationMatrix)\n lookAtPosition.add(cameraWorldPosition)\n\n target.subVectors(reflectorWorldPosition, lookAtPosition)\n target.reflect(normal).negate()\n target.add(reflectorWorldPosition)\n\n virtualCamera.position.copy(view)\n virtualCamera.up.set(0, 1, 0)\n virtualCamera.up.applyMatrix4(rotationMatrix)\n virtualCamera.up.reflect(normal)\n virtualCamera.lookAt(target)\n\n virtualCamera.far = camera.far // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld()\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix)\n\n material.uniforms['virtualCameraNear'].value = camera.near\n material.uniforms['virtualCameraFar'].value = camera.far\n material.uniforms['virtualCameraMatrixWorld'].value = virtualCamera.matrixWorld\n material.uniforms['virtualCameraProjectionMatrix'].value = camera.projectionMatrix\n material.uniforms['virtualCameraProjectionMatrixInverse'].value = camera.projectionMatrixInverse\n material.uniforms['resolution'].value = scope.resolution\n\n // Update the texture matrix\n textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0)\n textureMatrix.multiply(virtualCamera.projectionMatrix)\n textureMatrix.multiply(virtualCamera.matrixWorldInverse)\n textureMatrix.multiply(scope.matrixWorld)\n\n // scope.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget()\n\n const currentXrEnabled = renderer.xr.enabled\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate\n const currentClippingPlanes = renderer.clippingPlanes\n\n renderer.xr.enabled = false // Avoid camera modification\n renderer.shadowMap.autoUpdate = false // Avoid re-computing shadows\n renderer.clippingPlanes = globalPlanes\n\n renderer.setRenderTarget(renderTarget)\n\n renderer.state.buffers.depth.setMask(true) // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear()\n renderer.render(scene, virtualCamera)\n\n renderer.xr.enabled = currentXrEnabled\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate\n renderer.clippingPlanes = currentClippingPlanes\n\n renderer.setRenderTarget(currentRenderTarget)\n\n // Restore viewport\n\n const viewport = camera.viewport\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport)\n }\n\n // scope.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget\n }\n }\n}\n\nexport { ReflectorForSSRPass }\n"],"names":[],"mappings":"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"}
|