three-stdlib 2.35.5 → 2.35.6
Sign up to get free protection for your applications and to get access to all the features.
- package/_polyfill/CapsuleGeometry.cjs +20 -17
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +20 -17
- package/_polyfill/CapsuleGeometry.js.map +1 -1
- package/_polyfill/constants.cjs +1 -1
- package/_polyfill/constants.cjs.map +1 -1
- package/_polyfill/constants.js +1 -1
- package/_polyfill/constants.js.map +1 -1
- package/animation/AnimationClipCreator.cjs +13 -13
- package/animation/AnimationClipCreator.cjs.map +1 -1
- package/animation/AnimationClipCreator.js +13 -13
- package/animation/AnimationClipCreator.js.map +1 -1
- package/animation/CCDIKSolver.cjs +11 -11
- package/animation/CCDIKSolver.cjs.map +1 -1
- package/animation/CCDIKSolver.js +12 -12
- package/animation/CCDIKSolver.js.map +1 -1
- package/animation/MMDAnimationHelper.cjs +1 -1
- package/animation/MMDAnimationHelper.cjs.map +1 -1
- package/animation/MMDAnimationHelper.js +1 -1
- package/animation/MMDAnimationHelper.js.map +1 -1
- package/animation/MMDPhysics.cjs +4 -4
- package/animation/MMDPhysics.cjs.map +1 -1
- package/animation/MMDPhysics.js +4 -4
- package/animation/MMDPhysics.js.map +1 -1
- package/controls/ArcballControls.cjs +2 -2
- package/controls/ArcballControls.cjs.map +1 -1
- package/controls/ArcballControls.js +3 -3
- package/controls/ArcballControls.js.map +1 -1
- package/controls/FirstPersonControls.cjs +1 -1
- package/controls/FirstPersonControls.cjs.map +1 -1
- package/controls/FirstPersonControls.js +1 -1
- package/controls/FirstPersonControls.js.map +1 -1
- package/controls/OrbitControls.cjs +2 -2
- package/controls/OrbitControls.cjs.map +1 -1
- package/controls/OrbitControls.js +3 -3
- package/controls/OrbitControls.js.map +1 -1
- package/controls/PointerLockControls.cjs +2 -2
- package/controls/PointerLockControls.cjs.map +1 -1
- package/controls/PointerLockControls.js +3 -3
- package/controls/PointerLockControls.js.map +1 -1
- package/csm/CSM.cjs +4 -4
- package/csm/CSM.cjs.map +1 -1
- package/csm/CSM.js +5 -5
- package/csm/CSM.js.map +1 -1
- package/csm/CSMFrustum.cjs +1 -1
- package/csm/CSMFrustum.cjs.map +1 -1
- package/csm/CSMFrustum.js +2 -2
- package/csm/CSMFrustum.js.map +1 -1
- package/deprecated/Geometry.cjs +722 -715
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +723 -716
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +2 -1
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +3 -2
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +2 -1
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +3 -2
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +2 -1
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +3 -2
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +133 -122
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +34 -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 +17 -42
- 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 +3 -3
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +3 -3
- package/webxr/ARButton.js +3 -3
- 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 +9 -6
- package/webxr/VRButton.js +98 -95
- package/webxr/VRButton.js.map +1 -1
- package/webxr/XRHandPrimitiveModel.cjs +2 -2
- package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
- package/webxr/XRHandPrimitiveModel.js +3 -3
- package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FXAAShader.cjs","sources":["../../src/shaders/FXAAShader.ts"],"sourcesContent":["import { Vector2 } from 'three'\n\n/**\n * NVIDIA FXAA by Timothy Lottes\n * http://timothylottes.blogspot.com/2011/06/fxaa3-source-released.html\n * - WebGL port by @supereggbert\n * http://www.glge.org/demos/fxaa/\n */\n\nexport const FXAAShader = {\n uniforms: {\n tDiffuse: { value: null },\n resolution: { value: new Vector2(1 / 1024, 1 / 512) },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n\n 'void main() {',\n\n '\tvUv = uv;',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'precision highp float;',\n '',\n 'uniform sampler2D tDiffuse;',\n '',\n 'uniform vec2 resolution;',\n '',\n 'varying vec2 vUv;',\n '',\n '// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)',\n '',\n '//----------------------------------------------------------------------------------',\n '// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag',\n '// SDK Version: v3.00',\n '// Email: gameworks@nvidia.com',\n '// Site: http://developer.nvidia.com/',\n '//',\n '// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.',\n '//',\n '// Redistribution and use in source and binary forms, with or without',\n '// modification, are permitted provided that the following conditions',\n '// are met:',\n '// * Redistributions of source code must retain the above copyright',\n '// notice, this list of conditions and the following disclaimer.',\n '// * Redistributions in binary form must reproduce the above copyright',\n '// notice, this list of conditions and the following disclaimer in the',\n '// documentation and/or other materials provided with the distribution.',\n '// * Neither the name of NVIDIA CORPORATION nor the names of its',\n '// contributors may be used to endorse or promote products derived',\n '// from this software without specific prior written permission.',\n '//',\n \"// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY\",\n '// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE',\n '// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR',\n '// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR',\n '// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,',\n '// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,',\n '// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR',\n '// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY',\n '// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT',\n '// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE',\n '// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.',\n '//',\n '//----------------------------------------------------------------------------------',\n '',\n '#define FXAA_PC 1',\n '#define FXAA_GLSL_100 1',\n '#define FXAA_QUALITY_PRESET 12',\n '',\n '#define FXAA_GREEN_AS_LUMA 1',\n '',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_PC_CONSOLE',\n ' //',\n ' // The console algorithm for PC is included',\n ' // for developers targeting really low spec machines.',\n ' // Likely better to just run FXAA_PC, and use a really low preset.',\n ' //',\n ' #define FXAA_PC_CONSOLE 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_GLSL_120',\n ' #define FXAA_GLSL_120 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_GLSL_130',\n ' #define FXAA_GLSL_130 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_HLSL_3',\n ' #define FXAA_HLSL_3 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_HLSL_4',\n ' #define FXAA_HLSL_4 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_HLSL_5',\n ' #define FXAA_HLSL_5 0',\n '#endif',\n '/*==========================================================================*/',\n '#ifndef FXAA_GREEN_AS_LUMA',\n ' //',\n ' // For those using non-linear color,',\n ' // and either not able to get luma in alpha, or not wanting to,',\n ' // this enables FXAA to run using green as a proxy for luma.',\n ' // So with this enabled, no need to pack luma in alpha.',\n ' //',\n ' // This will turn off AA on anything which lacks some amount of green.',\n ' // Pure red and blue or combination of only R and B, will get no AA.',\n ' //',\n ' // Might want to lower the settings for both,',\n ' // fxaaConsoleEdgeThresholdMin',\n ' // fxaaQualityEdgeThresholdMin',\n ' // In order to insure AA does not get turned off on colors',\n ' // which contain a minor amount of green.',\n ' //',\n ' // 1 = On.',\n ' // 0 = Off.',\n ' //',\n ' #define FXAA_GREEN_AS_LUMA 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_EARLY_EXIT',\n ' //',\n \" // Controls algorithm's early exit path.\",\n ' // On PS3 turning this ON adds 2 cycles to the shader.',\n ' // On 360 turning this OFF adds 10ths of a millisecond to the shader.',\n ' // Turning this off on console will result in a more blurry image.',\n ' // So this defaults to on.',\n ' //',\n ' // 1 = On.',\n ' // 0 = Off.',\n ' //',\n ' #define FXAA_EARLY_EXIT 1',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_DISCARD',\n ' //',\n ' // Only valid for PC OpenGL currently.',\n ' // Probably will not work when FXAA_GREEN_AS_LUMA = 1.',\n ' //',\n \" // 1 = Use discard on pixels which don't need AA.\",\n ' // For APIs which enable concurrent TEX+ROP from same surface.',\n \" // 0 = Return unchanged color on pixels which don't need AA.\",\n ' //',\n ' #define FXAA_DISCARD 0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_FAST_PIXEL_OFFSET',\n ' //',\n ' // Used for GLSL 120 only.',\n ' //',\n ' // 1 = GL API supports fast pixel offsets',\n ' // 0 = do not use fast pixel offsets',\n ' //',\n ' #ifdef GL_EXT_gpu_shader4',\n ' #define FXAA_FAST_PIXEL_OFFSET 1',\n ' #endif',\n ' #ifdef GL_NV_gpu_shader5',\n ' #define FXAA_FAST_PIXEL_OFFSET 1',\n ' #endif',\n ' #ifdef GL_ARB_gpu_shader5',\n ' #define FXAA_FAST_PIXEL_OFFSET 1',\n ' #endif',\n ' #ifndef FXAA_FAST_PIXEL_OFFSET',\n ' #define FXAA_FAST_PIXEL_OFFSET 0',\n ' #endif',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#ifndef FXAA_GATHER4_ALPHA',\n ' //',\n ' // 1 = API supports gather4 on alpha channel.',\n ' // 0 = API does not support gather4 on alpha channel.',\n ' //',\n ' #if (FXAA_HLSL_5 == 1)',\n ' #define FXAA_GATHER4_ALPHA 1',\n ' #endif',\n ' #ifdef GL_ARB_gpu_shader5',\n ' #define FXAA_GATHER4_ALPHA 1',\n ' #endif',\n ' #ifdef GL_NV_gpu_shader5',\n ' #define FXAA_GATHER4_ALPHA 1',\n ' #endif',\n ' #ifndef FXAA_GATHER4_ALPHA',\n ' #define FXAA_GATHER4_ALPHA 0',\n ' #endif',\n '#endif',\n '',\n '',\n '/*============================================================================',\n ' FXAA QUALITY - TUNING KNOBS',\n '------------------------------------------------------------------------------',\n 'NOTE the other tuning knobs are now in the shader function inputs!',\n '============================================================================*/',\n '#ifndef FXAA_QUALITY_PRESET',\n ' //',\n ' // Choose the quality preset.',\n ' // This needs to be compiled into the shader as it effects code.',\n ' // Best option to include multiple presets is to',\n ' // in each shader define the preset, then include this file.',\n ' //',\n ' // OPTIONS',\n ' // -----------------------------------------------------------------------',\n ' // 10 to 15 - default medium dither (10=fastest, 15=highest quality)',\n ' // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)',\n ' // 39 - no dither, very expensive',\n ' //',\n ' // NOTES',\n ' // -----------------------------------------------------------------------',\n ' // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)',\n ' // 13 = about same speed as FXAA 3.9 and better than 12',\n ' // 23 = closest to FXAA 3.9 visually and performance wise',\n ' // _ = the lowest digit is directly related to performance',\n ' // _ = the highest digit is directly related to style',\n ' //',\n ' #define FXAA_QUALITY_PRESET 12',\n '#endif',\n '',\n '',\n '/*============================================================================',\n '',\n ' FXAA QUALITY - PRESETS',\n '',\n '============================================================================*/',\n '',\n '/*============================================================================',\n ' FXAA QUALITY - MEDIUM DITHER PRESETS',\n '============================================================================*/',\n '#if (FXAA_QUALITY_PRESET == 10)',\n ' #define FXAA_QUALITY_PS 3',\n ' #define FXAA_QUALITY_P0 1.5',\n ' #define FXAA_QUALITY_P1 3.0',\n ' #define FXAA_QUALITY_P2 12.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 11)',\n ' #define FXAA_QUALITY_PS 4',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 3.0',\n ' #define FXAA_QUALITY_P3 12.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 12)',\n ' #define FXAA_QUALITY_PS 5',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 4.0',\n ' #define FXAA_QUALITY_P4 12.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 13)',\n ' #define FXAA_QUALITY_PS 6',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 4.0',\n ' #define FXAA_QUALITY_P5 12.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 14)',\n ' #define FXAA_QUALITY_PS 7',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 4.0',\n ' #define FXAA_QUALITY_P6 12.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 15)',\n ' #define FXAA_QUALITY_PS 8',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 4.0',\n ' #define FXAA_QUALITY_P7 12.0',\n '#endif',\n '',\n '/*============================================================================',\n ' FXAA QUALITY - LOW DITHER PRESETS',\n '============================================================================*/',\n '#if (FXAA_QUALITY_PRESET == 20)',\n ' #define FXAA_QUALITY_PS 3',\n ' #define FXAA_QUALITY_P0 1.5',\n ' #define FXAA_QUALITY_P1 2.0',\n ' #define FXAA_QUALITY_P2 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 21)',\n ' #define FXAA_QUALITY_PS 4',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 22)',\n ' #define FXAA_QUALITY_PS 5',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 23)',\n ' #define FXAA_QUALITY_PS 6',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 24)',\n ' #define FXAA_QUALITY_PS 7',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 3.0',\n ' #define FXAA_QUALITY_P6 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 25)',\n ' #define FXAA_QUALITY_PS 8',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 4.0',\n ' #define FXAA_QUALITY_P7 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 26)',\n ' #define FXAA_QUALITY_PS 9',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 2.0',\n ' #define FXAA_QUALITY_P7 4.0',\n ' #define FXAA_QUALITY_P8 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 27)',\n ' #define FXAA_QUALITY_PS 10',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 2.0',\n ' #define FXAA_QUALITY_P7 2.0',\n ' #define FXAA_QUALITY_P8 4.0',\n ' #define FXAA_QUALITY_P9 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 28)',\n ' #define FXAA_QUALITY_PS 11',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 2.0',\n ' #define FXAA_QUALITY_P7 2.0',\n ' #define FXAA_QUALITY_P8 2.0',\n ' #define FXAA_QUALITY_P9 4.0',\n ' #define FXAA_QUALITY_P10 8.0',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_QUALITY_PRESET == 29)',\n ' #define FXAA_QUALITY_PS 12',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.5',\n ' #define FXAA_QUALITY_P2 2.0',\n ' #define FXAA_QUALITY_P3 2.0',\n ' #define FXAA_QUALITY_P4 2.0',\n ' #define FXAA_QUALITY_P5 2.0',\n ' #define FXAA_QUALITY_P6 2.0',\n ' #define FXAA_QUALITY_P7 2.0',\n ' #define FXAA_QUALITY_P8 2.0',\n ' #define FXAA_QUALITY_P9 2.0',\n ' #define FXAA_QUALITY_P10 4.0',\n ' #define FXAA_QUALITY_P11 8.0',\n '#endif',\n '',\n '/*============================================================================',\n ' FXAA QUALITY - EXTREME QUALITY',\n '============================================================================*/',\n '#if (FXAA_QUALITY_PRESET == 39)',\n ' #define FXAA_QUALITY_PS 12',\n ' #define FXAA_QUALITY_P0 1.0',\n ' #define FXAA_QUALITY_P1 1.0',\n ' #define FXAA_QUALITY_P2 1.0',\n ' #define FXAA_QUALITY_P3 1.0',\n ' #define FXAA_QUALITY_P4 1.0',\n ' #define FXAA_QUALITY_P5 1.5',\n ' #define FXAA_QUALITY_P6 2.0',\n ' #define FXAA_QUALITY_P7 2.0',\n ' #define FXAA_QUALITY_P8 2.0',\n ' #define FXAA_QUALITY_P9 2.0',\n ' #define FXAA_QUALITY_P10 4.0',\n ' #define FXAA_QUALITY_P11 8.0',\n '#endif',\n '',\n '',\n '',\n '/*============================================================================',\n '',\n ' API PORTING',\n '',\n '============================================================================*/',\n '#if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)',\n ' #define FxaaBool bool',\n ' #define FxaaDiscard discard',\n ' #define FxaaFloat float',\n ' #define FxaaFloat2 vec2',\n ' #define FxaaFloat3 vec3',\n ' #define FxaaFloat4 vec4',\n ' #define FxaaHalf float',\n ' #define FxaaHalf2 vec2',\n ' #define FxaaHalf3 vec3',\n ' #define FxaaHalf4 vec4',\n ' #define FxaaInt2 ivec2',\n ' #define FxaaSat(x) clamp(x, 0.0, 1.0)',\n ' #define FxaaTex sampler2D',\n '#else',\n ' #define FxaaBool bool',\n ' #define FxaaDiscard clip(-1)',\n ' #define FxaaFloat float',\n ' #define FxaaFloat2 float2',\n ' #define FxaaFloat3 float3',\n ' #define FxaaFloat4 float4',\n ' #define FxaaHalf half',\n ' #define FxaaHalf2 half2',\n ' #define FxaaHalf3 half3',\n ' #define FxaaHalf4 half4',\n ' #define FxaaSat(x) saturate(x)',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_GLSL_100 == 1)',\n ' #define FxaaTexTop(t, p) texture2D(t, p, 0.0)',\n ' #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), 0.0)',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_GLSL_120 == 1)',\n ' // Requires,',\n ' // #version 120',\n ' // And at least,',\n ' // #extension GL_EXT_gpu_shader4 : enable',\n ' // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)',\n ' #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)',\n ' #if (FXAA_FAST_PIXEL_OFFSET == 1)',\n ' #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)',\n ' #else',\n ' #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)',\n ' #endif',\n ' #if (FXAA_GATHER4_ALPHA == 1)',\n ' // use #extension GL_ARB_gpu_shader5 : enable',\n ' #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)',\n ' #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)',\n ' #define FxaaTexGreen4(t, p) textureGather(t, p, 1)',\n ' #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)',\n ' #endif',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_GLSL_130 == 1)',\n ' // Requires \"#version 130\" or better',\n ' #define FxaaTexTop(t, p) textureLod(t, p, 0.0)',\n ' #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)',\n ' #if (FXAA_GATHER4_ALPHA == 1)',\n ' // use #extension GL_ARB_gpu_shader5 : enable',\n ' #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)',\n ' #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)',\n ' #define FxaaTexGreen4(t, p) textureGather(t, p, 1)',\n ' #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)',\n ' #endif',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_HLSL_3 == 1)',\n ' #define FxaaInt2 float2',\n ' #define FxaaTex sampler2D',\n ' #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))',\n ' #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_HLSL_4 == 1)',\n ' #define FxaaInt2 int2',\n ' struct FxaaTex { SamplerState smpl; Texture2D tex; };',\n ' #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)',\n ' #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)',\n '#endif',\n '/*--------------------------------------------------------------------------*/',\n '#if (FXAA_HLSL_5 == 1)',\n ' #define FxaaInt2 int2',\n ' struct FxaaTex { SamplerState smpl; Texture2D tex; };',\n ' #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)',\n ' #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)',\n ' #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)',\n ' #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)',\n ' #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)',\n ' #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)',\n '#endif',\n '',\n '',\n '/*============================================================================',\n ' GREEN AS LUMA OPTION SUPPORT FUNCTION',\n '============================================================================*/',\n '#if (FXAA_GREEN_AS_LUMA == 0)',\n ' FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }',\n '#else',\n ' FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }',\n '#endif',\n '',\n '',\n '',\n '',\n '/*============================================================================',\n '',\n ' FXAA3 QUALITY - PC',\n '',\n '============================================================================*/',\n '#if (FXAA_PC == 1)',\n '/*--------------------------------------------------------------------------*/',\n 'FxaaFloat4 FxaaPixelShader(',\n ' //',\n ' // Use noperspective interpolation here (turn off perspective interpolation).',\n ' // {xy} = center of pixel',\n ' FxaaFloat2 pos,',\n ' //',\n ' // Used only for FXAA Console, and not used on the 360 version.',\n ' // Use noperspective interpolation here (turn off perspective interpolation).',\n ' // {xy_} = upper left of pixel',\n ' // {_zw} = lower right of pixel',\n ' FxaaFloat4 fxaaConsolePosPos,',\n ' //',\n ' // Input color texture.',\n ' // {rgb_} = color in linear or perceptual color space',\n ' // if (FXAA_GREEN_AS_LUMA == 0)',\n ' // {__a} = luma in perceptual color space (not linear)',\n ' FxaaTex tex,',\n ' //',\n ' // Only used on the optimized 360 version of FXAA Console.',\n ' // For everything but 360, just use the same input here as for \"tex\".',\n ' // For 360, same texture, just alias with a 2nd sampler.',\n ' // This sampler needs to have an exponent bias of -1.',\n ' FxaaTex fxaaConsole360TexExpBiasNegOne,',\n ' //',\n ' // Only used on the optimized 360 version of FXAA Console.',\n ' // For everything but 360, just use the same input here as for \"tex\".',\n ' // For 360, same texture, just alias with a 3nd sampler.',\n ' // This sampler needs to have an exponent bias of -2.',\n ' FxaaTex fxaaConsole360TexExpBiasNegTwo,',\n ' //',\n ' // Only used on FXAA Quality.',\n ' // This must be from a constant/uniform.',\n ' // {x_} = 1.0/screenWidthInPixels',\n ' // {_y} = 1.0/screenHeightInPixels',\n ' FxaaFloat2 fxaaQualityRcpFrame,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // This must be from a constant/uniform.',\n ' // This effects sub-pixel AA quality and inversely sharpness.',\n ' // Where N ranges between,',\n ' // N = 0.50 (default)',\n ' // N = 0.33 (sharper)',\n ' // {x__} = -N/screenWidthInPixels',\n ' // {_y_} = -N/screenHeightInPixels',\n ' // {_z_} = N/screenWidthInPixels',\n ' // {__w} = N/screenHeightInPixels',\n ' FxaaFloat4 fxaaConsoleRcpFrameOpt,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // Not used on 360, but used on PS3 and PC.',\n ' // This must be from a constant/uniform.',\n ' // {x__} = -2.0/screenWidthInPixels',\n ' // {_y_} = -2.0/screenHeightInPixels',\n ' // {_z_} = 2.0/screenWidthInPixels',\n ' // {__w} = 2.0/screenHeightInPixels',\n ' FxaaFloat4 fxaaConsoleRcpFrameOpt2,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.',\n ' // This must be from a constant/uniform.',\n ' // {x__} = 8.0/screenWidthInPixels',\n ' // {_y_} = 8.0/screenHeightInPixels',\n ' // {_z_} = -4.0/screenWidthInPixels',\n ' // {__w} = -4.0/screenHeightInPixels',\n ' FxaaFloat4 fxaaConsole360RcpFrameOpt2,',\n ' //',\n ' // Only used on FXAA Quality.',\n ' // This used to be the FXAA_QUALITY_SUBPIX define.',\n ' // It is here now to allow easier tuning.',\n ' // Choose the amount of sub-pixel aliasing removal.',\n ' // This can effect sharpness.',\n ' // 1.00 - upper limit (softer)',\n ' // 0.75 - default amount of filtering',\n ' // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)',\n ' // 0.25 - almost off',\n ' // 0.00 - completely off',\n ' FxaaFloat fxaaQualitySubpix,',\n ' //',\n ' // Only used on FXAA Quality.',\n ' // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.',\n ' // It is here now to allow easier tuning.',\n ' // The minimum amount of local contrast required to apply algorithm.',\n ' // 0.333 - too little (faster)',\n ' // 0.250 - low quality',\n ' // 0.166 - default',\n ' // 0.125 - high quality',\n ' // 0.063 - overkill (slower)',\n ' FxaaFloat fxaaQualityEdgeThreshold,',\n ' //',\n ' // Only used on FXAA Quality.',\n ' // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.',\n ' // It is here now to allow easier tuning.',\n ' // Trims the algorithm from processing darks.',\n ' // 0.0833 - upper limit (default, the start of visible unfiltered edges)',\n ' // 0.0625 - high quality (faster)',\n ' // 0.0312 - visible limit (slower)',\n ' // Special notes when using FXAA_GREEN_AS_LUMA,',\n ' // Likely want to set this to zero.',\n ' // As colors that are mostly not-green',\n ' // will appear very dark in the green channel!',\n ' // Tune by looking at mostly non-green content,',\n ' // then start at zero and increase until aliasing is a problem.',\n ' FxaaFloat fxaaQualityEdgeThresholdMin,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.',\n ' // It is here now to allow easier tuning.',\n ' // This does not effect PS3, as this needs to be compiled in.',\n ' // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.',\n ' // Due to the PS3 being ALU bound,',\n ' // there are only three safe values here: 2 and 4 and 8.',\n ' // These options use the shaders ability to a free *|/ by 2|4|8.',\n ' // For all other platforms can be a non-power of two.',\n ' // 8.0 is sharper (default!!!)',\n ' // 4.0 is softer',\n ' // 2.0 is really soft (good only for vector graphics inputs)',\n ' FxaaFloat fxaaConsoleEdgeSharpness,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.',\n ' // It is here now to allow easier tuning.',\n ' // This does not effect PS3, as this needs to be compiled in.',\n ' // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.',\n ' // Due to the PS3 being ALU bound,',\n ' // there are only two safe values here: 1/4 and 1/8.',\n ' // These options use the shaders ability to a free *|/ by 2|4|8.',\n ' // The console setting has a different mapping than the quality setting.',\n ' // Other platforms can use other values.',\n ' // 0.125 leaves less aliasing, but is softer (default!!!)',\n ' // 0.25 leaves more aliasing, and is sharper',\n ' FxaaFloat fxaaConsoleEdgeThreshold,',\n ' //',\n ' // Only used on FXAA Console.',\n ' // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.',\n ' // It is here now to allow easier tuning.',\n ' // Trims the algorithm from processing darks.',\n ' // The console setting has a different mapping than the quality setting.',\n ' // This only applies when FXAA_EARLY_EXIT is 1.',\n ' // This does not apply to PS3,',\n ' // PS3 was simplified to avoid more shader instructions.',\n ' // 0.06 - faster but more aliasing in darks',\n ' // 0.05 - default',\n ' // 0.04 - slower and less aliasing in darks',\n ' // Special notes when using FXAA_GREEN_AS_LUMA,',\n ' // Likely want to set this to zero.',\n ' // As colors that are mostly not-green',\n ' // will appear very dark in the green channel!',\n ' // Tune by looking at mostly non-green content,',\n ' // then start at zero and increase until aliasing is a problem.',\n ' FxaaFloat fxaaConsoleEdgeThresholdMin,',\n ' //',\n ' // Extra constants for 360 FXAA Console only.',\n ' // Use zeros or anything else for other platforms.',\n ' // These must be in physical constant registers and NOT immediates.',\n ' // Immediates will result in compiler un-optimizing.',\n ' // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)',\n ' FxaaFloat4 fxaaConsole360ConstDir',\n ') {',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat2 posM;',\n ' posM.x = pos.x;',\n ' posM.y = pos.y;',\n ' #if (FXAA_GATHER4_ALPHA == 1)',\n ' #if (FXAA_DISCARD == 0)',\n ' FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);',\n ' #if (FXAA_GREEN_AS_LUMA == 0)',\n ' #define lumaM rgbyM.w',\n ' #else',\n ' #define lumaM rgbyM.y',\n ' #endif',\n ' #endif',\n ' #if (FXAA_GREEN_AS_LUMA == 0)',\n ' FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);',\n ' FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));',\n ' #else',\n ' FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);',\n ' FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));',\n ' #endif',\n ' #if (FXAA_DISCARD == 1)',\n ' #define lumaM luma4A.w',\n ' #endif',\n ' #define lumaE luma4A.z',\n ' #define lumaS luma4A.x',\n ' #define lumaSE luma4A.y',\n ' #define lumaNW luma4B.w',\n ' #define lumaN luma4B.z',\n ' #define lumaW luma4B.x',\n ' #else',\n ' FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);',\n ' #if (FXAA_GREEN_AS_LUMA == 0)',\n ' #define lumaM rgbyM.w',\n ' #else',\n ' #define lumaM rgbyM.y',\n ' #endif',\n ' #if (FXAA_GLSL_100 == 1)',\n ' FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));',\n ' #else',\n ' FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));',\n ' #endif',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat maxSM = max(lumaS, lumaM);',\n ' FxaaFloat minSM = min(lumaS, lumaM);',\n ' FxaaFloat maxESM = max(lumaE, maxSM);',\n ' FxaaFloat minESM = min(lumaE, minSM);',\n ' FxaaFloat maxWN = max(lumaN, lumaW);',\n ' FxaaFloat minWN = min(lumaN, lumaW);',\n ' FxaaFloat rangeMax = max(maxWN, maxESM);',\n ' FxaaFloat rangeMin = min(minWN, minESM);',\n ' FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;',\n ' FxaaFloat range = rangeMax - rangeMin;',\n ' FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);',\n ' FxaaBool earlyExit = range < rangeMaxClamped;',\n '/*--------------------------------------------------------------------------*/',\n ' if(earlyExit)',\n ' #if (FXAA_DISCARD == 1)',\n ' FxaaDiscard;',\n ' #else',\n ' return rgbyM;',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_GATHER4_ALPHA == 0)',\n ' #if (FXAA_GLSL_100 == 1)',\n ' FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));',\n ' #else',\n ' FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));',\n ' #endif',\n ' #else',\n ' FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));',\n ' FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat lumaNS = lumaN + lumaS;',\n ' FxaaFloat lumaWE = lumaW + lumaE;',\n ' FxaaFloat subpixRcpRange = 1.0/range;',\n ' FxaaFloat subpixNSWE = lumaNS + lumaWE;',\n ' FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;',\n ' FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat lumaNESE = lumaNE + lumaSE;',\n ' FxaaFloat lumaNWNE = lumaNW + lumaNE;',\n ' FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;',\n ' FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat lumaNWSW = lumaNW + lumaSW;',\n ' FxaaFloat lumaSWSE = lumaSW + lumaSE;',\n ' FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);',\n ' FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);',\n ' FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;',\n ' FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;',\n ' FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;',\n ' FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;',\n ' FxaaFloat lengthSign = fxaaQualityRcpFrame.x;',\n ' FxaaBool horzSpan = edgeHorz >= edgeVert;',\n ' FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;',\n '/*--------------------------------------------------------------------------*/',\n ' if(!horzSpan) lumaN = lumaW;',\n ' if(!horzSpan) lumaS = lumaE;',\n ' if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;',\n ' FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat gradientN = lumaN - lumaM;',\n ' FxaaFloat gradientS = lumaS - lumaM;',\n ' FxaaFloat lumaNN = lumaN + lumaM;',\n ' FxaaFloat lumaSS = lumaS + lumaM;',\n ' FxaaBool pairN = abs(gradientN) >= abs(gradientS);',\n ' FxaaFloat gradient = max(abs(gradientN), abs(gradientS));',\n ' if(pairN) lengthSign = -lengthSign;',\n ' FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat2 posB;',\n ' posB.x = posM.x;',\n ' posB.y = posM.y;',\n ' FxaaFloat2 offNP;',\n ' offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;',\n ' offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;',\n ' if(!horzSpan) posB.x += lengthSign * 0.5;',\n ' if( horzSpan) posB.y += lengthSign * 0.5;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat2 posN;',\n ' posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;',\n ' posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;',\n ' FxaaFloat2 posP;',\n ' posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;',\n ' posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;',\n ' FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;',\n ' FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));',\n ' FxaaFloat subpixE = subpixC * subpixC;',\n ' FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));',\n '/*--------------------------------------------------------------------------*/',\n ' if(!pairN) lumaNN = lumaSS;',\n ' FxaaFloat gradientScaled = gradient * 1.0/4.0;',\n ' FxaaFloat lumaMM = lumaM - lumaNN * 0.5;',\n ' FxaaFloat subpixF = subpixD * subpixE;',\n ' FxaaBool lumaMLTZero = lumaMM < 0.0;',\n '/*--------------------------------------------------------------------------*/',\n ' lumaEndN -= lumaNN * 0.5;',\n ' lumaEndP -= lumaNN * 0.5;',\n ' FxaaBool doneN = abs(lumaEndN) >= gradientScaled;',\n ' FxaaBool doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;',\n ' FxaaBool doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;',\n '/*--------------------------------------------------------------------------*/',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 3)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 4)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 5)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 6)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 7)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 8)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 9)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 10)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 11)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;',\n '/*--------------------------------------------------------------------------*/',\n ' #if (FXAA_QUALITY_PS > 12)',\n ' if(doneNP) {',\n ' if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));',\n ' if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));',\n ' if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;',\n ' if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;',\n ' doneN = abs(lumaEndN) >= gradientScaled;',\n ' doneP = abs(lumaEndP) >= gradientScaled;',\n ' if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;',\n ' if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;',\n ' doneNP = (!doneN) || (!doneP);',\n ' if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;',\n ' if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n ' #endif',\n '/*--------------------------------------------------------------------------*/',\n ' }',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat dstN = posM.x - posN.x;',\n ' FxaaFloat dstP = posP.x - posM.x;',\n ' if(!horzSpan) dstN = posM.y - posN.y;',\n ' if(!horzSpan) dstP = posP.y - posM.y;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;',\n ' FxaaFloat spanLength = (dstP + dstN);',\n ' FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;',\n ' FxaaFloat spanLengthRcp = 1.0/spanLength;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaBool directionN = dstN < dstP;',\n ' FxaaFloat dst = min(dstN, dstP);',\n ' FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;',\n ' FxaaFloat subpixG = subpixF * subpixF;',\n ' FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;',\n ' FxaaFloat subpixH = subpixG * fxaaQualitySubpix;',\n '/*--------------------------------------------------------------------------*/',\n ' FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;',\n ' FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);',\n ' if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;',\n ' if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;',\n ' #if (FXAA_DISCARD == 1)',\n ' return FxaaTexTop(tex, posM);',\n ' #else',\n ' return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);',\n ' #endif',\n '}',\n '/*==========================================================================*/',\n '#endif',\n '',\n 'void main() {',\n ' gl_FragColor = FxaaPixelShader(',\n ' vUv,',\n ' vec4(0.0),',\n ' tDiffuse,',\n ' tDiffuse,',\n ' tDiffuse,',\n ' resolution,',\n ' vec4(0.0),',\n ' vec4(0.0),',\n ' vec4(0.0),',\n ' 0.75,',\n ' 0.166,',\n ' 0.0833,',\n ' 0.0,',\n ' 0.0,',\n ' 0.0,',\n ' vec4(0.0)',\n ' );',\n '',\n ' // TODO avoid querying texture twice for same texel',\n ' gl_FragColor.a = texture2D(tDiffuse, vUv).a;',\n '}',\n ].join('\\n'),\n}\n"],"names":["Vector2"],"mappings":";;;AASO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAK;AAAA,IACxB,YAAY,EAAE,OAAO,IAAIA,cAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;AAAA,EACtD;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;;"}
|
1
|
+
{"version":3,"file":"FXAAShader.cjs","sources":["../../src/shaders/FXAAShader.ts"],"sourcesContent":["import { Vector2 } from 'three'\n\n/**\n * NVIDIA FXAA by Timothy Lottes\n * http://timothylottes.blogspot.com/2011/06/fxaa3-source-released.html\n * - WebGL port by @supereggbert\n * http://www.glge.org/demos/fxaa/\n */\n\nexport const FXAAShader = {\n uniforms: {\n tDiffuse: { value: null },\n resolution: { value: /* @__PURE__ */ new Vector2(1 / 1024, 1 / 512) },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n precision highp float;\n \n uniform sampler2D tDiffuse;\n \n uniform vec2 resolution;\n \n varying vec2 vUv;\n \n // FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\n \n //----------------------------------------------------------------------------------\n // File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\n // SDK Version: v3.00\n // Email: gameworks@nvidia.com\n // Site: http://developer.nvidia.com/\n //\n // Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\n //\n // Redistribution and use in source and binary forms, with or without\n // modification, are permitted provided that the following conditions\n // are met:\n // * Redistributions of source code must retain the above copyright\n // notice, this list of conditions and the following disclaimer.\n // * Redistributions in binary form must reproduce the above copyright\n // notice, this list of conditions and the following disclaimer in the\n // documentation and/or other materials provided with the distribution.\n // * Neither the name of NVIDIA CORPORATION nor the names of its\n // contributors may be used to endorse or promote products derived\n // from this software without specific prior written permission.\n //\n \"// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AS IS AND ANY\",\n // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n //\n //----------------------------------------------------------------------------------\n \n #define FXAA_PC 1\n #define FXAA_GLSL_100 1\n #define FXAA_QUALITY_PRESET 12\n \n #define FXAA_GREEN_AS_LUMA 1\n \n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_PC_CONSOLE\n //\n // The console algorithm for PC is included\n // for developers targeting really low spec machines.\n // Likely better to just run FXAA_PC, and use a really low preset.\n //\n #define FXAA_PC_CONSOLE 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_GLSL_120\n #define FXAA_GLSL_120 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_GLSL_130\n #define FXAA_GLSL_130 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_HLSL_3\n #define FXAA_HLSL_3 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_HLSL_4\n #define FXAA_HLSL_4 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_HLSL_5\n #define FXAA_HLSL_5 0\n #endif\n /*==========================================================================*/\n #ifndef FXAA_GREEN_AS_LUMA\n //\n // For those using non-linear color,\n // and either not able to get luma in alpha, or not wanting to,\n // this enables FXAA to run using green as a proxy for luma.\n // So with this enabled, no need to pack luma in alpha.\n //\n // This will turn off AA on anything which lacks some amount of green.\n // Pure red and blue or combination of only R and B, will get no AA.\n //\n // Might want to lower the settings for both,\n // fxaaConsoleEdgeThresholdMin\n // fxaaQualityEdgeThresholdMin\n // In order to insure AA does not get turned off on colors\n // which contain a minor amount of green.\n //\n // 1 = On.\n // 0 = Off.\n //\n #define FXAA_GREEN_AS_LUMA 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_EARLY_EXIT\n //\n \" // Controls algorithms early exit path.\",\n // On PS3 turning this ON adds 2 cycles to the shader.\n // On 360 turning this OFF adds 10ths of a millisecond to the shader.\n // Turning this off on console will result in a more blurry image.\n // So this defaults to on.\n //\n // 1 = On.\n // 0 = Off.\n //\n #define FXAA_EARLY_EXIT 1\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_DISCARD\n //\n // Only valid for PC OpenGL currently.\n // Probably will not work when FXAA_GREEN_AS_LUMA = 1.\n //\n \" // 1 = Use discard on pixels which dont need AA.\",\n // For APIs which enable concurrent TEX+ROP from same surface.\n \" // 0 = Return unchanged color on pixels which dont need AA.\",\n //\n #define FXAA_DISCARD 0\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_FAST_PIXEL_OFFSET\n //\n // Used for GLSL 120 only.\n //\n // 1 = GL API supports fast pixel offsets\n // 0 = do not use fast pixel offsets\n //\n #ifdef GL_EXT_gpu_shader4\n #define FXAA_FAST_PIXEL_OFFSET 1\n #endif\n #ifdef GL_NV_gpu_shader5\n #define FXAA_FAST_PIXEL_OFFSET 1\n #endif\n #ifdef GL_ARB_gpu_shader5\n #define FXAA_FAST_PIXEL_OFFSET 1\n #endif\n #ifndef FXAA_FAST_PIXEL_OFFSET\n #define FXAA_FAST_PIXEL_OFFSET 0\n #endif\n #endif\n /*--------------------------------------------------------------------------*/\n #ifndef FXAA_GATHER4_ALPHA\n //\n // 1 = API supports gather4 on alpha channel.\n // 0 = API does not support gather4 on alpha channel.\n //\n #if (FXAA_HLSL_5 == 1)\n #define FXAA_GATHER4_ALPHA 1\n #endif\n #ifdef GL_ARB_gpu_shader5\n #define FXAA_GATHER4_ALPHA 1\n #endif\n #ifdef GL_NV_gpu_shader5\n #define FXAA_GATHER4_ALPHA 1\n #endif\n #ifndef FXAA_GATHER4_ALPHA\n #define FXAA_GATHER4_ALPHA 0\n #endif\n #endif\n \n \n /*============================================================================\n FXAA QUALITY - TUNING KNOBS\n ------------------------------------------------------------------------------\n NOTE the other tuning knobs are now in the shader function inputs!\n ============================================================================*/\n #ifndef FXAA_QUALITY_PRESET\n //\n // Choose the quality preset.\n // This needs to be compiled into the shader as it effects code.\n // Best option to include multiple presets is to\n // in each shader define the preset, then include this file.\n //\n // OPTIONS\n // -----------------------------------------------------------------------\n // 10 to 15 - default medium dither (10=fastest, 15=highest quality)\n // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)\n // 39 - no dither, very expensive\n //\n // NOTES\n // -----------------------------------------------------------------------\n // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)\n // 13 = about same speed as FXAA 3.9 and better than 12\n // 23 = closest to FXAA 3.9 visually and performance wise\n // _ = the lowest digit is directly related to performance\n // _ = the highest digit is directly related to style\n //\n #define FXAA_QUALITY_PRESET 12\n #endif\n \n \n /*============================================================================\n \n FXAA QUALITY - PRESETS\n \n ============================================================================*/\n \n /*============================================================================\n FXAA QUALITY - MEDIUM DITHER PRESETS\n ============================================================================*/\n #if (FXAA_QUALITY_PRESET == 10)\n #define FXAA_QUALITY_PS 3\n #define FXAA_QUALITY_P0 1.5\n #define FXAA_QUALITY_P1 3.0\n #define FXAA_QUALITY_P2 12.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 11)\n #define FXAA_QUALITY_PS 4\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 3.0\n #define FXAA_QUALITY_P3 12.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 12)\n #define FXAA_QUALITY_PS 5\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 4.0\n #define FXAA_QUALITY_P4 12.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 13)\n #define FXAA_QUALITY_PS 6\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 4.0\n #define FXAA_QUALITY_P5 12.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 14)\n #define FXAA_QUALITY_PS 7\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 4.0\n #define FXAA_QUALITY_P6 12.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 15)\n #define FXAA_QUALITY_PS 8\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 4.0\n #define FXAA_QUALITY_P7 12.0\n #endif\n \n /*============================================================================\n FXAA QUALITY - LOW DITHER PRESETS\n ============================================================================*/\n #if (FXAA_QUALITY_PRESET == 20)\n #define FXAA_QUALITY_PS 3\n #define FXAA_QUALITY_P0 1.5\n #define FXAA_QUALITY_P1 2.0\n #define FXAA_QUALITY_P2 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 21)\n #define FXAA_QUALITY_PS 4\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 22)\n #define FXAA_QUALITY_PS 5\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 23)\n #define FXAA_QUALITY_PS 6\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 24)\n #define FXAA_QUALITY_PS 7\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 3.0\n #define FXAA_QUALITY_P6 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 25)\n #define FXAA_QUALITY_PS 8\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 4.0\n #define FXAA_QUALITY_P7 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 26)\n #define FXAA_QUALITY_PS 9\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 2.0\n #define FXAA_QUALITY_P7 4.0\n #define FXAA_QUALITY_P8 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 27)\n #define FXAA_QUALITY_PS 10\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 2.0\n #define FXAA_QUALITY_P7 2.0\n #define FXAA_QUALITY_P8 4.0\n #define FXAA_QUALITY_P9 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 28)\n #define FXAA_QUALITY_PS 11\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 2.0\n #define FXAA_QUALITY_P7 2.0\n #define FXAA_QUALITY_P8 2.0\n #define FXAA_QUALITY_P9 4.0\n #define FXAA_QUALITY_P10 8.0\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PRESET == 29)\n #define FXAA_QUALITY_PS 12\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.5\n #define FXAA_QUALITY_P2 2.0\n #define FXAA_QUALITY_P3 2.0\n #define FXAA_QUALITY_P4 2.0\n #define FXAA_QUALITY_P5 2.0\n #define FXAA_QUALITY_P6 2.0\n #define FXAA_QUALITY_P7 2.0\n #define FXAA_QUALITY_P8 2.0\n #define FXAA_QUALITY_P9 2.0\n #define FXAA_QUALITY_P10 4.0\n #define FXAA_QUALITY_P11 8.0\n #endif\n \n /*============================================================================\n FXAA QUALITY - EXTREME QUALITY\n ============================================================================*/\n #if (FXAA_QUALITY_PRESET == 39)\n #define FXAA_QUALITY_PS 12\n #define FXAA_QUALITY_P0 1.0\n #define FXAA_QUALITY_P1 1.0\n #define FXAA_QUALITY_P2 1.0\n #define FXAA_QUALITY_P3 1.0\n #define FXAA_QUALITY_P4 1.0\n #define FXAA_QUALITY_P5 1.5\n #define FXAA_QUALITY_P6 2.0\n #define FXAA_QUALITY_P7 2.0\n #define FXAA_QUALITY_P8 2.0\n #define FXAA_QUALITY_P9 2.0\n #define FXAA_QUALITY_P10 4.0\n #define FXAA_QUALITY_P11 8.0\n #endif\n \n \n \n /*============================================================================\n \n API PORTING\n \n ============================================================================*/\n #if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)\n #define FxaaBool bool\n #define FxaaDiscard discard\n #define FxaaFloat float\n #define FxaaFloat2 vec2\n #define FxaaFloat3 vec3\n #define FxaaFloat4 vec4\n #define FxaaHalf float\n #define FxaaHalf2 vec2\n #define FxaaHalf3 vec3\n #define FxaaHalf4 vec4\n #define FxaaInt2 ivec2\n #define FxaaSat(x) clamp(x, 0.0, 1.0)\n #define FxaaTex sampler2D\n #else\n #define FxaaBool bool\n #define FxaaDiscard clip(-1)\n #define FxaaFloat float\n #define FxaaFloat2 float2\n #define FxaaFloat3 float3\n #define FxaaFloat4 float4\n #define FxaaHalf half\n #define FxaaHalf2 half2\n #define FxaaHalf3 half3\n #define FxaaHalf4 half4\n #define FxaaSat(x) saturate(x)\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_GLSL_100 == 1)\n #define FxaaTexTop(t, p) texture2D(t, p, 0.0)\n #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), 0.0)\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_GLSL_120 == 1)\n // Requires,\n // #version 120\n // And at least,\n // #extension GL_EXT_gpu_shader4 : enable\n // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)\n #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)\n #if (FXAA_FAST_PIXEL_OFFSET == 1)\n #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)\n #else\n #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)\n #endif\n #if (FXAA_GATHER4_ALPHA == 1)\n // use #extension GL_ARB_gpu_shader5 : enable\n #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\n #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\n #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\n #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\n #endif\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_GLSL_130 == 1)\n // Requires \"#version 130\" or better\n #define FxaaTexTop(t, p) textureLod(t, p, 0.0)\n #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)\n #if (FXAA_GATHER4_ALPHA == 1)\n // use #extension GL_ARB_gpu_shader5 : enable\n #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\n #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\n #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\n #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\n #endif\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_HLSL_3 == 1)\n #define FxaaInt2 float2\n #define FxaaTex sampler2D\n #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))\n #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_HLSL_4 == 1)\n #define FxaaInt2 int2\n struct FxaaTex { SamplerState smpl; Texture2D tex; };\n #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\n #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_HLSL_5 == 1)\n #define FxaaInt2 int2\n struct FxaaTex { SamplerState smpl; Texture2D tex; };\n #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\n #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\n #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)\n #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)\n #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)\n #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)\n #endif\n \n \n /*============================================================================\n GREEN AS LUMA OPTION SUPPORT FUNCTION\n ============================================================================*/\n #if (FXAA_GREEN_AS_LUMA == 0)\n FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }\n #else\n FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }\n #endif\n \n \n \n \n /*============================================================================\n \n FXAA3 QUALITY - PC\n \n ============================================================================*/\n #if (FXAA_PC == 1)\n /*--------------------------------------------------------------------------*/\n FxaaFloat4 FxaaPixelShader(\n //\n // Use noperspective interpolation here (turn off perspective interpolation).\n // {xy} = center of pixel\n FxaaFloat2 pos,\n //\n // Used only for FXAA Console, and not used on the 360 version.\n // Use noperspective interpolation here (turn off perspective interpolation).\n // {xy_} = upper left of pixel\n // {_zw} = lower right of pixel\n FxaaFloat4 fxaaConsolePosPos,\n //\n // Input color texture.\n // {rgb_} = color in linear or perceptual color space\n // if (FXAA_GREEN_AS_LUMA == 0)\n // {__a} = luma in perceptual color space (not linear)\n FxaaTex tex,\n //\n // Only used on the optimized 360 version of FXAA Console.\n // For everything but 360, just use the same input here as for \"tex\".\n // For 360, same texture, just alias with a 2nd sampler.\n // This sampler needs to have an exponent bias of -1.\n FxaaTex fxaaConsole360TexExpBiasNegOne,\n //\n // Only used on the optimized 360 version of FXAA Console.\n // For everything but 360, just use the same input here as for \"tex\".\n // For 360, same texture, just alias with a 3nd sampler.\n // This sampler needs to have an exponent bias of -2.\n FxaaTex fxaaConsole360TexExpBiasNegTwo,\n //\n // Only used on FXAA Quality.\n // This must be from a constant/uniform.\n // {x_} = 1.0/screenWidthInPixels\n // {_y} = 1.0/screenHeightInPixels\n FxaaFloat2 fxaaQualityRcpFrame,\n //\n // Only used on FXAA Console.\n // This must be from a constant/uniform.\n // This effects sub-pixel AA quality and inversely sharpness.\n // Where N ranges between,\n // N = 0.50 (default)\n // N = 0.33 (sharper)\n // {x__} = -N/screenWidthInPixels\n // {_y_} = -N/screenHeightInPixels\n // {_z_} = N/screenWidthInPixels\n // {__w} = N/screenHeightInPixels\n FxaaFloat4 fxaaConsoleRcpFrameOpt,\n //\n // Only used on FXAA Console.\n // Not used on 360, but used on PS3 and PC.\n // This must be from a constant/uniform.\n // {x__} = -2.0/screenWidthInPixels\n // {_y_} = -2.0/screenHeightInPixels\n // {_z_} = 2.0/screenWidthInPixels\n // {__w} = 2.0/screenHeightInPixels\n FxaaFloat4 fxaaConsoleRcpFrameOpt2,\n //\n // Only used on FXAA Console.\n // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.\n // This must be from a constant/uniform.\n // {x__} = 8.0/screenWidthInPixels\n // {_y_} = 8.0/screenHeightInPixels\n // {_z_} = -4.0/screenWidthInPixels\n // {__w} = -4.0/screenHeightInPixels\n FxaaFloat4 fxaaConsole360RcpFrameOpt2,\n //\n // Only used on FXAA Quality.\n // This used to be the FXAA_QUALITY_SUBPIX define.\n // It is here now to allow easier tuning.\n // Choose the amount of sub-pixel aliasing removal.\n // This can effect sharpness.\n // 1.00 - upper limit (softer)\n // 0.75 - default amount of filtering\n // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)\n // 0.25 - almost off\n // 0.00 - completely off\n FxaaFloat fxaaQualitySubpix,\n //\n // Only used on FXAA Quality.\n // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.\n // It is here now to allow easier tuning.\n // The minimum amount of local contrast required to apply algorithm.\n // 0.333 - too little (faster)\n // 0.250 - low quality\n // 0.166 - default\n // 0.125 - high quality\n // 0.063 - overkill (slower)\n FxaaFloat fxaaQualityEdgeThreshold,\n //\n // Only used on FXAA Quality.\n // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.\n // It is here now to allow easier tuning.\n // Trims the algorithm from processing darks.\n // 0.0833 - upper limit (default, the start of visible unfiltered edges)\n // 0.0625 - high quality (faster)\n // 0.0312 - visible limit (slower)\n // Special notes when using FXAA_GREEN_AS_LUMA,\n // Likely want to set this to zero.\n // As colors that are mostly not-green\n // will appear very dark in the green channel!\n // Tune by looking at mostly non-green content,\n // then start at zero and increase until aliasing is a problem.\n FxaaFloat fxaaQualityEdgeThresholdMin,\n //\n // Only used on FXAA Console.\n // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.\n // It is here now to allow easier tuning.\n // This does not effect PS3, as this needs to be compiled in.\n // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.\n // Due to the PS3 being ALU bound,\n // there are only three safe values here: 2 and 4 and 8.\n // These options use the shaders ability to a free *|/ by 2|4|8.\n // For all other platforms can be a non-power of two.\n // 8.0 is sharper (default!!!)\n // 4.0 is softer\n // 2.0 is really soft (good only for vector graphics inputs)\n FxaaFloat fxaaConsoleEdgeSharpness,\n //\n // Only used on FXAA Console.\n // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.\n // It is here now to allow easier tuning.\n // This does not effect PS3, as this needs to be compiled in.\n // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.\n // Due to the PS3 being ALU bound,\n // there are only two safe values here: 1/4 and 1/8.\n // These options use the shaders ability to a free *|/ by 2|4|8.\n // The console setting has a different mapping than the quality setting.\n // Other platforms can use other values.\n // 0.125 leaves less aliasing, but is softer (default!!!)\n // 0.25 leaves more aliasing, and is sharper\n FxaaFloat fxaaConsoleEdgeThreshold,\n //\n // Only used on FXAA Console.\n // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.\n // It is here now to allow easier tuning.\n // Trims the algorithm from processing darks.\n // The console setting has a different mapping than the quality setting.\n // This only applies when FXAA_EARLY_EXIT is 1.\n // This does not apply to PS3,\n // PS3 was simplified to avoid more shader instructions.\n // 0.06 - faster but more aliasing in darks\n // 0.05 - default\n // 0.04 - slower and less aliasing in darks\n // Special notes when using FXAA_GREEN_AS_LUMA,\n // Likely want to set this to zero.\n // As colors that are mostly not-green\n // will appear very dark in the green channel!\n // Tune by looking at mostly non-green content,\n // then start at zero and increase until aliasing is a problem.\n FxaaFloat fxaaConsoleEdgeThresholdMin,\n //\n // Extra constants for 360 FXAA Console only.\n // Use zeros or anything else for other platforms.\n // These must be in physical constant registers and NOT immediates.\n // Immediates will result in compiler un-optimizing.\n // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)\n FxaaFloat4 fxaaConsole360ConstDir\n ) {\n /*--------------------------------------------------------------------------*/\n FxaaFloat2 posM;\n posM.x = pos.x;\n posM.y = pos.y;\n #if (FXAA_GATHER4_ALPHA == 1)\n #if (FXAA_DISCARD == 0)\n FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\n #if (FXAA_GREEN_AS_LUMA == 0)\n #define lumaM rgbyM.w\n #else\n #define lumaM rgbyM.y\n #endif\n #endif\n #if (FXAA_GREEN_AS_LUMA == 0)\n FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);\n FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));\n #else\n FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);\n FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));\n #endif\n #if (FXAA_DISCARD == 1)\n #define lumaM luma4A.w\n #endif\n #define lumaE luma4A.z\n #define lumaS luma4A.x\n #define lumaSE luma4A.y\n #define lumaNW luma4B.w\n #define lumaN luma4B.z\n #define lumaW luma4B.x\n #else\n FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\n #if (FXAA_GREEN_AS_LUMA == 0)\n #define lumaM rgbyM.w\n #else\n #define lumaM rgbyM.y\n #endif\n #if (FXAA_GLSL_100 == 1)\n FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));\n #else\n FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));\n #endif\n #endif\n /*--------------------------------------------------------------------------*/\n FxaaFloat maxSM = max(lumaS, lumaM);\n FxaaFloat minSM = min(lumaS, lumaM);\n FxaaFloat maxESM = max(lumaE, maxSM);\n FxaaFloat minESM = min(lumaE, minSM);\n FxaaFloat maxWN = max(lumaN, lumaW);\n FxaaFloat minWN = min(lumaN, lumaW);\n FxaaFloat rangeMax = max(maxWN, maxESM);\n FxaaFloat rangeMin = min(minWN, minESM);\n FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;\n FxaaFloat range = rangeMax - rangeMin;\n FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);\n FxaaBool earlyExit = range < rangeMaxClamped;\n /*--------------------------------------------------------------------------*/\n if(earlyExit)\n #if (FXAA_DISCARD == 1)\n FxaaDiscard;\n #else\n return rgbyM;\n #endif\n /*--------------------------------------------------------------------------*/\n #if (FXAA_GATHER4_ALPHA == 0)\n #if (FXAA_GLSL_100 == 1)\n FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));\n #else\n FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\n #endif\n #else\n FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));\n FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\n #endif\n /*--------------------------------------------------------------------------*/\n FxaaFloat lumaNS = lumaN + lumaS;\n FxaaFloat lumaWE = lumaW + lumaE;\n FxaaFloat subpixRcpRange = 1.0/range;\n FxaaFloat subpixNSWE = lumaNS + lumaWE;\n FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;\n FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;\n /*--------------------------------------------------------------------------*/\n FxaaFloat lumaNESE = lumaNE + lumaSE;\n FxaaFloat lumaNWNE = lumaNW + lumaNE;\n FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\n FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\n /*--------------------------------------------------------------------------*/\n FxaaFloat lumaNWSW = lumaNW + lumaSW;\n FxaaFloat lumaSWSE = lumaSW + lumaSE;\n FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);\n FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);\n FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;\n FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;\n FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;\n FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;\n /*--------------------------------------------------------------------------*/\n FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\n FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\n FxaaBool horzSpan = edgeHorz >= edgeVert;\n FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\n /*--------------------------------------------------------------------------*/\n if(!horzSpan) lumaN = lumaW;\n if(!horzSpan) lumaS = lumaE;\n if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;\n FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;\n /*--------------------------------------------------------------------------*/\n FxaaFloat gradientN = lumaN - lumaM;\n FxaaFloat gradientS = lumaS - lumaM;\n FxaaFloat lumaNN = lumaN + lumaM;\n FxaaFloat lumaSS = lumaS + lumaM;\n FxaaBool pairN = abs(gradientN) >= abs(gradientS);\n FxaaFloat gradient = max(abs(gradientN), abs(gradientS));\n if(pairN) lengthSign = -lengthSign;\n FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);\n /*--------------------------------------------------------------------------*/\n FxaaFloat2 posB;\n posB.x = posM.x;\n posB.y = posM.y;\n FxaaFloat2 offNP;\n offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n if(!horzSpan) posB.x += lengthSign * 0.5;\n if( horzSpan) posB.y += lengthSign * 0.5;\n /*--------------------------------------------------------------------------*/\n FxaaFloat2 posN;\n posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;\n posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;\n FxaaFloat2 posP;\n posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;\n posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;\n FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;\n FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));\n FxaaFloat subpixE = subpixC * subpixC;\n FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));\n /*--------------------------------------------------------------------------*/\n if(!pairN) lumaNN = lumaSS;\n FxaaFloat gradientScaled = gradient * 1.0/4.0;\n FxaaFloat lumaMM = lumaM - lumaNN * 0.5;\n FxaaFloat subpixF = subpixD * subpixE;\n FxaaBool lumaMLTZero = lumaMM < 0.0;\n /*--------------------------------------------------------------------------*/\n lumaEndN -= lumaNN * 0.5;\n lumaEndP -= lumaNN * 0.5;\n FxaaBool doneN = abs(lumaEndN) >= gradientScaled;\n FxaaBool doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;\n FxaaBool doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;\n /*--------------------------------------------------------------------------*/\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 3)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 4)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 5)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 6)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 7)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 8)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 9)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 10)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 11)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;\n /*--------------------------------------------------------------------------*/\n #if (FXAA_QUALITY_PS > 12)\n if(doneNP) {\n if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n doneN = abs(lumaEndN) >= gradientScaled;\n doneP = abs(lumaEndP) >= gradientScaled;\n if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;\n if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;\n doneNP = (!doneN) || (!doneP);\n if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;\n if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n #endif\n /*--------------------------------------------------------------------------*/\n }\n /*--------------------------------------------------------------------------*/\n FxaaFloat dstN = posM.x - posN.x;\n FxaaFloat dstP = posP.x - posM.x;\n if(!horzSpan) dstN = posM.y - posN.y;\n if(!horzSpan) dstP = posP.y - posM.y;\n /*--------------------------------------------------------------------------*/\n FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;\n FxaaFloat spanLength = (dstP + dstN);\n FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;\n FxaaFloat spanLengthRcp = 1.0/spanLength;\n /*--------------------------------------------------------------------------*/\n FxaaBool directionN = dstN < dstP;\n FxaaFloat dst = min(dstN, dstP);\n FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;\n FxaaFloat subpixG = subpixF * subpixF;\n FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;\n FxaaFloat subpixH = subpixG * fxaaQualitySubpix;\n /*--------------------------------------------------------------------------*/\n FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;\n FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);\n if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;\n if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;\n #if (FXAA_DISCARD == 1)\n return FxaaTexTop(tex, posM);\n #else\n return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);\n #endif\n }\n /*==========================================================================*/\n #endif\n \n void main() {\n gl_FragColor = FxaaPixelShader(\n vUv,\n vec4(0.0),\n tDiffuse,\n tDiffuse,\n tDiffuse,\n resolution,\n vec4(0.0),\n vec4(0.0),\n vec4(0.0),\n 0.75,\n 0.166,\n 0.0833,\n 0.0,\n 0.0,\n 0.0,\n vec4(0.0)\n );\n \n // TODO avoid querying texture twice for same texel\n gl_FragColor.a = texture2D(tDiffuse, vUv).a;\n }\n `,\n}\n"],"names":["Vector2"],"mappings":";;;AASO,MAAM,aAAa;AAAA,EACxB,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAK;AAAA,IACxB,YAAY,EAAE,OAAuB,oBAAIA,cAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;AAAA,EACtE;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWzB;AAAA;AAAA,IAA2B;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyjC7B;;"}
|