three-stdlib 2.35.3 → 2.35.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_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
package/objects/Refractor.cjs
CHANGED
|
@@ -8,167 +8,168 @@ var __publicField = (obj, key, value) => {
|
|
|
8
8
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
9
9
|
const THREE = require("three");
|
|
10
10
|
const constants = require("../_polyfill/constants.cjs");
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
11
|
+
const Refractor = /* @__PURE__ */ (() => {
|
|
12
|
+
const _Refractor = class extends THREE.Mesh {
|
|
13
|
+
constructor(geometry, options = {}) {
|
|
14
|
+
super(geometry);
|
|
15
|
+
this.isRefractor = true;
|
|
16
|
+
this.type = "Refractor";
|
|
17
|
+
this.camera = new THREE.PerspectiveCamera();
|
|
18
|
+
const scope = this;
|
|
19
|
+
const color = options.color !== void 0 ? new THREE.Color(options.color) : new THREE.Color(8355711);
|
|
20
|
+
const textureWidth = options.textureWidth || 512;
|
|
21
|
+
const textureHeight = options.textureHeight || 512;
|
|
22
|
+
const clipBias = options.clipBias || 0;
|
|
23
|
+
const shader = options.shader || _Refractor.RefractorShader;
|
|
24
|
+
const multisample = options.multisample !== void 0 ? options.multisample : 4;
|
|
25
|
+
const virtualCamera = this.camera;
|
|
26
|
+
virtualCamera.matrixAutoUpdate = false;
|
|
27
|
+
virtualCamera.userData.refractor = true;
|
|
28
|
+
const refractorPlane = new THREE.Plane();
|
|
29
|
+
const textureMatrix = new THREE.Matrix4();
|
|
30
|
+
const renderTarget = new THREE.WebGLRenderTarget(textureWidth, textureHeight, {
|
|
31
|
+
samples: multisample,
|
|
32
|
+
type: THREE.HalfFloatType
|
|
33
|
+
});
|
|
34
|
+
this.material = new THREE.ShaderMaterial({
|
|
35
|
+
uniforms: THREE.UniformsUtils.clone(shader.uniforms),
|
|
36
|
+
vertexShader: shader.vertexShader,
|
|
37
|
+
fragmentShader: shader.fragmentShader,
|
|
38
|
+
transparent: true
|
|
39
|
+
// ensures, refractors are drawn from farthest to closest
|
|
40
|
+
});
|
|
41
|
+
this.material.uniforms["color"].value = color;
|
|
42
|
+
this.material.uniforms["tDiffuse"].value = renderTarget.texture;
|
|
43
|
+
this.material.uniforms["textureMatrix"].value = textureMatrix;
|
|
44
|
+
const visible = function() {
|
|
45
|
+
const refractorWorldPosition = new THREE.Vector3();
|
|
46
|
+
const cameraWorldPosition = new THREE.Vector3();
|
|
47
|
+
const rotationMatrix = new THREE.Matrix4();
|
|
48
|
+
const view = new THREE.Vector3();
|
|
49
|
+
const normal = new THREE.Vector3();
|
|
50
|
+
return function visible2(camera) {
|
|
51
|
+
refractorWorldPosition.setFromMatrixPosition(scope.matrixWorld);
|
|
52
|
+
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
|
|
53
|
+
view.subVectors(refractorWorldPosition, cameraWorldPosition);
|
|
54
|
+
rotationMatrix.extractRotation(scope.matrixWorld);
|
|
55
|
+
normal.set(0, 0, 1);
|
|
56
|
+
normal.applyMatrix4(rotationMatrix);
|
|
57
|
+
return view.dot(normal) < 0;
|
|
58
|
+
};
|
|
59
|
+
}();
|
|
60
|
+
const updateRefractorPlane = function() {
|
|
61
|
+
const normal = new THREE.Vector3();
|
|
62
|
+
const position = new THREE.Vector3();
|
|
63
|
+
const quaternion = new THREE.Quaternion();
|
|
64
|
+
const scale = new THREE.Vector3();
|
|
65
|
+
return function updateRefractorPlane2() {
|
|
66
|
+
scope.matrixWorld.decompose(position, quaternion, scale);
|
|
67
|
+
normal.set(0, 0, 1).applyQuaternion(quaternion).normalize();
|
|
68
|
+
normal.negate();
|
|
69
|
+
refractorPlane.setFromNormalAndCoplanarPoint(normal, position);
|
|
70
|
+
};
|
|
71
|
+
}();
|
|
72
|
+
const updateVirtualCamera = function() {
|
|
73
|
+
const clipPlane = new THREE.Plane();
|
|
74
|
+
const clipVector = new THREE.Vector4();
|
|
75
|
+
const q = new THREE.Vector4();
|
|
76
|
+
return function updateVirtualCamera2(camera) {
|
|
77
|
+
virtualCamera.matrixWorld.copy(camera.matrixWorld);
|
|
78
|
+
virtualCamera.matrixWorldInverse.copy(virtualCamera.matrixWorld).invert();
|
|
79
|
+
virtualCamera.projectionMatrix.copy(camera.projectionMatrix);
|
|
80
|
+
virtualCamera.far = camera.far;
|
|
81
|
+
clipPlane.copy(refractorPlane);
|
|
82
|
+
clipPlane.applyMatrix4(virtualCamera.matrixWorldInverse);
|
|
83
|
+
clipVector.set(clipPlane.normal.x, clipPlane.normal.y, clipPlane.normal.z, clipPlane.constant);
|
|
84
|
+
const projectionMatrix = virtualCamera.projectionMatrix;
|
|
85
|
+
q.x = (Math.sign(clipVector.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];
|
|
86
|
+
q.y = (Math.sign(clipVector.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];
|
|
87
|
+
q.z = -1;
|
|
88
|
+
q.w = (1 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];
|
|
89
|
+
clipVector.multiplyScalar(2 / clipVector.dot(q));
|
|
90
|
+
projectionMatrix.elements[2] = clipVector.x;
|
|
91
|
+
projectionMatrix.elements[6] = clipVector.y;
|
|
92
|
+
projectionMatrix.elements[10] = clipVector.z + 1 - clipBias;
|
|
93
|
+
projectionMatrix.elements[14] = clipVector.w;
|
|
94
|
+
};
|
|
95
|
+
}();
|
|
96
|
+
function updateTextureMatrix(camera) {
|
|
97
|
+
textureMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);
|
|
98
|
+
textureMatrix.multiply(camera.projectionMatrix);
|
|
99
|
+
textureMatrix.multiply(camera.matrixWorldInverse);
|
|
100
|
+
textureMatrix.multiply(scope.matrixWorld);
|
|
101
|
+
}
|
|
102
|
+
function render(renderer, scene, camera) {
|
|
103
|
+
scope.visible = false;
|
|
104
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
|
105
|
+
const currentXrEnabled = renderer.xr.enabled;
|
|
106
|
+
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
|
107
|
+
const currentToneMapping = renderer.toneMapping;
|
|
108
|
+
let isSRGB = false;
|
|
109
|
+
if ("outputColorSpace" in renderer)
|
|
110
|
+
isSRGB = renderer.outputColorSpace === "srgb";
|
|
111
|
+
else
|
|
112
|
+
isSRGB = renderer.outputEncoding === 3001;
|
|
113
|
+
renderer.xr.enabled = false;
|
|
114
|
+
renderer.shadowMap.autoUpdate = false;
|
|
115
|
+
if ("outputColorSpace" in renderer)
|
|
116
|
+
renderer.outputColorSpace = "srgb-linear";
|
|
117
|
+
else
|
|
118
|
+
renderer.outputEncoding = 3e3;
|
|
119
|
+
renderer.toneMapping = THREE.NoToneMapping;
|
|
120
|
+
renderer.setRenderTarget(renderTarget);
|
|
121
|
+
if (renderer.autoClear === false)
|
|
122
|
+
renderer.clear();
|
|
123
|
+
renderer.render(scene, virtualCamera);
|
|
124
|
+
renderer.xr.enabled = currentXrEnabled;
|
|
125
|
+
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
|
126
|
+
renderer.toneMapping = currentToneMapping;
|
|
127
|
+
renderer.setRenderTarget(currentRenderTarget);
|
|
128
|
+
if ("outputColorSpace" in renderer)
|
|
129
|
+
renderer.outputColorSpace = isSRGB ? "srgb" : "srgb-linear";
|
|
130
|
+
else
|
|
131
|
+
renderer.outputEncoding = isSRGB ? 3001 : 3e3;
|
|
132
|
+
const viewport = camera.viewport;
|
|
133
|
+
if (viewport !== void 0) {
|
|
134
|
+
renderer.state.viewport(viewport);
|
|
135
|
+
}
|
|
136
|
+
scope.visible = true;
|
|
137
|
+
}
|
|
138
|
+
this.onBeforeRender = function(renderer, scene, camera) {
|
|
139
|
+
if (camera.userData.refractor === true)
|
|
140
|
+
return;
|
|
141
|
+
if (!visible(camera) === true)
|
|
142
|
+
return;
|
|
143
|
+
updateRefractorPlane();
|
|
144
|
+
updateTextureMatrix(camera);
|
|
145
|
+
updateVirtualCamera(camera);
|
|
146
|
+
render(renderer, scene, camera);
|
|
57
147
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const normal = new THREE.Vector3();
|
|
61
|
-
const position = new THREE.Vector3();
|
|
62
|
-
const quaternion = new THREE.Quaternion();
|
|
63
|
-
const scale = new THREE.Vector3();
|
|
64
|
-
return function updateRefractorPlane2() {
|
|
65
|
-
scope.matrixWorld.decompose(position, quaternion, scale);
|
|
66
|
-
normal.set(0, 0, 1).applyQuaternion(quaternion).normalize();
|
|
67
|
-
normal.negate();
|
|
68
|
-
refractorPlane.setFromNormalAndCoplanarPoint(normal, position);
|
|
148
|
+
this.getRenderTarget = function() {
|
|
149
|
+
return renderTarget;
|
|
69
150
|
};
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const clipVector = new THREE.Vector4();
|
|
74
|
-
const q = new THREE.Vector4();
|
|
75
|
-
return function updateVirtualCamera2(camera) {
|
|
76
|
-
virtualCamera.matrixWorld.copy(camera.matrixWorld);
|
|
77
|
-
virtualCamera.matrixWorldInverse.copy(virtualCamera.matrixWorld).invert();
|
|
78
|
-
virtualCamera.projectionMatrix.copy(camera.projectionMatrix);
|
|
79
|
-
virtualCamera.far = camera.far;
|
|
80
|
-
clipPlane.copy(refractorPlane);
|
|
81
|
-
clipPlane.applyMatrix4(virtualCamera.matrixWorldInverse);
|
|
82
|
-
clipVector.set(clipPlane.normal.x, clipPlane.normal.y, clipPlane.normal.z, clipPlane.constant);
|
|
83
|
-
const projectionMatrix = virtualCamera.projectionMatrix;
|
|
84
|
-
q.x = (Math.sign(clipVector.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];
|
|
85
|
-
q.y = (Math.sign(clipVector.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];
|
|
86
|
-
q.z = -1;
|
|
87
|
-
q.w = (1 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];
|
|
88
|
-
clipVector.multiplyScalar(2 / clipVector.dot(q));
|
|
89
|
-
projectionMatrix.elements[2] = clipVector.x;
|
|
90
|
-
projectionMatrix.elements[6] = clipVector.y;
|
|
91
|
-
projectionMatrix.elements[10] = clipVector.z + 1 - clipBias;
|
|
92
|
-
projectionMatrix.elements[14] = clipVector.w;
|
|
151
|
+
this.dispose = function() {
|
|
152
|
+
renderTarget.dispose();
|
|
153
|
+
scope.material.dispose();
|
|
93
154
|
};
|
|
94
|
-
}();
|
|
95
|
-
function updateTextureMatrix(camera) {
|
|
96
|
-
textureMatrix.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1);
|
|
97
|
-
textureMatrix.multiply(camera.projectionMatrix);
|
|
98
|
-
textureMatrix.multiply(camera.matrixWorldInverse);
|
|
99
|
-
textureMatrix.multiply(scope.matrixWorld);
|
|
100
155
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
renderer.shadowMap.autoUpdate = false;
|
|
114
|
-
if ("outputColorSpace" in renderer)
|
|
115
|
-
renderer.outputColorSpace = "srgb-linear";
|
|
116
|
-
else
|
|
117
|
-
renderer.outputEncoding = 3e3;
|
|
118
|
-
renderer.toneMapping = THREE.NoToneMapping;
|
|
119
|
-
renderer.setRenderTarget(renderTarget);
|
|
120
|
-
if (renderer.autoClear === false)
|
|
121
|
-
renderer.clear();
|
|
122
|
-
renderer.render(scene, virtualCamera);
|
|
123
|
-
renderer.xr.enabled = currentXrEnabled;
|
|
124
|
-
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
|
125
|
-
renderer.toneMapping = currentToneMapping;
|
|
126
|
-
renderer.setRenderTarget(currentRenderTarget);
|
|
127
|
-
if ("outputColorSpace" in renderer)
|
|
128
|
-
renderer.outputColorSpace = isSRGB ? "srgb" : "srgb-linear";
|
|
129
|
-
else
|
|
130
|
-
renderer.outputEncoding = isSRGB ? 3001 : 3e3;
|
|
131
|
-
const viewport = camera.viewport;
|
|
132
|
-
if (viewport !== void 0) {
|
|
133
|
-
renderer.state.viewport(viewport);
|
|
156
|
+
};
|
|
157
|
+
let Refractor2 = _Refractor;
|
|
158
|
+
__publicField(Refractor2, "RefractorShader", {
|
|
159
|
+
uniforms: {
|
|
160
|
+
color: {
|
|
161
|
+
value: null
|
|
162
|
+
},
|
|
163
|
+
tDiffuse: {
|
|
164
|
+
value: null
|
|
165
|
+
},
|
|
166
|
+
textureMatrix: {
|
|
167
|
+
value: null
|
|
134
168
|
}
|
|
135
|
-
scope.visible = true;
|
|
136
|
-
}
|
|
137
|
-
this.onBeforeRender = function(renderer, scene, camera) {
|
|
138
|
-
if (camera.userData.refractor === true)
|
|
139
|
-
return;
|
|
140
|
-
if (!visible(camera) === true)
|
|
141
|
-
return;
|
|
142
|
-
updateRefractorPlane();
|
|
143
|
-
updateTextureMatrix(camera);
|
|
144
|
-
updateVirtualCamera(camera);
|
|
145
|
-
render(renderer, scene, camera);
|
|
146
|
-
};
|
|
147
|
-
this.getRenderTarget = function() {
|
|
148
|
-
return renderTarget;
|
|
149
|
-
};
|
|
150
|
-
this.dispose = function() {
|
|
151
|
-
renderTarget.dispose();
|
|
152
|
-
scope.material.dispose();
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
let Refractor = _Refractor;
|
|
157
|
-
__publicField(Refractor, "RefractorShader", {
|
|
158
|
-
uniforms: {
|
|
159
|
-
color: {
|
|
160
|
-
value: null
|
|
161
|
-
},
|
|
162
|
-
tDiffuse: {
|
|
163
|
-
value: null
|
|
164
169
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
},
|
|
169
|
-
vertexShader: (
|
|
170
|
-
/* glsl */
|
|
171
|
-
`
|
|
170
|
+
vertexShader: (
|
|
171
|
+
/* glsl */
|
|
172
|
+
`
|
|
172
173
|
|
|
173
174
|
uniform mat4 textureMatrix;
|
|
174
175
|
|
|
@@ -180,10 +181,10 @@ __publicField(Refractor, "RefractorShader", {
|
|
|
180
181
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
181
182
|
|
|
182
183
|
}`
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
),
|
|
185
|
+
fragmentShader: (
|
|
186
|
+
/* glsl */
|
|
187
|
+
`
|
|
187
188
|
|
|
188
189
|
uniform vec3 color;
|
|
189
190
|
uniform sampler2D tDiffuse;
|
|
@@ -211,7 +212,9 @@ __publicField(Refractor, "RefractorShader", {
|
|
|
211
212
|
#include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>
|
|
212
213
|
|
|
213
214
|
}`
|
|
214
|
-
|
|
215
|
-
});
|
|
215
|
+
)
|
|
216
|
+
});
|
|
217
|
+
return Refractor2;
|
|
218
|
+
})();
|
|
216
219
|
exports.Refractor = Refractor;
|
|
217
220
|
//# sourceMappingURL=Refractor.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Refractor.cjs","sources":["../../src/objects/Refractor.js"],"sourcesContent":["import {\n Color,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n Plane,\n Quaternion,\n ShaderMaterial,\n UniformsUtils,\n Vector3,\n Vector4,\n WebGLRenderTarget,\n NoToneMapping,\n HalfFloatType,\n} from 'three'\nimport { version } from '../_polyfill/constants'\n\nclass Refractor extends Mesh {\n static RefractorShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n tDiffuse: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: /* glsl */ `\n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n fragmentShader: /* glsl */ `\n\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec4 vUv;\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\n\t\t}`,\n }\n\n constructor(geometry, options = {}) {\n super(geometry)\n\n this.isRefractor = true\n\n this.type = 'Refractor'\n this.camera = new PerspectiveCamera()\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 || Refractor.RefractorShader\n const multisample = options.multisample !== undefined ? options.multisample : 4\n\n //\n\n const virtualCamera = this.camera\n virtualCamera.matrixAutoUpdate = false\n virtualCamera.userData.refractor = true\n\n //\n\n const refractorPlane = new Plane()\n const textureMatrix = new Matrix4()\n\n // render target\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n })\n\n // material\n\n this.material = new ShaderMaterial({\n uniforms: UniformsUtils.clone(shader.uniforms),\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n transparent: true, // ensures, refractors are drawn from farthest to closest\n })\n\n this.material.uniforms['color'].value = color\n this.material.uniforms['tDiffuse'].value = renderTarget.texture\n this.material.uniforms['textureMatrix'].value = textureMatrix\n\n // functions\n\n const visible = (function () {\n const refractorWorldPosition = new Vector3()\n const cameraWorldPosition = new Vector3()\n const rotationMatrix = new Matrix4()\n\n const view = new Vector3()\n const normal = new Vector3()\n\n return function visible(camera) {\n refractorWorldPosition.setFromMatrixPosition(scope.matrixWorld)\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld)\n\n view.subVectors(refractorWorldPosition, cameraWorldPosition)\n\n rotationMatrix.extractRotation(scope.matrixWorld)\n\n normal.set(0, 0, 1)\n normal.applyMatrix4(rotationMatrix)\n\n return view.dot(normal) < 0\n }\n })()\n\n const updateRefractorPlane = (function () {\n const normal = new Vector3()\n const position = new Vector3()\n const quaternion = new Quaternion()\n const scale = new Vector3()\n\n return function updateRefractorPlane() {\n scope.matrixWorld.decompose(position, quaternion, scale)\n normal.set(0, 0, 1).applyQuaternion(quaternion).normalize()\n\n // flip the normal because we want to cull everything above the plane\n\n normal.negate()\n\n refractorPlane.setFromNormalAndCoplanarPoint(normal, position)\n }\n })()\n\n const updateVirtualCamera = (function () {\n const clipPlane = new Plane()\n const clipVector = new Vector4()\n const q = new Vector4()\n\n return function updateVirtualCamera(camera) {\n virtualCamera.matrixWorld.copy(camera.matrixWorld)\n virtualCamera.matrixWorldInverse.copy(virtualCamera.matrixWorld).invert()\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix)\n virtualCamera.far = camera.far // used in WebGLBackground\n\n // The following code creates an oblique view frustum for clipping.\n // see: Lengyel, Eric. “Oblique View Frustum Depth Projection and Clipping”.\n // Journal of Game Development, Vol. 1, No. 2 (2005), Charles River Media, pp. 5–16\n\n clipPlane.copy(refractorPlane)\n clipPlane.applyMatrix4(virtualCamera.matrixWorldInverse)\n\n clipVector.set(clipPlane.normal.x, clipPlane.normal.y, clipPlane.normal.z, clipPlane.constant)\n\n // calculate the clip-space corner point opposite the clipping plane and\n // transform it into camera space by multiplying it by the inverse of the projection matrix\n\n const projectionMatrix = virtualCamera.projectionMatrix\n\n q.x = (Math.sign(clipVector.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0]\n q.y = (Math.sign(clipVector.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5]\n q.z = -1.0\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14]\n\n // calculate the scaled plane vector\n\n clipVector.multiplyScalar(2.0 / clipVector.dot(q))\n\n // replacing the third row of the projection matrix\n\n projectionMatrix.elements[2] = clipVector.x\n projectionMatrix.elements[6] = clipVector.y\n projectionMatrix.elements[10] = clipVector.z + 1.0 - clipBias\n projectionMatrix.elements[14] = clipVector.w\n }\n })()\n\n // This will update the texture matrix that is used for projective texture mapping in the shader.\n // see: http://developer.download.nvidia.com/assets/gamedev/docs/projective_texture_mapping.pdf\n\n function updateTextureMatrix(camera) {\n // this matrix does range mapping to [ 0, 1 ]\n\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\n // we use \"Object Linear Texgen\", so we need to multiply the texture matrix T\n // (matrix above) with the projection and view matrix of the virtual camera\n // and the model matrix of the refractor\n\n textureMatrix.multiply(camera.projectionMatrix)\n textureMatrix.multiply(camera.matrixWorldInverse)\n textureMatrix.multiply(scope.matrixWorld)\n }\n\n //\n\n function render(renderer, scene, camera) {\n scope.visible = false\n\n const currentRenderTarget = renderer.getRenderTarget()\n const currentXrEnabled = renderer.xr.enabled\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate\n const currentToneMapping = renderer.toneMapping\n\n let isSRGB = false\n if ('outputColorSpace' in renderer) isSRGB = renderer.outputColorSpace === 'srgb'\n else isSRGB = renderer.outputEncoding === 3001 // sRGBEncoding\n\n renderer.xr.enabled = false // avoid camera modification\n renderer.shadowMap.autoUpdate = false // avoid re-computing shadows\n if ('outputColorSpace' in renderer) renderer.outputColorSpace = 'srgb-linear'\n else renderer.outputEncoding = 3000 // LinearEncoding\n renderer.toneMapping = NoToneMapping\n\n renderer.setRenderTarget(renderTarget)\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.toneMapping = currentToneMapping\n renderer.setRenderTarget(currentRenderTarget)\n\n if ('outputColorSpace' in renderer) renderer.outputColorSpace = isSRGB ? 'srgb' : 'srgb-linear'\n else renderer.outputEncoding = isSRGB ? 3001 : 3000\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 //\n\n this.onBeforeRender = function (renderer, scene, camera) {\n // ensure refractors are rendered only once per frame\n\n if (camera.userData.refractor === true) return\n\n // avoid rendering when the refractor is viewed from behind\n\n if (!visible(camera) === true) return\n\n // update\n\n updateRefractorPlane()\n\n updateTextureMatrix(camera)\n\n updateVirtualCamera(camera)\n\n render(renderer, scene, camera)\n }\n\n this.getRenderTarget = function () {\n return renderTarget\n }\n\n this.dispose = function () {\n renderTarget.dispose()\n scope.material.dispose()\n }\n }\n}\n\nexport { Refractor }\n"],"names":["Mesh","PerspectiveCamera","Color","Plane","Matrix4","WebGLRenderTarget","HalfFloatType","ShaderMaterial","UniformsUtils","Vector3","visible","Quaternion","updateRefractorPlane","Vector4","updateVirtualCamera","NoToneMapping","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Refractor.cjs","sources":["../../src/objects/Refractor.js"],"sourcesContent":["import {\n Color,\n Matrix4,\n Mesh,\n PerspectiveCamera,\n Plane,\n Quaternion,\n ShaderMaterial,\n UniformsUtils,\n Vector3,\n Vector4,\n WebGLRenderTarget,\n NoToneMapping,\n HalfFloatType,\n} from 'three'\nimport { version } from '../_polyfill/constants'\n\nconst Refractor = /* @__PURE__ */ (() => {\n class Refractor extends Mesh {\n static RefractorShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n tDiffuse: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: /* glsl */ `\n\n\t\tuniform mat4 textureMatrix;\n\n\t\tvarying vec4 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = textureMatrix * vec4( position, 1.0 );\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n fragmentShader: /* glsl */ `\n\n\t\tuniform vec3 color;\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec4 vUv;\n\n\t\tfloat blendOverlay( float base, float blend ) {\n\n\t\t\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n\t\t}\n\n\t\tvec3 blendOverlay( vec3 base, vec3 blend ) {\n\n\t\t\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvec4 base = texture2DProj( tDiffuse, vUv );\n\t\t\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\n\t\t}`,\n }\n\n constructor(geometry, options = {}) {\n super(geometry)\n\n this.isRefractor = true\n\n this.type = 'Refractor'\n this.camera = new PerspectiveCamera()\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 || Refractor.RefractorShader\n const multisample = options.multisample !== undefined ? options.multisample : 4\n\n //\n\n const virtualCamera = this.camera\n virtualCamera.matrixAutoUpdate = false\n virtualCamera.userData.refractor = true\n\n //\n\n const refractorPlane = new Plane()\n const textureMatrix = new Matrix4()\n\n // render target\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n })\n\n // material\n\n this.material = new ShaderMaterial({\n uniforms: UniformsUtils.clone(shader.uniforms),\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n transparent: true, // ensures, refractors are drawn from farthest to closest\n })\n\n this.material.uniforms['color'].value = color\n this.material.uniforms['tDiffuse'].value = renderTarget.texture\n this.material.uniforms['textureMatrix'].value = textureMatrix\n\n // functions\n\n const visible = (function () {\n const refractorWorldPosition = new Vector3()\n const cameraWorldPosition = new Vector3()\n const rotationMatrix = new Matrix4()\n\n const view = new Vector3()\n const normal = new Vector3()\n\n return function visible(camera) {\n refractorWorldPosition.setFromMatrixPosition(scope.matrixWorld)\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld)\n\n view.subVectors(refractorWorldPosition, cameraWorldPosition)\n\n rotationMatrix.extractRotation(scope.matrixWorld)\n\n normal.set(0, 0, 1)\n normal.applyMatrix4(rotationMatrix)\n\n return view.dot(normal) < 0\n }\n })()\n\n const updateRefractorPlane = (function () {\n const normal = new Vector3()\n const position = new Vector3()\n const quaternion = new Quaternion()\n const scale = new Vector3()\n\n return function updateRefractorPlane() {\n scope.matrixWorld.decompose(position, quaternion, scale)\n normal.set(0, 0, 1).applyQuaternion(quaternion).normalize()\n\n // flip the normal because we want to cull everything above the plane\n\n normal.negate()\n\n refractorPlane.setFromNormalAndCoplanarPoint(normal, position)\n }\n })()\n\n const updateVirtualCamera = (function () {\n const clipPlane = new Plane()\n const clipVector = new Vector4()\n const q = new Vector4()\n\n return function updateVirtualCamera(camera) {\n virtualCamera.matrixWorld.copy(camera.matrixWorld)\n virtualCamera.matrixWorldInverse.copy(virtualCamera.matrixWorld).invert()\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix)\n virtualCamera.far = camera.far // used in WebGLBackground\n\n // The following code creates an oblique view frustum for clipping.\n // see: Lengyel, Eric. “Oblique View Frustum Depth Projection and Clipping”.\n // Journal of Game Development, Vol. 1, No. 2 (2005), Charles River Media, pp. 5–16\n\n clipPlane.copy(refractorPlane)\n clipPlane.applyMatrix4(virtualCamera.matrixWorldInverse)\n\n clipVector.set(clipPlane.normal.x, clipPlane.normal.y, clipPlane.normal.z, clipPlane.constant)\n\n // calculate the clip-space corner point opposite the clipping plane and\n // transform it into camera space by multiplying it by the inverse of the projection matrix\n\n const projectionMatrix = virtualCamera.projectionMatrix\n\n q.x = (Math.sign(clipVector.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0]\n q.y = (Math.sign(clipVector.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5]\n q.z = -1.0\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14]\n\n // calculate the scaled plane vector\n\n clipVector.multiplyScalar(2.0 / clipVector.dot(q))\n\n // replacing the third row of the projection matrix\n\n projectionMatrix.elements[2] = clipVector.x\n projectionMatrix.elements[6] = clipVector.y\n projectionMatrix.elements[10] = clipVector.z + 1.0 - clipBias\n projectionMatrix.elements[14] = clipVector.w\n }\n })()\n\n // This will update the texture matrix that is used for projective texture mapping in the shader.\n // see: http://developer.download.nvidia.com/assets/gamedev/docs/projective_texture_mapping.pdf\n\n function updateTextureMatrix(camera) {\n // this matrix does range mapping to [ 0, 1 ]\n\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\n // we use \"Object Linear Texgen\", so we need to multiply the texture matrix T\n // (matrix above) with the projection and view matrix of the virtual camera\n // and the model matrix of the refractor\n\n textureMatrix.multiply(camera.projectionMatrix)\n textureMatrix.multiply(camera.matrixWorldInverse)\n textureMatrix.multiply(scope.matrixWorld)\n }\n\n //\n\n function render(renderer, scene, camera) {\n scope.visible = false\n\n const currentRenderTarget = renderer.getRenderTarget()\n const currentXrEnabled = renderer.xr.enabled\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate\n const currentToneMapping = renderer.toneMapping\n\n let isSRGB = false\n if ('outputColorSpace' in renderer) isSRGB = renderer.outputColorSpace === 'srgb'\n else isSRGB = renderer.outputEncoding === 3001 // sRGBEncoding\n\n renderer.xr.enabled = false // avoid camera modification\n renderer.shadowMap.autoUpdate = false // avoid re-computing shadows\n if ('outputColorSpace' in renderer) renderer.outputColorSpace = 'srgb-linear'\n else renderer.outputEncoding = 3000 // LinearEncoding\n renderer.toneMapping = NoToneMapping\n\n renderer.setRenderTarget(renderTarget)\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.toneMapping = currentToneMapping\n renderer.setRenderTarget(currentRenderTarget)\n\n if ('outputColorSpace' in renderer) renderer.outputColorSpace = isSRGB ? 'srgb' : 'srgb-linear'\n else renderer.outputEncoding = isSRGB ? 3001 : 3000\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 //\n\n this.onBeforeRender = function (renderer, scene, camera) {\n // ensure refractors are rendered only once per frame\n\n if (camera.userData.refractor === true) return\n\n // avoid rendering when the refractor is viewed from behind\n\n if (!visible(camera) === true) return\n\n // update\n\n updateRefractorPlane()\n\n updateTextureMatrix(camera)\n\n updateVirtualCamera(camera)\n\n render(renderer, scene, camera)\n }\n\n this.getRenderTarget = function () {\n return renderTarget\n }\n\n this.dispose = function () {\n renderTarget.dispose()\n scope.material.dispose()\n }\n }\n }\n\n return Refractor\n})()\n\nexport { Refractor }\n"],"names":["Mesh","PerspectiveCamera","Color","Plane","Matrix4","WebGLRenderTarget","HalfFloatType","ShaderMaterial","UniformsUtils","Vector3","visible","Quaternion","updateRefractorPlane","Vector4","updateVirtualCamera","NoToneMapping","Refractor","version"],"mappings":"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"}
|