vispy 0.15.0__cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

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.

Potentially problematic release.


This version of vispy might be problematic. Click here for more details.

Files changed (521) hide show
  1. vispy/__init__.py +33 -0
  2. vispy/app/__init__.py +15 -0
  3. vispy/app/_default_app.py +76 -0
  4. vispy/app/_detect_eventloop.py +148 -0
  5. vispy/app/application.py +263 -0
  6. vispy/app/backends/__init__.py +52 -0
  7. vispy/app/backends/_egl.py +264 -0
  8. vispy/app/backends/_glfw.py +513 -0
  9. vispy/app/backends/_jupyter_rfb.py +278 -0
  10. vispy/app/backends/_offscreen_util.py +121 -0
  11. vispy/app/backends/_osmesa.py +235 -0
  12. vispy/app/backends/_pyglet.py +451 -0
  13. vispy/app/backends/_pyqt4.py +36 -0
  14. vispy/app/backends/_pyqt5.py +36 -0
  15. vispy/app/backends/_pyqt6.py +40 -0
  16. vispy/app/backends/_pyside.py +37 -0
  17. vispy/app/backends/_pyside2.py +52 -0
  18. vispy/app/backends/_pyside6.py +53 -0
  19. vispy/app/backends/_qt.py +1003 -0
  20. vispy/app/backends/_sdl2.py +444 -0
  21. vispy/app/backends/_template.py +244 -0
  22. vispy/app/backends/_test.py +8 -0
  23. vispy/app/backends/_tk.py +800 -0
  24. vispy/app/backends/_wx.py +476 -0
  25. vispy/app/backends/tests/__init__.py +0 -0
  26. vispy/app/backends/tests/test_offscreen_util.py +52 -0
  27. vispy/app/backends/tests/test_rfb.py +77 -0
  28. vispy/app/base.py +294 -0
  29. vispy/app/canvas.py +828 -0
  30. vispy/app/qt.py +92 -0
  31. vispy/app/tests/__init__.py +0 -0
  32. vispy/app/tests/qt-designer.ui +58 -0
  33. vispy/app/tests/test_app.py +442 -0
  34. vispy/app/tests/test_backends.py +164 -0
  35. vispy/app/tests/test_canvas.py +122 -0
  36. vispy/app/tests/test_context.py +92 -0
  37. vispy/app/tests/test_qt.py +47 -0
  38. vispy/app/tests/test_simultaneous.py +134 -0
  39. vispy/app/timer.py +174 -0
  40. vispy/color/__init__.py +17 -0
  41. vispy/color/_color_dict.py +193 -0
  42. vispy/color/color_array.py +447 -0
  43. vispy/color/color_space.py +181 -0
  44. vispy/color/colormap.py +1213 -0
  45. vispy/color/tests/__init__.py +0 -0
  46. vispy/color/tests/test_color.py +378 -0
  47. vispy/conftest.py +12 -0
  48. vispy/ext/__init__.py +0 -0
  49. vispy/ext/cocoapy.py +1522 -0
  50. vispy/ext/cubehelix.py +138 -0
  51. vispy/ext/egl.py +375 -0
  52. vispy/ext/fontconfig.py +118 -0
  53. vispy/ext/gdi32plus.py +206 -0
  54. vispy/ext/osmesa.py +105 -0
  55. vispy/geometry/__init__.py +23 -0
  56. vispy/geometry/_triangulation_debugger.py +171 -0
  57. vispy/geometry/calculations.py +162 -0
  58. vispy/geometry/curves.py +399 -0
  59. vispy/geometry/generation.py +643 -0
  60. vispy/geometry/isocurve.py +175 -0
  61. vispy/geometry/isosurface.py +465 -0
  62. vispy/geometry/meshdata.py +700 -0
  63. vispy/geometry/normals.py +78 -0
  64. vispy/geometry/parametric.py +56 -0
  65. vispy/geometry/polygon.py +137 -0
  66. vispy/geometry/rect.py +210 -0
  67. vispy/geometry/tests/__init__.py +0 -0
  68. vispy/geometry/tests/test_calculations.py +23 -0
  69. vispy/geometry/tests/test_generation.py +56 -0
  70. vispy/geometry/tests/test_meshdata.py +106 -0
  71. vispy/geometry/tests/test_triangulation.py +594 -0
  72. vispy/geometry/torusknot.py +142 -0
  73. vispy/geometry/triangulation.py +876 -0
  74. vispy/gloo/__init__.py +56 -0
  75. vispy/gloo/buffer.py +505 -0
  76. vispy/gloo/context.py +272 -0
  77. vispy/gloo/framebuffer.py +257 -0
  78. vispy/gloo/gl/__init__.py +234 -0
  79. vispy/gloo/gl/_constants.py +332 -0
  80. vispy/gloo/gl/_es2.py +986 -0
  81. vispy/gloo/gl/_gl2.py +1365 -0
  82. vispy/gloo/gl/_proxy.py +499 -0
  83. vispy/gloo/gl/_pyopengl2.py +362 -0
  84. vispy/gloo/gl/dummy.py +24 -0
  85. vispy/gloo/gl/es2.py +62 -0
  86. vispy/gloo/gl/gl2.py +98 -0
  87. vispy/gloo/gl/glplus.py +168 -0
  88. vispy/gloo/gl/pyopengl2.py +97 -0
  89. vispy/gloo/gl/tests/__init__.py +0 -0
  90. vispy/gloo/gl/tests/test_basics.py +282 -0
  91. vispy/gloo/gl/tests/test_functionality.py +568 -0
  92. vispy/gloo/gl/tests/test_names.py +246 -0
  93. vispy/gloo/gl/tests/test_use.py +71 -0
  94. vispy/gloo/glir.py +1824 -0
  95. vispy/gloo/globject.py +101 -0
  96. vispy/gloo/preprocessor.py +67 -0
  97. vispy/gloo/program.py +543 -0
  98. vispy/gloo/tests/__init__.py +0 -0
  99. vispy/gloo/tests/test_buffer.py +558 -0
  100. vispy/gloo/tests/test_context.py +119 -0
  101. vispy/gloo/tests/test_framebuffer.py +195 -0
  102. vispy/gloo/tests/test_glir.py +307 -0
  103. vispy/gloo/tests/test_globject.py +35 -0
  104. vispy/gloo/tests/test_program.py +302 -0
  105. vispy/gloo/tests/test_texture.py +732 -0
  106. vispy/gloo/tests/test_use_gloo.py +187 -0
  107. vispy/gloo/tests/test_util.py +60 -0
  108. vispy/gloo/tests/test_wrappers.py +261 -0
  109. vispy/gloo/texture.py +1046 -0
  110. vispy/gloo/util.py +129 -0
  111. vispy/gloo/wrappers.py +762 -0
  112. vispy/glsl/__init__.py +42 -0
  113. vispy/glsl/antialias/antialias.glsl +7 -0
  114. vispy/glsl/antialias/cap-butt.glsl +31 -0
  115. vispy/glsl/antialias/cap-round.glsl +29 -0
  116. vispy/glsl/antialias/cap-square.glsl +30 -0
  117. vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
  118. vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
  119. vispy/glsl/antialias/cap.glsl +67 -0
  120. vispy/glsl/antialias/caps.glsl +67 -0
  121. vispy/glsl/antialias/filled.glsl +50 -0
  122. vispy/glsl/antialias/outline.glsl +40 -0
  123. vispy/glsl/antialias/stroke.glsl +43 -0
  124. vispy/glsl/arrowheads/angle.glsl +99 -0
  125. vispy/glsl/arrowheads/arrowheads.frag +60 -0
  126. vispy/glsl/arrowheads/arrowheads.glsl +12 -0
  127. vispy/glsl/arrowheads/arrowheads.vert +83 -0
  128. vispy/glsl/arrowheads/curved.glsl +48 -0
  129. vispy/glsl/arrowheads/inhibitor.glsl +26 -0
  130. vispy/glsl/arrowheads/stealth.glsl +46 -0
  131. vispy/glsl/arrowheads/triangle.glsl +97 -0
  132. vispy/glsl/arrowheads/util.glsl +13 -0
  133. vispy/glsl/arrows/angle-30.glsl +12 -0
  134. vispy/glsl/arrows/angle-60.glsl +12 -0
  135. vispy/glsl/arrows/angle-90.glsl +12 -0
  136. vispy/glsl/arrows/arrow.frag +39 -0
  137. vispy/glsl/arrows/arrow.vert +49 -0
  138. vispy/glsl/arrows/arrows.glsl +17 -0
  139. vispy/glsl/arrows/common.glsl +187 -0
  140. vispy/glsl/arrows/curved.glsl +63 -0
  141. vispy/glsl/arrows/stealth.glsl +50 -0
  142. vispy/glsl/arrows/triangle-30.glsl +12 -0
  143. vispy/glsl/arrows/triangle-60.glsl +12 -0
  144. vispy/glsl/arrows/triangle-90.glsl +12 -0
  145. vispy/glsl/arrows/util.glsl +98 -0
  146. vispy/glsl/build_spatial_filters.py +660 -0
  147. vispy/glsl/collections/agg-fast-path.frag +20 -0
  148. vispy/glsl/collections/agg-fast-path.vert +78 -0
  149. vispy/glsl/collections/agg-glyph.frag +60 -0
  150. vispy/glsl/collections/agg-glyph.vert +33 -0
  151. vispy/glsl/collections/agg-marker.frag +35 -0
  152. vispy/glsl/collections/agg-marker.vert +48 -0
  153. vispy/glsl/collections/agg-path.frag +55 -0
  154. vispy/glsl/collections/agg-path.vert +166 -0
  155. vispy/glsl/collections/agg-point.frag +21 -0
  156. vispy/glsl/collections/agg-point.vert +35 -0
  157. vispy/glsl/collections/agg-segment.frag +32 -0
  158. vispy/glsl/collections/agg-segment.vert +75 -0
  159. vispy/glsl/collections/marker.frag +38 -0
  160. vispy/glsl/collections/marker.vert +48 -0
  161. vispy/glsl/collections/raw-path.frag +15 -0
  162. vispy/glsl/collections/raw-path.vert +24 -0
  163. vispy/glsl/collections/raw-point.frag +14 -0
  164. vispy/glsl/collections/raw-point.vert +31 -0
  165. vispy/glsl/collections/raw-segment.frag +18 -0
  166. vispy/glsl/collections/raw-segment.vert +26 -0
  167. vispy/glsl/collections/raw-triangle.frag +13 -0
  168. vispy/glsl/collections/raw-triangle.vert +26 -0
  169. vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
  170. vispy/glsl/collections/sdf-glyph.frag +80 -0
  171. vispy/glsl/collections/sdf-glyph.vert +59 -0
  172. vispy/glsl/collections/tick-labels.vert +71 -0
  173. vispy/glsl/colormaps/autumn.glsl +20 -0
  174. vispy/glsl/colormaps/blues.glsl +20 -0
  175. vispy/glsl/colormaps/color-space.glsl +17 -0
  176. vispy/glsl/colormaps/colormaps.glsl +24 -0
  177. vispy/glsl/colormaps/cool.glsl +20 -0
  178. vispy/glsl/colormaps/fire.glsl +21 -0
  179. vispy/glsl/colormaps/gray.glsl +20 -0
  180. vispy/glsl/colormaps/greens.glsl +20 -0
  181. vispy/glsl/colormaps/hot.glsl +22 -0
  182. vispy/glsl/colormaps/ice.glsl +20 -0
  183. vispy/glsl/colormaps/icefire.glsl +23 -0
  184. vispy/glsl/colormaps/parse.py +40 -0
  185. vispy/glsl/colormaps/reds.glsl +20 -0
  186. vispy/glsl/colormaps/spring.glsl +20 -0
  187. vispy/glsl/colormaps/summer.glsl +20 -0
  188. vispy/glsl/colormaps/user.glsl +22 -0
  189. vispy/glsl/colormaps/util.glsl +41 -0
  190. vispy/glsl/colormaps/wheel.glsl +21 -0
  191. vispy/glsl/colormaps/winter.glsl +20 -0
  192. vispy/glsl/lines/agg.frag +320 -0
  193. vispy/glsl/lines/agg.vert +241 -0
  194. vispy/glsl/markers/arrow.glsl +12 -0
  195. vispy/glsl/markers/asterisk.glsl +16 -0
  196. vispy/glsl/markers/chevron.glsl +14 -0
  197. vispy/glsl/markers/clover.glsl +20 -0
  198. vispy/glsl/markers/club.glsl +31 -0
  199. vispy/glsl/markers/cross.glsl +17 -0
  200. vispy/glsl/markers/diamond.glsl +12 -0
  201. vispy/glsl/markers/disc.glsl +9 -0
  202. vispy/glsl/markers/ellipse.glsl +67 -0
  203. vispy/glsl/markers/hbar.glsl +9 -0
  204. vispy/glsl/markers/heart.glsl +15 -0
  205. vispy/glsl/markers/infinity.glsl +15 -0
  206. vispy/glsl/markers/marker-sdf.frag +74 -0
  207. vispy/glsl/markers/marker-sdf.vert +41 -0
  208. vispy/glsl/markers/marker.frag +36 -0
  209. vispy/glsl/markers/marker.vert +46 -0
  210. vispy/glsl/markers/markers.glsl +24 -0
  211. vispy/glsl/markers/pin.glsl +18 -0
  212. vispy/glsl/markers/ring.glsl +11 -0
  213. vispy/glsl/markers/spade.glsl +28 -0
  214. vispy/glsl/markers/square.glsl +10 -0
  215. vispy/glsl/markers/tag.glsl +11 -0
  216. vispy/glsl/markers/triangle.glsl +14 -0
  217. vispy/glsl/markers/vbar.glsl +9 -0
  218. vispy/glsl/math/circle-through-2-points.glsl +30 -0
  219. vispy/glsl/math/constants.glsl +48 -0
  220. vispy/glsl/math/double.glsl +114 -0
  221. vispy/glsl/math/functions.glsl +20 -0
  222. vispy/glsl/math/point-to-line-distance.glsl +31 -0
  223. vispy/glsl/math/point-to-line-projection.glsl +29 -0
  224. vispy/glsl/math/signed-line-distance.glsl +27 -0
  225. vispy/glsl/math/signed-segment-distance.glsl +30 -0
  226. vispy/glsl/misc/regular-grid.frag +244 -0
  227. vispy/glsl/misc/spatial-filters.frag +1407 -0
  228. vispy/glsl/misc/viewport-NDC.glsl +20 -0
  229. vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
  230. vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
  231. vispy/glsl/transforms/hammer.glsl +44 -0
  232. vispy/glsl/transforms/identity.glsl +6 -0
  233. vispy/glsl/transforms/identity_forward.glsl +23 -0
  234. vispy/glsl/transforms/identity_inverse.glsl +23 -0
  235. vispy/glsl/transforms/linear-scale.glsl +127 -0
  236. vispy/glsl/transforms/log-scale.glsl +126 -0
  237. vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
  238. vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
  239. vispy/glsl/transforms/panzoom.glsl +10 -0
  240. vispy/glsl/transforms/polar.glsl +41 -0
  241. vispy/glsl/transforms/position.glsl +44 -0
  242. vispy/glsl/transforms/power-scale.glsl +139 -0
  243. vispy/glsl/transforms/projection.glsl +7 -0
  244. vispy/glsl/transforms/pvm.glsl +13 -0
  245. vispy/glsl/transforms/rotate.glsl +45 -0
  246. vispy/glsl/transforms/trackball.glsl +15 -0
  247. vispy/glsl/transforms/translate.glsl +35 -0
  248. vispy/glsl/transforms/transverse_mercator.glsl +38 -0
  249. vispy/glsl/transforms/viewport-clipping.glsl +14 -0
  250. vispy/glsl/transforms/viewport-transform.glsl +16 -0
  251. vispy/glsl/transforms/viewport.glsl +50 -0
  252. vispy/glsl/transforms/x.glsl +24 -0
  253. vispy/glsl/transforms/y.glsl +19 -0
  254. vispy/glsl/transforms/z.glsl +14 -0
  255. vispy/io/__init__.py +20 -0
  256. vispy/io/_data/spatial-filters.npy +0 -0
  257. vispy/io/datasets.py +94 -0
  258. vispy/io/image.py +231 -0
  259. vispy/io/mesh.py +122 -0
  260. vispy/io/stl.py +167 -0
  261. vispy/io/tests/__init__.py +0 -0
  262. vispy/io/tests/test_image.py +47 -0
  263. vispy/io/tests/test_io.py +121 -0
  264. vispy/io/wavefront.py +350 -0
  265. vispy/plot/__init__.py +36 -0
  266. vispy/plot/fig.py +58 -0
  267. vispy/plot/plotwidget.py +522 -0
  268. vispy/plot/tests/__init__.py +0 -0
  269. vispy/plot/tests/test_plot.py +46 -0
  270. vispy/scene/__init__.py +43 -0
  271. vispy/scene/cameras/__init__.py +27 -0
  272. vispy/scene/cameras/_base.py +38 -0
  273. vispy/scene/cameras/arcball.py +105 -0
  274. vispy/scene/cameras/base_camera.py +551 -0
  275. vispy/scene/cameras/fly.py +474 -0
  276. vispy/scene/cameras/magnify.py +163 -0
  277. vispy/scene/cameras/panzoom.py +311 -0
  278. vispy/scene/cameras/perspective.py +338 -0
  279. vispy/scene/cameras/tests/__init__.py +0 -0
  280. vispy/scene/cameras/tests/test_cameras.py +27 -0
  281. vispy/scene/cameras/tests/test_link.py +53 -0
  282. vispy/scene/cameras/tests/test_perspective.py +122 -0
  283. vispy/scene/cameras/turntable.py +183 -0
  284. vispy/scene/canvas.py +639 -0
  285. vispy/scene/events.py +85 -0
  286. vispy/scene/node.py +644 -0
  287. vispy/scene/subscene.py +20 -0
  288. vispy/scene/tests/__init__.py +0 -0
  289. vispy/scene/tests/test_canvas.py +119 -0
  290. vispy/scene/tests/test_node.py +142 -0
  291. vispy/scene/tests/test_visuals.py +141 -0
  292. vispy/scene/visuals.py +276 -0
  293. vispy/scene/widgets/__init__.py +18 -0
  294. vispy/scene/widgets/anchor.py +25 -0
  295. vispy/scene/widgets/axis.py +88 -0
  296. vispy/scene/widgets/colorbar.py +176 -0
  297. vispy/scene/widgets/console.py +351 -0
  298. vispy/scene/widgets/grid.py +509 -0
  299. vispy/scene/widgets/label.py +50 -0
  300. vispy/scene/widgets/tests/__init__.py +0 -0
  301. vispy/scene/widgets/tests/test_colorbar.py +47 -0
  302. vispy/scene/widgets/viewbox.py +199 -0
  303. vispy/scene/widgets/widget.py +478 -0
  304. vispy/testing/__init__.py +51 -0
  305. vispy/testing/_runners.py +448 -0
  306. vispy/testing/_testing.py +416 -0
  307. vispy/testing/image_tester.py +494 -0
  308. vispy/testing/rendered_array_tester.py +85 -0
  309. vispy/testing/tests/__init__.py +0 -0
  310. vispy/testing/tests/test_testing.py +20 -0
  311. vispy/util/__init__.py +32 -0
  312. vispy/util/bunch.py +15 -0
  313. vispy/util/check_environment.py +57 -0
  314. vispy/util/config.py +490 -0
  315. vispy/util/dpi/__init__.py +19 -0
  316. vispy/util/dpi/_linux.py +69 -0
  317. vispy/util/dpi/_quartz.py +26 -0
  318. vispy/util/dpi/_win32.py +34 -0
  319. vispy/util/dpi/tests/__init__.py +0 -0
  320. vispy/util/dpi/tests/test_dpi.py +16 -0
  321. vispy/util/eq.py +41 -0
  322. vispy/util/event.py +774 -0
  323. vispy/util/fetching.py +276 -0
  324. vispy/util/filter.py +44 -0
  325. vispy/util/fonts/__init__.py +14 -0
  326. vispy/util/fonts/_freetype.py +73 -0
  327. vispy/util/fonts/_quartz.py +192 -0
  328. vispy/util/fonts/_triage.py +36 -0
  329. vispy/util/fonts/_vispy_fonts.py +20 -0
  330. vispy/util/fonts/_win32.py +105 -0
  331. vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
  332. vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
  333. vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
  334. vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
  335. vispy/util/fonts/tests/__init__.py +0 -0
  336. vispy/util/fonts/tests/test_font.py +45 -0
  337. vispy/util/fourier.py +69 -0
  338. vispy/util/frozen.py +25 -0
  339. vispy/util/gallery_scraper.py +268 -0
  340. vispy/util/keys.py +91 -0
  341. vispy/util/logs.py +358 -0
  342. vispy/util/osmesa_gl.py +17 -0
  343. vispy/util/profiler.py +135 -0
  344. vispy/util/ptime.py +16 -0
  345. vispy/util/quaternion.py +229 -0
  346. vispy/util/svg/__init__.py +18 -0
  347. vispy/util/svg/base.py +20 -0
  348. vispy/util/svg/color.py +219 -0
  349. vispy/util/svg/element.py +51 -0
  350. vispy/util/svg/geometry.py +478 -0
  351. vispy/util/svg/group.py +66 -0
  352. vispy/util/svg/length.py +81 -0
  353. vispy/util/svg/number.py +25 -0
  354. vispy/util/svg/path.py +332 -0
  355. vispy/util/svg/shapes.py +57 -0
  356. vispy/util/svg/style.py +59 -0
  357. vispy/util/svg/svg.py +40 -0
  358. vispy/util/svg/transform.py +223 -0
  359. vispy/util/svg/transformable.py +28 -0
  360. vispy/util/svg/viewport.py +73 -0
  361. vispy/util/tests/__init__.py +0 -0
  362. vispy/util/tests/test_config.py +58 -0
  363. vispy/util/tests/test_docstring_parameters.py +123 -0
  364. vispy/util/tests/test_emitter_group.py +262 -0
  365. vispy/util/tests/test_event_emitter.py +743 -0
  366. vispy/util/tests/test_fourier.py +35 -0
  367. vispy/util/tests/test_gallery_scraper.py +112 -0
  368. vispy/util/tests/test_import.py +127 -0
  369. vispy/util/tests/test_key.py +22 -0
  370. vispy/util/tests/test_logging.py +45 -0
  371. vispy/util/tests/test_run.py +14 -0
  372. vispy/util/tests/test_transforms.py +42 -0
  373. vispy/util/tests/test_vispy.py +48 -0
  374. vispy/util/transforms.py +201 -0
  375. vispy/util/wrappers.py +155 -0
  376. vispy/version.py +21 -0
  377. vispy/visuals/__init__.py +50 -0
  378. vispy/visuals/_scalable_textures.py +487 -0
  379. vispy/visuals/axis.py +678 -0
  380. vispy/visuals/border.py +208 -0
  381. vispy/visuals/box.py +79 -0
  382. vispy/visuals/collections/__init__.py +30 -0
  383. vispy/visuals/collections/agg_fast_path_collection.py +219 -0
  384. vispy/visuals/collections/agg_path_collection.py +197 -0
  385. vispy/visuals/collections/agg_point_collection.py +52 -0
  386. vispy/visuals/collections/agg_segment_collection.py +142 -0
  387. vispy/visuals/collections/array_list.py +401 -0
  388. vispy/visuals/collections/base_collection.py +482 -0
  389. vispy/visuals/collections/collection.py +253 -0
  390. vispy/visuals/collections/path_collection.py +23 -0
  391. vispy/visuals/collections/point_collection.py +19 -0
  392. vispy/visuals/collections/polygon_collection.py +25 -0
  393. vispy/visuals/collections/raw_path_collection.py +119 -0
  394. vispy/visuals/collections/raw_point_collection.py +113 -0
  395. vispy/visuals/collections/raw_polygon_collection.py +77 -0
  396. vispy/visuals/collections/raw_segment_collection.py +112 -0
  397. vispy/visuals/collections/raw_triangle_collection.py +78 -0
  398. vispy/visuals/collections/segment_collection.py +19 -0
  399. vispy/visuals/collections/triangle_collection.py +16 -0
  400. vispy/visuals/collections/util.py +168 -0
  401. vispy/visuals/colorbar.py +699 -0
  402. vispy/visuals/cube.py +41 -0
  403. vispy/visuals/ellipse.py +162 -0
  404. vispy/visuals/filters/__init__.py +10 -0
  405. vispy/visuals/filters/base_filter.py +242 -0
  406. vispy/visuals/filters/clipper.py +60 -0
  407. vispy/visuals/filters/clipping_planes.py +122 -0
  408. vispy/visuals/filters/color.py +181 -0
  409. vispy/visuals/filters/markers.py +28 -0
  410. vispy/visuals/filters/mesh.py +801 -0
  411. vispy/visuals/filters/picking.py +60 -0
  412. vispy/visuals/filters/tests/__init__.py +3 -0
  413. vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
  414. vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
  415. vispy/visuals/glsl/__init__.py +1 -0
  416. vispy/visuals/glsl/antialiasing.py +133 -0
  417. vispy/visuals/glsl/color.py +63 -0
  418. vispy/visuals/graphs/__init__.py +1 -0
  419. vispy/visuals/graphs/graph.py +240 -0
  420. vispy/visuals/graphs/layouts/__init__.py +55 -0
  421. vispy/visuals/graphs/layouts/circular.py +49 -0
  422. vispy/visuals/graphs/layouts/force_directed.py +211 -0
  423. vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
  424. vispy/visuals/graphs/layouts/random.py +52 -0
  425. vispy/visuals/graphs/tests/__init__.py +1 -0
  426. vispy/visuals/graphs/tests/test_layouts.py +139 -0
  427. vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
  428. vispy/visuals/graphs/util.py +120 -0
  429. vispy/visuals/gridlines.py +161 -0
  430. vispy/visuals/gridmesh.py +98 -0
  431. vispy/visuals/histogram.py +58 -0
  432. vispy/visuals/image.py +701 -0
  433. vispy/visuals/image_complex.py +130 -0
  434. vispy/visuals/infinite_line.py +199 -0
  435. vispy/visuals/instanced_mesh.py +152 -0
  436. vispy/visuals/isocurve.py +213 -0
  437. vispy/visuals/isoline.py +241 -0
  438. vispy/visuals/isosurface.py +113 -0
  439. vispy/visuals/line/__init__.py +6 -0
  440. vispy/visuals/line/arrow.py +289 -0
  441. vispy/visuals/line/dash_atlas.py +90 -0
  442. vispy/visuals/line/line.py +545 -0
  443. vispy/visuals/line_plot.py +135 -0
  444. vispy/visuals/linear_region.py +199 -0
  445. vispy/visuals/markers.py +819 -0
  446. vispy/visuals/mesh.py +373 -0
  447. vispy/visuals/mesh_normals.py +159 -0
  448. vispy/visuals/plane.py +54 -0
  449. vispy/visuals/polygon.py +145 -0
  450. vispy/visuals/rectangle.py +196 -0
  451. vispy/visuals/regular_polygon.py +56 -0
  452. vispy/visuals/scrolling_lines.py +197 -0
  453. vispy/visuals/shaders/__init__.py +17 -0
  454. vispy/visuals/shaders/compiler.py +206 -0
  455. vispy/visuals/shaders/expression.py +99 -0
  456. vispy/visuals/shaders/function.py +788 -0
  457. vispy/visuals/shaders/multiprogram.py +145 -0
  458. vispy/visuals/shaders/parsing.py +140 -0
  459. vispy/visuals/shaders/program.py +161 -0
  460. vispy/visuals/shaders/shader_object.py +162 -0
  461. vispy/visuals/shaders/tests/__init__.py +0 -0
  462. vispy/visuals/shaders/tests/test_function.py +486 -0
  463. vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
  464. vispy/visuals/shaders/tests/test_parsing.py +57 -0
  465. vispy/visuals/shaders/variable.py +272 -0
  466. vispy/visuals/spectrogram.py +169 -0
  467. vispy/visuals/sphere.py +80 -0
  468. vispy/visuals/surface_plot.py +192 -0
  469. vispy/visuals/tests/__init__.py +0 -0
  470. vispy/visuals/tests/test_arrows.py +109 -0
  471. vispy/visuals/tests/test_axis.py +120 -0
  472. vispy/visuals/tests/test_collections.py +15 -0
  473. vispy/visuals/tests/test_colorbar.py +179 -0
  474. vispy/visuals/tests/test_colormap.py +97 -0
  475. vispy/visuals/tests/test_ellipse.py +122 -0
  476. vispy/visuals/tests/test_gridlines.py +30 -0
  477. vispy/visuals/tests/test_histogram.py +24 -0
  478. vispy/visuals/tests/test_image.py +392 -0
  479. vispy/visuals/tests/test_image_complex.py +36 -0
  480. vispy/visuals/tests/test_infinite_line.py +53 -0
  481. vispy/visuals/tests/test_instanced_mesh.py +50 -0
  482. vispy/visuals/tests/test_isosurface.py +22 -0
  483. vispy/visuals/tests/test_linear_region.py +152 -0
  484. vispy/visuals/tests/test_markers.py +54 -0
  485. vispy/visuals/tests/test_mesh.py +261 -0
  486. vispy/visuals/tests/test_mesh_normals.py +218 -0
  487. vispy/visuals/tests/test_polygon.py +112 -0
  488. vispy/visuals/tests/test_rectangle.py +163 -0
  489. vispy/visuals/tests/test_regular_polygon.py +111 -0
  490. vispy/visuals/tests/test_scalable_textures.py +196 -0
  491. vispy/visuals/tests/test_sdf.py +73 -0
  492. vispy/visuals/tests/test_spectrogram.py +42 -0
  493. vispy/visuals/tests/test_surface_plot.py +57 -0
  494. vispy/visuals/tests/test_text.py +95 -0
  495. vispy/visuals/tests/test_volume.py +542 -0
  496. vispy/visuals/tests/test_windbarb.py +33 -0
  497. vispy/visuals/text/__init__.py +7 -0
  498. vispy/visuals/text/_sdf_cpu.cpython-313-aarch64-linux-gnu.so +0 -0
  499. vispy/visuals/text/_sdf_cpu.pyx +112 -0
  500. vispy/visuals/text/_sdf_gpu.py +316 -0
  501. vispy/visuals/text/text.py +675 -0
  502. vispy/visuals/transforms/__init__.py +34 -0
  503. vispy/visuals/transforms/_util.py +191 -0
  504. vispy/visuals/transforms/base_transform.py +233 -0
  505. vispy/visuals/transforms/chain.py +300 -0
  506. vispy/visuals/transforms/interactive.py +98 -0
  507. vispy/visuals/transforms/linear.py +564 -0
  508. vispy/visuals/transforms/nonlinear.py +398 -0
  509. vispy/visuals/transforms/tests/__init__.py +0 -0
  510. vispy/visuals/transforms/tests/test_transforms.py +243 -0
  511. vispy/visuals/transforms/transform_system.py +339 -0
  512. vispy/visuals/tube.py +173 -0
  513. vispy/visuals/visual.py +923 -0
  514. vispy/visuals/volume.py +1366 -0
  515. vispy/visuals/windbarb.py +291 -0
  516. vispy/visuals/xyz_axis.py +34 -0
  517. vispy-0.15.0.dist-info/METADATA +243 -0
  518. vispy-0.15.0.dist-info/RECORD +521 -0
  519. vispy-0.15.0.dist-info/WHEEL +6 -0
  520. vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
  521. vispy-0.15.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1407 @@
