From bff9111a30bf49c4847b071a0fa5489159c65c5e Mon Sep 17 00:00:00 2001 From: "therealmogminer@gmail.com" Date: Sat, 16 Apr 2016 15:30:19 +0200 Subject: [PATCH] Add pillarboxing shaders and layout for bgfx, nw --- artwork/bgfx/border_blur/default.lay | 25 ++++ bgfx/chains/pillarbox_left_horizontal.json | 103 +++++++++++++++ bgfx/chains/pillarbox_left_vertical.json | 103 +++++++++++++++ bgfx/chains/pillarbox_right_horizontal.json | 103 +++++++++++++++ bgfx/chains/pillarbox_right_vertical.json | 103 +++++++++++++++ .../pillarbox_left_horizontal/blit.json | 121 ++++++++++++++++++ .../pillarbox_left_horizontal/gaussian.json | 32 +++++ .../pillarbox_left_horizontal/saturation.json | 30 +++++ .../effects/pillarbox_left_vertical/blit.json | 121 ++++++++++++++++++ .../pillarbox_left_vertical/gaussian.json | 32 +++++ .../pillarbox_left_vertical/saturation.json | 30 +++++ .../pillarbox_right_horizontal/blit.json | 121 ++++++++++++++++++ .../pillarbox_right_horizontal/gaussian.json | 32 +++++ .../saturation.json | 30 +++++ .../pillarbox_right_vertical/blit.json | 121 ++++++++++++++++++ .../pillarbox_right_vertical/gaussian.json | 32 +++++ .../pillarbox_right_vertical/saturation.json | 30 +++++ bgfx/layouts/sample/horizontal/default.lay | 25 ++++ bgfx/layouts/sample/vertical/default.lay | 25 ++++ .../pillarbox_left_horizontal/fs_blit.bin | Bin 0 -> 396 bytes .../pillarbox_left_horizontal/fs_gaussian.bin | Bin 0 -> 2663 bytes .../fs_saturation.bin | Bin 0 -> 523 bytes .../pillarbox_left_horizontal/vs_blit.bin | Bin 0 -> 575 bytes .../pillarbox_left_horizontal/vs_gaussian.bin | Bin 0 -> 575 bytes .../vs_saturation.bin | Bin 0 -> 615 bytes .../pillarbox_left_vertical/fs_blit.bin | Bin 0 -> 396 bytes .../pillarbox_left_vertical/fs_gaussian.bin | Bin 0 -> 2663 bytes .../pillarbox_left_vertical/fs_saturation.bin | Bin 0 -> 523 bytes .../pillarbox_left_vertical/vs_blit.bin | Bin 0 -> 575 bytes .../pillarbox_left_vertical/vs_gaussian.bin | Bin 0 -> 575 bytes .../pillarbox_left_vertical/vs_saturation.bin | Bin 0 -> 615 bytes .../pillarbox_right_horizontal/fs_blit.bin | Bin 0 -> 396 bytes .../fs_gaussian.bin | Bin 0 -> 2663 bytes .../fs_saturation.bin | Bin 0 -> 523 bytes .../pillarbox_right_horizontal/vs_blit.bin | Bin 0 -> 575 bytes .../vs_gaussian.bin | Bin 0 -> 575 bytes .../vs_saturation.bin | Bin 0 -> 615 bytes .../pillarbox_right_vertical/fs_blit.bin | Bin 0 -> 396 bytes .../pillarbox_right_vertical/fs_gaussian.bin | Bin 0 -> 2663 bytes .../fs_saturation.bin | Bin 0 -> 523 bytes .../pillarbox_right_vertical/vs_blit.bin | Bin 0 -> 575 bytes .../pillarbox_right_vertical/vs_gaussian.bin | Bin 0 -> 575 bytes .../vs_saturation.bin | Bin 0 -> 615 bytes .../pillarbox_left_horizontal/fs_blit.bin | Bin 0 -> 241 bytes .../pillarbox_left_horizontal/fs_gaussian.bin | Bin 0 -> 1512 bytes .../fs_saturation.bin | Bin 0 -> 372 bytes .../pillarbox_left_horizontal/vs_blit.bin | Bin 0 -> 330 bytes .../pillarbox_left_horizontal/vs_gaussian.bin | Bin 0 -> 330 bytes .../vs_saturation.bin | Bin 0 -> 362 bytes .../pillarbox_left_vertical/fs_blit.bin | Bin 0 -> 241 bytes .../pillarbox_left_vertical/fs_gaussian.bin | Bin 0 -> 1512 bytes .../pillarbox_left_vertical/fs_saturation.bin | Bin 0 -> 372 bytes .../pillarbox_left_vertical/vs_blit.bin | Bin 0 -> 330 bytes .../pillarbox_left_vertical/vs_gaussian.bin | Bin 0 -> 330 bytes .../pillarbox_left_vertical/vs_saturation.bin | Bin 0 -> 362 bytes .../pillarbox_right_horizontal/fs_blit.bin | Bin 0 -> 241 bytes .../fs_gaussian.bin | Bin 0 -> 1512 bytes .../fs_saturation.bin | Bin 0 -> 372 bytes .../pillarbox_right_horizontal/vs_blit.bin | Bin 0 -> 330 bytes .../vs_gaussian.bin | Bin 0 -> 330 bytes .../vs_saturation.bin | Bin 0 -> 362 bytes .../pillarbox_right_vertical/fs_blit.bin | Bin 0 -> 241 bytes .../pillarbox_right_vertical/fs_gaussian.bin | Bin 0 -> 1512 bytes .../fs_saturation.bin | Bin 0 -> 372 bytes .../pillarbox_right_vertical/vs_blit.bin | Bin 0 -> 330 bytes .../pillarbox_right_vertical/vs_gaussian.bin | Bin 0 -> 330 bytes .../vs_saturation.bin | Bin 0 -> 362 bytes .../pillarbox_left_horizontal/fs_blit.bin | Bin 0 -> 238 bytes .../pillarbox_left_horizontal/fs_gaussian.bin | Bin 0 -> 2901 bytes .../fs_saturation.bin | Bin 0 -> 456 bytes .../pillarbox_left_horizontal/vs_blit.bin | Bin 0 -> 419 bytes .../pillarbox_left_horizontal/vs_gaussian.bin | Bin 0 -> 419 bytes .../vs_saturation.bin | Bin 0 -> 463 bytes .../pillarbox_left_vertical/fs_blit.bin | Bin 0 -> 238 bytes .../pillarbox_left_vertical/fs_gaussian.bin | Bin 0 -> 2901 bytes .../pillarbox_left_vertical/fs_saturation.bin | Bin 0 -> 456 bytes .../pillarbox_left_vertical/vs_blit.bin | Bin 0 -> 419 bytes .../pillarbox_left_vertical/vs_gaussian.bin | Bin 0 -> 419 bytes .../pillarbox_left_vertical/vs_saturation.bin | Bin 0 -> 466 bytes .../pillarbox_right_horizontal/fs_blit.bin | Bin 0 -> 238 bytes .../fs_gaussian.bin | Bin 0 -> 2901 bytes .../fs_saturation.bin | Bin 0 -> 456 bytes .../pillarbox_right_horizontal/vs_blit.bin | Bin 0 -> 419 bytes .../vs_gaussian.bin | Bin 0 -> 419 bytes .../vs_saturation.bin | Bin 0 -> 469 bytes .../pillarbox_right_vertical/fs_blit.bin | Bin 0 -> 238 bytes .../pillarbox_right_vertical/fs_gaussian.bin | Bin 0 -> 2901 bytes .../fs_saturation.bin | Bin 0 -> 456 bytes .../pillarbox_right_vertical/vs_blit.bin | Bin 0 -> 419 bytes .../pillarbox_right_vertical/vs_gaussian.bin | Bin 0 -> 419 bytes .../vs_saturation.bin | Bin 0 -> 467 bytes .../pillarbox_left_horizontal/fs_blit.bin | Bin 0 -> 181 bytes .../pillarbox_left_horizontal/fs_gaussian.bin | Bin 0 -> 2861 bytes .../fs_saturation.bin | Bin 0 -> 429 bytes .../pillarbox_left_horizontal/vs_blit.bin | Bin 0 -> 377 bytes .../pillarbox_left_horizontal/vs_gaussian.bin | Bin 0 -> 377 bytes .../vs_saturation.bin | Bin 0 -> 421 bytes .../pillarbox_left_vertical/fs_blit.bin | Bin 0 -> 181 bytes .../pillarbox_left_vertical/fs_gaussian.bin | Bin 0 -> 2861 bytes .../pillarbox_left_vertical/fs_saturation.bin | Bin 0 -> 429 bytes .../pillarbox_left_vertical/vs_blit.bin | Bin 0 -> 377 bytes .../pillarbox_left_vertical/vs_gaussian.bin | Bin 0 -> 377 bytes .../pillarbox_left_vertical/vs_saturation.bin | Bin 0 -> 424 bytes .../pillarbox_right_horizontal/fs_blit.bin | Bin 0 -> 181 bytes .../fs_gaussian.bin | Bin 0 -> 2861 bytes .../fs_saturation.bin | Bin 0 -> 429 bytes .../pillarbox_right_horizontal/vs_blit.bin | Bin 0 -> 377 bytes .../vs_gaussian.bin | Bin 0 -> 377 bytes .../vs_saturation.bin | Bin 0 -> 427 bytes .../pillarbox_right_vertical/fs_blit.bin | Bin 0 -> 181 bytes .../pillarbox_right_vertical/fs_gaussian.bin | Bin 0 -> 2861 bytes .../fs_saturation.bin | Bin 0 -> 429 bytes .../pillarbox_right_vertical/vs_blit.bin | Bin 0 -> 377 bytes .../pillarbox_right_vertical/vs_gaussian.bin | Bin 0 -> 377 bytes .../vs_saturation.bin | Bin 0 -> 425 bytes .../pillarbox_left_horizontal/fs_blit.bin | Bin 0 -> 634 bytes .../pillarbox_left_horizontal/fs_gaussian.bin | Bin 0 -> 5782 bytes .../fs_saturation.bin | Bin 0 -> 832 bytes .../pillarbox_left_horizontal/vs_blit.bin | Bin 0 -> 757 bytes .../pillarbox_left_horizontal/vs_gaussian.bin | Bin 0 -> 757 bytes .../vs_saturation.bin | Bin 0 -> 805 bytes .../pillarbox_left_vertical/fs_blit.bin | Bin 0 -> 634 bytes .../pillarbox_left_vertical/fs_gaussian.bin | Bin 0 -> 5782 bytes .../pillarbox_left_vertical/fs_saturation.bin | Bin 0 -> 832 bytes .../pillarbox_left_vertical/vs_blit.bin | Bin 0 -> 757 bytes .../pillarbox_left_vertical/vs_gaussian.bin | Bin 0 -> 757 bytes .../pillarbox_left_vertical/vs_saturation.bin | Bin 0 -> 808 bytes .../pillarbox_right_horizontal/fs_blit.bin | Bin 0 -> 634 bytes .../fs_gaussian.bin | Bin 0 -> 5782 bytes .../fs_saturation.bin | Bin 0 -> 832 bytes .../pillarbox_right_horizontal/vs_blit.bin | Bin 0 -> 757 bytes .../vs_gaussian.bin | Bin 0 -> 757 bytes .../vs_saturation.bin | Bin 0 -> 811 bytes .../pillarbox_right_vertical/fs_blit.bin | Bin 0 -> 634 bytes .../pillarbox_right_vertical/fs_gaussian.bin | Bin 0 -> 5782 bytes .../fs_saturation.bin | Bin 0 -> 832 bytes .../pillarbox_right_vertical/vs_blit.bin | Bin 0 -> 757 bytes .../pillarbox_right_vertical/vs_gaussian.bin | Bin 0 -> 757 bytes .../vs_saturation.bin | Bin 0 -> 809 bytes src/osd/modules/render/bgfx/chainmanager.cpp | 20 +-- .../pillarbox_left_horizontal/fs_blit.sc | 14 ++ .../pillarbox_left_horizontal/fs_gaussian.sc | 57 +++++++++ .../fs_saturation.sc | 25 ++++ .../pillarbox_left_horizontal/varying.def.sc | 6 + .../pillarbox_left_horizontal/vs_blit.sc | 14 ++ .../pillarbox_left_horizontal/vs_gaussian.sc | 14 ++ .../vs_saturation.sc | 14 ++ .../chains/pillarbox_left_vertical/fs_blit.sc | 14 ++ .../pillarbox_left_vertical/fs_gaussian.sc | 57 +++++++++ .../pillarbox_left_vertical/fs_saturation.sc | 25 ++++ .../pillarbox_left_vertical/varying.def.sc | 6 + .../chains/pillarbox_left_vertical/vs_blit.sc | 14 ++ .../pillarbox_left_vertical/vs_gaussian.sc | 14 ++ .../pillarbox_left_vertical/vs_saturation.sc | 14 ++ .../pillarbox_right_horizontal/fs_blit.sc | 14 ++ .../pillarbox_right_horizontal/fs_gaussian.sc | 57 +++++++++ .../fs_saturation.sc | 25 ++++ .../pillarbox_right_horizontal/varying.def.sc | 6 + .../pillarbox_right_horizontal/vs_blit.sc | 14 ++ .../pillarbox_right_horizontal/vs_gaussian.sc | 14 ++ .../vs_saturation.sc | 14 ++ .../pillarbox_right_vertical/fs_blit.sc | 14 ++ .../pillarbox_right_vertical/fs_gaussian.sc | 57 +++++++++ .../pillarbox_right_vertical/fs_saturation.sc | 25 ++++ .../pillarbox_right_vertical/varying.def.sc | 6 + .../pillarbox_right_vertical/vs_blit.sc | 14 ++ .../pillarbox_right_vertical/vs_gaussian.sc | 14 ++ .../pillarbox_right_vertical/vs_saturation.sc | 14 ++ src/osd/modules/render/drawbgfx.cpp | 76 ++++++++--- src/osd/modules/render/drawbgfx.h | 22 ++-- 170 files changed, 1869 insertions(+), 44 deletions(-) create mode 100644 artwork/bgfx/border_blur/default.lay create mode 100644 bgfx/chains/pillarbox_left_horizontal.json create mode 100644 bgfx/chains/pillarbox_left_vertical.json create mode 100644 bgfx/chains/pillarbox_right_horizontal.json create mode 100644 bgfx/chains/pillarbox_right_vertical.json create mode 100644 bgfx/effects/pillarbox_left_horizontal/blit.json create mode 100644 bgfx/effects/pillarbox_left_horizontal/gaussian.json create mode 100644 bgfx/effects/pillarbox_left_horizontal/saturation.json create mode 100644 bgfx/effects/pillarbox_left_vertical/blit.json create mode 100644 bgfx/effects/pillarbox_left_vertical/gaussian.json create mode 100644 bgfx/effects/pillarbox_left_vertical/saturation.json create mode 100644 bgfx/effects/pillarbox_right_horizontal/blit.json create mode 100644 bgfx/effects/pillarbox_right_horizontal/gaussian.json create mode 100644 bgfx/effects/pillarbox_right_horizontal/saturation.json create mode 100644 bgfx/effects/pillarbox_right_vertical/blit.json create mode 100644 bgfx/effects/pillarbox_right_vertical/gaussian.json create mode 100644 bgfx/effects/pillarbox_right_vertical/saturation.json create mode 100644 bgfx/layouts/sample/horizontal/default.lay create mode 100644 bgfx/layouts/sample/vertical/default.lay create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_blit.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_blit.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_blit.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_blit.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_saturation.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_blit.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_gaussian.bin create mode 100644 bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_saturation.bin create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/varying.def.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/varying.def.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/varying.def.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/varying.def.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_blit.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_gaussian.sc create mode 100644 src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_saturation.sc diff --git a/artwork/bgfx/border_blur/default.lay b/artwork/bgfx/border_blur/default.lay new file mode 100644 index 00000000000..1554a9ec50b --- /dev/null +++ b/artwork/bgfx/border_blur/default.lay @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bgfx/chains/pillarbox_left_horizontal.json b/bgfx/chains/pillarbox_left_horizontal.json new file mode 100644 index 00000000000..deff01f88d6 --- /dev/null +++ b/bgfx/chains/pillarbox_left_horizontal.json @@ -0,0 +1,103 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// pillarbox_left_horizontal.json: Fills in the left +// portion of a pillarbox when displaying 4:3 content +// on a 16:9 screen. +// +//============================================================ +{ + "name": "Horizontal Pillarbox, Left", + "author": "Ryan Holtz", + + "sliders": [ + { "type": "float", "name": "saturation", "text": "Saturation", "default": 25, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "raster" } + ], + + "targets": [ + { + "name": "guest", + "mode": "guest", + "bilinear": true, + "doublebuffer": true + }, + { + "name": "internal", + "mode": "native", + "bilinear": true, + "doublebuffer": true + } + ], + + "passes": [ + { "effect": "pillarbox_left_horizontal/blit", + "name": "Blit to scalable target", + "input": [ + { "sampler": "s_tex", "target": "screen" } + ], + "output": "guest" + }, + { "effect": "pillarbox_left_horizontal/gaussian", + "name": "Gaussian Blur 1, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "guest" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_horizontal/gaussian", + "name": "Gaussian Blur 1, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { + "effect": "pillarbox_left_horizontal/saturation", + "name": "Saturation Pass", + "disablewhen": [ + { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } + ], + "uniforms": [ + { "uniform": "u_saturation", "slider": "saturation" } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_horizontal/gaussian", + "name": "Gaussian Blur 2, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_horizontal/gaussian", + "name": "Gaussian Blur 2, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_horizontal/blit", + "name": "Final Blit", + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "output" + } + ] +} \ No newline at end of file diff --git a/bgfx/chains/pillarbox_left_vertical.json b/bgfx/chains/pillarbox_left_vertical.json new file mode 100644 index 00000000000..187164695de --- /dev/null +++ b/bgfx/chains/pillarbox_left_vertical.json @@ -0,0 +1,103 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// pillarbox_left_vertical.json: Fills in the left +// portion of a pillarbox when displaying 4:3 content +// on a 16:9 screen. +// +//============================================================ +{ + "name": "Vertical Pillarbox, Left", + "author": "Ryan Holtz", + + "sliders": [ + { "type": "float", "name": "saturation", "text": "Saturation", "default": 25, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "raster" } + ], + + "targets": [ + { + "name": "guest", + "mode": "guest", + "bilinear": true, + "doublebuffer": true + }, + { + "name": "internal", + "mode": "native", + "bilinear": true, + "doublebuffer": true + } + ], + + "passes": [ + { "effect": "pillarbox_left_vertical/blit", + "name": "Blit to scalable target", + "input": [ + { "sampler": "s_tex", "target": "screen" } + ], + "output": "guest" + }, + { "effect": "pillarbox_left_vertical/gaussian", + "name": "Gaussian Blur 1, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "guest" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_vertical/gaussian", + "name": "Gaussian Blur 1, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { + "effect": "pillarbox_left_vertical/saturation", + "name": "Saturation Pass", + "disablewhen": [ + { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } + ], + "uniforms": [ + { "uniform": "u_saturation", "slider": "saturation" } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_vertical/gaussian", + "name": "Gaussian Blur 2, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_vertical/gaussian", + "name": "Gaussian Blur 2, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_left_vertical/blit", + "name": "Final Blit", + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "output" + } + ] +} \ No newline at end of file diff --git a/bgfx/chains/pillarbox_right_horizontal.json b/bgfx/chains/pillarbox_right_horizontal.json new file mode 100644 index 00000000000..d7133aadbcc --- /dev/null +++ b/bgfx/chains/pillarbox_right_horizontal.json @@ -0,0 +1,103 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// pillarbox_right_horizontal.json: Fills in the right +// portion of a pillarbox when displaying 4:3 content +// on a 16:9 screen. +// +//============================================================ +{ + "name": "Horizontal Pillarbox, Right", + "author": "Ryan Holtz", + + "sliders": [ + { "type": "float", "name": "saturation", "text": "Saturation", "default": 25, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "raster" } + ], + + "targets": [ + { + "name": "guest", + "mode": "guest", + "bilinear": true, + "doublebuffer": true + }, + { + "name": "internal", + "mode": "native", + "bilinear": true, + "doublebuffer": true + } + ], + + "passes": [ + { "effect": "pillarbox_right_horizontal/blit", + "name": "Blit to scalable target", + "input": [ + { "sampler": "s_tex", "target": "screen" } + ], + "output": "guest" + }, + { "effect": "pillarbox_right_horizontal/gaussian", + "name": "Gaussian Blur 1, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "guest" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_horizontal/gaussian", + "name": "Gaussian Blur 1, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { + "effect": "pillarbox_right_horizontal/saturation", + "name": "Saturation Pass", + "disablewhen": [ + { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } + ], + "uniforms": [ + { "uniform": "u_saturation", "slider": "saturation" } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_horizontal/gaussian", + "name": "Gaussian Blur 2, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_horizontal/gaussian", + "name": "Gaussian Blur 2, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_horizontal/blit", + "name": "Final Blit", + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "output" + } + ] +} \ No newline at end of file diff --git a/bgfx/chains/pillarbox_right_vertical.json b/bgfx/chains/pillarbox_right_vertical.json new file mode 100644 index 00000000000..072ba99956f --- /dev/null +++ b/bgfx/chains/pillarbox_right_vertical.json @@ -0,0 +1,103 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// pillarbox_right_vertical.json: Fills in the right +// portion of a pillarbox when displaying 4:3 content +// on a 16:9 screen. +// +//============================================================ +{ + "name": "Vertical Pillarbox, Right", + "author": "Ryan Holtz", + + "sliders": [ + { "type": "float", "name": "saturation", "text": "Saturation", "default": 25, "max": 100, "min": 0, "step": 1, "scale": 0.01, "format": "%1.2f", "screen": "raster" } + ], + + "targets": [ + { + "name": "guest", + "mode": "guest", + "bilinear": true, + "doublebuffer": true + }, + { + "name": "internal", + "mode": "native", + "bilinear": true, + "doublebuffer": true + } + ], + + "passes": [ + { "effect": "pillarbox_right_vertical/blit", + "name": "Blit to scalable target", + "input": [ + { "sampler": "s_tex", "target": "screen" } + ], + "output": "guest" + }, + { "effect": "pillarbox_right_vertical/gaussian", + "name": "Gaussian Blur 1, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "guest" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_vertical/gaussian", + "name": "Gaussian Blur 1, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { + "effect": "pillarbox_right_vertical/saturation", + "name": "Saturation Pass", + "disablewhen": [ + { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } + ], + "uniforms": [ + { "uniform": "u_saturation", "slider": "saturation" } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_vertical/gaussian", + "name": "Gaussian Blur 2, Horizontal", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 1.0, 0.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_vertical/gaussian", + "name": "Gaussian Blur 2, Vertical", + "uniforms": [ + { "uniform": "u_dimension", "value": [ 0.0, 1.0 ] } + ], + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "internal" + }, + { "effect": "pillarbox_right_vertical/blit", + "name": "Final Blit", + "input": [ + { "sampler": "s_tex", "target": "internal" } + ], + "output": "output" + } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_horizontal/blit.json b/bgfx/effects/pillarbox_left_horizontal/blit.json new file mode 100644 index 00000000000..085dd67ef93 --- /dev/null +++ b/bgfx/effects/pillarbox_left_horizontal/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srccolor", "1-srccolor", "dstcolor", "1-dstcolor", "srcalpha", "1-srcalpha", "dstalpha", "1-dstalpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invsrccolor", "invdstcolor", "invsrcalpha", and "invdstalpha" are provided as aliases for "0", "1", "1-srccolor", "1-dstcolor", "1-srcalpha", and "1-dstalpha" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + + // depth (required): The depth state for this effect. + "depth": { + // function (optional): The depth function to use when drawing. + // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always" + // default: "always" + "function": "always", + + // writeenable (optional): Whether to store Z-buffer data. + // values: true, false + // default: false + "writeenable": false + }, + + // cull (required): The cull mode for this effect. + "cull": { + // mode (optional): What winding, if any, to cull. + // values: "none", "cw", "ccw" + // default: "ccw" + // + // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw" + "mode": "none" + }, + + // write (required): Write enable for color and alpha channels. + "write": { + // rgb (optional): Whether to store color data when drawing. + // values: true, false + // default: false + "rgb": true, + + // alpha (optional): Whether to store alpha data when drawing. + // values: true, false + // default: false + "alpha": true + }, + + // vertex (required): The vertex shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "vertex": "chains/pillarbox_left_horizontal/vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "fragment": "chains/pillarbox_left_horizontal/fs_blit", + + // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist. + "uniforms": [ + { + // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader. + // value: A string containing the name of the uniform as described above. + // + // NOTE: Some names correspond to special values that will be automatically filled by the BGFX + // code if they are used by the shader. These names are: + // "u_screen_dims" + // The dimensions of the first texture input if present, otherwise the dimensions of the output window. + // Valid values: xy + // "u_inv_screen_dims" + // The reciprocal of u_screen_dims. + // Valid values: xy + // "u_source_dims" + // The size, in pixels, of the screen texture incoming to the chain. + // Valid values: xy + // "u_rotation_type" + // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270. + // Valid values: x + // "u_swap_xy" + // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false. + // Valid values: x + // "u_quad_dims" + // The dimensions, in pixels, occupied by this one screen primitive itself in the output window. + // Valid values: xy + // "u_tex_sizeN" + // The dimensions, in pixels, of the texture in input pair N. Starts at 0. + // valid values: xy + "name": "s_tex", + + // type (required): The type of the uniform. + // values: "int", "vec4", "mat3", "mat4" + // + // Note: "int" should only be used for samplers. + "type": "int", + + // values (required): The array of numbers with which to initialize the uniform. + // value: A JSON array containin the correct amount of numbers to initialize a uniform of the + // above-specified type. The following size rules should be followed: + // "int": 1 float + // "vec4": 4 floats + // "mat3": 9 floats + // "mat4": 16 floats + "values": [ 1.0 ] + } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_horizontal/gaussian.json b/bgfx/effects/pillarbox_left_horizontal/gaussian.json new file mode 100644 index 00000000000..4eda0b9b368 --- /dev/null +++ b/bgfx/effects/pillarbox_left_horizontal/gaussian.json @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// gaussian.json: Separable gaussian blur. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_left_horizontal/vs_gaussian", + "fragment": "chains/pillarbox_left_horizontal/fs_gaussian", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_dimension", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_radius", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_horizontal/saturation.json b/bgfx/effects/pillarbox_left_horizontal/saturation.json new file mode 100644 index 00000000000..8fff15ddb9b --- /dev/null +++ b/bgfx/effects/pillarbox_left_horizontal/saturation.json @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// saturation.json: Applies saturation to an image. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_left_horizontal/vs_saturation", + "fragment": "chains/pillarbox_left_horizontal/fs_saturation", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_saturation", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_vertical/blit.json b/bgfx/effects/pillarbox_left_vertical/blit.json new file mode 100644 index 00000000000..9fb35a9fe19 --- /dev/null +++ b/bgfx/effects/pillarbox_left_vertical/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srccolor", "1-srccolor", "dstcolor", "1-dstcolor", "srcalpha", "1-srcalpha", "dstalpha", "1-dstalpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invsrccolor", "invdstcolor", "invsrcalpha", and "invdstalpha" are provided as aliases for "0", "1", "1-srccolor", "1-dstcolor", "1-srcalpha", and "1-dstalpha" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + + // depth (required): The depth state for this effect. + "depth": { + // function (optional): The depth function to use when drawing. + // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always" + // default: "always" + "function": "always", + + // writeenable (optional): Whether to store Z-buffer data. + // values: true, false + // default: false + "writeenable": false + }, + + // cull (required): The cull mode for this effect. + "cull": { + // mode (optional): What winding, if any, to cull. + // values: "none", "cw", "ccw" + // default: "ccw" + // + // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw" + "mode": "none" + }, + + // write (required): Write enable for color and alpha channels. + "write": { + // rgb (optional): Whether to store color data when drawing. + // values: true, false + // default: false + "rgb": true, + + // alpha (optional): Whether to store alpha data when drawing. + // values: true, false + // default: false + "alpha": true + }, + + // vertex (required): The vertex shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "vertex": "chains/pillarbox_left_vertical/vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "fragment": "chains/pillarbox_left_vertical/fs_blit", + + // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist. + "uniforms": [ + { + // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader. + // value: A string containing the name of the uniform as described above. + // + // NOTE: Some names correspond to special values that will be automatically filled by the BGFX + // code if they are used by the shader. These names are: + // "u_screen_dims" + // The dimensions of the first texture input if present, otherwise the dimensions of the output window. + // Valid values: xy + // "u_inv_screen_dims" + // The reciprocal of u_screen_dims. + // Valid values: xy + // "u_source_dims" + // The size, in pixels, of the screen texture incoming to the chain. + // Valid values: xy + // "u_rotation_type" + // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270. + // Valid values: x + // "u_swap_xy" + // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false. + // Valid values: x + // "u_quad_dims" + // The dimensions, in pixels, occupied by this one screen primitive itself in the output window. + // Valid values: xy + // "u_tex_sizeN" + // The dimensions, in pixels, of the texture in input pair N. Starts at 0. + // valid values: xy + "name": "s_tex", + + // type (required): The type of the uniform. + // values: "int", "vec4", "mat3", "mat4" + // + // Note: "int" should only be used for samplers. + "type": "int", + + // values (required): The array of numbers with which to initialize the uniform. + // value: A JSON array containin the correct amount of numbers to initialize a uniform of the + // above-specified type. The following size rules should be followed: + // "int": 1 float + // "vec4": 4 floats + // "mat3": 9 floats + // "mat4": 16 floats + "values": [ 1.0 ] + } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_vertical/gaussian.json b/bgfx/effects/pillarbox_left_vertical/gaussian.json new file mode 100644 index 00000000000..1db78806595 --- /dev/null +++ b/bgfx/effects/pillarbox_left_vertical/gaussian.json @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// gaussian.json: Separable gaussian blur. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_left_vertical/vs_gaussian", + "fragment": "chains/pillarbox_left_vertical/fs_gaussian", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_dimension", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_radius", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_vertical/saturation.json b/bgfx/effects/pillarbox_left_vertical/saturation.json new file mode 100644 index 00000000000..c84b6d4a3a2 --- /dev/null +++ b/bgfx/effects/pillarbox_left_vertical/saturation.json @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// saturation.json: Applies saturation to an image. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_left_vertical/vs_saturation", + "fragment": "chains/pillarbox_left_vertical/fs_saturation", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_saturation", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_horizontal/blit.json b/bgfx/effects/pillarbox_right_horizontal/blit.json new file mode 100644 index 00000000000..e982da2dbf3 --- /dev/null +++ b/bgfx/effects/pillarbox_right_horizontal/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srccolor", "1-srccolor", "dstcolor", "1-dstcolor", "srcalpha", "1-srcalpha", "dstalpha", "1-dstalpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invsrccolor", "invdstcolor", "invsrcalpha", and "invdstalpha" are provided as aliases for "0", "1", "1-srccolor", "1-dstcolor", "1-srcalpha", and "1-dstalpha" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + + // depth (required): The depth state for this effect. + "depth": { + // function (optional): The depth function to use when drawing. + // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always" + // default: "always" + "function": "always", + + // writeenable (optional): Whether to store Z-buffer data. + // values: true, false + // default: false + "writeenable": false + }, + + // cull (required): The cull mode for this effect. + "cull": { + // mode (optional): What winding, if any, to cull. + // values: "none", "cw", "ccw" + // default: "ccw" + // + // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw" + "mode": "none" + }, + + // write (required): Write enable for color and alpha channels. + "write": { + // rgb (optional): Whether to store color data when drawing. + // values: true, false + // default: false + "rgb": true, + + // alpha (optional): Whether to store alpha data when drawing. + // values: true, false + // default: false + "alpha": true + }, + + // vertex (required): The vertex shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "vertex": "chains/pillarbox_right_horizontal/vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "fragment": "chains/pillarbox_right_horizontal/fs_blit", + + // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist. + "uniforms": [ + { + // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader. + // value: A string containing the name of the uniform as described above. + // + // NOTE: Some names correspond to special values that will be automatically filled by the BGFX + // code if they are used by the shader. These names are: + // "u_screen_dims" + // The dimensions of the first texture input if present, otherwise the dimensions of the output window. + // Valid values: xy + // "u_inv_screen_dims" + // The reciprocal of u_screen_dims. + // Valid values: xy + // "u_source_dims" + // The size, in pixels, of the screen texture incoming to the chain. + // Valid values: xy + // "u_rotation_type" + // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270. + // Valid values: x + // "u_swap_xy" + // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false. + // Valid values: x + // "u_quad_dims" + // The dimensions, in pixels, occupied by this one screen primitive itself in the output window. + // Valid values: xy + // "u_tex_sizeN" + // The dimensions, in pixels, of the texture in input pair N. Starts at 0. + // valid values: xy + "name": "s_tex", + + // type (required): The type of the uniform. + // values: "int", "vec4", "mat3", "mat4" + // + // Note: "int" should only be used for samplers. + "type": "int", + + // values (required): The array of numbers with which to initialize the uniform. + // value: A JSON array containin the correct amount of numbers to initialize a uniform of the + // above-specified type. The following size rules should be followed: + // "int": 1 float + // "vec4": 4 floats + // "mat3": 9 floats + // "mat4": 16 floats + "values": [ 1.0 ] + } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_horizontal/gaussian.json b/bgfx/effects/pillarbox_right_horizontal/gaussian.json new file mode 100644 index 00000000000..f19af39dd71 --- /dev/null +++ b/bgfx/effects/pillarbox_right_horizontal/gaussian.json @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// gaussian.json: Separable gaussian blur. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_right_horizontal/vs_gaussian", + "fragment": "chains/pillarbox_right_horizontal/fs_gaussian", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_dimension", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_radius", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_horizontal/saturation.json b/bgfx/effects/pillarbox_right_horizontal/saturation.json new file mode 100644 index 00000000000..18a416ebd8e --- /dev/null +++ b/bgfx/effects/pillarbox_right_horizontal/saturation.json @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// saturation.json: Applies saturation to an image. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_right_horizontal/vs_saturation", + "fragment": "chains/pillarbox_right_horizontal/fs_saturation", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_saturation", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_vertical/blit.json b/bgfx/effects/pillarbox_right_vertical/blit.json new file mode 100644 index 00000000000..4237ba44b66 --- /dev/null +++ b/bgfx/effects/pillarbox_right_vertical/blit.json @@ -0,0 +1,121 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// blit.json: A simple texture-to-target copy. +// +//============================================================ +{ + // blend (required): The blend state for this effect. + "blend": { + // equation (optional): What equation to perform on the source and destination blend values. + // values: "add", "sub", "revSub", "min", "max" + // default: "add" + // + // "subtract" and "revSubtract" are provided as aliases for "sub" and "revSub" + "equation": "add", + + // blend function parameters (optional): What factors to use in the blend function when calculating the final pixel. + // values: "0", "1", "srccolor", "1-srccolor", "dstcolor", "1-dstcolor", "srcalpha", "1-srcalpha", "dstalpha", "1-dstalpha" + // defaults (srcColor, srcAlpha): "1" + // defaults (dstColor, dstAlpha): "0" + // + // "zero", "one", "invsrccolor", "invdstcolor", "invsrcalpha", and "invdstalpha" are provided as aliases for "0", "1", "1-srccolor", "1-dstcolor", "1-srcalpha", and "1-dstalpha" + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + + // depth (required): The depth state for this effect. + "depth": { + // function (optional): The depth function to use when drawing. + // values: "never", "less", "equal", "lequal", "greater", "notequal", "gequal", "always" + // default: "always" + "function": "always", + + // writeenable (optional): Whether to store Z-buffer data. + // values: true, false + // default: false + "writeenable": false + }, + + // cull (required): The cull mode for this effect. + "cull": { + // mode (optional): What winding, if any, to cull. + // values: "none", "cw", "ccw" + // default: "ccw" + // + // "clockwise" and "counterclockwise" are provided as aliases for "cw" and "ccw" + "mode": "none" + }, + + // write (required): Write enable for color and alpha channels. + "write": { + // rgb (optional): Whether to store color data when drawing. + // values: true, false + // default: false + "rgb": true, + + // alpha (optional): Whether to store alpha data when drawing. + // values: true, false + // default: false + "alpha": true + }, + + // vertex (required): The vertex shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "vertex": "chains/pillarbox_right_vertical/vs_blit", + + // pixel/fragment (required): The pixel or fragment shader to use when drawing. + // value: A string containing the path and name of a shader file to use, minus the extension. + "fragment": "chains/pillarbox_right_vertical/fs_blit", + + // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist. + "uniforms": [ + { + // name (required): The name of the uniform, as used in either the vertex or pixel/fragment shader. + // value: A string containing the name of the uniform as described above. + // + // NOTE: Some names correspond to special values that will be automatically filled by the BGFX + // code if they are used by the shader. These names are: + // "u_screen_dims" + // The dimensions of the first texture input if present, otherwise the dimensions of the output window. + // Valid values: xy + // "u_inv_screen_dims" + // The reciprocal of u_screen_dims. + // Valid values: xy + // "u_source_dims" + // The size, in pixels, of the screen texture incoming to the chain. + // Valid values: xy + // "u_rotation_type" + // This screen's rotation type. 0 if ROT0, 1 if ROT90, 2 if ROT180, 3 of ROT270. + // Valid values: x + // "u_swap_xy" + // Whether this screen is swapped on the X and Y axes. 1 if true, 0 if false. + // Valid values: x + // "u_quad_dims" + // The dimensions, in pixels, occupied by this one screen primitive itself in the output window. + // Valid values: xy + // "u_tex_sizeN" + // The dimensions, in pixels, of the texture in input pair N. Starts at 0. + // valid values: xy + "name": "s_tex", + + // type (required): The type of the uniform. + // values: "int", "vec4", "mat3", "mat4" + // + // Note: "int" should only be used for samplers. + "type": "int", + + // values (required): The array of numbers with which to initialize the uniform. + // value: A JSON array containin the correct amount of numbers to initialize a uniform of the + // above-specified type. The following size rules should be followed: + // "int": 1 float + // "vec4": 4 floats + // "mat3": 9 floats + // "mat4": 16 floats + "values": [ 1.0 ] + } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_vertical/gaussian.json b/bgfx/effects/pillarbox_right_vertical/gaussian.json new file mode 100644 index 00000000000..b96c5b521e9 --- /dev/null +++ b/bgfx/effects/pillarbox_right_vertical/gaussian.json @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// gaussian.json: Separable gaussian blur. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_right_vertical/vs_gaussian", + "fragment": "chains/pillarbox_right_vertical/fs_gaussian", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_dimension", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_radius", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/effects/pillarbox_right_vertical/saturation.json b/bgfx/effects/pillarbox_right_vertical/saturation.json new file mode 100644 index 00000000000..f51e68f6134 --- /dev/null +++ b/bgfx/effects/pillarbox_right_vertical/saturation.json @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// saturation.json: Applies saturation to an image. +// +//============================================================ +{ + "blend": { + "equation": "add", + "srcColor": "srcalpha", + "dstColor": "1-srcalpha", + "srcAlpha": "srcalpha", + "dstAlpha": "1-srcalpha" + }, + "depth": { + "function": "always" + }, + "cull": { "mode": "none" }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/pillarbox_right_vertical/vs_saturation", + "fragment": "chains/pillarbox_right_vertical/fs_saturation", + "uniforms": [ + { "name": "s_tex", "type": "int", "values": [ 1.0 ] }, + { "name": "u_saturation", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] } + ] +} \ No newline at end of file diff --git a/bgfx/layouts/sample/horizontal/default.lay b/bgfx/layouts/sample/horizontal/default.lay new file mode 100644 index 00000000000..1554a9ec50b --- /dev/null +++ b/bgfx/layouts/sample/horizontal/default.lay @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bgfx/layouts/sample/vertical/default.lay b/bgfx/layouts/sample/vertical/default.lay new file mode 100644 index 00000000000..19105aa5929 --- /dev/null +++ b/bgfx/layouts/sample/vertical/default.lay @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..80d85fb110742d3ae2415a237aee617a3e0c7b8c GIT binary patch literal 396 zcmZ<@_F!Rb{`8QMfwefkB(=hTk%57cp@7jP!pV7G#q*_-JO!_PHm;EuYk4^xC+ix2P*_6+g#_hWGO_wf&62yu;Y_V*8RVOZ@Cv=ih8kQpF56@VB9knIGT5#ku+ z?i#|ddUddeOVAXcA_pK=1>z`>^AZGrECz-M2?iF10th=a6zC=a2Ifx!0$}q&Y$G5W z{v`S;4h)C3ny$FIQ z@lfzs5d^)9q7*z81U-pf`~xa@_PyCm*i1G#>A=fwzIop_@6CRhjbEBg#2)VbOvvzh z<#u(WQm@^qrpH7i#>h(TMs>AbySX|hDMSX=D{GfmYU}ke@$fZSXG%Io^7v4G>2z-S z)!FjZL%T0Gy}MhRpDz8z6lO%?xE=7?fSim9|L=ygE&!jPDnQ||s%=e{nNyx3>esK{RQxcy@rHr;Jcza$j zcMWn!ka0|8a01)P;Ws>UrMAB2Jw5G%)E39#GGRhwbPsXn`H56xia`ve@gW*tiL`-# zAkZ?6b(zEZzlNH*_W~W(i{-??@ojyF1N}p5nBzY9DyXM41n(T2w7?WKj)ZxvsWkfG z{?ii{2$>qJWj!Sr>+s~k3z0H#Jtdg~O(xgTYdvv}zN0v^| zQ)!WJ&*K>jgu;CDy!sgH@Fws?{LqB!t)DsYW^%iD;~c$3aa?b#r?kjUu9C4pD6F;3 z8*3^p^61a&j0HkrzVXK2R;Raj$RxH5TyOY^8E+=Hi#N{ETNKCj#(GMNd^nTLS|AkG z+UAWll@`grn9N!r6y_UmILactHIPYY1J~OybMV|uZWnKyqqiuI>y7o47I}MgBWrIm&!0fZE1wvu|=zHkn=L$r|yt%rqj_=3cWGze{&W`5! zI}oMgU#$80>&L8xvu1y2O-{-GT#tL=uBS9tZ4HgP);^QZv)c4UB6voMjApL|eb?wX zE689!addkwW)6GLp|ps7CcGll>JNKvnseT2ah|p1*nTj29ggjXaBZcd`;r`&Z~Mpg zJg?;O-NWJXd;O-P_`S}ID1NW=FpA&nyp7`bdY44;d%dfo_zFR#JKxuB`{^}%2zwlB e^6fjDSA<&oe?%ntpvjM+E_(CSN%MCrEq?*u7eF`w literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..eaec59b81d7e206ae62ad1d00702e2031c7fa82e GIT binary patch literal 523 zcmYjLu}Z^G6un8)QbjO!C@w<4Q3vVZAXr<|qzy=4O;U*>#0mukvC=lsL8R#5<}NPc z+And}&Bf74$R;kHo0otW&U^RWbKbef_F9^97k{d>5QU@OI2!iG=Yz`<5h;`(h2#EY zL*f2IX#~6G>vujH{49BE`%l-=@5(ADFhn`r>%cSc1~^``eSw?jMW6$4v7TpKi@iS6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_gaussian.bin b/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..8b8f91d84171a05e150e65ddb018736646570d40 GIT binary patch literal 615 zcmZ9I%}T>S6opTdR78)GY_Q<@Sg2mzt^gCGdjy^3_@6S#Ee z-lwP!(N_p=1<##via2m*?tJ&>%-l3-d4|OVw)S0ldsy8rFcvz1%X5qNO7jWZ$x-)$zVH&QN3%RVnCS2me&kWMLaILolBxyDm zGum^>_oNl|H`yR$mt)qPa7^(_UH6cg@egk9`}!_^KwtE%FB<2p$?GOZVk4>H-TDE2 z$>S^?VY~cZ4wIj*n>?#2@c<~>xaGuH_|=YAOf6B#>RM*=<^MZC(Y_(2yz1qI0PkeeJwt$ojM^=7^Es~{Q)EL< literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..80d85fb110742d3ae2415a237aee617a3e0c7b8c GIT binary patch literal 396 zcmZ<@_F!Rb{`8QMfwefkB(=hTk%57cp@7jP!pV7G#q*_-JO!_PHm;EuYk4^xC+ix2P*_6+g#_hWGO_wf&62yu;Y_V*8RVOZ@Cv=ih8kQpF56@VB9knIGT5#ku+ z?i#|ddUddeOVAXcA_pK=1>z`>^AZGrECz-M2?iF10th=a6zC=a2Ifx!0$}q&Y$G5W z{v`S;4h)C3ny$FIQ z@lfzs5d^)9q7*z81U-pf`~xa@_PyCm*i1G#>A=fwzIop_@6CRhjbEBg#2)VbOvvzh z<#u(WQm@^qrpH7i#>h(TMs>AbySX|hDMSX=D{GfmYU}ke@$fZSXG%Io^7v4G>2z-S z)!FjZL%T0Gy}MhRpDz8z6lO%?xE=7?fSim9|L=ygE&!jPDnQ||s%=e{nNyx3>esK{RQxcy@rHr;Jcza$j zcMWn!ka0|8a01)P;Ws>UrMAB2Jw5G%)E39#GGRhwbPsXn`H56xia`ve@gW*tiL`-# zAkZ?6b(zEZzlNH*_W~W(i{-??@ojyF1N}p5nBzY9DyXM41n(T2w7?WKj)ZxvsWkfG z{?ii{2$>qJWj!Sr>+s~k3z0H#Jtdg~O(xgTYdvv}zN0v^| zQ)!WJ&*K>jgu;CDy!sgH@Fws?{LqB!t)DsYW^%iD;~c$3aa?b#r?kjUu9C4pD6F;3 z8*3^p^61a&j0HkrzVXK2R;Raj$RxH5TyOY^8E+=Hi#N{ETNKCj#(GMNd^nTLS|AkG z+UAWll@`grn9N!r6y_UmILactHIPYY1J~OybMV|uZWnKyqqiuI>y7o47I}MgBWrIm&!0fZE1wvu|=zHkn=L$r|yt%rqj_=3cWGze{&W`5! zI}oMgU#$80>&L8xvu1y2O-{-GT#tL=uBS9tZ4HgP);^QZv)c4UB6voMjApL|eb?wX zE689!addkwW)6GLp|ps7CcGll>JNKvnseT2ah|p1*nTj29ggjXaBZcd`;r`&Z~Mpg zJg?;O-NWJXd;O-P_`S}ID1NW=FpA&nyp7`bdY44;d%dfo_zFR#JKxuB`{^}%2zwlB e^6fjDSA<&oe?%ntpvjM+E_(CSN%MCrEq?*u7eF`w literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..eaec59b81d7e206ae62ad1d00702e2031c7fa82e GIT binary patch literal 523 zcmYjLu}Z^G6un8)QbjO!C@w<4Q3vVZAXr<|qzy=4O;U*>#0mukvC=lsL8R#5<}NPc z+And}&Bf74$R;kHo0otW&U^RWbKbef_F9^97k{d>5QU@OI2!iG=Yz`<5h;`(h2#EY zL*f2IX#~6G>vujH{49BE`%l-=@5(ADFhn`r>%cSc1~^``eSw?jMW6$4v7TpKi@iS6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_gaussian.bin b/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..f7a1c40ba4d06d91719abc2d66563e7af050ba15 GIT binary patch literal 615 zcmZ9Iy-EW?6ot?3CK`g8ZNx@2rG;2*AzEk_6W2sSChUeKg0LV2H3)%#T3BkWFJNhB zYbE*y@gaNyai73*XPh7o+}ShV{W-IfCe4C#n}0eeUuIY5gX`{iG%NrpAaoo3y?VB> z{V*KW-fo`0((&s2x5HfM0v^BXj7Nq~*h&sMXVk(=j4s12VX`U}AT?6&!e!npMfQ)= z0v>r?wN;F+N?N^^>Y%sZuPYTdpy+oYHH^Q0GEbN++TmC$vk8~H@DqddE?oP~0ZE!o z&5ZZd@;PZX;x!HkIpvT&M|`H}zN%-)oADpK-1qfabU-bBR*T0ed-AHOk=#Ifc(yvA zmO8$rD{PCum&4Sji>A(cN literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..80d85fb110742d3ae2415a237aee617a3e0c7b8c GIT binary patch literal 396 zcmZ<@_F!Rb{`8QMfwefkB(=hTk%57cp@7jP!pV7G#q*_-JO!_PHm;EuYk4^xC+ix2P*_6+g#_hWGO_wf&62yu;Y_V*8RVOZ@Cv=ih8kQpF56@VB9knIGT5#ku+ z?i#|ddUddeOVAXcA_pK=1>z`>^AZGrECz-M2?iF10th=a6zC=a2Ifx!0$}q&Y$G5W z{v`S;4h)C3ny$FIQ z@lfzs5d^)9q7*z81U-pf`~xa@_PyCm*i1G#>A=fwzIop_@6CRhjbEBg#2)VbOvvzh z<#u(WQm@^qrpH7i#>h(TMs>AbySX|hDMSX=D{GfmYU}ke@$fZSXG%Io^7v4G>2z-S z)!FjZL%T0Gy}MhRpDz8z6lO%?xE=7?fSim9|L=ygE&!jPDnQ||s%=e{nNyx3>esK{RQxcy@rHr;Jcza$j zcMWn!ka0|8a01)P;Ws>UrMAB2Jw5G%)E39#GGRhwbPsXn`H56xia`ve@gW*tiL`-# zAkZ?6b(zEZzlNH*_W~W(i{-??@ojyF1N}p5nBzY9DyXM41n(T2w7?WKj)ZxvsWkfG z{?ii{2$>qJWj!Sr>+s~k3z0H#Jtdg~O(xgTYdvv}zN0v^| zQ)!WJ&*K>jgu;CDy!sgH@Fws?{LqB!t)DsYW^%iD;~c$3aa?b#r?kjUu9C4pD6F;3 z8*3^p^61a&j0HkrzVXK2R;Raj$RxH5TyOY^8E+=Hi#N{ETNKCj#(GMNd^nTLS|AkG z+UAWll@`grn9N!r6y_UmILactHIPYY1J~OybMV|uZWnKyqqiuI>y7o47I}MgBWrIm&!0fZE1wvu|=zHkn=L$r|yt%rqj_=3cWGze{&W`5! zI}oMgU#$80>&L8xvu1y2O-{-GT#tL=uBS9tZ4HgP);^QZv)c4UB6voMjApL|eb?wX zE689!addkwW)6GLp|ps7CcGll>JNKvnseT2ah|p1*nTj29ggjXaBZcd`;r`&Z~Mpg zJg?;O-NWJXd;O-P_`S}ID1NW=FpA&nyp7`bdY44;d%dfo_zFR#JKxuB`{^}%2zwlB e^6fjDSA<&oe?%ntpvjM+E_(CSN%MCrEq?*u7eF`w literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..eaec59b81d7e206ae62ad1d00702e2031c7fa82e GIT binary patch literal 523 zcmYjLu}Z^G6un8)QbjO!C@w<4Q3vVZAXr<|qzy=4O;U*>#0mukvC=lsL8R#5<}NPc z+And}&Bf74$R;kHo0otW&U^RWbKbef_F9^97k{d>5QU@OI2!iG=Yz`<5h;`(h2#EY zL*f2IX#~6G>vujH{49BE`%l-=@5(ADFhn`r>%cSc1~^``eSw?jMW6$4v7TpKi@iS6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_gaussian.bin b/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..b57b9cd363340682f27c7c3ea7ec2fb4cbbabd40 GIT binary patch literal 615 zcmZ8dyGjE=6g|6}Xb57qv6Yk}Rw=~BWO3t~NXRVNutX37O7MXsAgGO93RBry=ogsQ z&q(kKENuLM{Q&XY87GJr?wvE|KF-WdlSa-NXP*v=H~rg-!Cibky37H{A#m%xz3?gg zc>BH|J-?qm48JfOILrku;PKp|ztDY>&E%kcPAq(Z9@DJ}Csrx}sew8QFY}fO`u})J zz#|{3mg*o@NweEjZFKj0p;DbX6!os8hW=Mi<_RZ8IUH+bg7A_T{=`r^3a|B6fF$iN z#EkYra+);ioed5MIOUK%M_g0%Sk^OSXZ(Yg`M$mjt`Li!#iDV>o~&$YBsY*A-Yu>W zOC5LV3b(`WWia*WnyIszlCJm{P@T_OHD0y30Wf{ttj%Y$UBduXS+$pE@VT!awJ$|d literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..80d85fb110742d3ae2415a237aee617a3e0c7b8c GIT binary patch literal 396 zcmZ<@_F!Rb{`8QMfwefkB(=hTk%57cp@7jP!pV7G#q*_-JO!_PHm;EuYk4^xC+ix2P*_6+g#_hWGO_wf&62yu;Y_V*8RVOZ@Cv=ih8kQpF56@VB9knIGT5#ku+ z?i#|ddUddeOVAXcA_pK=1>z`>^AZGrECz-M2?iF10th=a6zC=a2Ifx!0$}q&Y$G5W z{v`S;4h)C3ny$FIQ z@lfzs5d^)9q7*z81U-pf`~xa@_PyCm*i1G#>A=fwzIop_@6CRhjbEBg#2)VbOvvzh z<#u(WQm@^qrpH7i#>h(TMs>AbySX|hDMSX=D{GfmYU}ke@$fZSXG%Io^7v4G>2z-S z)!FjZL%T0Gy}MhRpDz8z6lO%?xE=7?fSim9|L=ygE&!jPDnQ||s%=e{nNyx3>esK{RQxcy@rHr;Jcza$j zcMWn!ka0|8a01)P;Ws>UrMAB2Jw5G%)E39#GGRhwbPsXn`H56xia`ve@gW*tiL`-# zAkZ?6b(zEZzlNH*_W~W(i{-??@ojyF1N}p5nBzY9DyXM41n(T2w7?WKj)ZxvsWkfG z{?ii{2$>qJWj!Sr>+s~k3z0H#Jtdg~O(xgTYdvv}zN0v^| zQ)!WJ&*K>jgu;CDy!sgH@Fws?{LqB!t)DsYW^%iD;~c$3aa?b#r?kjUu9C4pD6F;3 z8*3^p^61a&j0HkrzVXK2R;Raj$RxH5TyOY^8E+=Hi#N{ETNKCj#(GMNd^nTLS|AkG z+UAWll@`grn9N!r6y_UmILactHIPYY1J~OybMV|uZWnKyqqiuI>y7o47I}MgBWrIm&!0fZE1wvu|=zHkn=L$r|yt%rqj_=3cWGze{&W`5! zI}oMgU#$80>&L8xvu1y2O-{-GT#tL=uBS9tZ4HgP);^QZv)c4UB6voMjApL|eb?wX zE689!addkwW)6GLp|ps7CcGll>JNKvnseT2ah|p1*nTj29ggjXaBZcd`;r`&Z~Mpg zJg?;O-NWJXd;O-P_`S}ID1NW=FpA&nyp7`bdY44;d%dfo_zFR#JKxuB`{^}%2zwlB e^6fjDSA<&oe?%ntpvjM+E_(CSN%MCrEq?*u7eF`w literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..eaec59b81d7e206ae62ad1d00702e2031c7fa82e GIT binary patch literal 523 zcmYjLu}Z^G6un8)QbjO!C@w<4Q3vVZAXr<|qzy=4O;U*>#0mukvC=lsL8R#5<}NPc z+And}&Bf74$R;kHo0otW&U^RWbKbef_F9^97k{d>5QU@OI2!iG=Yz`<5h;`(h2#EY zL*f2IX#~6G>vujH{49BE`%l-=@5(ADFhn`r>%cSc1~^``eSw?jMW6$4v7TpKi@iS6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_gaussian.bin b/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..b0bebf9da4c8f62f3a2c050041aa49355e4d94d9 GIT binary patch literal 575 zcmZ9I%}T>S6oqdxsfHppAVNWqf-YTUAzeu^F*cx`kd#nS2nfX=go2h(lwD@`Wnd8-i3KMo5~;E6ub zr4+i#r@5ZU^k|l7U8bVpcgG&YUq7Bl#sxdMFv=!!*2ym|GMU`?t%+21voy2bOUt)v zoR&ObgfzmQGmI&F89;Gf<_)TiBJ+>;s2G}lPSfKGt?j_}ur@~@|DBGZ*@s#BWJ5f! z7298L+CJyWdMwg)b;p5a<<~n~w|jv?=j)j3=ll0XI_@6Xw%tSK?vvp>-s^xPR2`%U GGxz~&T{$TL literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..7229773bd56f27f895e0bd23e0981fa4cde26dfc GIT binary patch literal 615 zcmZ9Iy-EW?6oqeg6Ag)&ZNx?-rG-_HXcM!zam`A|EZML`5CTf@2SE^wU@MmT1eP{p zsjpxm#3!)w71kHa|2c?~FOHzk2LP#sxXq*PhwP87Dt5NblrYZ%!mh zhf^`5J(YY;+O6IS8u;k4i<&)*DZH=h9-JBe;AWnu@APZ%sb_s^9HAzwnjFSPtij#- zHTcZKEFH29d@mD|pDvg@tI2pxq-5ik1Ix^>b~tZpfr?hwGMmr;*F_5U9pSR6LGOxv oPl$eem*b0kOghb_*Tp8TdO1GXr15xn*f2z7lcRPE*gVYZ2eu|daR2}S literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ef8fa0730c3a16c8151d82c7394b35a81d1f1d40 GIT binary patch literal 241 zcmX9&OA3Ne6g@8$A_6xMB#mk!?_q?~48nmCWOIo!5(-5fGz{8+?V!0EY8tqL7SQWH zyO+Z`_uLP68TvZAf8Gp65tZ?kGl1a*Xi|RV2#f998vs}nlt*o-8V|rH;slMr(1A;= zqCJGV*3l+R!SSB8MIc@^$K0{>9wzzssRYwm2qFZmth5q^t5aB5x_;k#ySc|6yxTY5%>4Gfnb})Q3y$^t&u>TEe!SJ$ z4lNN&s)Kl?yVhCncYEuTmIWmk#GA`2-9dlSs^|a&$NlcJPB^Jj_Fb{F>|fTBxrgo9 zb0YE)i<*N6ZP^n!!ebT7#*V7UwCk_zOcBoSYLX&ywcgM&-KtZy{}kb-(dXN4YyRy_i@K-u1bP%5UEOYl3$K;#D_x?W*FUtre*e-ENp3Pe&^q|P zqT{)^`SS1k=6RIPMF1+j%e}B%!9I&`+l#6R=MbTkgGqzB>yL?ho!sBEc}F&6tV|mCbiK;v;^Db&!%ln|@m|*h9rd zO%&HLxTr_s<{WYvCakPc;+z?6C8huu5zTePX>h<(Cy zrey2B>wbFTLen!S;PXCwpU(4@&9jrm`QaIOkK#=DK4I&*EpiykI+0aq%wauEt>~4h q6+JbzVqQ$Gm@88&X4ce-**3M}J37^Z(YHiRedj@ddSz*riO7E^1xQB# literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..5fe87a15fb52ece4b2651e3427458ce2934cf97c GIT binary patch literal 372 zcmYjMJxjw-6g@9ZFhe2W&`B_(F7btmxTx5wWQc>tQ3ydR2C6AZ3LP9G9lF-hEx6|Q z_ydG2uKobyd8vr^ak%fCd$=EGfv1c4*M|lp3-i%T3P7Mc4YMeprcoXzkL#`E33Qs~ zyV=3;>UgjLU`{AaV^SP1z!TF6(IEsh_{=J<3FTuej0qL(JXDpAE_L-*@qaeU6$i7X z|J5g1*bgPnH;tX zta8zNJ$yUu9lg&!57g96u4e!RH(#nhr6o+O9JHrc)NAs(G|9QC;)Ot6(#TWSemS0X Wa8Yx`*`wr5^s%35($f@8L-hw=t4n(T literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea94c83e62deecbb1897164a60e4cbd4bd062aac GIT binary patch literal 330 zcmYjLOG*P#5Ulrclg(T}aKMd$FuX@ZvdAW8lf?*B@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hB@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hldH!3>J;huZ%H+N<(la5huvrmQQOWM!6uO~%*ZxmqQ74*EG*XwAXA0Dj& zNGPeX4axBicm_)al%aMhS%1?o*3j%3$T?a4UfN16jO01NGw@ z^ufP6nd+A(v-IDLt{64@JUbmJT$KD1cgVStqh#c)B~yvltP2xBR{^HvCI1pOklAF) Hy5?&ZWSLF- literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ef8fa0730c3a16c8151d82c7394b35a81d1f1d40 GIT binary patch literal 241 zcmX9&OA3Ne6g@8$A_6xMB#mk!?_q?~48nmCWOIo!5(-5fGz{8+?V!0EY8tqL7SQWH zyO+Z`_uLP68TvZAf8Gp65tZ?kGl1a*Xi|RV2#f998vs}nlt*o-8V|rH;slMr(1A;= zqCJGV*3l+R!SSB8MIc@^$K0{>9wzzssRYwm2qFZmth5q^t5aB5x_;k#ySc|6yxTY5%>4Gfnb})Q3y$^t&u>TEe!SJ$ z4lNN&s)Kl?yVhCncYEuTmIWmk#GA`2-9dlSs^|a&$NlcJPB^Jj_Fb{F>|fTBxrgo9 zb0YE)i<*N6ZP^n!!ebT7#*V7UwCk_zOcBoSYLX&ywcgM&-KtZy{}kb-(dXN4YyRy_i@K-u1bP%5UEOYl3$K;#D_x?W*FUtre*e-ENp3Pe&^q|P zqT{)^`SS1k=6RIPMF1+j%e}B%!9I&`+l#6R=MbTkgGqzB>yL?ho!sBEc}F&6tV|mCbiK;v;^Db&!%ln|@m|*h9rd zO%&HLxTr_s<{WYvCakPc;+z?6C8huu5zTePX>h<(Cy zrey2B>wbFTLen!S;PXCwpU(4@&9jrm`QaIOkK#=DK4I&*EpiykI+0aq%wauEt>~4h q6+JbzVqQ$Gm@88&X4ce-**3M}J37^Z(YHiRedj@ddSz*riO7E^1xQB# literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..5fe87a15fb52ece4b2651e3427458ce2934cf97c GIT binary patch literal 372 zcmYjMJxjw-6g@9ZFhe2W&`B_(F7btmxTx5wWQc>tQ3ydR2C6AZ3LP9G9lF-hEx6|Q z_ydG2uKobyd8vr^ak%fCd$=EGfv1c4*M|lp3-i%T3P7Mc4YMeprcoXzkL#`E33Qs~ zyV=3;>UgjLU`{AaV^SP1z!TF6(IEsh_{=J<3FTuej0qL(JXDpAE_L-*@qaeU6$i7X z|J5g1*bgPnH;tX zta8zNJ$yUu9lg&!57g96u4e!RH(#nhr6o+O9JHrc)NAs(G|9QC;)Ot6(#TWSemS0X Wa8Yx`*`wr5^s%35($f@8L-hw=t4n(T literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea94c83e62deecbb1897164a60e4cbd4bd062aac GIT binary patch literal 330 zcmYjLOG*P#5Ulrclg(T}aKMd$FuX@ZvdAW8lf?*B@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hB@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e h-?)%5f-YTC^2Zn%~ zi{~{%_2X;w&c8aD@|P#G^xupw88!PnI~ysS=KK@4%ej&xXXLCUQ;OHD3*$hS4rb&f P{}k4d*<|vn;%mMDR^3hE literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ef8fa0730c3a16c8151d82c7394b35a81d1f1d40 GIT binary patch literal 241 zcmX9&OA3Ne6g@8$A_6xMB#mk!?_q?~48nmCWOIo!5(-5fGz{8+?V!0EY8tqL7SQWH zyO+Z`_uLP68TvZAf8Gp65tZ?kGl1a*Xi|RV2#f998vs}nlt*o-8V|rH;slMr(1A;= zqCJGV*3l+R!SSB8MIc@^$K0{>9wzzssRYwm2qFZmth5q^t5aB5x_;k#ySc|6yxTY5%>4Gfnb})Q3y$^t&u>TEe!SJ$ z4lNN&s)Kl?yVhCncYEuTmIWmk#GA`2-9dlSs^|a&$NlcJPB^Jj_Fb{F>|fTBxrgo9 zb0YE)i<*N6ZP^n!!ebT7#*V7UwCk_zOcBoSYLX&ywcgM&-KtZy{}kb-(dXN4YyRy_i@K-u1bP%5UEOYl3$K;#D_x?W*FUtre*e-ENp3Pe&^q|P zqT{)^`SS1k=6RIPMF1+j%e}B%!9I&`+l#6R=MbTkgGqzB>yL?ho!sBEc}F&6tV|mCbiK;v;^Db&!%ln|@m|*h9rd zO%&HLxTr_s<{WYvCakPc;+z?6C8huu5zTePX>h<(Cy zrey2B>wbFTLen!S;PXCwpU(4@&9jrm`QaIOkK#=DK4I&*EpiykI+0aq%wauEt>~4h q6+JbzVqQ$Gm@88&X4ce-**3M}J37^Z(YHiRedj@ddSz*riO7E^1xQB# literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..5fe87a15fb52ece4b2651e3427458ce2934cf97c GIT binary patch literal 372 zcmYjMJxjw-6g@9ZFhe2W&`B_(F7btmxTx5wWQc>tQ3ydR2C6AZ3LP9G9lF-hEx6|Q z_ydG2uKobyd8vr^ak%fCd$=EGfv1c4*M|lp3-i%T3P7Mc4YMeprcoXzkL#`E33Qs~ zyV=3;>UgjLU`{AaV^SP1z!TF6(IEsh_{=J<3FTuej0qL(JXDpAE_L-*@qaeU6$i7X z|J5g1*bgPnH;tX zta8zNJ$yUu9lg&!57g96u4e!RH(#nhr6o+O9JHrc)NAs(G|9QC;)Ot6(#TWSemS0X Wa8Yx`*`wr5^s%35($f@8L-hw=t4n(T literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea94c83e62deecbb1897164a60e4cbd4bd062aac GIT binary patch literal 330 zcmYjLOG*P#5Ulrclg(T}aKMd$FuX@ZvdAW8lf?*B@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hB@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hl8uc1PD@K$^s`Xm%(qnvsp3SSI z?~p>z9(;htf2yL({>(o!-_Gt{L|vm^KW7Tf=XjX(Urw_0&M3ejRM3lhQLm$Oc6hW3 zAflwkHYCRz5HeWGp$xT0$@-gyLPN7>Am?Na2XQO5I8LszbdcUWc^jvjUN?+FFS@+R!SSB8MIc@^$K0{>9wzzssRYwm2qFZmth5q^t5aB5x_;k#ySc|6yxTY5%>4Gfnb})Q3y$^t&u>TEe!SJ$ z4lNN&s)Kl?yVhCncYEuTmIWmk#GA`2-9dlSs^|a&$NlcJPB^Jj_Fb{F>|fTBxrgo9 zb0YE)i<*N6ZP^n!!ebT7#*V7UwCk_zOcBoSYLX&ywcgM&-KtZy{}kb-(dXN4YyRy_i@K-u1bP%5UEOYl3$K;#D_x?W*FUtre*e-ENp3Pe&^q|P zqT{)^`SS1k=6RIPMF1+j%e}B%!9I&`+l#6R=MbTkgGqzB>yL?ho!sBEc}F&6tV|mCbiK;v;^Db&!%ln|@m|*h9rd zO%&HLxTr_s<{WYvCakPc;+z?6C8huu5zTePX>h<(Cy zrey2B>wbFTLen!S;PXCwpU(4@&9jrm`QaIOkK#=DK4I&*EpiykI+0aq%wauEt>~4h q6+JbzVqQ$Gm@88&X4ce-**3M}J37^Z(YHiRedj@ddSz*riO7E^1xQB# literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..5fe87a15fb52ece4b2651e3427458ce2934cf97c GIT binary patch literal 372 zcmYjMJxjw-6g@9ZFhe2W&`B_(F7btmxTx5wWQc>tQ3ydR2C6AZ3LP9G9lF-hEx6|Q z_ydG2uKobyd8vr^ak%fCd$=EGfv1c4*M|lp3-i%T3P7Mc4YMeprcoXzkL#`E33Qs~ zyV=3;>UgjLU`{AaV^SP1z!TF6(IEsh_{=J<3FTuej0qL(JXDpAE_L-*@qaeU6$i7X z|J5g1*bgPnH;tX zta8zNJ$yUu9lg&!57g96u4e!RH(#nhr6o+O9JHrc)NAs(G|9QC;)Ot6(#TWSemS0X Wa8Yx`*`wr5^s%35($f@8L-hw=t4n(T literal 0 HcmV?d00001 diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea94c83e62deecbb1897164a60e4cbd4bd062aac GIT binary patch literal 330 zcmYjLOG*P#5Ulrclg(T}aKMd$FuX@ZvdAW8lf?*B@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e hB@f#J+T_9W)hw4FNKWKTst&0l8W#jqI;;v^1}*T?5k5%%-( zBzq_EE^?7~&ilw;wL6zsp7E;&umFNmIPDhdz)#5azdkk9pPrf>-)l_8Y&hrc>PO+e h zH2_4E)YyjPcmqNPOF5LG4k%fF(=gM}>>0>8S)*axj4h6newGf?>ql?!kM&$sJ8#ed`C-27w>!HTQQhI|XV6?qpts?Z*2?dtMZ+>1)5W$tTo-G2rIn zdCge;_!_RfbykznQ8e&xeCRJxdl0?MMf?PVAFvb^D|QvauYN26f`us zs<{*ta`MZerkCUv0F8||v<8a8*b24^KvPRfi&B9`Xn@VoLAFT~q&Ph%-mNGx-5KOI Spau=NW-Yjjf$D0xxEKI9`Arc3 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_gaussian.bin b/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..34b997772e7d5482fecba61b1a13d6f126b20e20 GIT binary patch literal 2901 zcmchZQI4B15Qa&$RV(%q^9aqBVjBpns86j{eeVGf+R&_}01<>NN!6#Gv{&c}cE&Wp zX=SNed6A+~JY)MC8~gX%ef@GZ`}zCVm2=%?yQ0rpc`U+LGsl^cXC=#`YGqvwp0{1r z3QWpVS>1rA?F_ufChnHUco5zI zSsxK6y6;mf48o8xAucB#2=o6SU^;NZFoi*Tfx#YU5*IA-ZJ;o1ToGC$DvDwoq+0@^ zF>=xnH_yV7QUakdftX16!UkwTAT%ZrXA2(L03`%MV*&{tN8AP|CJ-7ED2h{NgA)-4 zjfsp(=5eqvP_8XY@F(c>pD*u9}-9a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f6160fe747706bb8929a0d33df22613167097ad GIT binary patch literal 456 zcmY+AT~35B6op};FO7@1kDy}%1v4`tK4~Vty8zMv!!!X(O8FU$Pwv9qxdm6?Ee-=F zO?%sW`kmA6Utg~5&!6v=b<@TT*RA4O$ZBOAs}@kGPnb0+W2Gh{*uIn+kbyUhd+mNnt=A^jpwJ+-q_?tyjMJb Ol7&=r6BB$8V*LUwB9PMn literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..9dd618de8a02bb855e0ba2f88983419191ff7d0b GIT binary patch literal 419 zcmZvY!EVAZ42DyQQ=Y=df~KnNxS`!SA|Y|DLfaKjq^`0wv>;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN`VSaTG9ejRUE=>VbNuUZE%GKq0tl zys)hKf8NY^_D_$q;N$x%Ahb@L$}T&jPqToKfPCUDtu^Yowiz5%eyqS{=?Y|$>a#Xt zL+{8-lq>zJtkUIOLyQKSHL2F-fCwi|tIFKxyBq(X7=!bZ>r%aFQw+(4v@4jVK(DM7&jJKrGX@W1JnkY98$iDs=(`!0@lGlE0fRfbykznQ8e&xeCRJxdl0?MMf?PVAFvb^D|QvauYN26f`us zs<{*ta`MZerkCUv0F8||v<8a8*b24^KvPRfi&B9`Xn@VoLAFT~q&Ph%-mNGx-5KOI Spau=NW-Yjjf$D0xxEKI9`Arc3 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_gaussian.bin b/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..34b997772e7d5482fecba61b1a13d6f126b20e20 GIT binary patch literal 2901 zcmchZQI4B15Qa&$RV(%q^9aqBVjBpns86j{eeVGf+R&_}01<>NN!6#Gv{&c}cE&Wp zX=SNed6A+~JY)MC8~gX%ef@GZ`}zCVm2=%?yQ0rpc`U+LGsl^cXC=#`YGqvwp0{1r z3QWpVS>1rA?F_ufChnHUco5zI zSsxK6y6;mf48o8xAucB#2=o6SU^;NZFoi*Tfx#YU5*IA-ZJ;o1ToGC$DvDwoq+0@^ zF>=xnH_yV7QUakdftX16!UkwTAT%ZrXA2(L03`%MV*&{tN8AP|CJ-7ED2h{NgA)-4 zjfsp(=5eqvP_8XY@F(c>pD*u9}-9a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f6160fe747706bb8929a0d33df22613167097ad GIT binary patch literal 456 zcmY+AT~35B6op};FO7@1kDy}%1v4`tK4~Vty8zMv!!!X(O8FU$Pwv9qxdm6?Ee-=F zO?%sW`kmA6Utg~5&!6v=b<@TT*RA4O$ZBOAs}@kGPnb0+W2Gh{*uIn+kbyUhd+mNnt=A^jpwJ+-q_?tyjMJb Ol7&=r6BB$8V*LUwB9PMn literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..9dd618de8a02bb855e0ba2f88983419191ff7d0b GIT binary patch literal 419 zcmZvY!EVAZ42DyQQ=Y=df~KnNxS`!SA|Y|DLfaKjq^`0wv>;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQNRfbykznQ8e&xeCRJxdl0?MMf?PVAFvb^D|QvauYN26f`us zs<{*ta`MZerkCUv0F8||v<8a8*b24^KvPRfi&B9`Xn@VoLAFT~q&Ph%-mNGx-5KOI Spau=NW-Yjjf$D0xxEKI9`Arc3 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_gaussian.bin b/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..34b997772e7d5482fecba61b1a13d6f126b20e20 GIT binary patch literal 2901 zcmchZQI4B15Qa&$RV(%q^9aqBVjBpns86j{eeVGf+R&_}01<>NN!6#Gv{&c}cE&Wp zX=SNed6A+~JY)MC8~gX%ef@GZ`}zCVm2=%?yQ0rpc`U+LGsl^cXC=#`YGqvwp0{1r z3QWpVS>1rA?F_ufChnHUco5zI zSsxK6y6;mf48o8xAucB#2=o6SU^;NZFoi*Tfx#YU5*IA-ZJ;o1ToGC$DvDwoq+0@^ zF>=xnH_yV7QUakdftX16!UkwTAT%ZrXA2(L03`%MV*&{tN8AP|CJ-7ED2h{NgA)-4 zjfsp(=5eqvP_8XY@F(c>pD*u9}-9a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f6160fe747706bb8929a0d33df22613167097ad GIT binary patch literal 456 zcmY+AT~35B6op};FO7@1kDy}%1v4`tK4~Vty8zMv!!!X(O8FU$Pwv9qxdm6?Ee-=F zO?%sW`kmA6Utg~5&!6v=b<@TT*RA4O$ZBOAs}@kGPnb0+W2Gh{*uIn+kbyUhd+mNnt=A^jpwJ+-q_?tyjMJb Ol7&=r6BB$8V*LUwB9PMn literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..9dd618de8a02bb855e0ba2f88983419191ff7d0b GIT binary patch literal 419 zcmZvY!EVAZ42DyQQ=Y=df~KnNxS`!SA|Y|DLfaKjq^`0wv>;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQNtk@}C^-MWXuFw;7?AWnN zGYcW+&%Bv0y=b*8% zMQ_Lplq>zAtkUJpf*1>I)}&gSEh3yWttxY$@2>oRVhql2u1oc%O))eV(k@|gfo!d| zP)Jom$mk~pe~2wAq$kk|)8m~V5Af7^j6=c293n2*AH8W&pZxKr?c{u)tOv&^htmdd ucSZLcZ}+Y+^d16Bhq=+Bk2whb$Qay@`G-q%`G^g;%RlrxjbHLbDftBk=#^>! literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..22e2f0c23d0e0e483f849e0e47fd609d34302edd GIT binary patch literal 238 zcmZ<@_F!Rb{`8QMfwefkB(;KpkpYMRfbykznQ8e&xeCRJxdl0?MMf?PVAFvb^D|QvauYN26f`us zs<{*ta`MZerkCUv0F8||v<8a8*b24^KvPRfi&B9`Xn@VoLAFT~q&Ph%-mNGx-5KOI Spau=NW-Yjjf$D0xxEKI9`Arc3 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_gaussian.bin b/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..34b997772e7d5482fecba61b1a13d6f126b20e20 GIT binary patch literal 2901 zcmchZQI4B15Qa&$RV(%q^9aqBVjBpns86j{eeVGf+R&_}01<>NN!6#Gv{&c}cE&Wp zX=SNed6A+~JY)MC8~gX%ef@GZ`}zCVm2=%?yQ0rpc`U+LGsl^cXC=#`YGqvwp0{1r z3QWpVS>1rA?F_ufChnHUco5zI zSsxK6y6;mf48o8xAucB#2=o6SU^;NZFoi*Tfx#YU5*IA-ZJ;o1ToGC$DvDwoq+0@^ zF>=xnH_yV7QUakdftX16!UkwTAT%ZrXA2(L03`%MV*&{tN8AP|CJ-7ED2h{NgA)-4 zjfsp(=5eqvP_8XY@F(c>pD*u9}-9a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f6160fe747706bb8929a0d33df22613167097ad GIT binary patch literal 456 zcmY+AT~35B6op};FO7@1kDy}%1v4`tK4~Vty8zMv!!!X(O8FU$Pwv9qxdm6?Ee-=F zO?%sW`kmA6Utg~5&!6v=b<@TT*RA4O$ZBOAs}@kGPnb0+W2Gh{*uIn+kbyUhd+mNnt=A^jpwJ+-q_?tyjMJb Ol7&=r6BB$8V*LUwB9PMn literal 0 HcmV?d00001 diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..9dd618de8a02bb855e0ba2f88983419191ff7d0b GIT binary patch literal 419 zcmZvY!EVAZ42DyQQ=Y=df~KnNxS`!SA|Y|DLfaKjq^`0wv>;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQN;AA>0V(^Fw+6eG%it; z&;H`yoAq)MT)w{oA=}Jhc~}|xm;^!u;=-r0*5J0aCG4=;HQ>s84l2uOPbOZ-C-{|d zL!W4o>Zb)M7ud4PiA=!?r%aD^<@?>k{|~0%{N}dCcQX3ctd*U^n1bDe1!#pegj0Ev z;D2Iu!}cs$@bmp19S`t!&6tL96u&?c#nV5$>zR-FqOQNv1dR3Pp-<|pY#1veZ+}7$vn`%g|q+P%?1+ul; zKqXZTF{4KcVG&z3NY9cLhQ~WU?BU+en8t#OIV4=LKYG`rKF!Cw-pl1KTMrYX98Vp< v)fs)_1igD>96SVChq||O5PW%;;${r4$8h4qV(AwfV86d`>S+9scS^|*-9eQE literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..db0fe2b487b6c8f1624a7136f8c83734c2b7dcd1 GIT binary patch literal 181 zcmZ<@_F!Rb{`8QMfwefkB(;KpkpYNiF)%QcB^Fg?=A|o?r6!vwl*K3K=j0a|SaTr> z8v%uZT9Whgi&B6xrFofY`9--3#fiBEIjKcPE(%~1fm-r2QxtL&GxHQQG`Xs|6co~P r;@yf8)15&^D%dJ$01YWAElLII&;V=EK{i-ZK?`oZrZrbB7Z(Enmi{^a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..eba13b8fcf5bf00d6fcb2a5514d035654c9ee9d5 GIT binary patch literal 2861 zcmchZ|7xQ^5Xa5YLh)W={?w*t_lFuwxW8IT|L+5cG+q#*7LBP%>0kGtrLWK@=*-$A zn+w8Gwt@`qjJu!Nb@#h-dw+K_`uqNNV*PC5W!lDdwn^EKk!6j@Gt2U{sI#)@JZDW@ zC9|xlyXI+4UGPhMUTw=-CDl4B=CDd11gt3bP?pt9~`Vf-HiOb50Yt}tj1F!;reBqR@A6DUj@XN0yF<@BFE89)XF8d=3PbkQlQPy+%fx7!YJKM-j6nl^=Wjg#4YW;% zI(37|$Y8=anA8t;dC^Tg%zexUEHacd9Fm|hO?&03Pl4KP*n;YZ=q%&D+ zVHA29hZ_j}A#vgDUlS2r|N9wiI?BD5?d@czf!W@cshfPGMg622rOzRD@Ifj01*CR{ AvH$=8 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..6319f0af6f219753ed72d6348dbb92f765559542 GIT binary patch literal 421 zcmZ9IO=`n15JqLlN~f5m)fgc=SrkI{T?PW(8pm;iO6)PJtk@}Cl^(QL$O$_Bi=ApA z#P_5(GkV>>EWGdAug7>5JDpv22HzJRV;=jVJ+ap4LuE5?S-OTKPVtOJZTJIN5h(FP zTaCp(6cMsnog$heJ#&d^baCo!?rxjK5xDt-s?cv}a>x_AhN(j`p*~Wo3-AU1`%4f>8|cPvwqu){%l~n gI@AqU-3ma-XCYuY=24r3Vi5Je+jTR3^cUys4_B>(q5uE@ literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..db0fe2b487b6c8f1624a7136f8c83734c2b7dcd1 GIT binary patch literal 181 zcmZ<@_F!Rb{`8QMfwefkB(;KpkpYNiF)%QcB^Fg?=A|o?r6!vwl*K3K=j0a|SaTr> z8v%uZT9Whgi&B6xrFofY`9--3#fiBEIjKcPE(%~1fm-r2QxtL&GxHQQG`Xs|6co~P r;@yf8)15&^D%dJ$01YWAElLII&;V=EK{i-ZK?`oZrZrbB7Z(Enmi{^a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..eba13b8fcf5bf00d6fcb2a5514d035654c9ee9d5 GIT binary patch literal 2861 zcmchZ|7xQ^5Xa5YLh)W={?w*t_lFuwxW8IT|L+5cG+q#*7LBP%>0kGtrLWK@=*-$A zn+w8Gwt@`qjJu!Nb@#h-dw+K_`uqNNV*PC5W!lDdwn^EKk!6j@Gt2U{sI#)@JZDW@ zC9|xlyXI+4UGPhMUTw=-CDl4B=CDd11gt3bP?pt9~`Vf-HiOb50Yt}tj1F!;reBqR@A6DUj@XN0yF<@BFE89)XF8d=3PbkQlQPy+%fx7!YJKM-j6nl^=Wjg#4YW;% zI(37|$Y8=anA8t;dC^Tg%zexUEHacd9Fm|hO?&03Pl4KP*n;YZ=q%&D+ zVHA29hZ_j}A#vgDUlS2r|N9wiI?BD5?d@czf!W@cshfPGMg622rOzRD@Ifj01*CR{ AvH$=8 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..0d8e84da2a00a1cd4f7a3f2abc004d761039cb9e GIT binary patch literal 424 zcmZ9IL2AP=5JhFkN~f5ml?EZZNoWb(cNr*jYh1?-3b7}svSKH6)lIM2EA#{%#dhoz zgb@EpZ)WuR@;nK?et!bStHkO2xHh<(1dIjjoA%UNqu(l z8v%uZT9Whgi&B6xrFofY`9--3#fiBEIjKcPE(%~1fm-r2QxtL&GxHQQG`Xs|6co~P r;@yf8)15&^D%dJ$01YWAElLII&;V=EK{i-ZK?`oZrZrbB7Z(Enmi{^a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..eba13b8fcf5bf00d6fcb2a5514d035654c9ee9d5 GIT binary patch literal 2861 zcmchZ|7xQ^5Xa5YLh)W={?w*t_lFuwxW8IT|L+5cG+q#*7LBP%>0kGtrLWK@=*-$A zn+w8Gwt@`qjJu!Nb@#h-dw+K_`uqNNV*PC5W!lDdwn^EKk!6j@Gt2U{sI#)@JZDW@ zC9|xlyXI+4UGPhMUTw=-CDl4B=CDd11gt3bP?pt9~`Vf-HiOb50Yt}tj1F!;reBqR@A6DUj@XN0yF<@BFE89)XF8d=3PbkQlQPy+%fx7!YJKM-j6nl^=Wjg#4YW;% zI(37|$Y8=anA8t;dC^Tg%zexUEHacd9Fm|hO?&03Pl4KP*n;YZ=q%&D+ zVHA29hZ_j}A#vgDUlS2r|N9wiI?BD5?d@czf!W@cshfPGMg622rOzRD@Ifj01*CR{ AvH$=8 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..3c794ab60042a79478e6ef158db4a6cefe7eadeb GIT binary patch literal 427 zcmZ9IOK!q25QZIzl}|CtxJ8x|5UPZ_?-HpJ+bD#9j7SE#j!BBT>XK7(g`S|37YWS5 zvi@)8pU3+1W8(e(-8{yN$m#UFGI*GHjCt%zZ)~m6o5H5x(qs;Cl;9DKTJi@lBXGhm zZ8hdkC?sUlGC?$3Ds!=^biQxh+}&*?hv3EqMXq;fGRR^(hhai;LcJwb=im!|;m}&z z>_lEsuq2`X%kMM1*EsZ*R8t6~5)Ztrhz}dcva0d^7_GXU2>U~Cc)43QKBIZ-M1Qm} irFMOTSrb!G@=XYM?e#?)wH}DhuDx+HQ-AIs&e=bBV1@7i literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..db0fe2b487b6c8f1624a7136f8c83734c2b7dcd1 GIT binary patch literal 181 zcmZ<@_F!Rb{`8QMfwefkB(;KpkpYNiF)%QcB^Fg?=A|o?r6!vwl*K3K=j0a|SaTr> z8v%uZT9Whgi&B6xrFofY`9--3#fiBEIjKcPE(%~1fm-r2QxtL&GxHQQG`Xs|6co~P r;@yf8)15&^D%dJ$01YWAElLII&;V=EK{i-ZK?`oZrZrbB7Z(Enmi{^a literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..eba13b8fcf5bf00d6fcb2a5514d035654c9ee9d5 GIT binary patch literal 2861 zcmchZ|7xQ^5Xa5YLh)W={?w*t_lFuwxW8IT|L+5cG+q#*7LBP%>0kGtrLWK@=*-$A zn+w8Gwt@`qjJu!Nb@#h-dw+K_`uqNNV*PC5W!lDdwn^EKk!6j@Gt2U{sI#)@JZDW@ zC9|xlyXI+4UGPhMUTw=-CDl4B=CDd11gt3bP?pt9~`Vf-HiOb50Yt}tj1F!;reBqR@A6DUj@XN0yF<@BFE89)XF8d=3PbkQlQPy+%fx7!YJKM-j6nl^=Wjg#4YW;% zI(37|$Y8=anA8t;dC^Tg%zexUEHacd9Fm|hO?&03Pl4KP*n;YZ=q%&D+ zVHA29hZ_j}A#vgDUlS2r|N9wiI?BD5?d@czf!W@cshfPGMg622rOzRD@Ifj01*CR{ AvH$=8 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_gaussian.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_gaussian.bin new file mode 100644 index 0000000000000000000000000000000000000000..af6c9349f410fcc16eaa87e32ee35a9d92bb026b GIT binary patch literal 377 zcmZ9I%?g4*6h=pIHBWJu8X;!xqQmVFNLw=uk H=bXI(ZC875 literal 0 HcmV?d00001 diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..e0a84d1dba0e47b0882b3ce6725a43751d743d41 GIT binary patch literal 425 zcmZ9IO=`n15QSyPN~f5ml?EZZ2_%H>y9@-nHLl|Zh1e5RS+P^P>Z-@=6?%e>Vmo#! zgb?qWdGqtKeVzngzdr%vRpNAh-WWVg0>%RNO>b(g(XW-w!R6T;(j>zp8nxzk;E})y z-?i0P{zEY#o7Wkl*-@HHO{2?w>*j85BRK{)PN+)#hNgfbwR0FcBq!86QgsQT;2#`X zOIw`CD~Z-5^nZCd!;{BxsHB=fB$c@1bwhlZK-P`N`(v`{W+EI8wPAX*zWR*%^?~7N lU<&Q(E@zuf^0Hd^BRaEo!`F`bWq)$c{s3+eg^B7^Rt)EZbK~>DsHG=Q%IVj-V~&%^X@zmYTMY0rqd#tLz%3 zh4=T^#+M5wPX-*o!_X_*NkC^dAi{Fe!DeGDZ5iogSr$+!>5r$x!SotpkMlimu4$M? zQ(TsQ>jD7$!q#avtM6hg4`4zDzI3>VwFMX|dd_qt8PSumYS3d9&O^F?Mjm#G{wf5W zBD133QB7`xGJeB-xY{F(wSKGebKR74V}kUuv82tvX3&`Kg1mal%dBeiy0We|=_&79 z75@ya!6T1gbiXv<+cd98ut1xXU6JJE!-uv@AF?E`?(VkazOLZs+N|Z9 zu)3_7RQt6Yj$y>xzD(#eI*fGX^>qWEj2hdL_>_4P2ZCI=p__ zkRRq7(|eIO=4N$hZnXR^5%L#&$o7V@4UJhuz9+#jw*tz-XiH?dfliFw+^G0tWC)@N z12sP3FghyiG-%r~;3j}pH$#0jAhHKjpywozkv35nMU--WixFEGy8&Z|V^DZ^8nVN~bkNXy3+ONa9dIBRB6u%QI)V1SKnDzHZvhDrFYp{K z9;zhqE};=hbd*3)IC+k~JT$_9juy}%f*E)FhNzjefT9vsexgVRi3EiciBfMShA}}* zW7<)^WBVm2+Xqw&f#OEkODHJZP~02p#t4s7iE zdFw%DyXxYkxf>`;5S+yVUhXZFZ3wCrL2*aK5()}8l(!-%>IiB{Lc|BU#AI87X-hEN z5<)UT;b!vI1Vc4JEl=#CC66=P5=>iy;g;YM2?{3?^R@&-EdenNOYCF5s6J*}f@w=I z+!AWp@YJe-d0RrJ{L={qF%7800TvMplaJY!VA>MQZHZ~wBa?Id;VlG)3V~TdIPP}Q z(*F^&g}}5Bm`eyRrY@_|8~g8_`wY!}X63%K|90|oo&4OD{IH11 z@0wKHPJgb`pS#k3hCCav1KSQCK=HBVg(e#Iy2Gp{q zxt;u6CqH*5|2X;3e^c&l1dbX3Vj4(}e^YJ?fomafmk{RN9lGq{-j?8~B_O83)?rjNyS^{DkP_6~4uq`39C4|coGZea&5Z;!MtIenXPa&oO<=RRJ z+Y(|tTX0!ohC;V|!rKx8wFJa8pd!bnPuQLi+7klzgxr%OJ9FV}3W1seVwzaXn{#2C zLTFP6+!Pc)KoQ=q5U494rb*>ELlL$sV(p3;cg6oW-V)xnh*4WWOcP5Tb=~g#Vr2`x zUW;k?S?{X@d5mQ&Md8-<%U8ImHkk6eyg3{{hUPghJTgU-k2D#af>!!TIHX;#SN{Pl CTEwgX literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..de6ec5972af75113b6aa2a7b25ec9c3d8881f2ea GIT binary patch literal 832 zcmZ{iK~BRk5JiJvl~c?L*$}KIDFRergM?s#SRhuYvP|ogNRAyj4ipe8PRbQH0ghwS zP?c3v&&>PZe|&j&wX^m4{S`&&b`-TuDHkAF#haSVI8@v)F^L=$o~hx>nNoT_n#3QQhi+RFrk1ri5 zhL$$Ww3?YxNjFzmO2y@xNw4RP->^~w+Heb689_^UcxVh;a9YagG=Z6t_U}5;d)Wmy z)7qKGwkWtpBRrkjFcJW;IaqHzo1eO9&Y|g|v8}$~dJ||^RST{isi|rjy8OB8!f}`I zAIttuPG3!IwNKJi^)u5n?M}isob^TI(4+^WZt_2;O~)(hIAHSuHt#SN9k3bf1M*PRyUlSZ yrmp!Qa54;gel=wHM#$3N#aqqEi&gmb{nE+ziIU-yT=h7En%lif-)Ns*97jKR^BQCT literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..122b7dee5c387c772067b0ca196a2f12b636ec8d GIT binary patch literal 757 zcmZ{iy-ve06oms~%2V74rKpP1kge(tLq(+umMV(e)G0=Z9XZ!&3S#0(S$F`R0Oz+( zRkqkV_nyz^u!CP!=Xl_qu3o(&(lkWJ-rR24=``r==QKKB=$Z6FB^o zpGH~1<=lI|xo2Kh4_6moKi`INeQ6k~V0;IhWVFahOd+F4(wSMHR53!C5?o-qdL>&b zA9=12K1_fl6$AqyQ7lp+U0AOPqGTI|)N<`GoSigNt;t2fkO@9gc|(=2RY=QN2)P{( z^K04X-#kwW&wzGmwCvqZ#si)J_APUV=<8BvJ~RLEdgd$$}3_wMDMh{CV-s-+R zm3q*4XDws9#|2>=tUs0-Wtc`xZ>T`BqY>j_IDuGj{mIW#Xi09M?oqmDqmqQmdhxbd z#WON!32L?IP8|Sd`JTwgt4gPL=luZlCSBih9d`nrM%wr!Au_OO~hrd_&tbYp$>DmZUiKNE1Bd)tP){*PbPJbOI4y{QBC Rrcz-`ic0d9UPoz~#xK3k5Rd=> literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a3da392480084ed1b98155d1951154fce2cb223 GIT binary patch literal 634 zcmZ{i%SyvQ6o#X?%2S+`%t$D;bXRpF6kQY-#Z?Kzm`u{(T*6#RL0tKyzJgEST#`~t z-DUnc=ljq3C(HHI)y3D(cb2_hW|=dcY(Y}NOiwEYf?3KJxv|<+7WSOlmF4R#t(kt7 zy|eI<12kMwJBJ;q6jyq>7^Rt)EZbK~>DsHG=Q%IVj-V~&%^X@zmYTMY0rqd#tLz%3 zh4=T^#+M5wPX-*o!_X_*NkC^dAi{Fe!DeGDZ5iogSr$+!>5r$x!SotpkMlimu4$M? zQ(TsQ>jD7$!q#avtM6hg4`4zDzI3>VwFMX|dd_qt8PSumYS3d9&O^F?Mjm#G{wf5W zBD133QB7`xGJeB-xY{F(wSKGebKR74V}kUuv82tvX3&`Kg1mal%dBeiy0We|=_&79 z75@ya!6T1gbiXv<+cd98ut1xXU6JJE!-uv@AF?E`?(VkazOLZs+N|Z9 zu)3_7RQt6Yj$y>xzD(#eI*fGX^>qWEj2hdL_>_4P2ZCI=p__ zkRRq7(|eIO=4N$hZnXR^5%L#&$o7V@4UJhuz9+#jw*tz-XiH?dfliFw+^G0tWC)@N z12sP3FghyiG-%r~;3j}pH$#0jAhHKjpywozkv35nMU--WixFEGy8&Z|V^DZ^8nVN~bkNXy3+ONa9dIBRB6u%QI)V1SKnDzHZvhDrFYp{K z9;zhqE};=hbd*3)IC+k~JT$_9juy}%f*E)FhNzjefT9vsexgVRi3EiciBfMShA}}* zW7<)^WBVm2+Xqw&f#OEkODHJZP~02p#t4s7iE zdFw%DyXxYkxf>`;5S+yVUhXZFZ3wCrL2*aK5()}8l(!-%>IiB{Lc|BU#AI87X-hEN z5<)UT;b!vI1Vc4JEl=#CC66=P5=>iy;g;YM2?{3?^R@&-EdenNOYCF5s6J*}f@w=I z+!AWp@YJe-d0RrJ{L={qF%7800TvMplaJY!VA>MQZHZ~wBa?Id;VlG)3V~TdIPP}Q z(*F^&g}}5Bm`eyRrY@_|8~g8_`wY!}X63%K|90|oo&4OD{IH11 z@0wKHPJgb`pS#k3hCCav1KSQCK=HBVg(e#Iy2Gp{q zxt;u6CqH*5|2X;3e^c&l1dbX3Vj4(}e^YJ?fomafmk{RN9lGq{-j?8~B_O83)?rjNyS^{DkP_6~4uq`39C4|coGZea&5Z;!MtIenXPa&oO<=RRJ z+Y(|tTX0!ohC;V|!rKx8wFJa8pd!bnPuQLi+7klzgxr%OJ9FV}3W1seVwzaXn{#2C zLTFP6+!Pc)KoQ=q5U494rb*>ELlL$sV(p3;cg6oW-V)xnh*4WWOcP5Tb=~g#Vr2`x zUW;k?S?{X@d5mQ&Md8-<%U8ImHkk6eyg3{{hUPghJTgU-k2D#af>!!TIHX;#SN{Pl CTEwgX literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..de6ec5972af75113b6aa2a7b25ec9c3d8881f2ea GIT binary patch literal 832 zcmZ{iK~BRk5JiJvl~c?L*$}KIDFRergM?s#SRhuYvP|ogNRAyj4ipe8PRbQH0ghwS zP?c3v&&>PZe|&j&wX^m4{S`&&b`-TuDHkAF#haSVI8@v)F^L=$o~hx>nNoT_n#3QQhi+RFrk1ri5 zhL$$Ww3?YxNjFzmO2y@xNw4RP->^~w+Heb689_^UcxVh;a9YagG=Z6t_U}5;d)Wmy z)7qKGwkWtpBRrkjFcJW;IaqHzo1eO9&Y|g|v8}$~dJ||^RST{isi|rjy8OB8!f}`I zAIttuPG3!IwNKJi^)u5n?M}isob^TI(4+^WZt_2;O~)(hIAHSuHt#SN9k3bf1M*PRyUlSZ yrmp!Qa54;gel=wHM#$3N#aqqEi&gmb{nE+ziIU-yT=h7En%lif-)Ns*97jKR^BQCT literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..122b7dee5c387c772067b0ca196a2f12b636ec8d GIT binary patch literal 757 zcmZ{iy-ve06oms~%2V74rKpP1kge(tLq(+umMV(e)G0=Z9XZ!&3S#0(S$F`R0Oz+( zRkqkV_nyz^w7`-$N+0t!Y1G{9IrBvg|C-oJ40vFg) zXllX%X8)Q0+xdBYemFb%{{6A6^Ha-GIpb^KB&B&qVhSlml8o#erHT>Cgx~~|=QpyX z@{wl>;nN0KC4%4(NEC}iNFQc1f+*QSA$5FrJ|FEg*IJW_oFNmurwY2NP^*xZu@G|E z9~RcKuj4#V3J-wRNi^NN?TkA-LnsV$ix}!sYd*67@p|EGC1l#UeK`ab6^w4CQoPrF z1(kYGe`ki#>~TUE2j|FAqZE^f=?&#b)-+;#J|93Vxc=k^DHxIqsC$&|S*X>D%6jpx zUB%NgFa)()w6`7trddH`6jY_%yZ5nyag%Q7_?|z2!1LXnqTFglgX`_H^~!CfYD~Ot z3}bK_P;b92xNIHk;ij#VgZ6NmKBisTcywd^>s4@f1Mt0@`%piw3s?JtpgO3^w{CyB W`B^*oO{F526qV%W0y<6Gw*CO^9T7$V literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a3da392480084ed1b98155d1951154fce2cb223 GIT binary patch literal 634 zcmZ{i%SyvQ6o#X?%2S+`%t$D;bXRpF6kQY-#Z?Kzm`u{(T*6#RL0tKyzJgEST#`~t z-DUnc=ljq3C(HHI)y3D(cb2_hW|=dcY(Y}NOiwEYf?3KJxv|<+7WSOlmF4R#t(kt7 zy|eI<12kMwJBJ;q6jyq>7^Rt)EZbK~>DsHG=Q%IVj-V~&%^X@zmYTMY0rqd#tLz%3 zh4=T^#+M5wPX-*o!_X_*NkC^dAi{Fe!DeGDZ5iogSr$+!>5r$x!SotpkMlimu4$M? zQ(TsQ>jD7$!q#avtM6hg4`4zDzI3>VwFMX|dd_qt8PSumYS3d9&O^F?Mjm#G{wf5W zBD133QB7`xGJeB-xY{F(wSKGebKR74V}kUuv82tvX3&`Kg1mal%dBeiy0We|=_&79 z75@ya!6T1gbiXv<+cd98ut1xXU6JJE!-uv@AF?E`?(VkazOLZs+N|Z9 zu)3_7RQt6Yj$y>xzD(#eI*fGX^>qWEj2hdL_>_4P2ZCI=p__ zkRRq7(|eIO=4N$hZnXR^5%L#&$o7V@4UJhuz9+#jw*tz-XiH?dfliFw+^G0tWC)@N z12sP3FghyiG-%r~;3j}pH$#0jAhHKjpywozkv35nMU--WixFEGy8&Z|V^DZ^8nVN~bkNXy3+ONa9dIBRB6u%QI)V1SKnDzHZvhDrFYp{K z9;zhqE};=hbd*3)IC+k~JT$_9juy}%f*E)FhNzjefT9vsexgVRi3EiciBfMShA}}* zW7<)^WBVm2+Xqw&f#OEkODHJZP~02p#t4s7iE zdFw%DyXxYkxf>`;5S+yVUhXZFZ3wCrL2*aK5()}8l(!-%>IiB{Lc|BU#AI87X-hEN z5<)UT;b!vI1Vc4JEl=#CC66=P5=>iy;g;YM2?{3?^R@&-EdenNOYCF5s6J*}f@w=I z+!AWp@YJe-d0RrJ{L={qF%7800TvMplaJY!VA>MQZHZ~wBa?Id;VlG)3V~TdIPP}Q z(*F^&g}}5Bm`eyRrY@_|8~g8_`wY!}X63%K|90|oo&4OD{IH11 z@0wKHPJgb`pS#k3hCCav1KSQCK=HBVg(e#Iy2Gp{q zxt;u6CqH*5|2X;3e^c&l1dbX3Vj4(}e^YJ?fomafmk{RN9lGq{-j?8~B_O83)?rjNyS^{DkP_6~4uq`39C4|coGZea&5Z;!MtIenXPa&oO<=RRJ z+Y(|tTX0!ohC;V|!rKx8wFJa8pd!bnPuQLi+7klzgxr%OJ9FV}3W1seVwzaXn{#2C zLTFP6+!Pc)KoQ=q5U494rb*>ELlL$sV(p3;cg6oW-V)xnh*4WWOcP5Tb=~g#Vr2`x zUW;k?S?{X@d5mQ&Md8-<%U8ImHkk6eyg3{{hUPghJTgU-k2D#af>!!TIHX;#SN{Pl CTEwgX literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..de6ec5972af75113b6aa2a7b25ec9c3d8881f2ea GIT binary patch literal 832 zcmZ{iK~BRk5JiJvl~c?L*$}KIDFRergM?s#SRhuYvP|ogNRAyj4ipe8PRbQH0ghwS zP?c3v&&>PZe|&j&wX^m4{S`&&b`-TuDHkAF#haSVI8@v)F^L=$o~hx>nNoT_n#3QQhi+RFrk1ri5 zhL$$Ww3?YxNjFzmO2y@xNw4RP->^~w+Heb689_^UcxVh;a9YagG=Z6t_U}5;d)Wmy z)7qKGwkWtpBRrkjFcJW;IaqHzo1eO9&Y|g|v8}$~dJ||^RST{isi|rjy8OB8!f}`I zAIttuPG3!IwNKJi^)u5n?M}isob^TI(4+^WZt_2;O~)(hIAHSuHt#SN9k3bf1M*PRyUlSZ yrmp!Qa54;gel=wHM#$3N#aqqEi&gmb{nE+ziIU-yT=h7En%lif-)Ns*97jKR^BQCT literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..122b7dee5c387c772067b0ca196a2f12b636ec8d GIT binary patch literal 757 zcmZ{iy-ve06oms~%2V74rKpP1kge(tLq(+umMV(e)G0=Z9XZ!&3S#0(S$F`R0Oz+( zRkqkV_nyz^LeQ(~IdHXtlyt?@Q{jsd;OUqI@;~U^4qxqI36f%k=9osodl^~QU!6~NmH?pGg ziEkCcrwy=91;G$VoQPCN9~KLODA`gWb$mC9#s|zuW40n^$OP}9f-Y*PQAo=~2)XJv z8`iL|^M0Nco*3Gs@$9H}5bpR1p)j6Xi$h&%#mDwPS}&Zfh0HqBmm#RQV01T=;=Se- zRO&|kof(g2k5j@pIA@j`XPCxJZzxByp)uo8G=M~K{mV~MFiviu<|xfss`Z-6dhxDZ z#nTfo4r;V$rw#$LZ9!xlRHehW_pyUXlkU**J%0d!=es>bxz~usu6NAVEB6(u5%Ib) zOu%W3ddF?SZL3%}H?&R;TEl60Osll7^Rt)EZbK~>DsHG=Q%IVj-V~&%^X@zmYTMY0rqd#tLz%3 zh4=T^#+M5wPX-*o!_X_*NkC^dAi{Fe!DeGDZ5iogSr$+!>5r$x!SotpkMlimu4$M? zQ(TsQ>jD7$!q#avtM6hg4`4zDzI3>VwFMX|dd_qt8PSumYS3d9&O^F?Mjm#G{wf5W zBD133QB7`xGJeB-xY{F(wSKGebKR74V}kUuv82tvX3&`Kg1mal%dBeiy0We|=_&79 z75@ya!6T1gbiXv<+cd98ut1xXU6JJE!-uv@AF?E`?(VkazOLZs+N|Z9 zu)3_7RQt6Yj$y>xzD(#eI*fGX^>qWEj2hdL_>_4P2ZCI=p__ zkRRq7(|eIO=4N$hZnXR^5%L#&$o7V@4UJhuz9+#jw*tz-XiH?dfliFw+^G0tWC)@N z12sP3FghyiG-%r~;3j}pH$#0jAhHKjpywozkv35nMU--WixFEGy8&Z|V^DZ^8nVN~bkNXy3+ONa9dIBRB6u%QI)V1SKnDzHZvhDrFYp{K z9;zhqE};=hbd*3)IC+k~JT$_9juy}%f*E)FhNzjefT9vsexgVRi3EiciBfMShA}}* zW7<)^WBVm2+Xqw&f#OEkODHJZP~02p#t4s7iE zdFw%DyXxYkxf>`;5S+yVUhXZFZ3wCrL2*aK5()}8l(!-%>IiB{Lc|BU#AI87X-hEN z5<)UT;b!vI1Vc4JEl=#CC66=P5=>iy;g;YM2?{3?^R@&-EdenNOYCF5s6J*}f@w=I z+!AWp@YJe-d0RrJ{L={qF%7800TvMplaJY!VA>MQZHZ~wBa?Id;VlG)3V~TdIPP}Q z(*F^&g}}5Bm`eyRrY@_|8~g8_`wY!}X63%K|90|oo&4OD{IH11 z@0wKHPJgb`pS#k3hCCav1KSQCK=HBVg(e#Iy2Gp{q zxt;u6CqH*5|2X;3e^c&l1dbX3Vj4(}e^YJ?fomafmk{RN9lGq{-j?8~B_O83)?rjNyS^{DkP_6~4uq`39C4|coGZea&5Z;!MtIenXPa&oO<=RRJ z+Y(|tTX0!ohC;V|!rKx8wFJa8pd!bnPuQLi+7klzgxr%OJ9FV}3W1seVwzaXn{#2C zLTFP6+!Pc)KoQ=q5U494rb*>ELlL$sV(p3;cg6oW-V)xnh*4WWOcP5Tb=~g#Vr2`x zUW;k?S?{X@d5mQ&Md8-<%U8ImHkk6eyg3{{hUPghJTgU-k2D#af>!!TIHX;#SN{Pl CTEwgX literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_saturation.bin new file mode 100644 index 0000000000000000000000000000000000000000..de6ec5972af75113b6aa2a7b25ec9c3d8881f2ea GIT binary patch literal 832 zcmZ{iK~BRk5JiJvl~c?L*$}KIDFRergM?s#SRhuYvP|ogNRAyj4ipe8PRbQH0ghwS zP?c3v&&>PZe|&j&wX^m4{S`&&b`-TuDHkAF#haSVI8@v)F^L=$o~hx>nNoT_n#3QQhi+RFrk1ri5 zhL$$Ww3?YxNjFzmO2y@xNw4RP->^~w+Heb689_^UcxVh;a9YagG=Z6t_U}5;d)Wmy z)7qKGwkWtpBRrkjFcJW;IaqHzo1eO9&Y|g|v8}$~dJ||^RST{isi|rjy8OB8!f}`I zAIttuPG3!IwNKJi^)u5n?M}isob^TI(4+^WZt_2;O~)(hIAHSuHt#SN9k3bf1M*PRyUlSZ yrmp!Qa54;gel=wHM#$3N#aqqEi&gmb{nE+ziIU-yT=h7En%lif-)Ns*97jKR^BQCT literal 0 HcmV?d00001 diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_blit.bin new file mode 100644 index 0000000000000000000000000000000000000000..122b7dee5c387c772067b0ca196a2f12b636ec8d GIT binary patch literal 757 zcmZ{iy-ve06oms~%2V74rKpP1kge(tLq(+umMV(e)G0=Z9XZ!&3S#0(S$F`R0Oz+( zRkqkV_nyz^M$ve$xz(DD$Qd%hd#a$T3bhJpnFt}5 z{bpe;`#R0@r0@u6oyN0++updtGlar0w}_!$YR$*?KVC1Kt%S@vr!R+~;)2obOp5oq zuAovk>d(wDnmJAh$( zjbQ>#1L_^71=p=(-Q1LQa?l=5Q^&MR8;>rmuU-XrHvr!o-G};hUAQ@H1l5K=svfuB W-rUv>f3s4dONvTza{?WwZCii(8WDH^ literal 0 HcmV?d00001 diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp index e243748caac..2c8e08793b0 100644 --- a/src/osd/modules/render/bgfx/chainmanager.cpp +++ b/src/osd/modules/render/bgfx/chainmanager.cpp @@ -263,26 +263,12 @@ std::vector chain_manager::count_screens(render_primitive* pr std::vector screens; int screen_count = 0; - std::vector bases; while (prim != nullptr) { if (PRIMFLAG_GET_SCREENTEX(prim->flags)) { - bool found = false; - for (void* base : bases) - { - if (base == prim->texture.base) - { - found = true; - break; - } - } - if (!found) - { - screen_count++; - screens.push_back(prim); - bases.push_back(prim->texture.base); - } + screen_count++; + screens.push_back(prim); } prim = prim->next(); } @@ -435,7 +421,7 @@ std::vector chain_manager::get_slider_list() return sliders; } - for (size_t index = 0; index < m_screen_chains.size(); index++) + for (size_t index = 0; index < m_screen_chains.size() && index < m_screen_count; index++) { bgfx_chain* chain = m_screen_chains[index]; sliders.push_back(m_selection_sliders[index]); diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc @@ -0,0 +1,14 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_gaussian.sc new file mode 100644 index 00000000000..5375561e8ac --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_gaussian.sc @@ -0,0 +1,57 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// Autos +uniform vec4 u_tex_size0; + +// User-supplied +uniform vec4 u_dimension; +uniform vec4 u_radius; + +// Samplers +SAMPLER2D(s_tex, 0); + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- + +void main() +{ + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + vec2 blur = (u_radius.xx * u_dimension.xy) / u_tex_size0.xy; + + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 - vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 - vec2(1.0, 1.0) * blur) * 0.096603; + + vec4 d0 = texture2D(s_tex, v_texcoord0) * 0.099654; + + sum += texture2D(s_tex, v_texcoord0 + vec2(1.0, 1.0) * blur) * 0.096603; + sum += texture2D(s_tex, v_texcoord0 + vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 + vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 + vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + + gl_FragColor = vec4(sum.rgb, 1.0); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_saturation.sc new file mode 100644 index 00000000000..c14f61601c8 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_saturation.sc @@ -0,0 +1,25 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// User-supplied +uniform vec4 u_saturation; + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + vec4 base = texture2D(s_tex, v_texcoord0); + vec3 rgb = base.rgb; + + vec3 gray = vec3(0.299, 0.587, 0.114); + float luma = dot(rgb, gray); + vec3 chroma = rgb - luma; + vec3 saturated = luma + chroma * u_saturation.x; + + gl_FragColor = vec4(saturated, base.a); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/varying.def.sc new file mode 100644 index 00000000000..2aa3cb425c0 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/varying.def.sc @@ -0,0 +1,6 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_blit.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_gaussian.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_gaussian.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_saturation.sc new file mode 100644 index 00000000000..5ce10e25187 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_saturation.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0 * vec2(0.16666666 * 0.8, 1.0 * 0.8) + vec2(0.2, 0.1); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc @@ -0,0 +1,14 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_gaussian.sc new file mode 100644 index 00000000000..5375561e8ac --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_gaussian.sc @@ -0,0 +1,57 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// Autos +uniform vec4 u_tex_size0; + +// User-supplied +uniform vec4 u_dimension; +uniform vec4 u_radius; + +// Samplers +SAMPLER2D(s_tex, 0); + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- + +void main() +{ + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + vec2 blur = (u_radius.xx * u_dimension.xy) / u_tex_size0.xy; + + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 - vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 - vec2(1.0, 1.0) * blur) * 0.096603; + + vec4 d0 = texture2D(s_tex, v_texcoord0) * 0.099654; + + sum += texture2D(s_tex, v_texcoord0 + vec2(1.0, 1.0) * blur) * 0.096603; + sum += texture2D(s_tex, v_texcoord0 + vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 + vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 + vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + + gl_FragColor = vec4(sum.rgb, 1.0); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_saturation.sc new file mode 100644 index 00000000000..c14f61601c8 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_saturation.sc @@ -0,0 +1,25 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// User-supplied +uniform vec4 u_saturation; + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + vec4 base = texture2D(s_tex, v_texcoord0); + vec3 rgb = base.rgb; + + vec3 gray = vec3(0.299, 0.587, 0.114); + float luma = dot(rgb, gray); + vec3 chroma = rgb - luma; + vec3 saturated = luma + chroma * u_saturation.x; + + gl_FragColor = vec4(saturated, base.a); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/varying.def.sc new file mode 100644 index 00000000000..2aa3cb425c0 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/varying.def.sc @@ -0,0 +1,6 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_blit.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_gaussian.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_gaussian.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_saturation.sc new file mode 100644 index 00000000000..3305b07810b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_saturation.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0 * vec2(1.0 * 0.8, 0.740740 * 0.8) + vec2(0.1, 0.25926); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc @@ -0,0 +1,14 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_gaussian.sc new file mode 100644 index 00000000000..5375561e8ac --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_gaussian.sc @@ -0,0 +1,57 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// Autos +uniform vec4 u_tex_size0; + +// User-supplied +uniform vec4 u_dimension; +uniform vec4 u_radius; + +// Samplers +SAMPLER2D(s_tex, 0); + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- + +void main() +{ + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + vec2 blur = (u_radius.xx * u_dimension.xy) / u_tex_size0.xy; + + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 - vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 - vec2(1.0, 1.0) * blur) * 0.096603; + + vec4 d0 = texture2D(s_tex, v_texcoord0) * 0.099654; + + sum += texture2D(s_tex, v_texcoord0 + vec2(1.0, 1.0) * blur) * 0.096603; + sum += texture2D(s_tex, v_texcoord0 + vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 + vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 + vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + + gl_FragColor = vec4(sum.rgb, 1.0); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc new file mode 100644 index 00000000000..c14f61601c8 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc @@ -0,0 +1,25 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// User-supplied +uniform vec4 u_saturation; + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + vec4 base = texture2D(s_tex, v_texcoord0); + vec3 rgb = base.rgb; + + vec3 gray = vec3(0.299, 0.587, 0.114); + float luma = dot(rgb, gray); + vec3 chroma = rgb - luma; + vec3 saturated = luma + chroma * u_saturation.x; + + gl_FragColor = vec4(saturated, base.a); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/varying.def.sc new file mode 100644 index 00000000000..2aa3cb425c0 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/varying.def.sc @@ -0,0 +1,6 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_blit.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_gaussian.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_gaussian.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_saturation.sc new file mode 100644 index 00000000000..f142ef653b7 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_saturation.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0 * vec2(0.16666666 * 0.8, 1.0 * 0.8) + vec2(1.0 - 0.3333333333, 0.1); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc @@ -0,0 +1,14 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + gl_FragColor = texture2D(s_tex, v_texcoord0) * v_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_gaussian.sc new file mode 100644 index 00000000000..5375561e8ac --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_gaussian.sc @@ -0,0 +1,57 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// Autos +uniform vec4 u_tex_size0; + +// User-supplied +uniform vec4 u_dimension; +uniform vec4 u_radius; + +// Samplers +SAMPLER2D(s_tex, 0); + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- + +void main() +{ + vec4 sum = vec4(0.0, 0.0, 0.0, 0.0); + + vec2 blur = (u_radius.xx * u_dimension.xy) / u_tex_size0.xy; + + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 - vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 - vec2(1.0, 1.0) * blur) * 0.096603; + + vec4 d0 = texture2D(s_tex, v_texcoord0) * 0.099654; + + sum += texture2D(s_tex, v_texcoord0 + vec2(1.0, 1.0) * blur) * 0.096603; + sum += texture2D(s_tex, v_texcoord0 + vec2(2.0, 2.0) * blur) * 0.088001; + sum += texture2D(s_tex, v_texcoord0 + vec2(3.0, 3.0) * blur) * 0.075333; + sum += texture2D(s_tex, v_texcoord0 + vec2(4.0, 4.0) * blur) * 0.0606; + sum += texture2D(s_tex, v_texcoord0 - vec2(5.0, 5.0) * blur) * 0.04581; + sum += texture2D(s_tex, v_texcoord0 - vec2(6.0, 6.0) * blur) * 0.032542; + sum += texture2D(s_tex, v_texcoord0 - vec2(7.0, 7.0) * blur) * 0.021724; + sum += texture2D(s_tex, v_texcoord0 - vec2(8.0, 8.0) * blur) * 0.013627; + sum += texture2D(s_tex, v_texcoord0 - vec2(9.0, 9.0) * blur) * 0.008033; + sum += texture2D(s_tex, v_texcoord0 - vec2(10.0, 10.0) * blur) * 0.00445; + sum += texture2D(s_tex, v_texcoord0 - vec2(11.0, 11.0) * blur) * 0.002316; + sum += texture2D(s_tex, v_texcoord0 - vec2(12.0, 12.0) * blur) * 0.001133; + + gl_FragColor = vec4(sum.rgb, 1.0); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc new file mode 100644 index 00000000000..c14f61601c8 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc @@ -0,0 +1,25 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "common.sh" + +// User-supplied +uniform vec4 u_saturation; + +// Samplers +SAMPLER2D(s_tex, 0); + +void main() +{ + vec4 base = texture2D(s_tex, v_texcoord0); + vec3 rgb = base.rgb; + + vec3 gray = vec3(0.299, 0.587, 0.114); + float luma = dot(rgb, gray); + vec3 chroma = rgb - luma; + vec3 saturated = luma + chroma * u_saturation.x; + + gl_FragColor = vec4(saturated, base.a); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/varying.def.sc new file mode 100644 index 00000000000..2aa3cb425c0 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/varying.def.sc @@ -0,0 +1,6 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_blit.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_gaussian.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_gaussian.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_gaussian.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_saturation.sc new file mode 100644 index 00000000000..ea4d47d9963 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_saturation.sc @@ -0,0 +1,14 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0 * vec2(1.0 * 0.8, 0.740740 * 0.8) + vec2(0.1, 0.055555); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index 32f45515a08..78d661a9953 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -20,6 +20,7 @@ #include "emu.h" #include "window.h" #include "rendutil.h" +#include "aviio.h" #include #include @@ -72,6 +73,35 @@ const char* renderer_bgfx::WINDOW_PREFIX = "Window 0, "; bool renderer_bgfx::s_window_set = false; uint32_t renderer_bgfx::s_current_view = 0; +//============================================================ +// renderer_bgfx - constructor +//============================================================ + +renderer_bgfx::renderer_bgfx(osd_window *w) + : osd_renderer(w, FLAG_NONE) + , m_options(downcast(w->machine().options())) + , m_dimensions(0, 0) + , m_max_view(0) + , m_avi_output_file(nullptr) + , m_avi_frame(0) +{ + m_options = downcast(window().machine().options()); +} + +//============================================================ +// renderer_bgfx - destructor +//============================================================ + +renderer_bgfx::~renderer_bgfx() +{ + // Cleanup. + delete m_chains; + delete m_effects; + delete m_shaders; + delete m_textures; + delete m_targets; +} + //============================================================ // renderer_bgfx::create //============================================================ @@ -103,8 +133,6 @@ static void* sdlNativeWindowHandle(SDL_Window* _window) int renderer_bgfx::create() { // create renderer - - osd_options& options = downcast(window().machine().options()); osd_dim wdim = window().get_size(); m_width[window().m_index] = wdim.width(); m_height[window().m_index] = wdim.height(); @@ -127,7 +155,7 @@ int renderer_bgfx::create() #else bgfx::sdlSetWindow(window().sdl_window()); #endif - std::string backend(options.bgfx_backend()); + std::string backend(m_options.bgfx_backend()); if (backend == "auto") { bgfx::init(); @@ -159,15 +187,15 @@ int renderer_bgfx::create() } bgfx::reset(m_width[window().m_index], m_height[window().m_index], video_config.waitvsync ? BGFX_RESET_VSYNC : BGFX_RESET_NONE); // Enable debug text. - bgfx::setDebug(options.bgfx_debug() ? BGFX_DEBUG_STATS : BGFX_DEBUG_TEXT); + bgfx::setDebug(m_options.bgfx_debug() ? BGFX_DEBUG_STATS : BGFX_DEBUG_TEXT); m_dimensions = osd_dim(m_width[0], m_height[0]); } m_textures = new texture_manager(); m_targets = new target_manager(*m_textures); - m_shaders = new shader_manager(options); - m_effects = new effect_manager(options, *m_shaders); + m_shaders = new shader_manager(m_options); + m_effects = new effect_manager(m_options, *m_shaders); if (window().m_index != 0) { @@ -190,7 +218,7 @@ int renderer_bgfx::create() m_screen_effect[2] = m_effects->effect("screen_multiply"); m_screen_effect[3] = m_effects->effect("screen_add"); - m_chains = new chain_manager(window().machine(), options, *m_textures, *m_targets, *m_effects, window().m_index, *this); + m_chains = new chain_manager(window().machine(), m_options, *m_textures, *m_targets, *m_effects, window().m_index, *this); m_sliders_dirty = true; uint32_t flags = BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT; @@ -205,17 +233,29 @@ int renderer_bgfx::create() } //============================================================ -// destructor +// renderer_bgfx::record //============================================================ -renderer_bgfx::~renderer_bgfx() +void renderer_bgfx::record() +{ + std::string filename("test.avi");//m_options.d3d_hlsl_write()); + + if (m_avi_output_file != nullptr) + { + end_avi_recording(); + } + else if (filename[0] != 0) + { + begin_avi_recording(filename); + } +} + +void renderer_bgfx::end_avi_recording() +{ +} + +void renderer_bgfx::begin_avi_recording(std::string filename) { - // Cleanup. - delete m_chains; - delete m_effects; - delete m_shaders; - delete m_textures; - delete m_targets; } void renderer_bgfx::exit() @@ -715,14 +755,14 @@ int renderer_bgfx::draw(int update) { for (screen = 0; screen < sources.size(); screen++) { - if (sources[screen] == prim->texture.base) + if (sources[screen] == prim) { break; } } if (screen == sources.size()) { - sources.push_back(prim->texture.base); + sources.push_back(prim); } } @@ -786,7 +826,7 @@ bool renderer_bgfx::update_dimensions() #endif bgfx::setViewFrameBuffer(s_current_view, m_framebuffer->target()); - bgfx::setViewClear(s_current_view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x000000ff, 1.0f, 0); + bgfx::setViewClear(s_current_view, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x00000000, 1.0f, 0); bgfx::touch(s_current_view); bgfx::frame(); return true; diff --git a/src/osd/modules/render/drawbgfx.h b/src/osd/modules/render/drawbgfx.h index d48bb5914e6..e96fd461cc1 100644 --- a/src/osd/modules/render/drawbgfx.h +++ b/src/osd/modules/render/drawbgfx.h @@ -13,6 +13,7 @@ #include "binpacker.h" #include "bgfx/vertex.h" #include "sliderdirtynotifier.h" +#include "aviio.h" class texture_manager; class target_manager; @@ -23,17 +24,13 @@ class bgfx_texture; class bgfx_effect; class bgfx_target; class bgfx_chain; +class osd_options; /* sdl_info is the information about SDL for the current screen */ class renderer_bgfx : public osd_renderer, public slider_dirty_notifier { public: - renderer_bgfx(osd_window *w) - : osd_renderer(w, FLAG_NONE) - , m_dimensions(0, 0) - , m_max_view(0) - { - } + renderer_bgfx(osd_window *w); virtual ~renderer_bgfx(); static bool init(running_machine &machine) { return false; } @@ -49,7 +46,7 @@ public: virtual int xy_to_render_target(const int x, const int y, int *xt, int *yt) override; #else virtual void save() override { } - virtual void record() override { } + virtual void record() override; virtual void toggle_fsfx() override { } #endif @@ -63,8 +60,8 @@ public: static const char* WINDOW_PREFIX; private: - void handle_screen_chains(render_primitive *starting_prim); - bgfx_chain* screen_chain(int32_t screen); + void end_avi_recording(); + void begin_avi_recording(std::string filename); bool update_dimensions(); void setup_view(uint32_t view_index, bool screen); @@ -98,6 +95,8 @@ private: void process_atlas_packs(std::vector>& packed); UINT32 get_texture_hash(render_primitive *prim); + osd_options& m_options; + bgfx_target* m_framebuffer; bgfx_texture* m_texture_cache; @@ -124,6 +123,11 @@ private: int32_t m_ui_view; uint32_t m_max_view; + // AVI + avi_file::ptr m_avi_output_file; // AVI file + int m_avi_frame; // AVI frame + attotime m_avi_frame_period; // AVI frame period + static const uint16_t CACHE_SIZE; static const uint32_t PACKABLE_SIZE; static const uint32_t WHITE_HASH;