@luma.gl/shadertools 8.5.15 → 8.5.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.js +25 -25
- package/dist/dist.min.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +10 -10
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/assemble-shaders.js +6 -2
- package/dist/es5/lib/assemble-shaders.js.map +1 -1
- package/dist/es5/lib/constants.js +1 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/filters/prop-types.js.map +1 -1
- package/dist/es5/lib/inject-shader.js +2 -2
- package/dist/es5/lib/inject-shader.js.map +1 -1
- package/dist/es5/lib/platform-defines.js.map +1 -1
- package/dist/es5/lib/resolve-modules.js +2 -2
- package/dist/es5/lib/resolve-modules.js.map +1 -1
- package/dist/es5/lib/shader-module.js +1 -1
- package/dist/es5/lib/shader-module.js.map +1 -1
- package/dist/es5/lib/transpile-shader.js +1 -1
- package/dist/es5/lib/transpile-shader.js.map +1 -1
- package/dist/es5/modules/dirlight/dirlight.js.map +1 -1
- package/dist/es5/modules/fp32/fp32.js.map +1 -1
- package/dist/es5/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
- package/dist/es5/modules/fp64/fp64-functions.glsl.js.map +1 -1
- package/dist/es5/modules/fp64/fp64-utils.js +1 -1
- package/dist/es5/modules/fp64/fp64-utils.js.map +1 -1
- package/dist/es5/modules/fp64/fp64.js +6 -5
- package/dist/es5/modules/fp64/fp64.js.map +1 -1
- package/dist/es5/modules/fxaa/fxaa.js.map +1 -1
- package/dist/es5/modules/geometry/geometry.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/denoise.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/huesaturation.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/noise.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/sepia.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/vibrance.js.map +1 -1
- package/dist/es5/modules/image-adjust-filters/vignette.js.map +1 -1
- package/dist/es5/modules/image-blur-filters/tiltshift.js.map +1 -1
- package/dist/es5/modules/image-blur-filters/triangleblur.js.map +1 -1
- package/dist/es5/modules/image-blur-filters/zoomblur.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/colorhalftone.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/dotscreen.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/edgework.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/ink.js.map +1 -1
- package/dist/es5/modules/image-fun-filters/magnify.js.map +1 -1
- package/dist/es5/modules/image-warp-filters/bulgepinch.js.map +1 -1
- package/dist/es5/modules/image-warp-filters/swirl.js.map +1 -1
- package/dist/es5/modules/image-warp-filters/warp.js.map +1 -1
- package/dist/es5/modules/index.js +62 -62
- package/dist/es5/modules/index.js.map +1 -1
- package/dist/es5/modules/lights/lights.glsl.js.map +1 -1
- package/dist/es5/modules/lights/lights.js +1 -1
- package/dist/es5/modules/lights/lights.js.map +1 -1
- package/dist/es5/modules/module-injectors.js +1 -1
- package/dist/es5/modules/module-injectors.js.map +1 -1
- package/dist/es5/modules/pbr/pbr-fragment.glsl.js.map +1 -1
- package/dist/es5/modules/pbr/pbr-vertex.glsl.js.map +1 -1
- package/dist/es5/modules/pbr/pbr.js.map +1 -1
- package/dist/es5/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
- package/dist/es5/modules/phong-lighting/phong-lighting.js.map +1 -1
- package/dist/es5/modules/picking/picking.js.map +1 -1
- package/dist/es5/modules/project/project.js.map +1 -1
- package/dist/es5/modules/transform/transform.js.map +1 -1
- package/dist/es5/modules/utils/random.js.map +1 -1
- package/dist/es5/utils/assert.js.map +1 -1
- package/dist/es5/utils/index.js.map +1 -1
- package/dist/es5/utils/is-old-ie.js.map +1 -1
- package/dist/es5/utils/shader-utils.js +3 -3
- package/dist/es5/utils/shader-utils.js.map +1 -1
- package/dist/es5/utils/webgl-info.js +2 -2
- package/dist/es5/utils/webgl-info.js.map +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/assemble-shaders.js +38 -51
- package/dist/esm/lib/assemble-shaders.js.map +1 -1
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/filters/prop-types.js.map +1 -1
- package/dist/esm/lib/inject-shader.js +4 -3
- package/dist/esm/lib/inject-shader.js.map +1 -1
- package/dist/esm/lib/platform-defines.js +9 -80
- package/dist/esm/lib/platform-defines.js.map +1 -1
- package/dist/esm/lib/resolve-modules.js +9 -7
- package/dist/esm/lib/resolve-modules.js.map +1 -1
- package/dist/esm/lib/shader-module.js +20 -23
- package/dist/esm/lib/shader-module.js.map +1 -1
- package/dist/esm/lib/transpile-shader.js +5 -5
- package/dist/esm/lib/transpile-shader.js.map +1 -1
- package/dist/esm/modules/dirlight/dirlight.js +3 -9
- package/dist/esm/modules/dirlight/dirlight.js.map +1 -1
- package/dist/esm/modules/fp32/fp32.js +1 -148
- package/dist/esm/modules/fp32/fp32.js.map +1 -1
- package/dist/esm/modules/fp64/fp64-arithmetic.glsl.js +1 -143
- package/dist/esm/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
- package/dist/esm/modules/fp64/fp64-functions.glsl.js +1 -630
- package/dist/esm/modules/fp64/fp64-functions.glsl.js.map +1 -1
- package/dist/esm/modules/fp64/fp64-utils.js +3 -1
- package/dist/esm/modules/fp64/fp64-utils.js.map +1 -1
- package/dist/esm/modules/fp64/fp64.js.map +1 -1
- package/dist/esm/modules/fxaa/fxaa.js +1 -535
- package/dist/esm/modules/fxaa/fxaa.js.map +1 -1
- package/dist/esm/modules/geometry/geometry.js +2 -28
- package/dist/esm/modules/geometry/geometry.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/brightnesscontrast.js +1 -18
- package/dist/esm/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/denoise.js +1 -22
- package/dist/esm/modules/image-adjust-filters/denoise.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/huesaturation.js +1 -28
- package/dist/esm/modules/image-adjust-filters/huesaturation.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/noise.js +1 -19
- package/dist/esm/modules/image-adjust-filters/noise.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/sepia.js +1 -20
- package/dist/esm/modules/image-adjust-filters/sepia.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/vibrance.js +1 -15
- package/dist/esm/modules/image-adjust-filters/vibrance.js.map +1 -1
- package/dist/esm/modules/image-adjust-filters/vignette.js +1 -14
- package/dist/esm/modules/image-adjust-filters/vignette.js.map +1 -1
- package/dist/esm/modules/image-blur-filters/tiltshift.js +1 -37
- package/dist/esm/modules/image-blur-filters/tiltshift.js.map +1 -1
- package/dist/esm/modules/image-blur-filters/triangleblur.js +1 -27
- package/dist/esm/modules/image-blur-filters/triangleblur.js.map +1 -1
- package/dist/esm/modules/image-blur-filters/zoomblur.js +1 -26
- package/dist/esm/modules/image-blur-filters/zoomblur.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/colorhalftone.js +1 -34
- package/dist/esm/modules/image-fun-filters/colorhalftone.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/dotscreen.js +1 -22
- package/dist/esm/modules/image-fun-filters/dotscreen.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/edgework.js +1 -50
- package/dist/esm/modules/image-fun-filters/edgework.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/hexagonalpixelate.js +1 -42
- package/dist/esm/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/ink.js +1 -27
- package/dist/esm/modules/image-fun-filters/ink.js.map +1 -1
- package/dist/esm/modules/image-fun-filters/magnify.js +1 -20
- package/dist/esm/modules/image-fun-filters/magnify.js.map +1 -1
- package/dist/esm/modules/image-warp-filters/bulgepinch.js +1 -27
- package/dist/esm/modules/image-warp-filters/bulgepinch.js.map +1 -1
- package/dist/esm/modules/image-warp-filters/swirl.js +1 -29
- package/dist/esm/modules/image-warp-filters/swirl.js.map +1 -1
- package/dist/esm/modules/image-warp-filters/warp.js +1 -11
- package/dist/esm/modules/image-warp-filters/warp.js.map +1 -1
- package/dist/esm/modules/index.js.map +1 -1
- package/dist/esm/modules/lights/lights.glsl.js +1 -34
- package/dist/esm/modules/lights/lights.glsl.js.map +1 -1
- package/dist/esm/modules/lights/lights.js +19 -15
- package/dist/esm/modules/lights/lights.js.map +1 -1
- package/dist/esm/modules/module-injectors.js +2 -27
- package/dist/esm/modules/module-injectors.js.map +1 -1
- package/dist/esm/modules/pbr/pbr-fragment.glsl.js +1 -351
- package/dist/esm/modules/pbr/pbr-fragment.glsl.js.map +1 -1
- package/dist/esm/modules/pbr/pbr-vertex.glsl.js +1 -39
- package/dist/esm/modules/pbr/pbr-vertex.glsl.js.map +1 -1
- package/dist/esm/modules/pbr/pbr.js.map +1 -1
- package/dist/esm/modules/phong-lighting/phong-lighting.glsl.js +1 -75
- package/dist/esm/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
- package/dist/esm/modules/phong-lighting/phong-lighting.js +3 -1
- package/dist/esm/modules/phong-lighting/phong-lighting.js.map +1 -1
- package/dist/esm/modules/picking/picking.js +4 -87
- package/dist/esm/modules/picking/picking.js.map +1 -1
- package/dist/esm/modules/project/project.js +6 -69
- package/dist/esm/modules/project/project.js.map +1 -1
- package/dist/esm/modules/transform/transform.js +1 -28
- package/dist/esm/modules/transform/transform.js.map +1 -1
- package/dist/esm/modules/utils/random.js +1 -5
- package/dist/esm/modules/utils/random.js.map +1 -1
- package/dist/esm/utils/assert.js.map +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/is-old-ie.js +2 -1
- package/dist/esm/utils/is-old-ie.js.map +1 -1
- package/dist/esm/utils/shader-utils.js +11 -24
- package/dist/esm/utils/shader-utils.js.map +1 -1
- package/dist/esm/utils/webgl-info.js +3 -2
- package/dist/esm/utils/webgl-info.js.map +1 -1
- package/package.json +2 -2
- package/src/.DS_Store +0 -0
|
@@ -27,541 +27,7 @@
|
|
|
27
27
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
28
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
29
29
|
*/
|
|
30
|
-
const fs = `
|
|
31
|
-
#define FXAA_QUALITY_PRESET 29
|
|
32
|
-
|
|
33
|
-
#if (FXAA_QUALITY_PRESET == 10)
|
|
34
|
-
#define FXAA_QUALITY_PS 3
|
|
35
|
-
#define FXAA_QUALITY_P0 1.5
|
|
36
|
-
#define FXAA_QUALITY_P1 3.0
|
|
37
|
-
#define FXAA_QUALITY_P2 12.0
|
|
38
|
-
#endif
|
|
39
|
-
#if (FXAA_QUALITY_PRESET == 11)
|
|
40
|
-
#define FXAA_QUALITY_PS 4
|
|
41
|
-
#define FXAA_QUALITY_P0 1.0
|
|
42
|
-
#define FXAA_QUALITY_P1 1.5
|
|
43
|
-
#define FXAA_QUALITY_P2 3.0
|
|
44
|
-
#define FXAA_QUALITY_P3 12.0
|
|
45
|
-
#endif
|
|
46
|
-
#if (FXAA_QUALITY_PRESET == 12)
|
|
47
|
-
#define FXAA_QUALITY_PS 5
|
|
48
|
-
#define FXAA_QUALITY_P0 1.0
|
|
49
|
-
#define FXAA_QUALITY_P1 1.5
|
|
50
|
-
#define FXAA_QUALITY_P2 2.0
|
|
51
|
-
#define FXAA_QUALITY_P3 4.0
|
|
52
|
-
#define FXAA_QUALITY_P4 12.0
|
|
53
|
-
#endif
|
|
54
|
-
#if (FXAA_QUALITY_PRESET == 13)
|
|
55
|
-
#define FXAA_QUALITY_PS 6
|
|
56
|
-
#define FXAA_QUALITY_P0 1.0
|
|
57
|
-
#define FXAA_QUALITY_P1 1.5
|
|
58
|
-
#define FXAA_QUALITY_P2 2.0
|
|
59
|
-
#define FXAA_QUALITY_P3 2.0
|
|
60
|
-
#define FXAA_QUALITY_P4 4.0
|
|
61
|
-
#define FXAA_QUALITY_P5 12.0
|
|
62
|
-
#endif
|
|
63
|
-
#if (FXAA_QUALITY_PRESET == 14)
|
|
64
|
-
#define FXAA_QUALITY_PS 7
|
|
65
|
-
#define FXAA_QUALITY_P0 1.0
|
|
66
|
-
#define FXAA_QUALITY_P1 1.5
|
|
67
|
-
#define FXAA_QUALITY_P2 2.0
|
|
68
|
-
#define FXAA_QUALITY_P3 2.0
|
|
69
|
-
#define FXAA_QUALITY_P4 2.0
|
|
70
|
-
#define FXAA_QUALITY_P5 4.0
|
|
71
|
-
#define FXAA_QUALITY_P6 12.0
|
|
72
|
-
#endif
|
|
73
|
-
#if (FXAA_QUALITY_PRESET == 15)
|
|
74
|
-
#define FXAA_QUALITY_PS 8
|
|
75
|
-
#define FXAA_QUALITY_P0 1.0
|
|
76
|
-
#define FXAA_QUALITY_P1 1.5
|
|
77
|
-
#define FXAA_QUALITY_P2 2.0
|
|
78
|
-
#define FXAA_QUALITY_P3 2.0
|
|
79
|
-
#define FXAA_QUALITY_P4 2.0
|
|
80
|
-
#define FXAA_QUALITY_P5 2.0
|
|
81
|
-
#define FXAA_QUALITY_P6 4.0
|
|
82
|
-
#define FXAA_QUALITY_P7 12.0
|
|
83
|
-
#endif
|
|
84
|
-
#if (FXAA_QUALITY_PRESET == 20)
|
|
85
|
-
#define FXAA_QUALITY_PS 3
|
|
86
|
-
#define FXAA_QUALITY_P0 1.5
|
|
87
|
-
#define FXAA_QUALITY_P1 2.0
|
|
88
|
-
#define FXAA_QUALITY_P2 8.0
|
|
89
|
-
#endif
|
|
90
|
-
#if (FXAA_QUALITY_PRESET == 21)
|
|
91
|
-
#define FXAA_QUALITY_PS 4
|
|
92
|
-
#define FXAA_QUALITY_P0 1.0
|
|
93
|
-
#define FXAA_QUALITY_P1 1.5
|
|
94
|
-
#define FXAA_QUALITY_P2 2.0
|
|
95
|
-
#define FXAA_QUALITY_P3 8.0
|
|
96
|
-
#endif
|
|
97
|
-
#if (FXAA_QUALITY_PRESET == 22)
|
|
98
|
-
#define FXAA_QUALITY_PS 5
|
|
99
|
-
#define FXAA_QUALITY_P0 1.0
|
|
100
|
-
#define FXAA_QUALITY_P1 1.5
|
|
101
|
-
#define FXAA_QUALITY_P2 2.0
|
|
102
|
-
#define FXAA_QUALITY_P3 2.0
|
|
103
|
-
#define FXAA_QUALITY_P4 8.0
|
|
104
|
-
#endif
|
|
105
|
-
#if (FXAA_QUALITY_PRESET == 23)
|
|
106
|
-
#define FXAA_QUALITY_PS 6
|
|
107
|
-
#define FXAA_QUALITY_P0 1.0
|
|
108
|
-
#define FXAA_QUALITY_P1 1.5
|
|
109
|
-
#define FXAA_QUALITY_P2 2.0
|
|
110
|
-
#define FXAA_QUALITY_P3 2.0
|
|
111
|
-
#define FXAA_QUALITY_P4 2.0
|
|
112
|
-
#define FXAA_QUALITY_P5 8.0
|
|
113
|
-
#endif
|
|
114
|
-
#if (FXAA_QUALITY_PRESET == 24)
|
|
115
|
-
#define FXAA_QUALITY_PS 7
|
|
116
|
-
#define FXAA_QUALITY_P0 1.0
|
|
117
|
-
#define FXAA_QUALITY_P1 1.5
|
|
118
|
-
#define FXAA_QUALITY_P2 2.0
|
|
119
|
-
#define FXAA_QUALITY_P3 2.0
|
|
120
|
-
#define FXAA_QUALITY_P4 2.0
|
|
121
|
-
#define FXAA_QUALITY_P5 3.0
|
|
122
|
-
#define FXAA_QUALITY_P6 8.0
|
|
123
|
-
#endif
|
|
124
|
-
#if (FXAA_QUALITY_PRESET == 25)
|
|
125
|
-
#define FXAA_QUALITY_PS 8
|
|
126
|
-
#define FXAA_QUALITY_P0 1.0
|
|
127
|
-
#define FXAA_QUALITY_P1 1.5
|
|
128
|
-
#define FXAA_QUALITY_P2 2.0
|
|
129
|
-
#define FXAA_QUALITY_P3 2.0
|
|
130
|
-
#define FXAA_QUALITY_P4 2.0
|
|
131
|
-
#define FXAA_QUALITY_P5 2.0
|
|
132
|
-
#define FXAA_QUALITY_P6 4.0
|
|
133
|
-
#define FXAA_QUALITY_P7 8.0
|
|
134
|
-
#endif
|
|
135
|
-
#if (FXAA_QUALITY_PRESET == 26)
|
|
136
|
-
#define FXAA_QUALITY_PS 9
|
|
137
|
-
#define FXAA_QUALITY_P0 1.0
|
|
138
|
-
#define FXAA_QUALITY_P1 1.5
|
|
139
|
-
#define FXAA_QUALITY_P2 2.0
|
|
140
|
-
#define FXAA_QUALITY_P3 2.0
|
|
141
|
-
#define FXAA_QUALITY_P4 2.0
|
|
142
|
-
#define FXAA_QUALITY_P5 2.0
|
|
143
|
-
#define FXAA_QUALITY_P6 2.0
|
|
144
|
-
#define FXAA_QUALITY_P7 4.0
|
|
145
|
-
#define FXAA_QUALITY_P8 8.0
|
|
146
|
-
#endif
|
|
147
|
-
#if (FXAA_QUALITY_PRESET == 27)
|
|
148
|
-
#define FXAA_QUALITY_PS 10
|
|
149
|
-
#define FXAA_QUALITY_P0 1.0
|
|
150
|
-
#define FXAA_QUALITY_P1 1.5
|
|
151
|
-
#define FXAA_QUALITY_P2 2.0
|
|
152
|
-
#define FXAA_QUALITY_P3 2.0
|
|
153
|
-
#define FXAA_QUALITY_P4 2.0
|
|
154
|
-
#define FXAA_QUALITY_P5 2.0
|
|
155
|
-
#define FXAA_QUALITY_P6 2.0
|
|
156
|
-
#define FXAA_QUALITY_P7 2.0
|
|
157
|
-
#define FXAA_QUALITY_P8 4.0
|
|
158
|
-
#define FXAA_QUALITY_P9 8.0
|
|
159
|
-
#endif
|
|
160
|
-
#if (FXAA_QUALITY_PRESET == 28)
|
|
161
|
-
#define FXAA_QUALITY_PS 11
|
|
162
|
-
#define FXAA_QUALITY_P0 1.0
|
|
163
|
-
#define FXAA_QUALITY_P1 1.5
|
|
164
|
-
#define FXAA_QUALITY_P2 2.0
|
|
165
|
-
#define FXAA_QUALITY_P3 2.0
|
|
166
|
-
#define FXAA_QUALITY_P4 2.0
|
|
167
|
-
#define FXAA_QUALITY_P5 2.0
|
|
168
|
-
#define FXAA_QUALITY_P6 2.0
|
|
169
|
-
#define FXAA_QUALITY_P7 2.0
|
|
170
|
-
#define FXAA_QUALITY_P8 2.0
|
|
171
|
-
#define FXAA_QUALITY_P9 4.0
|
|
172
|
-
#define FXAA_QUALITY_P10 8.0
|
|
173
|
-
#endif
|
|
174
|
-
#if (FXAA_QUALITY_PRESET == 29)
|
|
175
|
-
#define FXAA_QUALITY_PS 12
|
|
176
|
-
#define FXAA_QUALITY_P0 1.0
|
|
177
|
-
#define FXAA_QUALITY_P1 1.5
|
|
178
|
-
#define FXAA_QUALITY_P2 2.0
|
|
179
|
-
#define FXAA_QUALITY_P3 2.0
|
|
180
|
-
#define FXAA_QUALITY_P4 2.0
|
|
181
|
-
#define FXAA_QUALITY_P5 2.0
|
|
182
|
-
#define FXAA_QUALITY_P6 2.0
|
|
183
|
-
#define FXAA_QUALITY_P7 2.0
|
|
184
|
-
#define FXAA_QUALITY_P8 2.0
|
|
185
|
-
#define FXAA_QUALITY_P9 2.0
|
|
186
|
-
#define FXAA_QUALITY_P10 4.0
|
|
187
|
-
#define FXAA_QUALITY_P11 8.0
|
|
188
|
-
#endif
|
|
189
|
-
#if (FXAA_QUALITY_PRESET == 39)
|
|
190
|
-
#define FXAA_QUALITY_PS 12
|
|
191
|
-
#define FXAA_QUALITY_P0 1.0
|
|
192
|
-
#define FXAA_QUALITY_P1 1.0
|
|
193
|
-
#define FXAA_QUALITY_P2 1.0
|
|
194
|
-
#define FXAA_QUALITY_P3 1.0
|
|
195
|
-
#define FXAA_QUALITY_P4 1.0
|
|
196
|
-
#define FXAA_QUALITY_P5 1.5
|
|
197
|
-
#define FXAA_QUALITY_P6 2.0
|
|
198
|
-
#define FXAA_QUALITY_P7 2.0
|
|
199
|
-
#define FXAA_QUALITY_P8 2.0
|
|
200
|
-
#define FXAA_QUALITY_P9 2.0
|
|
201
|
-
#define FXAA_QUALITY_P10 4.0
|
|
202
|
-
#define FXAA_QUALITY_P11 8.0
|
|
203
|
-
#endif
|
|
204
|
-
|
|
205
|
-
#define FxaaBool bool
|
|
206
|
-
#define FxaaFloat float
|
|
207
|
-
#define FxaaFloat2 vec2
|
|
208
|
-
#define FxaaFloat3 vec3
|
|
209
|
-
#define FxaaFloat4 vec4
|
|
210
|
-
#define FxaaHalf float
|
|
211
|
-
#define FxaaHalf2 vec2
|
|
212
|
-
#define FxaaHalf3 vec3
|
|
213
|
-
#define FxaaHalf4 vec4
|
|
214
|
-
#define FxaaInt2 vec2
|
|
215
|
-
#define FxaaTex sampler2D
|
|
216
|
-
|
|
217
|
-
#define FxaaSat(x) clamp(x, 0.0, 1.0)
|
|
218
|
-
#define FxaaTexTop(t, p) texture2D(t, p)
|
|
219
|
-
#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r))
|
|
220
|
-
|
|
221
|
-
FxaaFloat FxaaLuma_(FxaaFloat4 rgba) { return dot(rgba.rgb, vec3(0.2126, 0.7152, 0.0722)); }
|
|
222
|
-
|
|
223
|
-
FxaaFloat4 FxaaPixelShader_(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
FxaaFloat2 pos,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
FxaaTex tex,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
FxaaFloat2 fxaaQualityRcpFrame,
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
FxaaFloat fxaaQualitySubpix,
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
FxaaFloat fxaaQualityEdgeThreshold,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
FxaaFloat fxaaQualityEdgeThresholdMin
|
|
272
|
-
) {
|
|
273
|
-
FxaaFloat2 posM;
|
|
274
|
-
posM.x = pos.x;
|
|
275
|
-
posM.y = pos.y;
|
|
276
|
-
FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
|
|
277
|
-
#define lumaM rgbyM.y
|
|
278
|
-
FxaaFloat lumaS = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
|
|
279
|
-
FxaaFloat lumaE = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
|
|
280
|
-
FxaaFloat lumaN = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
|
|
281
|
-
FxaaFloat lumaW = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
|
|
282
|
-
FxaaFloat maxSM = max(lumaS, lumaM);
|
|
283
|
-
FxaaFloat minSM = min(lumaS, lumaM);
|
|
284
|
-
FxaaFloat maxESM = max(lumaE, maxSM);
|
|
285
|
-
FxaaFloat minESM = min(lumaE, minSM);
|
|
286
|
-
FxaaFloat maxWN = max(lumaN, lumaW);
|
|
287
|
-
FxaaFloat minWN = min(lumaN, lumaW);
|
|
288
|
-
FxaaFloat rangeMax = max(maxWN, maxESM);
|
|
289
|
-
FxaaFloat rangeMin = min(minWN, minESM);
|
|
290
|
-
FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
|
|
291
|
-
FxaaFloat range = rangeMax - rangeMin;
|
|
292
|
-
FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
|
|
293
|
-
FxaaBool earlyExit = range < rangeMaxClamped;
|
|
294
|
-
if(earlyExit)
|
|
295
|
-
return rgbyM;
|
|
296
|
-
FxaaFloat lumaNW = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
|
|
297
|
-
FxaaFloat lumaSE = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
|
|
298
|
-
FxaaFloat lumaNE = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
|
|
299
|
-
FxaaFloat lumaSW = FxaaLuma_(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
|
|
300
|
-
FxaaFloat lumaNS = lumaN + lumaS;
|
|
301
|
-
FxaaFloat lumaWE = lumaW + lumaE;
|
|
302
|
-
FxaaFloat subpixRcpRange = 1.0/range;
|
|
303
|
-
FxaaFloat subpixNSWE = lumaNS + lumaWE;
|
|
304
|
-
FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
|
|
305
|
-
FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
|
|
306
|
-
FxaaFloat lumaNESE = lumaNE + lumaSE;
|
|
307
|
-
FxaaFloat lumaNWNE = lumaNW + lumaNE;
|
|
308
|
-
FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
|
|
309
|
-
FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
|
|
310
|
-
FxaaFloat lumaNWSW = lumaNW + lumaSW;
|
|
311
|
-
FxaaFloat lumaSWSE = lumaSW + lumaSE;
|
|
312
|
-
FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
|
|
313
|
-
FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
|
|
314
|
-
FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
|
|
315
|
-
FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
|
|
316
|
-
FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
|
|
317
|
-
FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
|
|
318
|
-
FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
|
|
319
|
-
FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
|
|
320
|
-
FxaaBool horzSpan = edgeHorz >= edgeVert;
|
|
321
|
-
FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
|
|
322
|
-
if(!horzSpan) lumaN = lumaW;
|
|
323
|
-
if(!horzSpan) lumaS = lumaE;
|
|
324
|
-
if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
|
|
325
|
-
FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
|
|
326
|
-
FxaaFloat gradientN = lumaN - lumaM;
|
|
327
|
-
FxaaFloat gradientS = lumaS - lumaM;
|
|
328
|
-
FxaaFloat lumaNN = lumaN + lumaM;
|
|
329
|
-
FxaaFloat lumaSS = lumaS + lumaM;
|
|
330
|
-
FxaaBool pairN = abs(gradientN) >= abs(gradientS);
|
|
331
|
-
FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
|
|
332
|
-
if(pairN) lengthSign = -lengthSign;
|
|
333
|
-
FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
|
|
334
|
-
FxaaFloat2 posB;
|
|
335
|
-
posB.x = posM.x;
|
|
336
|
-
posB.y = posM.y;
|
|
337
|
-
FxaaFloat2 offNP;
|
|
338
|
-
offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
|
|
339
|
-
offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
|
|
340
|
-
if(!horzSpan) posB.x += lengthSign * 0.5;
|
|
341
|
-
if( horzSpan) posB.y += lengthSign * 0.5;
|
|
342
|
-
FxaaFloat2 posN;
|
|
343
|
-
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
|
|
344
|
-
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
|
|
345
|
-
FxaaFloat2 posP;
|
|
346
|
-
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
|
|
347
|
-
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
|
|
348
|
-
FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
|
|
349
|
-
FxaaFloat lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN));
|
|
350
|
-
FxaaFloat subpixE = subpixC * subpixC;
|
|
351
|
-
FxaaFloat lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP));
|
|
352
|
-
if(!pairN) lumaNN = lumaSS;
|
|
353
|
-
FxaaFloat gradientScaled = gradient * 1.0/4.0;
|
|
354
|
-
FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
|
|
355
|
-
FxaaFloat subpixF = subpixD * subpixE;
|
|
356
|
-
FxaaBool lumaMLTZero = lumaMM < 0.0;
|
|
357
|
-
lumaEndN -= lumaNN * 0.5;
|
|
358
|
-
lumaEndP -= lumaNN * 0.5;
|
|
359
|
-
FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
|
|
360
|
-
FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
|
|
361
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
|
|
362
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
|
|
363
|
-
FxaaBool doneNP = (!doneN) || (!doneP);
|
|
364
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
|
|
365
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
|
|
366
|
-
if(doneNP) {
|
|
367
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
368
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
369
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
370
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
371
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
372
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
373
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
|
|
374
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
|
|
375
|
-
doneNP = (!doneN) || (!doneP);
|
|
376
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
|
|
377
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
|
|
378
|
-
#if (FXAA_QUALITY_PS > 3)
|
|
379
|
-
if(doneNP) {
|
|
380
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
381
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
382
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
383
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
384
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
385
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
386
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
|
|
387
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
|
|
388
|
-
doneNP = (!doneN) || (!doneP);
|
|
389
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
|
|
390
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
|
|
391
|
-
#if (FXAA_QUALITY_PS > 4)
|
|
392
|
-
if(doneNP) {
|
|
393
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
394
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
395
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
396
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
397
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
398
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
399
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
|
|
400
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
|
|
401
|
-
doneNP = (!doneN) || (!doneP);
|
|
402
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
|
|
403
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
|
|
404
|
-
#if (FXAA_QUALITY_PS > 5)
|
|
405
|
-
if(doneNP) {
|
|
406
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
407
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
408
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
409
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
410
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
411
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
412
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
|
|
413
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
|
|
414
|
-
doneNP = (!doneN) || (!doneP);
|
|
415
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
|
|
416
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
|
|
417
|
-
#if (FXAA_QUALITY_PS > 6)
|
|
418
|
-
if(doneNP) {
|
|
419
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
420
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
421
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
422
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
423
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
424
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
425
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
|
|
426
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
|
|
427
|
-
doneNP = (!doneN) || (!doneP);
|
|
428
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
|
|
429
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
|
|
430
|
-
#if (FXAA_QUALITY_PS > 7)
|
|
431
|
-
if(doneNP) {
|
|
432
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
433
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
434
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
435
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
436
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
437
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
438
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
|
|
439
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
|
|
440
|
-
doneNP = (!doneN) || (!doneP);
|
|
441
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
|
|
442
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
|
|
443
|
-
#if (FXAA_QUALITY_PS > 8)
|
|
444
|
-
if(doneNP) {
|
|
445
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
446
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
447
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
448
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
449
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
450
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
451
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
|
|
452
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
|
|
453
|
-
doneNP = (!doneN) || (!doneP);
|
|
454
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
|
|
455
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
|
|
456
|
-
#if (FXAA_QUALITY_PS > 9)
|
|
457
|
-
if(doneNP) {
|
|
458
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
459
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
460
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
461
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
462
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
463
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
464
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
|
|
465
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
|
|
466
|
-
doneNP = (!doneN) || (!doneP);
|
|
467
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
|
|
468
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
|
|
469
|
-
#if (FXAA_QUALITY_PS > 10)
|
|
470
|
-
if(doneNP) {
|
|
471
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
472
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
473
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
474
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
475
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
476
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
477
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
|
|
478
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
|
|
479
|
-
doneNP = (!doneN) || (!doneP);
|
|
480
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
|
|
481
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
|
|
482
|
-
#if (FXAA_QUALITY_PS > 11)
|
|
483
|
-
if(doneNP) {
|
|
484
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
485
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
486
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
487
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
488
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
489
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
490
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
|
|
491
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
|
|
492
|
-
doneNP = (!doneN) || (!doneP);
|
|
493
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
|
|
494
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
|
|
495
|
-
#if (FXAA_QUALITY_PS > 12)
|
|
496
|
-
if(doneNP) {
|
|
497
|
-
if(!doneN) lumaEndN = FxaaLuma_(FxaaTexTop(tex, posN.xy));
|
|
498
|
-
if(!doneP) lumaEndP = FxaaLuma_(FxaaTexTop(tex, posP.xy));
|
|
499
|
-
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
|
|
500
|
-
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
|
|
501
|
-
doneN = abs(lumaEndN) >= gradientScaled;
|
|
502
|
-
doneP = abs(lumaEndP) >= gradientScaled;
|
|
503
|
-
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
|
|
504
|
-
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
|
|
505
|
-
doneNP = (!doneN) || (!doneP);
|
|
506
|
-
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
|
|
507
|
-
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
|
|
508
|
-
}
|
|
509
|
-
#endif
|
|
510
|
-
}
|
|
511
|
-
#endif
|
|
512
|
-
}
|
|
513
|
-
#endif
|
|
514
|
-
}
|
|
515
|
-
#endif
|
|
516
|
-
}
|
|
517
|
-
#endif
|
|
518
|
-
}
|
|
519
|
-
#endif
|
|
520
|
-
}
|
|
521
|
-
#endif
|
|
522
|
-
}
|
|
523
|
-
#endif
|
|
524
|
-
}
|
|
525
|
-
#endif
|
|
526
|
-
}
|
|
527
|
-
#endif
|
|
528
|
-
}
|
|
529
|
-
FxaaFloat dstN = posM.x - posN.x;
|
|
530
|
-
FxaaFloat dstP = posP.x - posM.x;
|
|
531
|
-
if(!horzSpan) dstN = posM.y - posN.y;
|
|
532
|
-
if(!horzSpan) dstP = posP.y - posM.y;
|
|
533
|
-
FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
|
|
534
|
-
FxaaFloat spanLength = (dstP + dstN);
|
|
535
|
-
FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
|
|
536
|
-
FxaaFloat spanLengthRcp = 1.0/spanLength;
|
|
537
|
-
FxaaBool directionN = dstN < dstP;
|
|
538
|
-
FxaaFloat dst = min(dstN, dstP);
|
|
539
|
-
FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
|
|
540
|
-
FxaaFloat subpixG = subpixF * subpixF;
|
|
541
|
-
FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
|
|
542
|
-
FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
|
|
543
|
-
FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
|
|
544
|
-
FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
|
|
545
|
-
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
|
|
546
|
-
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
|
|
547
|
-
return FxaaTexTop(tex, posM);
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
vec4 fxaa_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
|
|
551
|
-
const float fxaa_QualitySubpix = 0.5;
|
|
552
|
-
const float fxaa_QualityEdgeThreshold = 0.125;
|
|
553
|
-
const float fxaa_QualityEdgeThresholdMin = 0.0833;
|
|
554
|
-
|
|
555
|
-
return FxaaPixelShader_(
|
|
556
|
-
texCoord,
|
|
557
|
-
texture,
|
|
558
|
-
vec2(1.0) / texSize,
|
|
559
|
-
fxaa_QualitySubpix,
|
|
560
|
-
fxaa_QualityEdgeThreshold,
|
|
561
|
-
fxaa_QualityEdgeThresholdMin
|
|
562
|
-
);
|
|
563
|
-
}
|
|
564
|
-
`;
|
|
30
|
+
const fs = "\n#define FXAA_QUALITY_PRESET 29\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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#define FxaaBool bool\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 vec2\n#define FxaaTex sampler2D\n\n#define FxaaSat(x) clamp(x, 0.0, 1.0)\n#define FxaaTexTop(t, p) texture2D(t, p)\n#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r))\n\nFxaaFloat FxaaLuma_(FxaaFloat4 rgba) { return dot(rgba.rgb, vec3(0.2126, 0.7152, 0.0722)); }\n\nFxaaFloat4 FxaaPixelShader_(\n\n\n FxaaFloat2 pos,\n\n\n\n\n FxaaTex tex,\n\n\n\n\n FxaaFloat2 fxaaQualityRcpFrame,\n\n\n\n\n\n\n\n\n\n\n FxaaFloat fxaaQualitySubpix,\n\n\n\n\n\n\n\n\n\n FxaaFloat fxaaQualityEdgeThreshold,\n\n\n\n\n\n\n\n\n\n\n\n\n\n FxaaFloat fxaaQualityEdgeThresholdMin\n) {\n FxaaFloat2 posM;\n posM.x = pos.x;\n posM.y = pos.y;\n FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\n #define lumaM rgbyM.y\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 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 if(earlyExit)\n return rgbyM;\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 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 FxaaFloat lumaNESE = lumaNE + lumaSE;\n FxaaFloat lumaNWNE = lumaNW + lumaNE;\n FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\n FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\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 FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\n FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\n FxaaBool horzSpan = edgeHorz >= edgeVert;\n FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\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 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 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 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 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 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 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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #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 #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\n }\n #endif\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 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 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 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 return FxaaTexTop(tex, posM);\n}\n\nvec4 fxaa_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {\n const float fxaa_QualitySubpix = 0.5;\n const float fxaa_QualityEdgeThreshold = 0.125;\n const float fxaa_QualityEdgeThresholdMin = 0.0833;\n\n return FxaaPixelShader_(\n texCoord,\n texture,\n vec2(1.0) / texSize,\n fxaa_QualitySubpix,\n fxaa_QualityEdgeThreshold,\n fxaa_QualityEdgeThresholdMin\n );\n}\n";
|
|
565
31
|
export const fxaa = {
|
|
566
32
|
name: 'fxaa',
|
|
567
33
|
uniforms: {},
|