1
+ // ------------------------------------
2
+ // Automatically generated, do not edit
3
+ // ------------------------------------
4
+ const float kernel_bias = -0.23437733388100893;
5
+ const float kernel_scale = 1.2419743353536359;
6
+ const float kernel_size = 1024;
7
+ const vec4 bits = vec4(1, 0.00390625, 1.52587890625e-05, 5.960464477539063e-08);
8
+ uniform sampler2D u_kernel;
9
+
10
+ float unpack_unit(vec4 rgba) {
11
+ // return rgba.r; // uncomment this for r32f debugging
12
+ return dot(rgba, bits);
13
+ }
14
+
15
+ float unpack_ieee(vec4 rgba) {
16
+ // return rgba.r; // uncomment this for r32f debugging
17
+ rgba.rgba = rgba.abgr * 255;
18
+ float sign = 1 - step(128 , rgba[0]) * 2;
19
+ float exponent = 2 * mod(rgba[0] , 128) + step(128 , rgba[1]) - 127;
20
+ float mantissa = mod(rgba[1] , 128) * 65536 + rgba[2] * 256 + rgba[3] + float(0x800000);
21
+ return sign * exp2(exponent) * (mantissa * exp2(-23.));
22
+ }
23
+
24
+
25
+ float unpack_interpolate(sampler2D kernel, vec2 uv) {
26
+ // return texture2D(kernel, uv).r; //uncomment this for r32f debug without interpolation
27
+ float kpixel = 1. / kernel_size;
28
+ float u = uv.x / kpixel;
29
+ float v = uv.y;
30
+ float uf = fract(u);
31
+ u = (u - uf) * kpixel;
32
+ float d0 = unpack_unit(texture2D(kernel, vec2(u, v)));
33
+ float d1 = unpack_unit(texture2D(kernel, vec2(u + 1. * kpixel, v)));
34
+ return mix(d0, d1, uf);
35
+ }
36
+
37
+ vec4 filter1D_radius1(sampler2D kernel, float index, float x, vec4 c0, vec4 c1) {
38
+ float w, w_sum = 0;
39
+ vec4 r = vec4(0);
40
+
41
+ w = unpack_interpolate(kernel, vec2(0.0 + (x / 1), index));
42
+ w = w * kernel_scale + kernel_bias;
43
+ r += c0 * w;
44
+ w = unpack_interpolate(kernel, vec2(1.0 - (x / 1), index));
45
+ w = w * kernel_scale + kernel_bias;
46
+ r += c1 * w;
47
+ return r;
48
+ }
49
+
50
+ vec4 filter2D_radius1(sampler2D texture, sampler2D kernel, float index, vec2 uv, vec2 pixel) {
51
+ vec2 texel = uv / pixel - vec2(0.5);
52
+ vec2 f = fract(texel);
53
+ texel = (texel - fract(texel) + vec2(0.001)) * pixel;
54
+
55
+ vec4 t0 = filter1D_radius1(kernel, index, f.x,
56
+ texture2D(texture, texel + vec2(0, 0) * pixel),
57
+ texture2D(texture, texel + vec2(1, 0) * pixel));
58
+ vec4 t1 = filter1D_radius1(kernel, index, f.x,
59
+ texture2D(texture, texel + vec2(0, 1) * pixel),
60
+ texture2D(texture, texel + vec2(1, 1) * pixel));
61
+ return filter1D_radius1(kernel, index, f.y, t0, t1);
62
+ }
63
+
64
+ vec4 filter3D_radius1(sampler3D texture, sampler2D kernel, float index, vec3 uv, vec3 pixel) {
65
+ vec3 texel = uv / pixel - vec3(0.5);
66
+ vec3 f = fract(texel);
67
+ texel = (texel - fract(texel) + vec3(0.001)) * pixel;
68
+
69
+ vec4 t00 = filter1D_radius1(kernel, index, f.x,
70
+ texture3D(texture, texel + vec3(0, 0, 0) * pixel),
71
+ texture3D(texture, texel + vec3(1, 0, 0) * pixel));
72
+ vec4 t01 = filter1D_radius1(kernel, index, f.x,
73
+ texture3D(texture, texel + vec3(0, 1, 0) * pixel),
74
+ texture3D(texture, texel + vec3(1, 1, 0) * pixel));
75
+ vec4 t10 = filter1D_radius1(kernel, index, f.x,
76
+ texture3D(texture, texel + vec3(0, 0, 1) * pixel),
77
+ texture3D(texture, texel + vec3(1, 0, 1) * pixel));
78
+ vec4 t11 = filter1D_radius1(kernel, index, f.x,
79
+ texture3D(texture, texel + vec3(0, 1, 1) * pixel),
80
+ texture3D(texture, texel + vec3(1, 1, 1) * pixel));
81
+
82
+ vec4 t0 = filter1D_radius1(kernel, index, f.y, t00, t01);
83
+ vec4 t1 = filter1D_radius1(kernel, index, f.y, t10, t11);
84
+ return filter1D_radius1(kernel, index, f.z, t0, t1);
85
+ }
86
+
87
+ vec4 filter1D_radius2(sampler2D kernel, float index, float x, vec4 c0, vec4 c1, vec4 c2, vec4 c3) {
88
+ float w, w_sum = 0;
89
+ vec4 r = vec4(0);
90
+
91
+ w = unpack_interpolate(kernel, vec2(0.5 + (x / 2), index));
92
+ w = w * kernel_scale + kernel_bias;
93
+ r += c0 * w;
94
+ w = unpack_interpolate(kernel, vec2(0.5 - (x / 2), index));
95
+ w = w * kernel_scale + kernel_bias;
96
+ r += c2 * w;
97
+ w = unpack_interpolate(kernel, vec2(0.0 + (x / 2), index));
98
+ w = w * kernel_scale + kernel_bias;
99
+ r += c1 * w;
100
+ w = unpack_interpolate(kernel, vec2(1.0 - (x / 2), index));
101
+ w = w * kernel_scale + kernel_bias;
102
+ r += c3 * w;
103
+ return r;
104
+ }
105
+
106
+ vec4 filter2D_radius2(sampler2D texture, sampler2D kernel, float index, vec2 uv, vec2 pixel) {
107
+ vec2 texel = uv / pixel - vec2(0.5);
108
+ vec2 f = fract(texel);
109
+ texel = (texel - fract(texel) + vec2(0.001)) * pixel;
110
+
111
+ vec4 t0 = filter1D_radius2(kernel, index, f.x,
112
+ texture2D(texture, texel + vec2(-1, -1) * pixel),
113
+ texture2D(texture, texel + vec2(0, -1) * pixel),
114
+ texture2D(texture, texel + vec2(1, -1) * pixel),
115
+ texture2D(texture, texel + vec2(2, -1) * pixel));
116
+ vec4 t1 = filter1D_radius2(kernel, index, f.x,
117
+ texture2D(texture, texel + vec2(-1, 0) * pixel),
118
+ texture2D(texture, texel + vec2(0, 0) * pixel),
119
+ texture2D(texture, texel + vec2(1, 0) * pixel),
120
+ texture2D(texture, texel + vec2(2, 0) * pixel));
121
+ vec4 t2 = filter1D_radius2(kernel, index, f.x,
122
+ texture2D(texture, texel + vec2(-1, 1) * pixel),
123
+ texture2D(texture, texel + vec2(0, 1) * pixel),
124
+ texture2D(texture, texel + vec2(1, 1) * pixel),
125
+ texture2D(texture, texel + vec2(2, 1) * pixel));
126
+ vec4 t3 = filter1D_radius2(kernel, index, f.x,
127
+ texture2D(texture, texel + vec2(-1, 2) * pixel),
128
+ texture2D(texture, texel + vec2(0, 2) * pixel),
129
+ texture2D(texture, texel + vec2(1, 2) * pixel),
130
+ texture2D(texture, texel + vec2(2, 2) * pixel));
131
+ return filter1D_radius2(kernel, index, f.y, t0, t1, t2, t3);
132
+ }
133
+
134
+ vec4 filter3D_radius2(sampler3D texture, sampler2D kernel, float index, vec3 uv, vec3 pixel) {
135
+ vec3 texel = uv / pixel - vec3(0.5);
136
+ vec3 f = fract(texel);
137
+ texel = (texel - fract(texel) + vec3(0.001)) * pixel;
138
+
139
+ vec4 t00 = filter1D_radius2(kernel, index, f.x,
140
+ texture3D(texture, texel + vec3(-1, -1, -1) * pixel),
141
+ texture3D(texture, texel + vec3(0, -1, -1) * pixel),
142
+ texture3D(texture, texel + vec3(1, -1, -1) * pixel),
143
+ texture3D(texture, texel + vec3(2, -1, -1) * pixel));
144
+ vec4 t01 = filter1D_radius2(kernel, index, f.x,
145
+ texture3D(texture, texel + vec3(-1, 0, -1) * pixel),
146
+ texture3D(texture, texel + vec3(0, 0, -1) * pixel),
147
+ texture3D(texture, texel + vec3(1, 0, -1) * pixel),
148
+ texture3D(texture, texel + vec3(2, 0, -1) * pixel));
149
+ vec4 t02 = filter1D_radius2(kernel, index, f.x,
150
+ texture3D(texture, texel + vec3(-1, 1, -1) * pixel),
151
+ texture3D(texture, texel + vec3(0, 1, -1) * pixel),
152
+ texture3D(texture, texel + vec3(1, 1, -1) * pixel),
153
+ texture3D(texture, texel + vec3(2, 1, -1) * pixel));
154
+ vec4 t03 = filter1D_radius2(kernel, index, f.x,
155
+ texture3D(texture, texel + vec3(-1, 2, -1) * pixel),
156
+ texture3D(texture, texel + vec3(0, 2, -1) * pixel),
157
+ texture3D(texture, texel + vec3(1, 2, -1) * pixel),
158
+ texture3D(texture, texel + vec3(2, 2, -1) * pixel));
159
+ vec4 t10 = filter1D_radius2(kernel, index, f.x,
160
+ texture3D(texture, texel + vec3(-1, -1, 0) * pixel),
161
+ texture3D(texture, texel + vec3(0, -1, 0) * pixel),
162
+ texture3D(texture, texel + vec3(1, -1, 0) * pixel),
163
+ texture3D(texture, texel + vec3(2, -1, 0) * pixel));
164
+ vec4 t11 = filter1D_radius2(kernel, index, f.x,
165
+ texture3D(texture, texel + vec3(-1, 0, 0) * pixel),
166
+ texture3D(texture, texel + vec3(0, 0, 0) * pixel),
167
+ texture3D(texture, texel + vec3(1, 0, 0) * pixel),
168
+ texture3D(texture, texel + vec3(2, 0, 0) * pixel));
169
+ vec4 t12 = filter1D_radius2(kernel, index, f.x,
170
+ texture3D(texture, texel + vec3(-1, 1, 0) * pixel),
171
+ texture3D(texture, texel + vec3(0, 1, 0) * pixel),
172
+ texture3D(texture, texel + vec3(1, 1, 0) * pixel),
173
+ texture3D(texture, texel + vec3(2, 1, 0) * pixel));
174
+ vec4 t13 = filter1D_radius2(kernel, index, f.x,
175
+ texture3D(texture, texel + vec3(-1, 2, 0) * pixel),
176
+ texture3D(texture, texel + vec3(0, 2, 0) * pixel),
177
+ texture3D(texture, texel + vec3(1, 2, 0) * pixel),
178
+ texture3D(texture, texel + vec3(2, 2, 0) * pixel));
179
+ vec4 t20 = filter1D_radius2(kernel, index, f.x,
180
+ texture3D(texture, texel + vec3(-1, -1, 1) * pixel),
181
+ texture3D(texture, texel + vec3(0, -1, 1) * pixel),
182
+ texture3D(texture, texel + vec3(1, -1, 1) * pixel),
183
+ texture3D(texture, texel + vec3(2, -1, 1) * pixel));
184
+ vec4 t21 = filter1D_radius2(kernel, index, f.x,
185
+ texture3D(texture, texel + vec3(-1, 0, 1) * pixel),
186
+ texture3D(texture, texel + vec3(0, 0, 1) * pixel),
187
+ texture3D(texture, texel + vec3(1, 0, 1) * pixel),
188
+ texture3D(texture, texel + vec3(2, 0, 1) * pixel));
189
+ vec4 t22 = filter1D_radius2(kernel, index, f.x,
190
+ texture3D(texture, texel + vec3(-1, 1, 1) * pixel),
191
+ texture3D(texture, texel + vec3(0, 1, 1) * pixel),
192
+ texture3D(texture, texel + vec3(1, 1, 1) * pixel),
193
+ texture3D(texture, texel + vec3(2, 1, 1) * pixel));
194
+ vec4 t23 = filter1D_radius2(kernel, index, f.x,
195
+ texture3D(texture, texel + vec3(-1, 2, 1) * pixel),
196
+ texture3D(texture, texel + vec3(0, 2, 1) * pixel),
197
+ texture3D(texture, texel + vec3(1, 2, 1) * pixel),
198
+ texture3D(texture, texel + vec3(2, 2, 1) * pixel));
199
+ vec4 t30 = filter1D_radius2(kernel, index, f.x,
200
+ texture3D(texture, texel + vec3(-1, -1, 2) * pixel),
201
+ texture3D(texture, texel + vec3(0, -1, 2) * pixel),
202
+ texture3D(texture, texel + vec3(1, -1, 2) * pixel),
203
+ texture3D(texture, texel + vec3(2, -1, 2) * pixel));
204
+ vec4 t31 = filter1D_radius2(kernel, index, f.x,
205
+ texture3D(texture, texel + vec3(-1, 0, 2) * pixel),
206
+ texture3D(texture, texel + vec3(0, 0, 2) * pixel),
207
+ texture3D(texture, texel + vec3(1, 0, 2) * pixel),
208
+ texture3D(texture, texel + vec3(2, 0, 2) * pixel));
209
+ vec4 t32 = filter1D_radius2(kernel, index, f.x,
210
+ texture3D(texture, texel + vec3(-1, 1, 2) * pixel),
211
+ texture3D(texture, texel + vec3(0, 1, 2) * pixel),
212
+ texture3D(texture, texel + vec3(1, 1, 2) * pixel),
213
+ texture3D(texture, texel + vec3(2, 1, 2) * pixel));
214
+ vec4 t33 = filter1D_radius2(kernel, index, f.x,
215
+ texture3D(texture, texel + vec3(-1, 2, 2) * pixel),
216
+ texture3D(texture, texel + vec3(0, 2, 2) * pixel),
217
+ texture3D(texture, texel + vec3(1, 2, 2) * pixel),
218
+ texture3D(texture, texel + vec3(2, 2, 2) * pixel));
219
+
220
+ vec4 t0 = filter1D_radius2(kernel, index, f.y, t00, t01, t02, t03);
221
+ vec4 t1 = filter1D_radius2(kernel, index, f.y, t10, t11, t12, t13);
222
+ vec4 t2 = filter1D_radius2(kernel, index, f.y, t20, t21, t22, t23);
223
+ vec4 t3 = filter1D_radius2(kernel, index, f.y, t30, t31, t32, t33);
224
+ return filter1D_radius2(kernel, index, f.z, t0, t1, t2, t3);
225
+ }
226
+
227
+ vec4 filter1D_radius3(sampler2D kernel, float index, float x, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4, vec4 c5) {
228
+ float w, w_sum = 0;
229
+ vec4 r = vec4(0);
230
+
231
+ w = unpack_interpolate(kernel, vec2(0.6666666666666667 + (x / 3), index));
232
+ w = w * kernel_scale + kernel_bias;
233
+ r += c0 * w;
234
+ w = unpack_interpolate(kernel, vec2(0.3333333333333333 - (x / 3), index));
235
+ w = w * kernel_scale + kernel_bias;
236
+ r += c3 * w;
237
+ w = unpack_interpolate(kernel, vec2(0.33333333333333337 + (x / 3), index));
238
+ w = w * kernel_scale + kernel_bias;
239
+ r += c1 * w;
240
+ w = unpack_interpolate(kernel, vec2(0.6666666666666666 - (x / 3), index));
241
+ w = w * kernel_scale + kernel_bias;
242
+ r += c4 * w;
243
+ w = unpack_interpolate(kernel, vec2(0.0 + (x / 3), index));
244
+ w = w * kernel_scale + kernel_bias;
245
+ r += c2 * w;
246
+ w = unpack_interpolate(kernel, vec2(1.0 - (x / 3), index));
247
+ w = w * kernel_scale + kernel_bias;
248
+ r += c5 * w;
249
+ return r;
250
+ }
251
+
252
+ vec4 filter2D_radius3(sampler2D texture, sampler2D kernel, float index, vec2 uv, vec2 pixel) {
253
+ vec2 texel = uv / pixel - vec2(0.5);
254
+ vec2 f = fract(texel);
255
+ texel = (texel - fract(texel) + vec2(0.001)) * pixel;
256
+
257
+ vec4 t0 = filter1D_radius3(kernel, index, f.x,
258
+ texture2D(texture, texel + vec2(-2, -2) * pixel),
259
+ texture2D(texture, texel + vec2(-1, -2) * pixel),
260
+ texture2D(texture, texel + vec2(0, -2) * pixel),
261
+ texture2D(texture, texel + vec2(1, -2) * pixel),
262
+ texture2D(texture, texel + vec2(2, -2) * pixel),
263
+ texture2D(texture, texel + vec2(3, -2) * pixel));
264
+ vec4 t1 = filter1D_radius3(kernel, index, f.x,
265
+ texture2D(texture, texel + vec2(-2, -1) * pixel),
266
+ texture2D(texture, texel + vec2(-1, -1) * pixel),
267
+ texture2D(texture, texel + vec2(0, -1) * pixel),
268
+ texture2D(texture, texel + vec2(1, -1) * pixel),
269
+ texture2D(texture, texel + vec2(2, -1) * pixel),
270
+ texture2D(texture, texel + vec2(3, -1) * pixel));
271
+ vec4 t2 = filter1D_radius3(kernel, index, f.x,
272
+ texture2D(texture, texel + vec2(-2, 0) * pixel),
273
+ texture2D(texture, texel + vec2(-1, 0) * pixel),
274
+ texture2D(texture, texel + vec2(0, 0) * pixel),
275
+ texture2D(texture, texel + vec2(1, 0) * pixel),
276
+ texture2D(texture, texel + vec2(2, 0) * pixel),
277
+ texture2D(texture, texel + vec2(3, 0) * pixel));
278
+ vec4 t3 = filter1D_radius3(kernel, index, f.x,
279
+ texture2D(texture, texel + vec2(-2, 1) * pixel),
280
+ texture2D(texture, texel + vec2(-1, 1) * pixel),
281
+ texture2D(texture, texel + vec2(0, 1) * pixel),
282
+ texture2D(texture, texel + vec2(1, 1) * pixel),
283
+ texture2D(texture, texel + vec2(2, 1) * pixel),
284
+ texture2D(texture, texel + vec2(3, 1) * pixel));
285
+ vec4 t4 = filter1D_radius3(kernel, index, f.x,
286
+ texture2D(texture, texel + vec2(-2, 2) * pixel),
287
+ texture2D(texture, texel + vec2(-1, 2) * pixel),
288
+ texture2D(texture, texel + vec2(0, 2) * pixel),
289
+ texture2D(texture, texel + vec2(1, 2) * pixel),
290
+ texture2D(texture, texel + vec2(2, 2) * pixel),
291
+ texture2D(texture, texel + vec2(3, 2) * pixel));
292
+ vec4 t5 = filter1D_radius3(kernel, index, f.x,
293
+ texture2D(texture, texel + vec2(-2, 3) * pixel),
294
+ texture2D(texture, texel + vec2(-1, 3) * pixel),
295
+ texture2D(texture, texel + vec2(0, 3) * pixel),
296
+ texture2D(texture, texel + vec2(1, 3) * pixel),
297
+ texture2D(texture, texel + vec2(2, 3) * pixel),
298
+ texture2D(texture, texel + vec2(3, 3) * pixel));
299
+ return filter1D_radius3(kernel, index, f.y, t0, t1, t2, t3, t4, t5);
300
+ }
301
+
302
+ vec4 filter3D_radius3(sampler3D texture, sampler2D kernel, float index, vec3 uv, vec3 pixel) {
303
+ vec3 texel = uv / pixel - vec3(0.5);
304
+ vec3 f = fract(texel);
305
+ texel = (texel - fract(texel) + vec3(0.001)) * pixel;
306
+
307
+ vec4 t00 = filter1D_radius3(kernel, index, f.x,
308
+ texture3D(texture, texel + vec3(-2, -2, -2) * pixel),
309
+ texture3D(texture, texel + vec3(-1, -2, -2) * pixel),
310
+ texture3D(texture, texel + vec3(0, -2, -2) * pixel),
311
+ texture3D(texture, texel + vec3(1, -2, -2) * pixel),
312
+ texture3D(texture, texel + vec3(2, -2, -2) * pixel),
313
+ texture3D(texture, texel + vec3(3, -2, -2) * pixel));
314
+ vec4 t01 = filter1D_radius3(kernel, index, f.x,
315
+ texture3D(texture, texel + vec3(-2, -1, -2) * pixel),
316
+ texture3D(texture, texel + vec3(-1, -1, -2) * pixel),
317
+ texture3D(texture, texel + vec3(0, -1, -2) * pixel),
318
+ texture3D(texture, texel + vec3(1, -1, -2) * pixel),
319
+ texture3D(texture, texel + vec3(2, -1, -2) * pixel),
320
+ texture3D(texture, texel + vec3(3, -1, -2) * pixel));
321
+ vec4 t02 = filter1D_radius3(kernel, index, f.x,
322
+ texture3D(texture, texel + vec3(-2, 0, -2) * pixel),
323
+ texture3D(texture, texel + vec3(-1, 0, -2) * pixel),
324
+ texture3D(texture, texel + vec3(0, 0, -2) * pixel),
325
+ texture3D(texture, texel + vec3(1, 0, -2) * pixel),
326
+ texture3D(texture, texel + vec3(2, 0, -2) * pixel),
327
+ texture3D(texture, texel + vec3(3, 0, -2) * pixel));
328
+ vec4 t03 = filter1D_radius3(kernel, index, f.x,
329
+ texture3D(texture, texel + vec3(-2, 1, -2) * pixel),
330
+ texture3D(texture, texel + vec3(-1, 1, -2) * pixel),
331
+ texture3D(texture, texel + vec3(0, 1, -2) * pixel),
332
+ texture3D(texture, texel + vec3(1, 1, -2) * pixel),
333
+ texture3D(texture, texel + vec3(2, 1, -2) * pixel),
334
+ texture3D(texture, texel + vec3(3, 1, -2) * pixel));
335
+ vec4 t04 = filter1D_radius3(kernel, index, f.x,
336
+ texture3D(texture, texel + vec3(-2, 2, -2) * pixel),
337
+ texture3D(texture, texel + vec3(-1, 2, -2) * pixel),
338
+ texture3D(texture, texel + vec3(0, 2, -2) * pixel),
339
+ texture3D(texture, texel + vec3(1, 2, -2) * pixel),
340
+ texture3D(texture, texel + vec3(2, 2, -2) * pixel),
341
+ texture3D(texture, texel + vec3(3, 2, -2) * pixel));
342
+ vec4 t05 = filter1D_radius3(kernel, index, f.x,
343
+ texture3D(texture, texel + vec3(-2, 3, -2) * pixel),
344
+ texture3D(texture, texel + vec3(-1, 3, -2) * pixel),
345
+ texture3D(texture, texel + vec3(0, 3, -2) * pixel),
346
+ texture3D(texture, texel + vec3(1, 3, -2) * pixel),
347
+ texture3D(texture, texel + vec3(2, 3, -2) * pixel),
348
+ texture3D(texture, texel + vec3(3, 3, -2) * pixel));
349
+ vec4 t10 = filter1D_radius3(kernel, index, f.x,
350
+ texture3D(texture, texel + vec3(-2, -2, -1) * pixel),
351
+ texture3D(texture, texel + vec3(-1, -2, -1) * pixel),
352
+ texture3D(texture, texel + vec3(0, -2, -1) * pixel),
353
+ texture3D(texture, texel + vec3(1, -2, -1) * pixel),
354
+ texture3D(texture, texel + vec3(2, -2, -1) * pixel),
355
+ texture3D(texture, texel + vec3(3, -2, -1) * pixel));
356
+ vec4 t11 = filter1D_radius3(kernel, index, f.x,
357
+ texture3D(texture, texel + vec3(-2, -1, -1) * pixel),
358
+ texture3D(texture, texel + vec3(-1, -1, -1) * pixel),
359
+ texture3D(texture, texel + vec3(0, -1, -1) * pixel),
360
+ texture3D(texture, texel + vec3(1, -1, -1) * pixel),
361
+ texture3D(texture, texel + vec3(2, -1, -1) * pixel),
362
+ texture3D(texture, texel + vec3(3, -1, -1) * pixel));
363
+ vec4 t12 = filter1D_radius3(kernel, index, f.x,
364
+ texture3D(texture, texel + vec3(-2, 0, -1) * pixel),
365
+ texture3D(texture, texel + vec3(-1, 0, -1) * pixel),
366
+ texture3D(texture, texel + vec3(0, 0, -1) * pixel),
367
+ texture3D(texture, texel + vec3(1, 0, -1) * pixel),
368
+ texture3D(texture, texel + vec3(2, 0, -1) * pixel),
369
+ texture3D(texture, texel + vec3(3, 0, -1) * pixel));
370
+ vec4 t13 = filter1D_radius3(kernel, index, f.x,
371
+ texture3D(texture, texel + vec3(-2, 1, -1) * pixel),
372
+ texture3D(texture, texel + vec3(-1, 1, -1) * pixel),
373
+ texture3D(texture, texel + vec3(0, 1, -1) * pixel),
374
+ texture3D(texture, texel + vec3(1, 1, -1) * pixel),
375
+ texture3D(texture, texel + vec3(2, 1, -1) * pixel),
376
+ texture3D(texture, texel + vec3(3, 1, -1) * pixel));
377
+ vec4 t14 = filter1D_radius3(kernel, index, f.x,
378
+ texture3D(texture, texel + vec3(-2, 2, -1) * pixel),
379
+ texture3D(texture, texel + vec3(-1, 2, -1) * pixel),
380
+ texture3D(texture, texel + vec3(0, 2, -1) * pixel),
381
+ texture3D(texture, texel + vec3(1, 2, -1) * pixel),
382
+ texture3D(texture, texel + vec3(2, 2, -1) * pixel),
383
+ texture3D(texture, texel + vec3(3, 2, -1) * pixel));
384
+ vec4 t15 = filter1D_radius3(kernel, index, f.x,
385
+ texture3D(texture, texel + vec3(-2, 3, -1) * pixel),
386
+ texture3D(texture, texel + vec3(-1, 3, -1) * pixel),
387
+ texture3D(texture, texel + vec3(0, 3, -1) * pixel),
388
+ texture3D(texture, texel + vec3(1, 3, -1) * pixel),
389
+ texture3D(texture, texel + vec3(2, 3, -1) * pixel),
390
+ texture3D(texture, texel + vec3(3, 3, -1) * pixel));
391
+ vec4 t20 = filter1D_radius3(kernel, index, f.x,
392
+ texture3D(texture, texel + vec3(-2, -2, 0) * pixel),
393
+ texture3D(texture, texel + vec3(-1, -2, 0) * pixel),
394
+ texture3D(texture, texel + vec3(0, -2, 0) * pixel),
395
+ texture3D(texture, texel + vec3(1, -2, 0) * pixel),
396
+ texture3D(texture, texel + vec3(2, -2, 0) * pixel),
397
+ texture3D(texture, texel + vec3(3, -2, 0) * pixel));
398
+ vec4 t21 = filter1D_radius3(kernel, index, f.x,
399
+ texture3D(texture, texel + vec3(-2, -1, 0) * pixel),
400
+ texture3D(texture, texel + vec3(-1, -1, 0) * pixel),
401
+ texture3D(texture, texel + vec3(0, -1, 0) * pixel),
402
+ texture3D(texture, texel + vec3(1, -1, 0) * pixel),
403
+ texture3D(texture, texel + vec3(2, -1, 0) * pixel),
404
+ texture3D(texture, texel + vec3(3, -1, 0) * pixel));
405
+ vec4 t22 = filter1D_radius3(kernel, index, f.x,
406
+ texture3D(texture, texel + vec3(-2, 0, 0) * pixel),
407
+ texture3D(texture, texel + vec3(-1, 0, 0) * pixel),
408
+ texture3D(texture, texel + vec3(0, 0, 0) * pixel),
409
+ texture3D(texture, texel + vec3(1, 0, 0) * pixel),
410
+ texture3D(texture, texel + vec3(2, 0, 0) * pixel),
411
+ texture3D(texture, texel + vec3(3, 0, 0) * pixel));
412
+ vec4 t23 = filter1D_radius3(kernel, index, f.x,
413
+ texture3D(texture, texel + vec3(-2, 1, 0) * pixel),
414
+ texture3D(texture, texel + vec3(-1, 1, 0) * pixel),
415
+ texture3D(texture, texel + vec3(0, 1, 0) * pixel),
416
+ texture3D(texture, texel + vec3(1, 1, 0) * pixel),
417
+ texture3D(texture, texel + vec3(2, 1, 0) * pixel),
418
+ texture3D(texture, texel + vec3(3, 1, 0) * pixel));
419
+ vec4 t24 = filter1D_radius3(kernel, index, f.x,
420
+ texture3D(texture, texel + vec3(-2, 2, 0) * pixel),
421
+ texture3D(texture, texel + vec3(-1, 2, 0) * pixel),
422
+ texture3D(texture, texel + vec3(0, 2, 0) * pixel),
423
+ texture3D(texture, texel + vec3(1, 2, 0) * pixel),
424
+ texture3D(texture, texel + vec3(2, 2, 0) * pixel),
425
+ texture3D(texture, texel + vec3(3, 2, 0) * pixel));
426
+ vec4 t25 = filter1D_radius3(kernel, index, f.x,
427
+ texture3D(texture, texel + vec3(-2, 3, 0) * pixel),
428
+ texture3D(texture, texel + vec3(-1, 3, 0) * pixel),
429
+ texture3D(texture, texel + vec3(0, 3, 0) * pixel),
430
+ texture3D(texture, texel + vec3(1, 3, 0) * pixel),
431
+ texture3D(texture, texel + vec3(2, 3, 0) * pixel),
432
+ texture3D(texture, texel + vec3(3, 3, 0) * pixel));
433
+ vec4 t30 = filter1D_radius3(kernel, index, f.x,
434
+ texture3D(texture, texel + vec3(-2, -2, 1) * pixel),
435
+ texture3D(texture, texel + vec3(-1, -2, 1) * pixel),
436
+ texture3D(texture, texel + vec3(0, -2, 1) * pixel),
437
+ texture3D(texture, texel + vec3(1, -2, 1) * pixel),
438
+ texture3D(texture, texel + vec3(2, -2, 1) * pixel),
439
+ texture3D(texture, texel + vec3(3, -2, 1) * pixel));
440
+ vec4 t31 = filter1D_radius3(kernel, index, f.x,
441
+ texture3D(texture, texel + vec3(-2, -1, 1) * pixel),
442
+ texture3D(texture, texel + vec3(-1, -1, 1) * pixel),
443
+ texture3D(texture, texel + vec3(0, -1, 1) * pixel),
444
+ texture3D(texture, texel + vec3(1, -1, 1) * pixel),
445
+ texture3D(texture, texel + vec3(2, -1, 1) * pixel),
446
+ texture3D(texture, texel + vec3(3, -1, 1) * pixel));
447
+ vec4 t32 = filter1D_radius3(kernel, index, f.x,
448
+ texture3D(texture, texel + vec3(-2, 0, 1) * pixel),
449
+ texture3D(texture, texel + vec3(-1, 0, 1) * pixel),
450
+ texture3D(texture, texel + vec3(0, 0, 1) * pixel),
451
+ texture3D(texture, texel + vec3(1, 0, 1) * pixel),
452
+ texture3D(texture, texel + vec3(2, 0, 1) * pixel),
453
+ texture3D(texture, texel + vec3(3, 0, 1) * pixel));
454
+ vec4 t33 = filter1D_radius3(kernel, index, f.x,
455
+ texture3D(texture, texel + vec3(-2, 1, 1) * pixel),
456
+ texture3D(texture, texel + vec3(-1, 1, 1) * pixel),
457
+ texture3D(texture, texel + vec3(0, 1, 1) * pixel),
458
+ texture3D(texture, texel + vec3(1, 1, 1) * pixel),
459
+ texture3D(texture, texel + vec3(2, 1, 1) * pixel),
460
+ texture3D(texture, texel + vec3(3, 1, 1) * pixel));
461
+ vec4 t34 = filter1D_radius3(kernel, index, f.x,
462
+ texture3D(texture, texel + vec3(-2, 2, 1) * pixel),
463
+ texture3D(texture, texel + vec3(-1, 2, 1) * pixel),
464
+ texture3D(texture, texel + vec3(0, 2, 1) * pixel),
465
+ texture3D(texture, texel + vec3(1, 2, 1) * pixel),
466
+ texture3D(texture, texel + vec3(2, 2, 1) * pixel),
467
+ texture3D(texture, texel + vec3(3, 2, 1) * pixel));
468
+ vec4 t35 = filter1D_radius3(kernel, index, f.x,
469
+ texture3D(texture, texel + vec3(-2, 3, 1) * pixel),
470
+ texture3D(texture, texel + vec3(-1, 3, 1) * pixel),
471
+ texture3D(texture, texel + vec3(0, 3, 1) * pixel),
472
+ texture3D(texture, texel + vec3(1, 3, 1) * pixel),
473
+ texture3D(texture, texel + vec3(2, 3, 1) * pixel),
474
+ texture3D(texture, texel + vec3(3, 3, 1) * pixel));
475
+ vec4 t40 = filter1D_radius3(kernel, index, f.x,
476
+ texture3D(texture, texel + vec3(-2, -2, 2) * pixel),
477
+ texture3D(texture, texel + vec3(-1, -2, 2) * pixel),
478
+ texture3D(texture, texel + vec3(0, -2, 2) * pixel),
479
+ texture3D(texture, texel + vec3(1, -2, 2) * pixel),
480
+ texture3D(texture, texel + vec3(2, -2, 2) * pixel),
481
+ texture3D(texture, texel + vec3(3, -2, 2) * pixel));
482
+ vec4 t41 = filter1D_radius3(kernel, index, f.x,
483
+ texture3D(texture, texel + vec3(-2, -1, 2) * pixel),
484
+ texture3D(texture, texel + vec3(-1, -1, 2) * pixel),
485
+ texture3D(texture, texel + vec3(0, -1, 2) * pixel),
486
+ texture3D(texture, texel + vec3(1, -1, 2) * pixel),
487
+ texture3D(texture, texel + vec3(2, -1, 2) * pixel),
488
+ texture3D(texture, texel + vec3(3, -1, 2) * pixel));
489
+ vec4 t42 = filter1D_radius3(kernel, index, f.x,
490
+ texture3D(texture, texel + vec3(-2, 0, 2) * pixel),
491
+ texture3D(texture, texel + vec3(-1, 0, 2) * pixel),
492
+ texture3D(texture, texel + vec3(0, 0, 2) * pixel),
493
+ texture3D(texture, texel + vec3(1, 0, 2) * pixel),
494
+ texture3D(texture, texel + vec3(2, 0, 2) * pixel),
495
+ texture3D(texture, texel + vec3(3, 0, 2) * pixel));
496
+ vec4 t43 = filter1D_radius3(kernel, index, f.x,
497
+ texture3D(texture, texel + vec3(-2, 1, 2) * pixel),
498
+ texture3D(texture, texel + vec3(-1, 1, 2) * pixel),
499
+ texture3D(texture, texel + vec3(0, 1, 2) * pixel),
500
+ texture3D(texture, texel + vec3(1, 1, 2) * pixel),
501
+ texture3D(texture, texel + vec3(2, 1, 2) * pixel),
502
+ texture3D(texture, texel + vec3(3, 1, 2) * pixel));
503
+ vec4 t44 = filter1D_radius3(kernel, index, f.x,
504
+ texture3D(texture, texel + vec3(-2, 2, 2) * pixel),
505
+ texture3D(texture, texel + vec3(-1, 2, 2) * pixel),
506
+ texture3D(texture, texel + vec3(0, 2, 2) * pixel),
507
+ texture3D(texture, texel + vec3(1, 2, 2) * pixel),
508
+ texture3D(texture, texel + vec3(2, 2, 2) * pixel),
509
+ texture3D(texture, texel + vec3(3, 2, 2) * pixel));
510
+ vec4 t45 = filter1D_radius3(kernel, index, f.x,
511
+ texture3D(texture, texel + vec3(-2, 3, 2) * pixel),
512
+ texture3D(texture, texel + vec3(-1, 3, 2) * pixel),
513
+ texture3D(texture, texel + vec3(0, 3, 2) * pixel),
514
+ texture3D(texture, texel + vec3(1, 3, 2) * pixel),
515
+ texture3D(texture, texel + vec3(2, 3, 2) * pixel),
516
+ texture3D(texture, texel + vec3(3, 3, 2) * pixel));
517
+ vec4 t50 = filter1D_radius3(kernel, index, f.x,
518
+ texture3D(texture, texel + vec3(-2, -2, 3) * pixel),
519
+ texture3D(texture, texel + vec3(-1, -2, 3) * pixel),
520
+ texture3D(texture, texel + vec3(0, -2, 3) * pixel),
521
+ texture3D(texture, texel + vec3(1, -2, 3) * pixel),
522
+ texture3D(texture, texel + vec3(2, -2, 3) * pixel),
523
+ texture3D(texture, texel + vec3(3, -2, 3) * pixel));
524
+ vec4 t51 = filter1D_radius3(kernel, index, f.x,
525
+ texture3D(texture, texel + vec3(-2, -1, 3) * pixel),
526
+ texture3D(texture, texel + vec3(-1, -1, 3) * pixel),
527
+ texture3D(texture, texel + vec3(0, -1, 3) * pixel),
528
+ texture3D(texture, texel + vec3(1, -1, 3) * pixel),
529
+ texture3D(texture, texel + vec3(2, -1, 3) * pixel),
530
+ texture3D(texture, texel + vec3(3, -1, 3) * pixel));
531
+ vec4 t52 = filter1D_radius3(kernel, index, f.x,
532
+ texture3D(texture, texel + vec3(-2, 0, 3) * pixel),
533
+ texture3D(texture, texel + vec3(-1, 0, 3) * pixel),
534
+ texture3D(texture, texel + vec3(0, 0, 3) * pixel),
535
+ texture3D(texture, texel + vec3(1, 0, 3) * pixel),
536
+ texture3D(texture, texel + vec3(2, 0, 3) * pixel),
537
+ texture3D(texture, texel + vec3(3, 0, 3) * pixel));
538
+ vec4 t53 = filter1D_radius3(kernel, index, f.x,
539
+ texture3D(texture, texel + vec3(-2, 1, 3) * pixel),
540
+ texture3D(texture, texel + vec3(-1, 1, 3) * pixel),
541
+ texture3D(texture, texel + vec3(0, 1, 3) * pixel),
542
+ texture3D(texture, texel + vec3(1, 1, 3) * pixel),
543
+ texture3D(texture, texel + vec3(2, 1, 3) * pixel),
544
+ texture3D(texture, texel + vec3(3, 1, 3) * pixel));
545
+ vec4 t54 = filter1D_radius3(kernel, index, f.x,
546
+ texture3D(texture, texel + vec3(-2, 2, 3) * pixel),
547
+ texture3D(texture, texel + vec3(-1, 2, 3) * pixel),
548
+ texture3D(texture, texel + vec3(0, 2, 3) * pixel),
549
+ texture3D(texture, texel + vec3(1, 2, 3) * pixel),
550
+ texture3D(texture, texel + vec3(2, 2, 3) * pixel),
551
+ texture3D(texture, texel + vec3(3, 2, 3) * pixel));
552
+ vec4 t55 = filter1D_radius3(kernel, index, f.x,
553
+ texture3D(texture, texel + vec3(-2, 3, 3) * pixel),
554
+ texture3D(texture, texel + vec3(-1, 3, 3) * pixel),
555
+ texture3D(texture, texel + vec3(0, 3, 3) * pixel),
556
+ texture3D(texture, texel + vec3(1, 3, 3) * pixel),
557
+ texture3D(texture, texel + vec3(2, 3, 3) * pixel),
558
+ texture3D(texture, texel + vec3(3, 3, 3) * pixel));
559
+
560
+ vec4 t0 = filter1D_radius3(kernel, index, f.y, t00, t01, t02, t03, t04, t05);
561
+ vec4 t1 = filter1D_radius3(kernel, index, f.y, t10, t11, t12, t13, t14, t15);
562
+ vec4 t2 = filter1D_radius3(kernel, index, f.y, t20, t21, t22, t23, t24, t25);
563
+ vec4 t3 = filter1D_radius3(kernel, index, f.y, t30, t31, t32, t33, t34, t35);
564
+ vec4 t4 = filter1D_radius3(kernel, index, f.y, t40, t41, t42, t43, t44, t45);
565
+ vec4 t5 = filter1D_radius3(kernel, index, f.y, t50, t51, t52, t53, t54, t55);
566
+ return filter1D_radius3(kernel, index, f.z, t0, t1, t2, t3, t4, t5);
567
+ }
568
+
569
+ vec4 filter1D_radius4(sampler2D kernel, float index, float x, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4, vec4 c5, vec4 c6, vec4 c7) {
570
+ float w, w_sum = 0;
571
+ vec4 r = vec4(0);
572
+
573
+ w = unpack_interpolate(kernel, vec2(0.75 + (x / 4), index));
574
+ w = w * kernel_scale + kernel_bias;
575
+ r += c0 * w;
576
+ w = unpack_interpolate(kernel, vec2(0.25 - (x / 4), index));
577
+ w = w * kernel_scale + kernel_bias;
578
+ r += c4 * w;
579
+ w = unpack_interpolate(kernel, vec2(0.5 + (x / 4), index));
580
+ w = w * kernel_scale + kernel_bias;
581
+ r += c1 * w;
582
+ w = unpack_interpolate(kernel, vec2(0.5 - (x / 4), index));
583
+ w = w * kernel_scale + kernel_bias;
584
+ r += c5 * w;
585
+ w = unpack_interpolate(kernel, vec2(0.25 + (x / 4), index));
586
+ w = w * kernel_scale + kernel_bias;
587
+ r += c2 * w;
588
+ w = unpack_interpolate(kernel, vec2(0.75 - (x / 4), index));
589
+ w = w * kernel_scale + kernel_bias;
590
+ r += c6 * w;
591
+ w = unpack_interpolate(kernel, vec2(0.0 + (x / 4), index));
592
+ w = w * kernel_scale + kernel_bias;
593
+ r += c3 * w;
594
+ w = unpack_interpolate(kernel, vec2(1.0 - (x / 4), index));
595
+ w = w * kernel_scale + kernel_bias;
596
+ r += c7 * w;
597
+ return r;
598
+ }
599
+
600
+ vec4 filter2D_radius4(sampler2D texture, sampler2D kernel, float index, vec2 uv, vec2 pixel) {
601
+ vec2 texel = uv / pixel - vec2(0.5);
602
+ vec2 f = fract(texel);
603
+ texel = (texel - fract(texel) + vec2(0.001)) * pixel;
604
+
605
+ vec4 t0 = filter1D_radius4(kernel, index, f.x,
606
+ texture2D(texture, texel + vec2(-3, -3) * pixel),
607
+ texture2D(texture, texel + vec2(-2, -3) * pixel),
608
+ texture2D(texture, texel + vec2(-1, -3) * pixel),
609
+ texture2D(texture, texel + vec2(0, -3) * pixel),
610
+ texture2D(texture, texel + vec2(1, -3) * pixel),
611
+ texture2D(texture, texel + vec2(2, -3) * pixel),
612
+ texture2D(texture, texel + vec2(3, -3) * pixel),
613
+ texture2D(texture, texel + vec2(4, -3) * pixel));
614
+ vec4 t1 = filter1D_radius4(kernel, index, f.x,
615
+ texture2D(texture, texel + vec2(-3, -2) * pixel),
616
+ texture2D(texture, texel + vec2(-2, -2) * pixel),
617
+ texture2D(texture, texel + vec2(-1, -2) * pixel),
618
+ texture2D(texture, texel + vec2(0, -2) * pixel),
619
+ texture2D(texture, texel + vec2(1, -2) * pixel),
620
+ texture2D(texture, texel + vec2(2, -2) * pixel),
621
+ texture2D(texture, texel + vec2(3, -2) * pixel),
622
+ texture2D(texture, texel + vec2(4, -2) * pixel));
623
+ vec4 t2 = filter1D_radius4(kernel, index, f.x,
624
+ texture2D(texture, texel + vec2(-3, -1) * pixel),
625
+ texture2D(texture, texel + vec2(-2, -1) * pixel),
626
+ texture2D(texture, texel + vec2(-1, -1) * pixel),
627
+ texture2D(texture, texel + vec2(0, -1) * pixel),
628
+ texture2D(texture, texel + vec2(1, -1) * pixel),
629
+ texture2D(texture, texel + vec2(2, -1) * pixel),
630
+ texture2D(texture, texel + vec2(3, -1) * pixel),
631
+ texture2D(texture, texel + vec2(4, -1) * pixel));
632
+ vec4 t3 = filter1D_radius4(kernel, index, f.x,
633
+ texture2D(texture, texel + vec2(-3, 0) * pixel),
634
+ texture2D(texture, texel + vec2(-2, 0) * pixel),
635
+ texture2D(texture, texel + vec2(-1, 0) * pixel),
636
+ texture2D(texture, texel + vec2(0, 0) * pixel),
637
+ texture2D(texture, texel + vec2(1, 0) * pixel),
638
+ texture2D(texture, texel + vec2(2, 0) * pixel),
639
+ texture2D(texture, texel + vec2(3, 0) * pixel),
640
+ texture2D(texture, texel + vec2(4, 0) * pixel));
641
+ vec4 t4 = filter1D_radius4(kernel, index, f.x,
642
+ texture2D(texture, texel + vec2(-3, 1) * pixel),
643
+ texture2D(texture, texel + vec2(-2, 1) * pixel),
644
+ texture2D(texture, texel + vec2(-1, 1) * pixel),
645
+ texture2D(texture, texel + vec2(0, 1) * pixel),
646
+ texture2D(texture, texel + vec2(1, 1) * pixel),
647
+ texture2D(texture, texel + vec2(2, 1) * pixel),
648
+ texture2D(texture, texel + vec2(3, 1) * pixel),
649
+ texture2D(texture, texel + vec2(4, 1) * pixel));
650
+ vec4 t5 = filter1D_radius4(kernel, index, f.x,
651
+ texture2D(texture, texel + vec2(-3, 2) * pixel),
652
+ texture2D(texture, texel + vec2(-2, 2) * pixel),
653
+ texture2D(texture, texel + vec2(-1, 2) * pixel),
654
+ texture2D(texture, texel + vec2(0, 2) * pixel),
655
+ texture2D(texture, texel + vec2(1, 2) * pixel),
656
+ texture2D(texture, texel + vec2(2, 2) * pixel),
657
+ texture2D(texture, texel + vec2(3, 2) * pixel),
658
+ texture2D(texture, texel + vec2(4, 2) * pixel));
659
+ vec4 t6 = filter1D_radius4(kernel, index, f.x,
660
+ texture2D(texture, texel + vec2(-3, 3) * pixel),
661
+ texture2D(texture, texel + vec2(-2, 3) * pixel),
662
+ texture2D(texture, texel + vec2(-1, 3) * pixel),
663
+ texture2D(texture, texel + vec2(0, 3) * pixel),
664
+ texture2D(texture, texel + vec2(1, 3) * pixel),
665
+ texture2D(texture, texel + vec2(2, 3) * pixel),
666
+ texture2D(texture, texel + vec2(3, 3) * pixel),
667
+ texture2D(texture, texel + vec2(4, 3) * pixel));
668
+ vec4 t7 = filter1D_radius4(kernel, index, f.x,
669
+ texture2D(texture, texel + vec2(-3, 4) * pixel),
670
+ texture2D(texture, texel + vec2(-2, 4) * pixel),
671
+ texture2D(texture, texel + vec2(-1, 4) * pixel),
672
+ texture2D(texture, texel + vec2(0, 4) * pixel),
673
+ texture2D(texture, texel + vec2(1, 4) * pixel),
674
+ texture2D(texture, texel + vec2(2, 4) * pixel),
675
+ texture2D(texture, texel + vec2(3, 4) * pixel),
676
+ texture2D(texture, texel + vec2(4, 4) * pixel));
677
+ return filter1D_radius4(kernel, index, f.y, t0, t1, t2, t3, t4, t5, t6, t7);
678
+ }
679
+
680
+ vec4 filter3D_radius4(sampler3D texture, sampler2D kernel, float index, vec3 uv, vec3 pixel) {
681
+ vec3 texel = uv / pixel - vec3(0.5);
682
+ vec3 f = fract(texel);
683
+ texel = (texel - fract(texel) + vec3(0.001)) * pixel;
684
+
685
+ vec4 t00 = filter1D_radius4(kernel, index, f.x,
686
+ texture3D(texture, texel + vec3(-3, -3, -3) * pixel),
687
+ texture3D(texture, texel + vec3(-2, -3, -3) * pixel),
688
+ texture3D(texture, texel + vec3(-1, -3, -3) * pixel),
689
+ texture3D(texture, texel + vec3(0, -3, -3) * pixel),
690
+ texture3D(texture, texel + vec3(1, -3, -3) * pixel),
691
+ texture3D(texture, texel + vec3(2, -3, -3) * pixel),
692
+ texture3D(texture, texel + vec3(3, -3, -3) * pixel),
693
+ texture3D(texture, texel + vec3(4, -3, -3) * pixel));
694
+ vec4 t01 = filter1D_radius4(kernel, index, f.x,
695
+ texture3D(texture, texel + vec3(-3, -2, -3) * pixel),
696
+ texture3D(texture, texel + vec3(-2, -2, -3) * pixel),
697
+ texture3D(texture, texel + vec3(-1, -2, -3) * pixel),
698
+ texture3D(texture, texel + vec3(0, -2, -3) * pixel),
699
+ texture3D(texture, texel + vec3(1, -2, -3) * pixel),
700
+ texture3D(texture, texel + vec3(2, -2, -3) * pixel),
701
+ texture3D(texture, texel + vec3(3, -2, -3) * pixel),
702
+ texture3D(texture, texel + vec3(4, -2, -3) * pixel));
703
+ vec4 t02 = filter1D_radius4(kernel, index, f.x,
704
+ texture3D(texture, texel + vec3(-3, -1, -3) * pixel),
705
+ texture3D(texture, texel + vec3(-2, -1, -3) * pixel),
706
+ texture3D(texture, texel + vec3(-1, -1, -3) * pixel),
707
+ texture3D(texture, texel + vec3(0, -1, -3) * pixel),
708
+ texture3D(texture, texel + vec3(1, -1, -3) * pixel),
709
+ texture3D(texture, texel + vec3(2, -1, -3) * pixel),
710
+ texture3D(texture, texel + vec3(3, -1, -3) * pixel),
711
+ texture3D(texture, texel + vec3(4, -1, -3) * pixel));
712
+ vec4 t03 = filter1D_radius4(kernel, index, f.x,
713
+ texture3D(texture, texel + vec3(-3, 0, -3) * pixel),
714
+ texture3D(texture, texel + vec3(-2, 0, -3) * pixel),
715
+ texture3D(texture, texel + vec3(-1, 0, -3) * pixel),
716
+ texture3D(texture, texel + vec3(0, 0, -3) * pixel),
717
+ texture3D(texture, texel + vec3(1, 0, -3) * pixel),
718
+ texture3D(texture, texel + vec3(2, 0, -3) * pixel),
719
+ texture3D(texture, texel + vec3(3, 0, -3) * pixel),
720
+ texture3D(texture, texel + vec3(4, 0, -3) * pixel));
721
+ vec4 t04 = filter1D_radius4(kernel, index, f.x,
722
+ texture3D(texture, texel + vec3(-3, 1, -3) * pixel),
723
+ texture3D(texture, texel + vec3(-2, 1, -3) * pixel),
724
+ texture3D(texture, texel + vec3(-1, 1, -3) * pixel),
725
+ texture3D(texture, texel + vec3(0, 1, -3) * pixel),
726
+ texture3D(texture, texel + vec3(1, 1, -3) * pixel),
727
+ texture3D(texture, texel + vec3(2, 1, -3) * pixel),
728
+ texture3D(texture, texel + vec3(3, 1, -3) * pixel),
729
+ texture3D(texture, texel + vec3(4, 1, -3) * pixel));
730
+ vec4 t05 = filter1D_radius4(kernel, index, f.x,
731
+ texture3D(texture, texel + vec3(-3, 2, -3) * pixel),
732
+ texture3D(texture, texel + vec3(-2, 2, -3) * pixel),
733
+ texture3D(texture, texel + vec3(-1, 2, -3) * pixel),
734
+ texture3D(texture, texel + vec3(0, 2, -3) * pixel),
735
+ texture3D(texture, texel + vec3(1, 2, -3) * pixel),
736
+ texture3D(texture, texel + vec3(2, 2, -3) * pixel),
737
+ texture3D(texture, texel + vec3(3, 2, -3) * pixel),
738
+ texture3D(texture, texel + vec3(4, 2, -3) * pixel));
739
+ vec4 t06 = filter1D_radius4(kernel, index, f.x,
740
+ texture3D(texture, texel + vec3(-3, 3, -3) * pixel),
741
+ texture3D(texture, texel + vec3(-2, 3, -3) * pixel),
742
+ texture3D(texture, texel + vec3(-1, 3, -3) * pixel),
743
+ texture3D(texture, texel + vec3(0, 3, -3) * pixel),
744
+ texture3D(texture, texel + vec3(1, 3, -3) * pixel),
745
+ texture3D(texture, texel + vec3(2, 3, -3) * pixel),
746
+ texture3D(texture, texel + vec3(3, 3, -3) * pixel),
747
+ texture3D(texture, texel + vec3(4, 3, -3) * pixel));
748
+ vec4 t07 = filter1D_radius4(kernel, index, f.x,
749
+ texture3D(texture, texel + vec3(-3, 4, -3) * pixel),
750
+ texture3D(texture, texel + vec3(-2, 4, -3) * pixel),
751
+ texture3D(texture, texel + vec3(-1, 4, -3) * pixel),
752
+ texture3D(texture, texel + vec3(0, 4, -3) * pixel),
753
+ texture3D(texture, texel + vec3(1, 4, -3) * pixel),
754
+ texture3D(texture, texel + vec3(2, 4, -3) * pixel),
755
+ texture3D(texture, texel + vec3(3, 4, -3) * pixel),
756
+ texture3D(texture, texel + vec3(4, 4, -3) * pixel));
757
+ vec4 t10 = filter1D_radius4(kernel, index, f.x,
758
+ texture3D(texture, texel + vec3(-3, -3, -2) * pixel),
759
+ texture3D(texture, texel + vec3(-2, -3, -2) * pixel),
760
+ texture3D(texture, texel + vec3(-1, -3, -2) * pixel),
761
+ texture3D(texture, texel + vec3(0, -3, -2) * pixel),
762
+ texture3D(texture, texel + vec3(1, -3, -2) * pixel),
763
+ texture3D(texture, texel + vec3(2, -3, -2) * pixel),
764
+ texture3D(texture, texel + vec3(3, -3, -2) * pixel),
765
+ texture3D(texture, texel + vec3(4, -3, -2) * pixel));
766
+ vec4 t11 = filter1D_radius4(kernel, index, f.x,
767
+ texture3D(texture, texel + vec3(-3, -2, -2) * pixel),
768
+ texture3D(texture, texel + vec3(-2, -2, -2) * pixel),
769
+ texture3D(texture, texel + vec3(-1, -2, -2) * pixel),
770
+ texture3D(texture, texel + vec3(0, -2, -2) * pixel),
771
+ texture3D(texture, texel + vec3(1, -2, -2) * pixel),
772
+ texture3D(texture, texel + vec3(2, -2, -2) * pixel),
773
+ texture3D(texture, texel + vec3(3, -2, -2) * pixel),
774
+ texture3D(texture, texel + vec3(4, -2, -2) * pixel));
775
+ vec4 t12 = filter1D_radius4(kernel, index, f.x,
776
+ texture3D(texture, texel + vec3(-3, -1, -2) * pixel),
777
+ texture3D(texture, texel + vec3(-2, -1, -2) * pixel),
778
+ texture3D(texture, texel + vec3(-1, -1, -2) * pixel),
779
+ texture3D(texture, texel + vec3(0, -1, -2) * pixel),
780
+ texture3D(texture, texel + vec3(1, -1, -2) * pixel),
781
+ texture3D(texture, texel + vec3(2, -1, -2) * pixel),
782
+ texture3D(texture, texel + vec3(3, -1, -2) * pixel),
783
+ texture3D(texture, texel + vec3(4, -1, -2) * pixel));
784
+ vec4 t13 = filter1D_radius4(kernel, index, f.x,
785
+ texture3D(texture, texel + vec3(-3, 0, -2) * pixel),
786
+ texture3D(texture, texel + vec3(-2, 0, -2) * pixel),
787
+ texture3D(texture, texel + vec3(-1, 0, -2) * pixel),
788
+ texture3D(texture, texel + vec3(0, 0, -2) * pixel),
789
+ texture3D(texture, texel + vec3(1, 0, -2) * pixel),
790
+ texture3D(texture, texel + vec3(2, 0, -2) * pixel),
791
+ texture3D(texture, texel + vec3(3, 0, -2) * pixel),
792
+ texture3D(texture, texel + vec3(4, 0, -2) * pixel));
793
+ vec4 t14 = filter1D_radius4(kernel, index, f.x,
794
+ texture3D(texture, texel + vec3(-3, 1, -2) * pixel),
795
+ texture3D(texture, texel + vec3(-2, 1, -2) * pixel),
796
+ texture3D(texture, texel + vec3(-1, 1, -2) * pixel),
797
+ texture3D(texture, texel + vec3(0, 1, -2) * pixel),
798
+ texture3D(texture, texel + vec3(1, 1, -2) * pixel),
799
+ texture3D(texture, texel + vec3(2, 1, -2) * pixel),
800
+ texture3D(texture, texel + vec3(3, 1, -2) * pixel),
801
+ texture3D(texture, texel + vec3(4, 1, -2) * pixel));
802
+ vec4 t15 = filter1D_radius4(kernel, index, f.x,
803
+ texture3D(texture, texel + vec3(-3, 2, -2) * pixel),
804
+ texture3D(texture, texel + vec3(-2, 2, -2) * pixel),
805
+ texture3D(texture, texel + vec3(-1, 2, -2) * pixel),
806
+ texture3D(texture, texel + vec3(0, 2, -2) * pixel),
807
+ texture3D(texture, texel + vec3(1, 2, -2) * pixel),
808
+ texture3D(texture, texel + vec3(2, 2, -2) * pixel),
809
+ texture3D(texture, texel + vec3(3, 2, -2) * pixel),
810
+ texture3D(texture, texel + vec3(4, 2, -2) * pixel));
811
+ vec4 t16 = filter1D_radius4(kernel, index, f.x,
812
+ texture3D(texture, texel + vec3(-3, 3, -2) * pixel),
813
+ texture3D(texture, texel + vec3(-2, 3, -2) * pixel),
814
+ texture3D(texture, texel + vec3(-1, 3, -2) * pixel),
815
+ texture3D(texture, texel + vec3(0, 3, -2) * pixel),
816
+ texture3D(texture, texel + vec3(1, 3, -2) * pixel),
817
+ texture3D(texture, texel + vec3(2, 3, -2) * pixel),
818
+ texture3D(texture, texel + vec3(3, 3, -2) * pixel),
819
+ texture3D(texture, texel + vec3(4, 3, -2) * pixel));
820
+ vec4 t17 = filter1D_radius4(kernel, index, f.x,
821
+ texture3D(texture, texel + vec3(-3, 4, -2) * pixel),
822
+ texture3D(texture, texel + vec3(-2, 4, -2) * pixel),
823
+ texture3D(texture, texel + vec3(-1, 4, -2) * pixel),
824
+ texture3D(texture, texel + vec3(0, 4, -2) * pixel),
825
+ texture3D(texture, texel + vec3(1, 4, -2) * pixel),
826
+ texture3D(texture, texel + vec3(2, 4, -2) * pixel),
827
+ texture3D(texture, texel + vec3(3, 4, -2) * pixel),
828
+ texture3D(texture, texel + vec3(4, 4, -2) * pixel));
829
+ vec4 t20 = filter1D_radius4(kernel, index, f.x,
830
+ texture3D(texture, texel + vec3(-3, -3, -1) * pixel),
831
+ texture3D(texture, texel + vec3(-2, -3, -1) * pixel),
832
+ texture3D(texture, texel + vec3(-1, -3, -1) * pixel),
833
+ texture3D(texture, texel + vec3(0, -3, -1) * pixel),
834
+ texture3D(texture, texel + vec3(1, -3, -1) * pixel),
835
+ texture3D(texture, texel + vec3(2, -3, -1) * pixel),
836
+ texture3D(texture, texel + vec3(3, -3, -1) * pixel),
837
+ texture3D(texture, texel + vec3(4, -3, -1) * pixel));
838
+ vec4 t21 = filter1D_radius4(kernel, index, f.x,
839
+ texture3D(texture, texel + vec3(-3, -2, -1) * pixel),
840
+ texture3D(texture, texel + vec3(-2, -2, -1) * pixel),
841
+ texture3D(texture, texel + vec3(-1, -2, -1) * pixel),
842
+ texture3D(texture, texel + vec3(0, -2, -1) * pixel),
843
+ texture3D(texture, texel + vec3(1, -2, -1) * pixel),
844
+ texture3D(texture, texel + vec3(2, -2, -1) * pixel),
845
+ texture3D(texture, texel + vec3(3, -2, -1) * pixel),
846
+ texture3D(texture, texel + vec3(4, -2, -1) * pixel));
847
+ vec4 t22 = filter1D_radius4(kernel, index, f.x,
848
+ texture3D(texture, texel + vec3(-3, -1, -1) * pixel),
849
+ texture3D(texture, texel + vec3(-2, -1, -1) * pixel),
850
+ texture3D(texture, texel + vec3(-1, -1, -1) * pixel),
851
+ texture3D(texture, texel + vec3(0, -1, -1) * pixel),
852
+ texture3D(texture, texel + vec3(1, -1, -1) * pixel),
853
+ texture3D(texture, texel + vec3(2, -1, -1) * pixel),
854
+ texture3D(texture, texel + vec3(3, -1, -1) * pixel),
855
+ texture3D(texture, texel + vec3(4, -1, -1) * pixel));
856
+ vec4 t23 = filter1D_radius4(kernel, index, f.x,
857
+ texture3D(texture, texel + vec3(-3, 0, -1) * pixel),
858
+ texture3D(texture, texel + vec3(-2, 0, -1) * pixel),
859
+ texture3D(texture, texel + vec3(-1, 0, -1) * pixel),
860
+ texture3D(texture, texel + vec3(0, 0, -1) * pixel),
861
+ texture3D(texture, texel + vec3(1, 0, -1) * pixel),
862
+ texture3D(texture, texel + vec3(2, 0, -1) * pixel),
863
+ texture3D(texture, texel + vec3(3, 0, -1) * pixel),
864
+ texture3D(texture, texel + vec3(4, 0, -1) * pixel));
865
+ vec4 t24 = filter1D_radius4(kernel, index, f.x,
866
+ texture3D(texture, texel + vec3(-3, 1, -1) * pixel),
867
+ texture3D(texture, texel + vec3(-2, 1, -1) * pixel),
868
+ texture3D(texture, texel + vec3(-1, 1, -1) * pixel),
869
+ texture3D(texture, texel + vec3(0, 1, -1) * pixel),
870
+ texture3D(texture, texel + vec3(1, 1, -1) * pixel),
871
+ texture3D(texture, texel + vec3(2, 1, -1) * pixel),
872
+ texture3D(texture, texel + vec3(3, 1, -1) * pixel),
873
+ texture3D(texture, texel + vec3(4, 1, -1) * pixel));
874
+ vec4 t25 = filter1D_radius4(kernel, index, f.x,
875
+ texture3D(texture, texel + vec3(-3, 2, -1) * pixel),
876
+ texture3D(texture, texel + vec3(-2, 2, -1) * pixel),
877
+ texture3D(texture, texel + vec3(-1, 2, -1) * pixel),
878
+ texture3D(texture, texel + vec3(0, 2, -1) * pixel),
879
+ texture3D(texture, texel + vec3(1, 2, -1) * pixel),
880
+ texture3D(texture, texel + vec3(2, 2, -1) * pixel),
881
+ texture3D(texture, texel + vec3(3, 2, -1) * pixel),
882
+ texture3D(texture, texel + vec3(4, 2, -1) * pixel));
883
+ vec4 t26 = filter1D_radius4(kernel, index, f.x,
884
+ texture3D(texture, texel + vec3(-3, 3, -1) * pixel),
885
+ texture3D(texture, texel + vec3(-2, 3, -1) * pixel),
886
+ texture3D(texture, texel + vec3(-1, 3, -1) * pixel),
887
+ texture3D(texture, texel + vec3(0, 3, -1) * pixel),
888
+ texture3D(texture, texel + vec3(1, 3, -1) * pixel),
889
+ texture3D(texture, texel + vec3(2, 3, -1) * pixel),
890
+ texture3D(texture, texel + vec3(3, 3, -1) * pixel),
891
+ texture3D(texture, texel + vec3(4, 3, -1) * pixel));
892
+ vec4 t27 = filter1D_radius4(kernel, index, f.x,
893
+ texture3D(texture, texel + vec3(-3, 4, -1) * pixel),
894
+ texture3D(texture, texel + vec3(-2, 4, -1) * pixel),
895
+ texture3D(texture, texel + vec3(-1, 4, -1) * pixel),
896
+ texture3D(texture, texel + vec3(0, 4, -1) * pixel),
897
+ texture3D(texture, texel + vec3(1, 4, -1) * pixel),
898
+ texture3D(texture, texel + vec3(2, 4, -1) * pixel),
899
+ texture3D(texture, texel + vec3(3, 4, -1) * pixel),
900
+ texture3D(texture, texel + vec3(4, 4, -1) * pixel));
901
+ vec4 t30 = filter1D_radius4(kernel, index, f.x,
902
+ texture3D(texture, texel + vec3(-3, -3, 0) * pixel),
903
+ texture3D(texture, texel + vec3(-2, -3, 0) * pixel),
904
+ texture3D(texture, texel + vec3(-1, -3, 0) * pixel),
905
+ texture3D(texture, texel + vec3(0, -3, 0) * pixel),
906
+ texture3D(texture, texel + vec3(1, -3, 0) * pixel),
907
+ texture3D(texture, texel + vec3(2, -3, 0) * pixel),
908
+ texture3D(texture, texel + vec3(3, -3, 0) * pixel),
909
+ texture3D(texture, texel + vec3(4, -3, 0) * pixel));
910
+ vec4 t31 = filter1D_radius4(kernel, index, f.x,
911
+ texture3D(texture, texel + vec3(-3, -2, 0) * pixel),
912
+ texture3D(texture, texel + vec3(-2, -2, 0) * pixel),
913
+ texture3D(texture, texel + vec3(-1, -2, 0) * pixel),
914
+ texture3D(texture, texel + vec3(0, -2, 0) * pixel),
915
+ texture3D(texture, texel + vec3(1, -2, 0) * pixel),
916
+ texture3D(texture, texel + vec3(2, -2, 0) * pixel),
917
+ texture3D(texture, texel + vec3(3, -2, 0) * pixel),
918
+ texture3D(texture, texel + vec3(4, -2, 0) * pixel));
919
+ vec4 t32 = filter1D_radius4(kernel, index, f.x,
920
+ texture3D(texture, texel + vec3(-3, -1, 0) * pixel),
921
+ texture3D(texture, texel + vec3(-2, -1, 0) * pixel),
922
+ texture3D(texture, texel + vec3(-1, -1, 0) * pixel),
923
+ texture3D(texture, texel + vec3(0, -1, 0) * pixel),
924
+ texture3D(texture, texel + vec3(1, -1, 0) * pixel),
925
+ texture3D(texture, texel + vec3(2, -1, 0) * pixel),
926
+ texture3D(texture, texel + vec3(3, -1, 0) * pixel),
927
+ texture3D(texture, texel + vec3(4, -1, 0) * pixel));
928
+ vec4 t33 = filter1D_radius4(kernel, index, f.x,
929
+ texture3D(texture, texel + vec3(-3, 0, 0) * pixel),
930
+ texture3D(texture, texel + vec3(-2, 0, 0) * pixel),
931
+ texture3D(texture, texel + vec3(-1, 0, 0) * pixel),
932
+ texture3D(texture, texel + vec3(0, 0, 0) * pixel),
933
+ texture3D(texture, texel + vec3(1, 0, 0) * pixel),
934
+ texture3D(texture, texel + vec3(2, 0, 0) * pixel),
935
+ texture3D(texture, texel + vec3(3, 0, 0) * pixel),
936
+ texture3D(texture, texel + vec3(4, 0, 0) * pixel));
937
+ vec4 t34 = filter1D_radius4(kernel, index, f.x,
938
+ texture3D(texture, texel + vec3(-3, 1, 0) * pixel),
939
+ texture3D(texture, texel + vec3(-2, 1, 0) * pixel),
940
+ texture3D(texture, texel + vec3(-1, 1, 0) * pixel),
941
+ texture3D(texture, texel + vec3(0, 1, 0) * pixel),
942
+ texture3D(texture, texel + vec3(1, 1, 0) * pixel),
943
+ texture3D(texture, texel + vec3(2, 1, 0) * pixel),
944
+ texture3D(texture, texel + vec3(3, 1, 0) * pixel),
945
+ texture3D(texture, texel + vec3(4, 1, 0) * pixel));
946
+ vec4 t35 = filter1D_radius4(kernel, index, f.x,
947
+ texture3D(texture, texel + vec3(-3, 2, 0) * pixel),
948
+ texture3D(texture, texel + vec3(-2, 2, 0) * pixel),
949
+ texture3D(texture, texel + vec3(-1, 2, 0) * pixel),
950
+ texture3D(texture, texel + vec3(0, 2, 0) * pixel),
951
+ texture3D(texture, texel + vec3(1, 2, 0) * pixel),
952
+ texture3D(texture, texel + vec3(2, 2, 0) * pixel),
953
+ texture3D(texture, texel + vec3(3, 2, 0) * pixel),
954
+ texture3D(texture, texel + vec3(4, 2, 0) * pixel));
955
+ vec4 t36 = filter1D_radius4(kernel, index, f.x,
956
+ texture3D(texture, texel + vec3(-3, 3, 0) * pixel),
957
+ texture3D(texture, texel + vec3(-2, 3, 0) * pixel),
958
+ texture3D(texture, texel + vec3(-1, 3, 0) * pixel),
959
+ texture3D(texture, texel + vec3(0, 3, 0) * pixel),
960
+ texture3D(texture, texel + vec3(1, 3, 0) * pixel),
961
+ texture3D(texture, texel + vec3(2, 3, 0) * pixel),
962
+ texture3D(texture, texel + vec3(3, 3, 0) * pixel),
963
+ texture3D(texture, texel + vec3(4, 3, 0) * pixel));
964
+ vec4 t37 = filter1D_radius4(kernel, index, f.x,
965
+ texture3D(texture, texel + vec3(-3, 4, 0) * pixel),
966
+ texture3D(texture, texel + vec3(-2, 4, 0) * pixel),
967
+ texture3D(texture, texel + vec3(-1, 4, 0) * pixel),
968
+ texture3D(texture, texel + vec3(0, 4, 0) * pixel),
969
+ texture3D(texture, texel + vec3(1, 4, 0) * pixel),
970
+ texture3D(texture, texel + vec3(2, 4, 0) * pixel),
971
+ texture3D(texture, texel + vec3(3, 4, 0) * pixel),
972
+ texture3D(texture, texel + vec3(4, 4, 0) * pixel));
973
+ vec4 t40 = filter1D_radius4(kernel, index, f.x,
974
+ texture3D(texture, texel + vec3(-3, -3, 1) * pixel),
975
+ texture3D(texture, texel + vec3(-2, -3, 1) * pixel),
976
+ texture3D(texture, texel + vec3(-1, -3, 1) * pixel),
977
+ texture3D(texture, texel + vec3(0, -3, 1) * pixel),
978
+ texture3D(texture, texel + vec3(1, -3, 1) * pixel),
979
+ texture3D(texture, texel + vec3(2, -3, 1) * pixel),
980
+ texture3D(texture, texel + vec3(3, -3, 1) * pixel),
981
+ texture3D(texture, texel + vec3(4, -3, 1) * pixel));
982
+ vec4 t41 = filter1D_radius4(kernel, index, f.x,
983
+ texture3D(texture, texel + vec3(-3, -2, 1) * pixel),
984
+ texture3D(texture, texel + vec3(-2, -2, 1) * pixel),
985
+ texture3D(texture, texel + vec3(-1, -2, 1) * pixel),
986
+ texture3D(texture, texel + vec3(0, -2, 1) * pixel),
987
+ texture3D(texture, texel + vec3(1, -2, 1) * pixel),
988
+ texture3D(texture, texel + vec3(2, -2, 1) * pixel),
989
+ texture3D(texture, texel + vec3(3, -2, 1) * pixel),
990
+ texture3D(texture, texel + vec3(4, -2, 1) * pixel));
991
+ vec4 t42 = filter1D_radius4(kernel, index, f.x,
992
+ texture3D(texture, texel + vec3(-3, -1, 1) * pixel),
993
+ texture3D(texture, texel + vec3(-2, -1, 1) * pixel),
994
+ texture3D(texture, texel + vec3(-1, -1, 1) * pixel),
995
+ texture3D(texture, texel + vec3(0, -1, 1) * pixel),
996
+ texture3D(texture, texel + vec3(1, -1, 1) * pixel),
997
+ texture3D(texture, texel + vec3(2, -1, 1) * pixel),
998
+ texture3D(texture, texel + vec3(3, -1, 1) * pixel),
999
+ texture3D(texture, texel + vec3(4, -1, 1) * pixel));
1000
+ vec4 t43 = filter1D_radius4(kernel, index, f.x,
1001
+ texture3D(texture, texel + vec3(-3, 0, 1) * pixel),
1002
+ texture3D(texture, texel + vec3(-2, 0, 1) * pixel),
1003
+ texture3D(texture, texel + vec3(-1, 0, 1) * pixel),
1004
+ texture3D(texture, texel + vec3(0, 0, 1) * pixel),
1005
+ texture3D(texture, texel + vec3(1, 0, 1) * pixel),
1006
+ texture3D(texture, texel + vec3(2, 0, 1) * pixel),
1007
+ texture3D(texture, texel + vec3(3, 0, 1) * pixel),
1008
+ texture3D(texture, texel + vec3(4, 0, 1) * pixel));
1009
+ vec4 t44 = filter1D_radius4(kernel, index, f.x,
1010
+ texture3D(texture, texel + vec3(-3, 1, 1) * pixel),
1011
+ texture3D(texture, texel + vec3(-2, 1, 1) * pixel),
1012
+ texture3D(texture, texel + vec3(-1, 1, 1) * pixel),
1013
+ texture3D(texture, texel + vec3(0, 1, 1) * pixel),
1014
+ texture3D(texture, texel + vec3(1, 1, 1) * pixel),
1015
+ texture3D(texture, texel + vec3(2, 1, 1) * pixel),
1016
+ texture3D(texture, texel + vec3(3, 1, 1) * pixel),
1017
+ texture3D(texture, texel + vec3(4, 1, 1) * pixel));
1018
+ vec4 t45 = filter1D_radius4(kernel, index, f.x,
1019
+ texture3D(texture, texel + vec3(-3, 2, 1) * pixel),
1020
+ texture3D(texture, texel + vec3(-2, 2, 1) * pixel),
1021
+ texture3D(texture, texel + vec3(-1, 2, 1) * pixel),
1022
+ texture3D(texture, texel + vec3(0, 2, 1) * pixel),
1023
+ texture3D(texture, texel + vec3(1, 2, 1) * pixel),
1024
+ texture3D(texture, texel + vec3(2, 2, 1) * pixel),
1025
+ texture3D(texture, texel + vec3(3, 2, 1) * pixel),
1026
+ texture3D(texture, texel + vec3(4, 2, 1) * pixel));
1027
+ vec4 t46 = filter1D_radius4(kernel, index, f.x,
1028
+ texture3D(texture, texel + vec3(-3, 3, 1) * pixel),
1029
+ texture3D(texture, texel + vec3(-2, 3, 1) * pixel),
1030
+ texture3D(texture, texel + vec3(-1, 3, 1) * pixel),
1031
+ texture3D(texture, texel + vec3(0, 3, 1) * pixel),
1032
+ texture3D(texture, texel + vec3(1, 3, 1) * pixel),
1033
+ texture3D(texture, texel + vec3(2, 3, 1) * pixel),
1034
+ texture3D(texture, texel + vec3(3, 3, 1) * pixel),
1035
+ texture3D(texture, texel + vec3(4, 3, 1) * pixel));
1036
+ vec4 t47 = filter1D_radius4(kernel, index, f.x,
1037
+ texture3D(texture, texel + vec3(-3, 4, 1) * pixel),
1038
+ texture3D(texture, texel + vec3(-2, 4, 1) * pixel),
1039
+ texture3D(texture, texel + vec3(-1, 4, 1) * pixel),
1040
+ texture3D(texture, texel + vec3(0, 4, 1) * pixel),
1041
+ texture3D(texture, texel + vec3(1, 4, 1) * pixel),
1042
+ texture3D(texture, texel + vec3(2, 4, 1) * pixel),
1043
+ texture3D(texture, texel + vec3(3, 4, 1) * pixel),
1044
+ texture3D(texture, texel + vec3(4, 4, 1) * pixel));
1045
+ vec4 t50 = filter1D_radius4(kernel, index, f.x,
1046
+ texture3D(texture, texel + vec3(-3, -3, 2) * pixel),
1047
+ texture3D(texture, texel + vec3(-2, -3, 2) * pixel),
1048
+ texture3D(texture, texel + vec3(-1, -3, 2) * pixel),
1049
+ texture3D(texture, texel + vec3(0, -3, 2) * pixel),
1050
+ texture3D(texture, texel + vec3(1, -3, 2) * pixel),
1051
+ texture3D(texture, texel + vec3(2, -3, 2) * pixel),
1052
+ texture3D(texture, texel + vec3(3, -3, 2) * pixel),
1053
+ texture3D(texture, texel + vec3(4, -3, 2) * pixel));
1054
+ vec4 t51 = filter1D_radius4(kernel, index, f.x,
1055
+ texture3D(texture, texel + vec3(-3, -2, 2) * pixel),
1056
+ texture3D(texture, texel + vec3(-2, -2, 2) * pixel),
1057
+ texture3D(texture, texel + vec3(-1, -2, 2) * pixel),
1058
+ texture3D(texture, texel + vec3(0, -2, 2) * pixel),
1059
+ texture3D(texture, texel + vec3(1, -2, 2) * pixel),
1060
+ texture3D(texture, texel + vec3(2, -2, 2) * pixel),
1061
+ texture3D(texture, texel + vec3(3, -2, 2) * pixel),
1062
+ texture3D(texture, texel + vec3(4, -2, 2) * pixel));
1063
+ vec4 t52 = filter1D_radius4(kernel, index, f.x,
1064
+ texture3D(texture, texel + vec3(-3, -1, 2) * pixel),
1065
+ texture3D(texture, texel + vec3(-2, -1, 2) * pixel),
1066
+ texture3D(texture, texel + vec3(-1, -1, 2) * pixel),
1067
+ texture3D(texture, texel + vec3(0, -1, 2) * pixel),
1068
+ texture3D(texture, texel + vec3(1, -1, 2) * pixel),
1069
+ texture3D(texture, texel + vec3(2, -1, 2) * pixel),
1070
+ texture3D(texture, texel + vec3(3, -1, 2) * pixel),
1071
+ texture3D(texture, texel + vec3(4, -1, 2) * pixel));
1072
+ vec4 t53 = filter1D_radius4(kernel, index, f.x,
1073
+ texture3D(texture, texel + vec3(-3, 0, 2) * pixel),
1074
+ texture3D(texture, texel + vec3(-2, 0, 2) * pixel),
1075
+ texture3D(texture, texel + vec3(-1, 0, 2) * pixel),
1076
+ texture3D(texture, texel + vec3(0, 0, 2) * pixel),
1077
+ texture3D(texture, texel + vec3(1, 0, 2) * pixel),
1078
+ texture3D(texture, texel + vec3(2, 0, 2) * pixel),
1079
+ texture3D(texture, texel + vec3(3, 0, 2) * pixel),
1080
+ texture3D(texture, texel + vec3(4, 0, 2) * pixel));
1081
+ vec4 t54 = filter1D_radius4(kernel, index, f.x,
1082
+ texture3D(texture, texel + vec3(-3, 1, 2) * pixel),
1083
+ texture3D(texture, texel + vec3(-2, 1, 2) * pixel),
1084
+ texture3D(texture, texel + vec3(-1, 1, 2) * pixel),
1085
+ texture3D(texture, texel + vec3(0, 1, 2) * pixel),
1086
+ texture3D(texture, texel + vec3(1, 1, 2) * pixel),
1087
+ texture3D(texture, texel + vec3(2, 1, 2) * pixel),
1088
+ texture3D(texture, texel + vec3(3, 1, 2) * pixel),
1089
+ texture3D(texture, texel + vec3(4, 1, 2) * pixel));
1090
+ vec4 t55 = filter1D_radius4(kernel, index, f.x,
1091
+ texture3D(texture, texel + vec3(-3, 2, 2) * pixel),
1092
+ texture3D(texture, texel + vec3(-2, 2, 2) * pixel),
1093
+ texture3D(texture, texel + vec3(-1, 2, 2) * pixel),
1094
+ texture3D(texture, texel + vec3(0, 2, 2) * pixel),
1095
+ texture3D(texture, texel + vec3(1, 2, 2) * pixel),
1096
+ texture3D(texture, texel + vec3(2, 2, 2) * pixel),
1097
+ texture3D(texture, texel + vec3(3, 2, 2) * pixel),
1098
+ texture3D(texture, texel + vec3(4, 2, 2) * pixel));
1099
+ vec4 t56 = filter1D_radius4(kernel, index, f.x,
1100
+ texture3D(texture, texel + vec3(-3, 3, 2) * pixel),
1101
+ texture3D(texture, texel + vec3(-2, 3, 2) * pixel),
1102
+ texture3D(texture, texel + vec3(-1, 3, 2) * pixel),
1103
+ texture3D(texture, texel + vec3(0, 3, 2) * pixel),
1104
+ texture3D(texture, texel + vec3(1, 3, 2) * pixel),
1105
+ texture3D(texture, texel + vec3(2, 3, 2) * pixel),
1106
+ texture3D(texture, texel + vec3(3, 3, 2) * pixel),
1107
+ texture3D(texture, texel + vec3(4, 3, 2) * pixel));
1108
+ vec4 t57 = filter1D_radius4(kernel, index, f.x,
1109
+ texture3D(texture, texel + vec3(-3, 4, 2) * pixel),
1110
+ texture3D(texture, texel + vec3(-2, 4, 2) * pixel),
1111
+ texture3D(texture, texel + vec3(-1, 4, 2) * pixel),
1112
+ texture3D(texture, texel + vec3(0, 4, 2) * pixel),
1113
+ texture3D(texture, texel + vec3(1, 4, 2) * pixel),
1114
+ texture3D(texture, texel + vec3(2, 4, 2) * pixel),
1115
+ texture3D(texture, texel + vec3(3, 4, 2) * pixel),
1116
+ texture3D(texture, texel + vec3(4, 4, 2) * pixel));
1117
+ vec4 t60 = filter1D_radius4(kernel, index, f.x,
1118
+ texture3D(texture, texel + vec3(-3, -3, 3) * pixel),
1119
+ texture3D(texture, texel + vec3(-2, -3, 3) * pixel),
1120
+ texture3D(texture, texel + vec3(-1, -3, 3) * pixel),
1121
+ texture3D(texture, texel + vec3(0, -3, 3) * pixel),
1122
+ texture3D(texture, texel + vec3(1, -3, 3) * pixel),
1123
+ texture3D(texture, texel + vec3(2, -3, 3) * pixel),
1124
+ texture3D(texture, texel + vec3(3, -3, 3) * pixel),
1125
+ texture3D(texture, texel + vec3(4, -3, 3) * pixel));
1126
+ vec4 t61 = filter1D_radius4(kernel, index, f.x,
1127
+ texture3D(texture, texel + vec3(-3, -2, 3) * pixel),
1128
+ texture3D(texture, texel + vec3(-2, -2, 3) * pixel),
1129
+ texture3D(texture, texel + vec3(-1, -2, 3) * pixel),
1130
+ texture3D(texture, texel + vec3(0, -2, 3) * pixel),
1131
+ texture3D(texture, texel + vec3(1, -2, 3) * pixel),
1132
+ texture3D(texture, texel + vec3(2, -2, 3) * pixel),
1133
+ texture3D(texture, texel + vec3(3, -2, 3) * pixel),
1134
+ texture3D(texture, texel + vec3(4, -2, 3) * pixel));
1135
+ vec4 t62 = filter1D_radius4(kernel, index, f.x,
1136
+ texture3D(texture, texel + vec3(-3, -1, 3) * pixel),
1137
+ texture3D(texture, texel + vec3(-2, -1, 3) * pixel),
1138
+ texture3D(texture, texel + vec3(-1, -1, 3) * pixel),
1139
+ texture3D(texture, texel + vec3(0, -1, 3) * pixel),
1140
+ texture3D(texture, texel + vec3(1, -1, 3) * pixel),
1141
+ texture3D(texture, texel + vec3(2, -1, 3) * pixel),
1142
+ texture3D(texture, texel + vec3(3, -1, 3) * pixel),
1143
+ texture3D(texture, texel + vec3(4, -1, 3) * pixel));
1144
+ vec4 t63 = filter1D_radius4(kernel, index, f.x,
1145
+ texture3D(texture, texel + vec3(-3, 0, 3) * pixel),
1146
+ texture3D(texture, texel + vec3(-2, 0, 3) * pixel),
1147
+ texture3D(texture, texel + vec3(-1, 0, 3) * pixel),
1148
+ texture3D(texture, texel + vec3(0, 0, 3) * pixel),
1149
+ texture3D(texture, texel + vec3(1, 0, 3) * pixel),
1150
+ texture3D(texture, texel + vec3(2, 0, 3) * pixel),
1151
+ texture3D(texture, texel + vec3(3, 0, 3) * pixel),
1152
+ texture3D(texture, texel + vec3(4, 0, 3) * pixel));
1153
+ vec4 t64 = filter1D_radius4(kernel, index, f.x,
1154
+ texture3D(texture, texel + vec3(-3, 1, 3) * pixel),
1155
+ texture3D(texture, texel + vec3(-2, 1, 3) * pixel),
1156
+ texture3D(texture, texel + vec3(-1, 1, 3) * pixel),
1157
+ texture3D(texture, texel + vec3(0, 1, 3) * pixel),
1158
+ texture3D(texture, texel + vec3(1, 1, 3) * pixel),
1159
+ texture3D(texture, texel + vec3(2, 1, 3) * pixel),
1160
+ texture3D(texture, texel + vec3(3, 1, 3) * pixel),
1161
+ texture3D(texture, texel + vec3(4, 1, 3) * pixel));
1162
+ vec4 t65 = filter1D_radius4(kernel, index, f.x,
1163
+ texture3D(texture, texel + vec3(-3, 2, 3) * pixel),
1164
+ texture3D(texture, texel + vec3(-2, 2, 3) * pixel),
1165
+ texture3D(texture, texel + vec3(-1, 2, 3) * pixel),
1166
+ texture3D(texture, texel + vec3(0, 2, 3) * pixel),
1167
+ texture3D(texture, texel + vec3(1, 2, 3) * pixel),
1168
+ texture3D(texture, texel + vec3(2, 2, 3) * pixel),
1169
+ texture3D(texture, texel + vec3(3, 2, 3) * pixel),
1170
+ texture3D(texture, texel + vec3(4, 2, 3) * pixel));
1171
+ vec4 t66 = filter1D_radius4(kernel, index, f.x,
1172
+ texture3D(texture, texel + vec3(-3, 3, 3) * pixel),
1173
+ texture3D(texture, texel + vec3(-2, 3, 3) * pixel),
1174
+ texture3D(texture, texel + vec3(-1, 3, 3) * pixel),
1175
+ texture3D(texture, texel + vec3(0, 3, 3) * pixel),
1176
+ texture3D(texture, texel + vec3(1, 3, 3) * pixel),
1177
+ texture3D(texture, texel + vec3(2, 3, 3) * pixel),
1178
+ texture3D(texture, texel + vec3(3, 3, 3) * pixel),
1179
+ texture3D(texture, texel + vec3(4, 3, 3) * pixel));
1180
+ vec4 t67 = filter1D_radius4(kernel, index, f.x,
1181
+ texture3D(texture, texel + vec3(-3, 4, 3) * pixel),
1182
+ texture3D(texture, texel + vec3(-2, 4, 3) * pixel),
1183
+ texture3D(texture, texel + vec3(-1, 4, 3) * pixel),
1184
+ texture3D(texture, texel + vec3(0, 4, 3) * pixel),
1185
+ texture3D(texture, texel + vec3(1, 4, 3) * pixel),
1186
+ texture3D(texture, texel + vec3(2, 4, 3) * pixel),
1187
+ texture3D(texture, texel + vec3(3, 4, 3) * pixel),
1188
+ texture3D(texture, texel + vec3(4, 4, 3) * pixel));
1189
+ vec4 t70 = filter1D_radius4(kernel, index, f.x,
1190
+ texture3D(texture, texel + vec3(-3, -3, 4) * pixel),
1191
+ texture3D(texture, texel + vec3(-2, -3, 4) * pixel),
1192
+ texture3D(texture, texel + vec3(-1, -3, 4) * pixel),
1193
+ texture3D(texture, texel + vec3(0, -3, 4) * pixel),
1194
+ texture3D(texture, texel + vec3(1, -3, 4) * pixel),
1195
+ texture3D(texture, texel + vec3(2, -3, 4) * pixel),
1196
+ texture3D(texture, texel + vec3(3, -3, 4) * pixel),
1197
+ texture3D(texture, texel + vec3(4, -3, 4) * pixel));
1198
+ vec4 t71 = filter1D_radius4(kernel, index, f.x,
1199
+ texture3D(texture, texel + vec3(-3, -2, 4) * pixel),
1200
+ texture3D(texture, texel + vec3(-2, -2, 4) * pixel),
1201
+ texture3D(texture, texel + vec3(-1, -2, 4) * pixel),
1202
+ texture3D(texture, texel + vec3(0, -2, 4) * pixel),
1203
+ texture3D(texture, texel + vec3(1, -2, 4) * pixel),
1204
+ texture3D(texture, texel + vec3(2, -2, 4) * pixel),
1205
+ texture3D(texture, texel + vec3(3, -2, 4) * pixel),
1206
+ texture3D(texture, texel + vec3(4, -2, 4) * pixel));
1207
+ vec4 t72 = filter1D_radius4(kernel, index, f.x,
1208
+ texture3D(texture, texel + vec3(-3, -1, 4) * pixel),
1209
+ texture3D(texture, texel + vec3(-2, -1, 4) * pixel),
1210
+ texture3D(texture, texel + vec3(-1, -1, 4) * pixel),
1211
+ texture3D(texture, texel + vec3(0, -1, 4) * pixel),
1212
+ texture3D(texture, texel + vec3(1, -1, 4) * pixel),
1213
+ texture3D(texture, texel + vec3(2, -1, 4) * pixel),
1214
+ texture3D(texture, texel + vec3(3, -1, 4) * pixel),
1215
+ texture3D(texture, texel + vec3(4, -1, 4) * pixel));
1216
+ vec4 t73 = filter1D_radius4(kernel, index, f.x,
1217
+ texture3D(texture, texel + vec3(-3, 0, 4) * pixel),
1218
+ texture3D(texture, texel + vec3(-2, 0, 4) * pixel),
1219
+ texture3D(texture, texel + vec3(-1, 0, 4) * pixel),
1220
+ texture3D(texture, texel + vec3(0, 0, 4) * pixel),
1221
+ texture3D(texture, texel + vec3(1, 0, 4) * pixel),
1222
+ texture3D(texture, texel + vec3(2, 0, 4) * pixel),
1223
+ texture3D(texture, texel + vec3(3, 0, 4) * pixel),
1224
+ texture3D(texture, texel + vec3(4, 0, 4) * pixel));
1225
+ vec4 t74 = filter1D_radius4(kernel, index, f.x,
1226
+ texture3D(texture, texel + vec3(-3, 1, 4) * pixel),
1227
+ texture3D(texture, texel + vec3(-2, 1, 4) * pixel),
1228
+ texture3D(texture, texel + vec3(-1, 1, 4) * pixel),
1229
+ texture3D(texture, texel + vec3(0, 1, 4) * pixel),
1230
+ texture3D(texture, texel + vec3(1, 1, 4) * pixel),
1231
+ texture3D(texture, texel + vec3(2, 1, 4) * pixel),
1232
+ texture3D(texture, texel + vec3(3, 1, 4) * pixel),
1233
+ texture3D(texture, texel + vec3(4, 1, 4) * pixel));
1234
+ vec4 t75 = filter1D_radius4(kernel, index, f.x,
1235
+ texture3D(texture, texel + vec3(-3, 2, 4) * pixel),
1236
+ texture3D(texture, texel + vec3(-2, 2, 4) * pixel),
1237
+ texture3D(texture, texel + vec3(-1, 2, 4) * pixel),
1238
+ texture3D(texture, texel + vec3(0, 2, 4) * pixel),
1239
+ texture3D(texture, texel + vec3(1, 2, 4) * pixel),
1240
+ texture3D(texture, texel + vec3(2, 2, 4) * pixel),
1241
+ texture3D(texture, texel + vec3(3, 2, 4) * pixel),
1242
+ texture3D(texture, texel + vec3(4, 2, 4) * pixel));
1243
+ vec4 t76 = filter1D_radius4(kernel, index, f.x,
1244
+ texture3D(texture, texel + vec3(-3, 3, 4) * pixel),
1245
+ texture3D(texture, texel + vec3(-2, 3, 4) * pixel),
1246
+ texture3D(texture, texel + vec3(-1, 3, 4) * pixel),
1247
+ texture3D(texture, texel + vec3(0, 3, 4) * pixel),
1248
+ texture3D(texture, texel + vec3(1, 3, 4) * pixel),
1249
+ texture3D(texture, texel + vec3(2, 3, 4) * pixel),
1250
+ texture3D(texture, texel + vec3(3, 3, 4) * pixel),
1251
+ texture3D(texture, texel + vec3(4, 3, 4) * pixel));
1252
+ vec4 t77 = filter1D_radius4(kernel, index, f.x,
1253
+ texture3D(texture, texel + vec3(-3, 4, 4) * pixel),
1254
+ texture3D(texture, texel + vec3(-2, 4, 4) * pixel),
1255
+ texture3D(texture, texel + vec3(-1, 4, 4) * pixel),
1256
+ texture3D(texture, texel + vec3(0, 4, 4) * pixel),
1257
+ texture3D(texture, texel + vec3(1, 4, 4) * pixel),
1258
+ texture3D(texture, texel + vec3(2, 4, 4) * pixel),
1259
+ texture3D(texture, texel + vec3(3, 4, 4) * pixel),
1260
+ texture3D(texture, texel + vec3(4, 4, 4) * pixel));
1261
+
1262
+ vec4 t0 = filter1D_radius4(kernel, index, f.y, t00, t01, t02, t03, t04, t05, t06, t07);
1263
+ vec4 t1 = filter1D_radius4(kernel, index, f.y, t10, t11, t12, t13, t14, t15, t16, t17);
1264
+ vec4 t2 = filter1D_radius4(kernel, index, f.y, t20, t21, t22, t23, t24, t25, t26, t27);
1265
+ vec4 t3 = filter1D_radius4(kernel, index, f.y, t30, t31, t32, t33, t34, t35, t36, t37);
1266
+ vec4 t4 = filter1D_radius4(kernel, index, f.y, t40, t41, t42, t43, t44, t45, t46, t47);
1267
+ vec4 t5 = filter1D_radius4(kernel, index, f.y, t50, t51, t52, t53, t54, t55, t56, t57);
1268
+ vec4 t6 = filter1D_radius4(kernel, index, f.y, t60, t61, t62, t63, t64, t65, t66, t67);
1269
+ vec4 t7 = filter1D_radius4(kernel, index, f.y, t70, t71, t72, t73, t74, t75, t76, t77);
1270
+ return filter1D_radius4(kernel, index, f.z, t0, t1, t2, t3, t4, t5, t6, t7);
1271
+ }
1272
+
1273
+ vec4 Nearest2D(sampler2D texture, vec2 shape, vec2 uv) {
1274
+ return texture2D(texture, uv);
1275
+ }
1276
+
1277
+ vec4 Nearest3D(sampler3D texture, vec3 shape, vec3 uv) {
1278
+ return texture3D(texture, uv);
1279
+ }
1280
+
1281
+ vec4 Linear2D(sampler2D texture, vec2 shape, vec2 uv) {
1282
+ return filter2D_radius1(texture, u_kernel, 0.03125, uv, 1 / shape);
1283
+ }
1284
+
1285
+ vec4 Linear3D(sampler3D texture, vec3 shape, vec3 uv) {
1286
+ return filter3D_radius1(texture, u_kernel, 0.03125, uv, 1 / shape);
1287
+ }
1288
+
1289
+ vec4 Hanning2D(sampler2D texture, vec2 shape, vec2 uv) {
1290
+ return filter2D_radius1(texture, u_kernel, 0.09375, uv, 1 / shape);
1291
+ }
1292
+
1293
+ vec4 Hanning3D(sampler3D texture, vec3 shape, vec3 uv) {
1294
+ return filter3D_radius1(texture, u_kernel, 0.09375, uv, 1 / shape);
1295
+ }
1296
+
1297
+ vec4 Hamming2D(sampler2D texture, vec2 shape, vec2 uv) {
1298
+ return filter2D_radius1(texture, u_kernel, 0.15625, uv, 1 / shape);
1299
+ }
1300
+
1301
+ vec4 Hamming3D(sampler3D texture, vec3 shape, vec3 uv) {
1302
+ return filter3D_radius1(texture, u_kernel, 0.15625, uv, 1 / shape);
1303
+ }
1304
+
1305
+ vec4 Hermite2D(sampler2D texture, vec2 shape, vec2 uv) {
1306
+ return filter2D_radius1(texture, u_kernel, 0.21875, uv, 1 / shape);
1307
+ }
1308
+
1309
+ vec4 Hermite3D(sampler3D texture, vec3 shape, vec3 uv) {
1310
+ return filter3D_radius1(texture, u_kernel, 0.21875, uv, 1 / shape);
1311
+ }
1312
+
1313
+ vec4 Kaiser2D(sampler2D texture, vec2 shape, vec2 uv) {
1314
+ return filter2D_radius1(texture, u_kernel, 0.28125, uv, 1 / shape);
1315
+ }
1316
+
1317
+ vec4 Kaiser3D(sampler3D texture, vec3 shape, vec3 uv) {
1318
+ return filter3D_radius1(texture, u_kernel, 0.28125, uv, 1 / shape);
1319
+ }
1320
+
1321
+ vec4 Quadric2D(sampler2D texture, vec2 shape, vec2 uv) {
1322
+ return filter2D_radius2(texture, u_kernel, 0.34375, uv, 1 / shape);
1323
+ }
1324
+
1325
+ vec4 Quadric3D(sampler3D texture, vec3 shape, vec3 uv) {
1326
+ return filter3D_radius2(texture, u_kernel, 0.34375, uv, 1 / shape);
1327
+ }
1328
+
1329
+ vec4 Cubic2D(sampler2D texture, vec2 shape, vec2 uv) {
1330
+ return filter2D_radius2(texture, u_kernel, 0.40625, uv, 1 / shape);
1331
+ }
1332
+
1333
+ vec4 Cubic3D(sampler3D texture, vec3 shape, vec3 uv) {
1334
+ return filter3D_radius2(texture, u_kernel, 0.40625, uv, 1 / shape);
1335
+ }
1336
+
1337
+ vec4 CatRom2D(sampler2D texture, vec2 shape, vec2 uv) {
1338
+ return filter2D_radius2(texture, u_kernel, 0.46875, uv, 1 / shape);
1339
+ }
1340
+
1341
+ vec4 CatRom3D(sampler3D texture, vec3 shape, vec3 uv) {
1342
+ return filter3D_radius2(texture, u_kernel, 0.46875, uv, 1 / shape);
1343
+ }
1344
+
1345
+ vec4 Mitchell2D(sampler2D texture, vec2 shape, vec2 uv) {
1346
+ return filter2D_radius2(texture, u_kernel, 0.53125, uv, 1 / shape);
1347
+ }
1348
+
1349
+ vec4 Mitchell3D(sampler3D texture, vec3 shape, vec3 uv) {
1350
+ return filter3D_radius2(texture, u_kernel, 0.53125, uv, 1 / shape);
1351
+ }
1352
+
1353
+ vec4 Spline162D(sampler2D texture, vec2 shape, vec2 uv) {
1354
+ return filter2D_radius2(texture, u_kernel, 0.59375, uv, 1 / shape);
1355
+ }
1356
+
1357
+ vec4 Spline163D(sampler3D texture, vec3 shape, vec3 uv) {
1358
+ return filter3D_radius2(texture, u_kernel, 0.59375, uv, 1 / shape);
1359
+ }
1360
+
1361
+ vec4 Spline362D(sampler2D texture, vec2 shape, vec2 uv) {
1362
+ return filter2D_radius3(texture, u_kernel, 0.65625, uv, 1 / shape);
1363
+ }
1364
+
1365
+ vec4 Spline363D(sampler3D texture, vec3 shape, vec3 uv) {
1366
+ return filter3D_radius3(texture, u_kernel, 0.65625, uv, 1 / shape);
1367
+ }
1368
+
1369
+ vec4 Gaussian2D(sampler2D texture, vec2 shape, vec2 uv) {
1370
+ return filter2D_radius2(texture, u_kernel, 0.71875, uv, 1 / shape);
1371
+ }
1372
+
1373
+ vec4 Gaussian3D(sampler3D texture, vec3 shape, vec3 uv) {
1374
+ return filter3D_radius2(texture, u_kernel, 0.71875, uv, 1 / shape);
1375
+ }
1376
+
1377
+ vec4 Bessel2D(sampler2D texture, vec2 shape, vec2 uv) {
1378
+ return filter2D_radius4(texture, u_kernel, 0.78125, uv, 1 / shape);
1379
+ }
1380
+
1381
+ vec4 Bessel3D(sampler3D texture, vec3 shape, vec3 uv) {
1382
+ return filter3D_radius4(texture, u_kernel, 0.78125, uv, 1 / shape);
1383
+ }
1384
+
1385
+ vec4 Sinc2D(sampler2D texture, vec2 shape, vec2 uv) {
1386
+ return filter2D_radius4(texture, u_kernel, 0.84375, uv, 1 / shape);
1387
+ }
1388
+
1389
+ vec4 Sinc3D(sampler3D texture, vec3 shape, vec3 uv) {
1390
+ return filter3D_radius4(texture, u_kernel, 0.84375, uv, 1 / shape);
1391
+ }
1392
+
1393
+ vec4 Lanczos2D(sampler2D texture, vec2 shape, vec2 uv) {
1394
+ return filter2D_radius4(texture, u_kernel, 0.90625, uv, 1 / shape);
1395
+ }
1396
+
1397
+ vec4 Lanczos3D(sampler3D texture, vec3 shape, vec3 uv) {
1398
+ return filter3D_radius4(texture, u_kernel, 0.90625, uv, 1 / shape);
1399
+ }
1400
+
1401
+ vec4 Blackman2D(sampler2D texture, vec2 shape, vec2 uv) {
1402
+ return filter2D_radius4(texture, u_kernel, 0.96875, uv, 1 / shape);
1403
+ }
1404
+
1405
+ vec4 Blackman3D(sampler3D texture, vec3 shape, vec3 uv) {
1406
+ return filter3D_radius4(texture, u_kernel, 0.96875, uv, 1 / shape);
1407
+ }