diff options
582 files changed, 6955 insertions, 924 deletions
diff --git a/bgfx/chains/default.json b/bgfx/chains/default.json index 115e7072cb3..b25388c3735 100644 --- a/bgfx/chains/default.json +++ b/bgfx/chains/default.json @@ -7,7 +7,7 @@ } ], "passes": [ - { "effect": "default/blit", + { "effect": "misc/blit", "name": "Final Upscale", "input": [ { "sampler": "s_tex", "texture": "screen" } diff --git a/bgfx/chains/hlsl.json b/bgfx/chains/hlsl.json index 7e431f72803..41be4613087 100644 --- a/bgfx/chains/hlsl.json +++ b/bgfx/chains/hlsl.json @@ -318,7 +318,7 @@ ], "output": "guest" }, - { "effect": "hlsl/blit", + { "effect": "misc/blit", "name": "NTSC Skip", "disablewhen": [ { "type": "slider", "condition": "notequal", "combine": "and", "name": "adjustments", "value": 0 }, @@ -499,7 +499,7 @@ ], "output": "internal" }, - { "effect": "hlsl/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/hq2x.json b/bgfx/chains/hq2x.json index 20303a64c90..19eb14d6113 100644 --- a/bgfx/chains/hq2x.json +++ b/bgfx/chains/hq2x.json @@ -49,7 +49,7 @@ ], "output": "scaled_out" }, - { "effect": "hq2x/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "scaled_out" } diff --git a/bgfx/chains/hq3x.json b/bgfx/chains/hq3x.json index 1f767b68825..6e1f031d705 100644 --- a/bgfx/chains/hq3x.json +++ b/bgfx/chains/hq3x.json @@ -49,7 +49,7 @@ ], "output": "scaled_out" }, - { "effect": "hq3x/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "scaled_out" } diff --git a/bgfx/chains/hq4x.json b/bgfx/chains/hq4x.json index 9232966ecc4..78548abfca7 100644 --- a/bgfx/chains/hq4x.json +++ b/bgfx/chains/hq4x.json @@ -49,7 +49,7 @@ ], "output": "scaled_out" }, - { "effect": "hq4x/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "scaled_out" } diff --git a/bgfx/chains/pillarbox_left_horizontal.json b/bgfx/chains/pillarbox_left_horizontal.json index 1959fa30943..8a81352d734 100644 --- a/bgfx/chains/pillarbox_left_horizontal.json +++ b/bgfx/chains/pillarbox_left_horizontal.json @@ -31,7 +31,7 @@ ], "passes": [ - { "effect": "pillarbox_left_horizontal/blit", + { "effect": "misc/blit", "name": "Blit to scalable target", "input": [ { "sampler": "s_tex", "target": "screen" } @@ -79,7 +79,7 @@ "output": "internal" }, { - "effect": "pillarbox_left_horizontal/saturation", + "effect": "misc/saturation", "name": "Saturation Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } @@ -92,7 +92,7 @@ ], "output": "internal" }, - { "effect": "pillarbox_left_horizontal/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/pillarbox_left_vertical.json b/bgfx/chains/pillarbox_left_vertical.json index 976a84476b8..64c31108f03 100644 --- a/bgfx/chains/pillarbox_left_vertical.json +++ b/bgfx/chains/pillarbox_left_vertical.json @@ -31,7 +31,7 @@ ], "passes": [ - { "effect": "pillarbox_left_vertical/blit", + { "effect": "misc/blit", "name": "Blit to scalable target", "input": [ { "sampler": "s_tex", "target": "screen" } @@ -79,7 +79,7 @@ "output": "internal" }, { - "effect": "pillarbox_left_vertical/saturation", + "effect": "misc/saturation", "name": "Saturation Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } @@ -92,7 +92,7 @@ ], "output": "internal" }, - { "effect": "pillarbox_left_vertical/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/pillarbox_right_horizontal.json b/bgfx/chains/pillarbox_right_horizontal.json index a687510049e..0b7c8c5287b 100644 --- a/bgfx/chains/pillarbox_right_horizontal.json +++ b/bgfx/chains/pillarbox_right_horizontal.json @@ -31,7 +31,7 @@ ], "passes": [ - { "effect": "pillarbox_right_horizontal/blit", + { "effect": "misc/blit", "name": "Blit to scalable target", "input": [ { "sampler": "s_tex", "target": "screen" } @@ -79,7 +79,7 @@ "output": "internal" }, { - "effect": "pillarbox_right_horizontal/saturation", + "effect": "misc/saturation", "name": "Saturation Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } @@ -92,7 +92,7 @@ ], "output": "internal" }, - { "effect": "pillarbox_right_horizontal/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/pillarbox_right_vertical.json b/bgfx/chains/pillarbox_right_vertical.json index 16dcb8b8c4b..088d21081ab 100644 --- a/bgfx/chains/pillarbox_right_vertical.json +++ b/bgfx/chains/pillarbox_right_vertical.json @@ -31,7 +31,7 @@ ], "passes": [ - { "effect": "pillarbox_right_vertical/blit", + { "effect": "misc/blit", "name": "Blit to scalable target", "input": [ { "sampler": "s_tex", "target": "screen" } @@ -79,7 +79,7 @@ "output": "internal" }, { - "effect": "pillarbox_right_vertical/saturation", + "effect": "misc/saturation", "name": "Saturation Pass", "disablewhen": [ { "type": "slider", "condition": "equal", "name": "saturation", "value": 100 } @@ -92,7 +92,7 @@ ], "output": "internal" }, - { "effect": "pillarbox_right_vertical/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "internal" } diff --git a/bgfx/chains/super-2xbr-3d-2p.json b/bgfx/chains/super-2xbr-3d-2p.json new file mode 100644 index 00000000000..a196141548d --- /dev/null +++ b/bgfx/chains/super-2xbr-3d-2p.json @@ -0,0 +1,69 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR 3D (2 passes)", + "author": "Hyllian", + "targets": [ + { + "name": "guest", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-2xbr-3d-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-2xbr-3d-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "guest" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-2xbr-3d-3p-smoother.json b/bgfx/chains/super-2xbr-3d-3p-smoother.json new file mode 100644 index 00000000000..d3e3d33d7c4 --- /dev/null +++ b/bgfx/chains/super-2xbr-3d-3p-smoother.json @@ -0,0 +1,78 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR 3D (3 passes, smoother)", + "author": "Hyllian", + "targets": [ + { + "name": "guest", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-2xbr-3d-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-2xbr-3d-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-2xbr-3d-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "guest" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-4xbr-3d-4p.json b/bgfx/chains/super-4xbr-3d-4p.json new file mode 100644 index 00000000000..046897b62d5 --- /dev/null +++ b/bgfx/chains/super-4xbr-3d-4p.json @@ -0,0 +1,86 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super 4XBR 3D (4 passes)", + "author": "Hyllian", + "targets": [ + { + "name": "guest", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass3", + "name": "Pass 3", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "guest" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-4xbr-3d-6p-smoother.json b/bgfx/chains/super-4xbr-3d-6p-smoother.json new file mode 100644 index 00000000000..f3bd617258f --- /dev/null +++ b/bgfx/chains/super-4xbr-3d-6p-smoother.json @@ -0,0 +1,86 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super 4XBR 3D (3 passes, smoother)", + "author": "Hyllian", + "targets": [ + { + "name": "guest", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/super-4xbr-3d-pass3", + "name": "Pass 3", + "input": [ + { "sampler": "s0", "target": "guest" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "guest" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "guest" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-2p.json b/bgfx/chains/super-xbr-2p.json new file mode 100644 index 00000000000..cdb8c3f84a5 --- /dev/null +++ b/bgfx/chains/super-xbr-2p.json @@ -0,0 +1,76 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (2 passes)", + "author": "Hyllian", + "targets": [ + { + "name": "pass0", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "pass1", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-xbr-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "pass0" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "pass0" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "pass1" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "pass1" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-3p-smoother.json b/bgfx/chains/super-xbr-3p-smoother.json new file mode 100644 index 00000000000..96bda7904b6 --- /dev/null +++ b/bgfx/chains/super-xbr-3p-smoother.json @@ -0,0 +1,84 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (3 passes, smoother)", + "author": "Hyllian", + "targets": [ + { + "name": "pass02", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "pass1", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-xbr-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "pass02" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "pass02" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "pass1" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "target": "pass1" } + ], + "output": "pass1" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "pass1" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-6p.json b/bgfx/chains/super-xbr-6p.json new file mode 100644 index 00000000000..4f5c69369d7 --- /dev/null +++ b/bgfx/chains/super-xbr-6p.json @@ -0,0 +1,123 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (6 passes)", + "author": "Hyllian", + "targets": [ + { + "name": "group0_pass02", + "mode": "guest", + "scale": 1, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "group0_pass1", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "group1_pass02", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "group1_pass1", + "mode": "guest", + "scale": 4, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-xbr-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "group0_pass02" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "group0_pass02" }, + { "sampler": "ORIG_texture", "texture": "screen" } + ], + "output": "group0_pass1" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "target": "group0_pass1" } + ], + "output": "group0_pass1" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "target": "group0_pass1" } + ], + "output": "group1_pass02" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "group1_pass02" }, + { "sampler": "ORIG_texture", "target": "group0_pass1" } + ], + "output": "group1_pass1" + }, + { + "effect": "xbr/super-xbr/super-xbr-pass2", + "name": "Pass 2", + "input": [ + { "sampler": "s0", "target": "group1_pass1" } + ], + "output": "group1_pass1" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "group1_pass1" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-deposterize.json b/bgfx/chains/super-xbr-deposterize.json new file mode 100644 index 00000000000..8eac3770465 --- /dev/null +++ b/bgfx/chains/super-xbr-deposterize.json @@ -0,0 +1,98 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (deposterize)", + "author": "Hyllian", + "targets": [ + { + "name": "deposterize", + "mode": "guest", + "bilinear": false, + "doublebuffer": true + }, + { + "name": "pass012", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "misc/deposterize-pass0", + "name": "Deposterize, Pass 0", + "input": [ + { "sampler": "decal", "texture": "screen" } + ], + "output": "deposterize" + }, + { + "effect": "misc/deposterize-pass1", + "name": "Deposterize, Pass 1", + "input": [ + { "sampler": "decal", "target": "deposterize" } + ], + "output": "deposterize" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "target": "deposterize" } + ], + "output": "pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "pass012" } + ], + "output": "pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass2", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "pass012" } + ], + "output": "pass012" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "pass012" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-fast-3p.json b/bgfx/chains/super-xbr-fast-3p.json new file mode 100644 index 00000000000..f0d0411acc0 --- /dev/null +++ b/bgfx/chains/super-xbr-fast-3p.json @@ -0,0 +1,76 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (3 passes, faster)", + "author": "Hyllian", + "targets": [ + { + "name": "all_passes", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-xbr-fast-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "all_passes" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "all_passes" } + ], + "output": "all_passes" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass2", + "name": "Pass 5", + "input": [ + { "sampler": "s0", "target": "all_passes" } + ], + "output": "all_passes" + }, + { + "effect": "xbr/super-xbr/custom-jinc2-sharper", + "name": "Jinc2 Upscaler", + "input": [ + { "sampler": "s_p", "target": "all_passes" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/super-xbr-fast-6p.json b/bgfx/chains/super-xbr-fast-6p.json new file mode 100644 index 00000000000..6d19e28f9b2 --- /dev/null +++ b/bgfx/chains/super-xbr-fast-6p.json @@ -0,0 +1,113 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "name": "Super XBR (6 passes, faster)", + "author": "Hyllian", + "targets": [ + { + "name": "group0_pass012", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "group1_pass012", + "mode": "guest", + "scale": 2, + "bilinear": false, + "doublebuffer": true + }, + { + "name": "to_blit", + "mode": "guest", + "scale": 4, + "doublebuffer": true + } + ], + "passes": [ + { + "effect": "xbr/super-xbr/super-xbr-fast-pass0", + "name": "Pass 0", + "input": [ + { "sampler": "s0", "texture": "screen" } + ], + "output": "group0_pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass1", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "group0_pass012" } + ], + "output": "group0_pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass2", + "name": "Pass 1", + "input": [ + { "sampler": "s0", "target": "group0_pass012" } + ], + "output": "group0_pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass0", + "name": "Pass 3", + "input": [ + { "sampler": "s0", "target": "group0_pass012" } + ], + "output": "group1_pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass1", + "name": "Pass 4", + "input": [ + { "sampler": "s0", "target": "group1_pass012" } + ], + "output": "group1_pass012" + }, + { + "effect": "xbr/super-xbr/super-xbr-fast-pass2", + "name": "Pass 5", + "input": [ + { "sampler": "s0", "target": "group1_pass012" } + ], + "output": "to_blit" + }, + { + "effect": "misc/blit", + "name": "Upscaling Blit", + "input": [ + { "sampler": "s_tex", "target": "to_blit" } + ], + "output": "output" + } + ] +}
\ No newline at end of file diff --git a/bgfx/chains/supereagle.json b/bgfx/chains/supereagle.json index 0f12a85e095..cf3294e8a36 100644 --- a/bgfx/chains/supereagle.json +++ b/bgfx/chains/supereagle.json @@ -33,7 +33,7 @@ ], "output": "scaled_out" }, - { "effect": "hq2x/blit", + { "effect": "misc/blit", "name": "Final Blit", "input": [ { "sampler": "s_tex", "target": "scaled_out" } diff --git a/bgfx/chains/unfiltered.json b/bgfx/chains/unfiltered.json index a644f9af370..e8983f6dd5c 100644 --- a/bgfx/chains/unfiltered.json +++ b/bgfx/chains/unfiltered.json @@ -7,14 +7,14 @@ } ], "passes": [ - { "effect": "unfiltered/blit", + { "effect": "misc/blit", "name": "Copy To Unstretched Texture", "input": [ { "sampler": "s_tex", "texture": "screen" } ], "output": "temp" }, - { "effect": "unfiltered/blit", + { "effect": "misc/blit", "name": "Final Upscale", "input": [ { "sampler": "s_tex", "target": "temp" } diff --git a/bgfx/effects/hq3x/blit.json b/bgfx/effects/hq3x/blit.json deleted file mode 100644 index a3c21b9cf67..00000000000 --- a/bgfx/effects/hq3x/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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/hq3x/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/hq3x/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/hq4x/blit.json b/bgfx/effects/hq4x/blit.json deleted file mode 100644 index ddaab93e2ea..00000000000 --- a/bgfx/effects/hq4x/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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/hq4x/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/hq4x/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/hq2x/blit.json b/bgfx/effects/misc/blit.json index 9ea3078b35a..3fb849a1eed 100644 --- a/bgfx/effects/hq2x/blit.json +++ b/bgfx/effects/misc/blit.json @@ -65,11 +65,11 @@ // 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/hq2x/vs_blit", + "vertex": "chains/misc/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/hq2x/fs_blit", + "fragment": "chains/misc/fs_blit", // uniforms (required): The list of uniforms for this effect. Can be empty, but must exist. "uniforms": [ diff --git a/bgfx/effects/misc/deposterize-pass0.json b/bgfx/effects/misc/deposterize-pass0.json new file mode 100644 index 00000000000..73fac99de3c --- /dev/null +++ b/bgfx/effects/misc/deposterize-pass0.json @@ -0,0 +1,37 @@ +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass0 + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/misc/vs_deposterize-pass0", + "fragment": "chains/misc/fs_deposterize-pass0", + "uniforms": [ + { "name": "decal", "type": "int", "values": [ 1.0 ] }, + { "name": "EQ_THRESH1", "type": "vec4", "values": [ 0.01, 0.0, 0.0, 0.0 ] }, + { "name": "DIFF_THRESH1", "type": "vec4", "values": [ 0.06, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/misc/deposterize-pass1.json b/bgfx/effects/misc/deposterize-pass1.json new file mode 100644 index 00000000000..6a62aa36753 --- /dev/null +++ b/bgfx/effects/misc/deposterize-pass1.json @@ -0,0 +1,37 @@ +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass1 + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/misc/vs_deposterize-pass1", + "fragment": "chains/misc/fs_deposterize-pass1", + "uniforms": [ + { "name": "decal", "type": "int", "values": [ 1.0 ] }, + { "name": "EQ_THRESH2", "type": "vec4", "values": [ 0.01, 0.0, 0.0, 0.0 ] }, + { "name": "DIFF_THRESH2", "type": "vec4", "values": [ 0.06, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/pillarbox_left_vertical/saturation.json b/bgfx/effects/misc/saturation.json index c84b6d4a3a2..1708dcee6d4 100644 --- a/bgfx/effects/pillarbox_left_vertical/saturation.json +++ b/bgfx/effects/misc/saturation.json @@ -21,8 +21,8 @@ "rgb": true, "alpha": true }, - "vertex": "chains/pillarbox_left_vertical/vs_saturation", - "fragment": "chains/pillarbox_left_vertical/fs_saturation", + "vertex": "chains/misc/vs_saturation", + "fragment": "chains/misc/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 ] } diff --git a/bgfx/effects/pillarbox_left_horizontal/blit.json b/bgfx/effects/pillarbox_left_horizontal/blit.json deleted file mode 100644 index 085dd67ef93..00000000000 --- a/bgfx/effects/pillarbox_left_horizontal/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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/saturation.json b/bgfx/effects/pillarbox_left_horizontal/saturation.json deleted file mode 100644 index 8fff15ddb9b..00000000000 --- a/bgfx/effects/pillarbox_left_horizontal/saturation.json +++ /dev/null @@ -1,30 +0,0 @@ -// 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 deleted file mode 100644 index 9fb35a9fe19..00000000000 --- a/bgfx/effects/pillarbox_left_vertical/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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_right_horizontal/blit.json b/bgfx/effects/pillarbox_right_horizontal/blit.json deleted file mode 100644 index e982da2dbf3..00000000000 --- a/bgfx/effects/pillarbox_right_horizontal/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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/saturation.json b/bgfx/effects/pillarbox_right_horizontal/saturation.json deleted file mode 100644 index 18a416ebd8e..00000000000 --- a/bgfx/effects/pillarbox_right_horizontal/saturation.json +++ /dev/null @@ -1,30 +0,0 @@ -// 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 deleted file mode 100644 index 4237ba44b66..00000000000 --- a/bgfx/effects/pillarbox_right_vertical/blit.json +++ /dev/null @@ -1,121 +0,0 @@ -// 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/saturation.json b/bgfx/effects/pillarbox_right_vertical/saturation.json deleted file mode 100644 index f51e68f6134..00000000000 --- a/bgfx/effects/pillarbox_right_vertical/saturation.json +++ /dev/null @@ -1,30 +0,0 @@ -// 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/effects/xbr/super-xbr/custom-jinc2-sharper.json b/bgfx/effects/xbr/super-xbr/custom-jinc2-sharper.json new file mode 100644 index 00000000000..decf8d322ab --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/custom-jinc2-sharper.json @@ -0,0 +1,38 @@ +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's jinc windowed-jinc 2-lobe sharper with anti-ringing Shader + + Copyright (C) 2011-2014 Hyllian/Jararaca - sergiogdb@gmail.com +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/super-xbr-2p/vs_custom-jinc2-sharper", + "fragment": "chains/super-xbr-2p/fs_custom-jinc2-sharper", + "uniforms": [ + { "name": "s_p", "type": "int", "values": [ 1.0 ] }, + { "name": "JINC2_WINDOW_SINC", "type": "vec4", "values": [ 0.42, 0.0, 0.0, 0.0 ] }, + { "name": "JINC2_SINC", "type": "vec4", "values": [ 0.92, 0.0, 0.0, 0.0 ] }, + { "name": "JINC2_AR_STRENGTH", "type": "vec4", "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass0.json b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass0.json new file mode 100644 index 00000000000..a0e77327bb0 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass0.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader, pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-2xbr-3d-pass0", + "fragment": "chains/xbr/super-xbr/fs_super-2xbr-3d-pass0", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass1.json b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass1.json new file mode 100644 index 00000000000..1e9669c91f9 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass1.json @@ -0,0 +1,59 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader, pass1 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-2xbr-3d-pass1", + "fragment": "chains/xbr/super-xbr/fs_super-2xbr-3d-pass1", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "ORIG_texture", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass2.json b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass2.json new file mode 100644 index 00000000000..86dad8cd5bd --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-2xbr-3d-pass2.json @@ -0,0 +1,59 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader, pass2 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-2xbr-3d-pass2", + "fragment": "chains/xbr/super-xbr/fs_super-2xbr-3d-pass2", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "ORIG_texture", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass0.json b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass0.json new file mode 100644 index 00000000000..fccbdaf32db --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass0.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-4xbr-3d-pass0", + "fragment": "chains/xbr/super-xbr/fs_super-4xbr-3d-pass0", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass1.json b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass1.json new file mode 100644 index 00000000000..1f0492ee3c3 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass1.json @@ -0,0 +1,59 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-4xbr-3d-pass1", + "fragment": "chains/xbr/super-xbr/fs_super-4xbr-3d-pass1", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "ORIG_texture", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass2.json b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass2.json new file mode 100644 index 00000000000..665f455e662 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass2.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-4xbr-3d-pass2", + "fragment": "chains/xbr/super-xbr/fs_super-4xbr-3d-pass2", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass3.json b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass3.json new file mode 100644 index 00000000000..e33bc2ebb61 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-4xbr-3d-pass3.json @@ -0,0 +1,59 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-4xbr-3d-pass3", + "fragment": "chains/xbr/super-xbr/fs_super-4xbr-3d-pass3", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "ORIG_texture", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass0.json b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass0.json new file mode 100644 index 00000000000..bd3d511cc98 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass0.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader, Fast (pass0) ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-fast-pass0", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-fast-pass0", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.5, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass1.json b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass1.json new file mode 100644 index 00000000000..4b65ac60ba4 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass1.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader, Fast (pass1) ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-fast-pass1", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-fast-pass1", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.5, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass2.json b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass2.json new file mode 100644 index 00000000000..f3ce83b4272 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-fast-pass2.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader, Fast (pass2) ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-fast-pass2", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-fast-pass2", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.5, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-pass0.json b/bgfx/effects/xbr/super-xbr/super-xbr-pass0.json new file mode 100644 index 00000000000..c7d1db28110 --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-pass0.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-pass0", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-pass0", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-pass1.json b/bgfx/effects/xbr/super-xbr/super-xbr-pass1.json new file mode 100644 index 00000000000..13e8f8dbd9a --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-pass1.json @@ -0,0 +1,59 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-pass1", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-pass1", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "ORIG_texture", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/effects/xbr/super-xbr/super-xbr-pass2.json b/bgfx/effects/xbr/super-xbr/super-xbr-pass2.json new file mode 100644 index 00000000000..bea988632cf --- /dev/null +++ b/bgfx/effects/xbr/super-xbr/super-xbr-pass2.json @@ -0,0 +1,58 @@ +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +{ + "blend": { + "equation": "add", + "srcColor": "1", + "dstColor": "0", + "srcAlpha": "1", + "dstAlpha": "0" + }, + "depth": { + "function": "always", + "writeenable": false + }, + "cull": { + "mode": "none" + }, + "write": { + "rgb": true, + "alpha": true + }, + "vertex": "chains/xbr/super-xbr/vs_super-xbr-pass2", + "fragment": "chains/xbr/super-xbr/fs_super-xbr-pass2", + "uniforms": [ + { "name": "s0", "type": "int", "values": [ 1.0 ] }, + { "name": "XBR_EDGE_STR", "type": "vec4", "values": [ 0.6, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_WEIGHT", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "XBR_ANTI_RINGING", "type": "vec4", "values": [ 1.0, 0.0, 0.0, 0.0 ] }, + { "name": "u_tex_size0", "type": "vec4", "values": [ 1.0, 1.0, 0.0, 0.0 ] } + ] +}
\ No newline at end of file diff --git a/bgfx/shaders/dx11/chains/hlsl/fs_blit.bin b/bgfx/shaders/dx11/chains/misc/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/hlsl/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/misc/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/misc/fs_bob-and-ghost-deinterlace.bin b/bgfx/shaders/dx11/chains/misc/fs_bob-and-ghost-deinterlace.bin Binary files differnew file mode 100644 index 00000000000..1d599087b33 --- /dev/null +++ b/bgfx/shaders/dx11/chains/misc/fs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass0.bin b/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..264bfbbb9b6 --- /dev/null +++ b/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass0.bin diff --git a/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass1.bin b/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..1aa8b286236 --- /dev/null +++ b/bgfx/shaders/dx11/chains/misc/fs_deposterize-pass1.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/dx11/chains/misc/fs_saturation.bin Binary files differindex eaec59b81d7..eaec59b81d7 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_saturation.bin +++ b/bgfx/shaders/dx11/chains/misc/fs_saturation.bin diff --git a/bgfx/shaders/dx11/chains/hlsl/vs_blit.bin b/bgfx/shaders/dx11/chains/misc/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/hlsl/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/misc/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/hq2x/vs_blit.bin b/bgfx/shaders/dx11/chains/misc/vs_bob-and-ghost-deinterlace.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/hq2x/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/misc/vs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass0.bin b/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..857914316fc --- /dev/null +++ b/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass0.bin diff --git a/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass1.bin b/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..a35757d8e79 --- /dev/null +++ b/bgfx/shaders/dx11/chains/misc/vs_deposterize-pass1.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/dx11/chains/misc/vs_saturation.bin Binary files differindex 7a3bdff1a98..7a3bdff1a98 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_saturation.bin +++ b/bgfx/shaders/dx11/chains/misc/vs_saturation.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index eaec59b81d7..00000000000 --- a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin Binary files differdeleted file mode 100644 index eaec59b81d7..00000000000 --- a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index eaec59b81d7..00000000000 --- a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx11/chains/hq2x/fs_blit.bin b/bgfx/shaders/dx11/chains/super-4xbr-3d-4p/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/hq2x/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/super-4xbr-3d-4p/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/hq3x/vs_blit.bin b/bgfx/shaders/dx11/chains/super-4xbr-3d-4p/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/hq3x/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/super-4xbr-3d-4p/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/hq3x/fs_blit.bin b/bgfx/shaders/dx11/chains/super-4xbr-3d-6p-smoother/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/hq3x/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/super-4xbr-3d-6p-smoother/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/hq4x/vs_blit.bin b/bgfx/shaders/dx11/chains/super-4xbr-3d-6p-smoother/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/hq4x/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/super-4xbr-3d-6p-smoother/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/hq4x/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-hybrid/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/hq4x/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-hybrid/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-hybrid/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-hybrid/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv1-noblend/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv1-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv1-noblend/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv1-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-3d/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_vertical/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-3d/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-3d/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-3d/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-multipass/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-multipass/vs_blit.bin Binary files differindex b0bebf9da4c..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin Binary files differindex 80d85fb1107..80d85fb1107 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/fs_blit.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin Binary files differindex 8d21d98385a..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_left_horizontal/vs_saturation.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-deposterize/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-deposterize/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-deposterize/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/dx11/chains/xbr-lv2-deposterize/vs_blit.bin Binary files differindex cde2b1546aa..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_horizontal/vs_saturation.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-deposterize/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-fast/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-fast/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-fast/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/dx11/chains/xbr-lv2-fast/vs_blit.bin Binary files differindex ce4ae1dd5c7..b0bebf9da4c 100644 --- a/bgfx/shaders/dx11/chains/pillarbox_right_vertical/vs_saturation.bin +++ b/bgfx/shaders/dx11/chains/xbr-lv2-fast/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-multipass/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-multipass/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-noblend/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv2-noblend/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv2-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv2-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3-multipass/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3-multipass/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3-noblend/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3-noblend/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-lv3/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-lv3/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-lv3/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-mlv4-dilation/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/fs_blit.bin b/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..80d85fb1107 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/vs_blit.bin b/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr-mlv4-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv1-noblend.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..1bb404e2c90 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..d8e18eed1ec --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..c7ba1220aa5 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..b288f8a7d84 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..2b20345d324 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..e9f036afa78 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..a5c002c6cd2 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..c4602858022 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..e6032b15b53 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..4adf8dd729c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..e2deb08ba10 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..e9f036afa78 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..a5c002c6cd2 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..c4602858022 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..5a92a7f2520 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..15dbf7dc5c1 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..195330767b5 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..1db02710c90 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..3624fe72f40 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..676ff1da0b5 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/fs_super-xbr-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..bc112796493 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..bc112796493 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..bc112796493 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass0.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..5e66024f1eb --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass0.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass1.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..b0bebf9da4c --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass1.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass2.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..bc112796493 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass2.bin diff --git a/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass3.bin b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass3.bin Binary files differnew file mode 100644 index 00000000000..bc112796493 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/super-xbr/vs_super-xbr-pass3.bin diff --git a/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv1-noblend.bin b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..482a0ead8fd --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..324107e89b1 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-fast.bin b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..5b037b2bfe8 --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2.bin b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..f4fe0e66cca --- /dev/null +++ b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2.bin diff --git a/bgfx/shaders/dx9/chains/hlsl/fs_blit.bin b/bgfx/shaders/dx9/chains/misc/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/hlsl/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/misc/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/misc/fs_bob-and-ghost-deinterlace.bin b/bgfx/shaders/dx9/chains/misc/fs_bob-and-ghost-deinterlace.bin Binary files differnew file mode 100644 index 00000000000..8eebd096fef --- /dev/null +++ b/bgfx/shaders/dx9/chains/misc/fs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass0.bin b/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..de4521b235d --- /dev/null +++ b/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass0.bin diff --git a/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass1.bin b/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..acd2c9c61d7 --- /dev/null +++ b/bgfx/shaders/dx9/chains/misc/fs_deposterize-pass1.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/dx9/chains/misc/fs_saturation.bin Binary files differindex 5fe87a15fb5..5fe87a15fb5 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_saturation.bin +++ b/bgfx/shaders/dx9/chains/misc/fs_saturation.bin diff --git a/bgfx/shaders/dx9/chains/hlsl/vs_blit.bin b/bgfx/shaders/dx9/chains/misc/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/hlsl/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/misc/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/hq2x/vs_blit.bin b/bgfx/shaders/dx9/chains/misc/vs_bob-and-ghost-deinterlace.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/hq2x/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/misc/vs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass0.bin b/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..c8cf8f27b41 --- /dev/null +++ b/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass0.bin diff --git a/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass1.bin b/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..9576d95be24 --- /dev/null +++ b/bgfx/shaders/dx9/chains/misc/vs_deposterize-pass1.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/dx9/chains/misc/vs_saturation.bin Binary files differindex 0b92c5f50bc..0b92c5f50bc 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_saturation.bin +++ b/bgfx/shaders/dx9/chains/misc/vs_saturation.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 5fe87a15fb5..00000000000 --- a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin Binary files differdeleted file mode 100644 index 5fe87a15fb5..00000000000 --- a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 5fe87a15fb5..00000000000 --- a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/dx9/chains/hq2x/fs_blit.bin b/bgfx/shaders/dx9/chains/super-4xbr-3d-4p/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/hq2x/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/super-4xbr-3d-4p/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/hq3x/vs_blit.bin b/bgfx/shaders/dx9/chains/super-4xbr-3d-4p/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/hq3x/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/super-4xbr-3d-4p/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/hq3x/fs_blit.bin b/bgfx/shaders/dx9/chains/super-4xbr-3d-6p-smoother/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/hq3x/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/super-4xbr-3d-6p-smoother/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/hq4x/vs_blit.bin b/bgfx/shaders/dx9/chains/super-4xbr-3d-6p-smoother/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/hq4x/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/super-4xbr-3d-6p-smoother/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/hq4x/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-hybrid/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/hq4x/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-hybrid/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-hybrid/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-hybrid/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv1-noblend/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv1-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv1-noblend/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv1-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-3d/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_vertical/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-3d/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-3d/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-3d/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-multipass/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-multipass/vs_blit.bin Binary files differindex ea94c83e62d..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin Binary files differindex ef8fa0730c3..ef8fa0730c3 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/fs_blit.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin Binary files differindex e9bfb3062de..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_horizontal/vs_saturation.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-deposterize/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-deposterize/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-deposterize/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/dx9/chains/xbr-lv2-deposterize/vs_blit.bin Binary files differindex 55774bb38ab..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_right_vertical/vs_saturation.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-deposterize/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-fast/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-fast/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-fast/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/dx9/chains/xbr-lv2-fast/vs_blit.bin Binary files differindex b9b18b7ac1a..ea94c83e62d 100644 --- a/bgfx/shaders/dx9/chains/pillarbox_left_horizontal/vs_saturation.bin +++ b/bgfx/shaders/dx9/chains/xbr-lv2-fast/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-multipass/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-multipass/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-noblend/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv2-noblend/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv2-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv2-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3-multipass/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3-multipass/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3-noblend/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3-noblend/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3-noblend/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3-noblend/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-lv3/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-lv3/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-lv3/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-mlv4-dilation/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/fs_blit.bin b/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..ef8fa0730c3 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/fs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/vs_blit.bin b/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr-mlv4-multipass/vs_blit.bin diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv1-noblend.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..835ecae48ad --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..5d3c63a1179 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..97e82ad7584 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..53b70afd89e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..1bd16aff210 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..663ca437f49 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..28f508a31f6 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..63dd5937863 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..2fc641bc90c --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..501d317cb1e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..5b5fae14973 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..663ca437f49 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..599c1d3ba3f --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..63dd5937863 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..df939770a6e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..a63b9bd2aaa --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..9df5faa4beb --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..6df91a67542 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..2613ba72823 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..7fa43cddf5d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/fs_super-xbr-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..ac97172504e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..ac97172504e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..ac97172504e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass0.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..fbf3ac8bbd5 --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass0.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass1.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..ea94c83e62d --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass1.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass2.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..ac97172504e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass2.bin diff --git a/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass3.bin b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass3.bin Binary files differnew file mode 100644 index 00000000000..ac97172504e --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/super-xbr/vs_super-xbr-pass3.bin diff --git a/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv1-noblend.bin b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..30e1aa8bbfe --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..a35d9978cdb --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-fast.bin b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..de5213e137f --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2.bin b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..73a4c5231fd --- /dev/null +++ b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2.bin diff --git a/bgfx/shaders/gles/chains/hlsl/fs_blit.bin b/bgfx/shaders/gles/chains/misc/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/hlsl/fs_blit.bin +++ b/bgfx/shaders/gles/chains/misc/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/misc/fs_bob-and-ghost-deinterlace.bin b/bgfx/shaders/gles/chains/misc/fs_bob-and-ghost-deinterlace.bin Binary files differnew file mode 100644 index 00000000000..b2433cfdb67 --- /dev/null +++ b/bgfx/shaders/gles/chains/misc/fs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/gles/chains/misc/fs_deposterize-pass0.bin b/bgfx/shaders/gles/chains/misc/fs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..a7ef07b90c7 --- /dev/null +++ b/bgfx/shaders/gles/chains/misc/fs_deposterize-pass0.bin diff --git a/bgfx/shaders/gles/chains/misc/fs_deposterize-pass1.bin b/bgfx/shaders/gles/chains/misc/fs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..08c29573029 --- /dev/null +++ b/bgfx/shaders/gles/chains/misc/fs_deposterize-pass1.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/gles/chains/misc/fs_saturation.bin Binary files differindex 2f6160fe747..2f6160fe747 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_saturation.bin +++ b/bgfx/shaders/gles/chains/misc/fs_saturation.bin diff --git a/bgfx/shaders/gles/chains/hlsl/vs_blit.bin b/bgfx/shaders/gles/chains/misc/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/hlsl/vs_blit.bin +++ b/bgfx/shaders/gles/chains/misc/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/hq2x/vs_blit.bin b/bgfx/shaders/gles/chains/misc/vs_bob-and-ghost-deinterlace.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/hq2x/vs_blit.bin +++ b/bgfx/shaders/gles/chains/misc/vs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/gles/chains/misc/vs_deposterize-pass0.bin b/bgfx/shaders/gles/chains/misc/vs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..b39bc67dfb4 --- /dev/null +++ b/bgfx/shaders/gles/chains/misc/vs_deposterize-pass0.bin diff --git a/bgfx/shaders/gles/chains/misc/vs_deposterize-pass1.bin b/bgfx/shaders/gles/chains/misc/vs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..893fee943b1 --- /dev/null +++ b/bgfx/shaders/gles/chains/misc/vs_deposterize-pass1.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/gles/chains/misc/vs_saturation.bin Binary files differindex dbce619ef26..dbce619ef26 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_saturation.bin +++ b/bgfx/shaders/gles/chains/misc/vs_saturation.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 2f6160fe747..00000000000 --- a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin Binary files differdeleted file mode 100644 index 2f6160fe747..00000000000 --- a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 2f6160fe747..00000000000 --- a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/gles/chains/hq2x/fs_blit.bin b/bgfx/shaders/gles/chains/super-4xbr-3d-4p/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/hq2x/fs_blit.bin +++ b/bgfx/shaders/gles/chains/super-4xbr-3d-4p/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/hq3x/vs_blit.bin b/bgfx/shaders/gles/chains/super-4xbr-3d-4p/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/hq3x/vs_blit.bin +++ b/bgfx/shaders/gles/chains/super-4xbr-3d-4p/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/hq3x/fs_blit.bin b/bgfx/shaders/gles/chains/super-4xbr-3d-6p-smoother/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/hq3x/fs_blit.bin +++ b/bgfx/shaders/gles/chains/super-4xbr-3d-6p-smoother/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/hq4x/vs_blit.bin b/bgfx/shaders/gles/chains/super-4xbr-3d-6p-smoother/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/hq4x/vs_blit.bin +++ b/bgfx/shaders/gles/chains/super-4xbr-3d-6p-smoother/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/hq4x/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-hybrid/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/hq4x/fs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-hybrid/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-hybrid/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-hybrid/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv1-noblend/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/fs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv1-noblend/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv1-noblend/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_vertical/vs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv1-noblend/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-3d/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_vertical/fs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-3d/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-3d/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-3d/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-multipass/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/fs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-multipass/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-multipass/vs_blit.bin Binary files differindex 9dd618de8a0..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-multipass/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin Binary files differindex 22e2f0c23d0..22e2f0c23d0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_vertical/fs_blit.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin Binary files differindex 42326d4324e..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_left_horizontal/vs_saturation.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-deposterize/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-deposterize/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-deposterize/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/gles/chains/xbr-lv2-deposterize/vs_blit.bin Binary files differindex 1e806909f59..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_horizontal/vs_saturation.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-deposterize/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-fast/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-fast/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-fast/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/gles/chains/xbr-lv2-fast/vs_blit.bin Binary files differindex c0f4dfa5a88..9dd618de8a0 100644 --- a/bgfx/shaders/gles/chains/pillarbox_right_vertical/vs_saturation.bin +++ b/bgfx/shaders/gles/chains/xbr-lv2-fast/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-multipass/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-multipass/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-multipass/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-multipass/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-noblend/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-noblend/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv2-noblend/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv2-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv2-noblend/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3-multipass/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3-multipass/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3-multipass/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3-multipass/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3-noblend/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3-noblend/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3-noblend/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3-noblend/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-lv3/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-lv3/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-lv3/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-mlv4-dilation/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-mlv4-dilation/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-mlv4-dilation/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-mlv4-dilation/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-mlv4-dilation/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-mlv4-dilation/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-mlv4-multipass/fs_blit.bin b/bgfx/shaders/gles/chains/xbr-mlv4-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..22e2f0c23d0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-mlv4-multipass/fs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr-mlv4-multipass/vs_blit.bin b/bgfx/shaders/gles/chains/xbr-mlv4-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr-mlv4-multipass/vs_blit.bin diff --git a/bgfx/shaders/gles/chains/xbr/fs_xbr-lv1-noblend.bin b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..2a18147115f --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..9643a265714 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..fb0ee7104e3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..c5dcd103244 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/fs_xbr-lv2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..f9c7ad41d1d --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..ce19da70ec3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..37b5ee12682 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..6585387ce7a --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..02aba5a0cba --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..d645bdf002c --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..1914c61410f --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..ce19da70ec3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..b5e7f16543d --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..a98de1025c7 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..82036f8a21f --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..b2fec3f1fb6 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..9409cfb2a61 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..ac71cdeef2c --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..900a4e701a5 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..f1995dd122c --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/fs_super-xbr-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..d4df7ec9ee3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..d4df7ec9ee3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..d4df7ec9ee3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass0.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..39c4b239b8a --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass0.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass1.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..9dd618de8a0 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass1.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass2.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..d4df7ec9ee3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass2.bin diff --git a/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass3.bin b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass3.bin Binary files differnew file mode 100644 index 00000000000..d4df7ec9ee3 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/super-xbr/vs_super-xbr-pass3.bin diff --git a/bgfx/shaders/gles/chains/xbr/vs_xbr-lv1-noblend.bin b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..5769d6ff5d8 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..185547625c4 --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-fast.bin b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..2d62e84953e --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2.bin b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..dd851ddde0a --- /dev/null +++ b/bgfx/shaders/gles/chains/xbr/vs_xbr-lv2.bin diff --git a/bgfx/shaders/glsl/chains/hlsl/fs_blit.bin b/bgfx/shaders/glsl/chains/misc/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/hlsl/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/misc/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/misc/fs_bob-and-ghost-deinterlace.bin b/bgfx/shaders/glsl/chains/misc/fs_bob-and-ghost-deinterlace.bin Binary files differnew file mode 100644 index 00000000000..d8a1d3f3c6d --- /dev/null +++ b/bgfx/shaders/glsl/chains/misc/fs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass0.bin b/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..c7188eec839 --- /dev/null +++ b/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass0.bin diff --git a/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass1.bin b/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..68a47c3243f --- /dev/null +++ b/bgfx/shaders/glsl/chains/misc/fs_deposterize-pass1.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/glsl/chains/misc/fs_saturation.bin Binary files differindex 4a3f80b56b9..4a3f80b56b9 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_saturation.bin +++ b/bgfx/shaders/glsl/chains/misc/fs_saturation.bin diff --git a/bgfx/shaders/glsl/chains/hlsl/vs_blit.bin b/bgfx/shaders/glsl/chains/misc/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/hlsl/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/misc/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/hq2x/vs_blit.bin b/bgfx/shaders/glsl/chains/misc/vs_bob-and-ghost-deinterlace.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/hq2x/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/misc/vs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass0.bin b/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..e6cfefbd74f --- /dev/null +++ b/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass0.bin diff --git a/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass1.bin b/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..af4ba2d7538 --- /dev/null +++ b/bgfx/shaders/glsl/chains/misc/vs_deposterize-pass1.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/glsl/chains/misc/vs_saturation.bin Binary files differindex de0d4115e79..de0d4115e79 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_saturation.bin +++ b/bgfx/shaders/glsl/chains/misc/vs_saturation.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 4a3f80b56b9..00000000000 --- a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_saturation.bin Binary files differdeleted file mode 100644 index 4a3f80b56b9..00000000000 --- a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_saturation.bin Binary files differdeleted file mode 100644 index 4a3f80b56b9..00000000000 --- a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_saturation.bin +++ /dev/null diff --git a/bgfx/shaders/glsl/chains/hq2x/fs_blit.bin b/bgfx/shaders/glsl/chains/super-4xbr-3d-4p/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/hq2x/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/super-4xbr-3d-4p/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/hq3x/vs_blit.bin b/bgfx/shaders/glsl/chains/super-4xbr-3d-4p/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/hq3x/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/super-4xbr-3d-4p/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/hq3x/fs_blit.bin b/bgfx/shaders/glsl/chains/super-4xbr-3d-6p-smoother/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/hq3x/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/super-4xbr-3d-6p-smoother/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/hq4x/vs_blit.bin b/bgfx/shaders/glsl/chains/super-4xbr-3d-6p-smoother/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/hq4x/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/super-4xbr-3d-6p-smoother/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/hq4x/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-hybrid/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/hq4x/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-hybrid/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-hybrid/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-hybrid/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv1-noblend/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv1-noblend/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv1-noblend/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv1-noblend/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-3d/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_vertical/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-3d/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-3d/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-3d/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-multipass/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-multipass/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-multipass/vs_blit.bin Binary files differindex af6c9349f41..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-multipass/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin Binary files differindex db0fe2b487b..db0fe2b487b 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/fs_blit.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin Binary files differindex 061d861b6ed..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_left_horizontal/vs_saturation.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-deposterize/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-deposterize/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-deposterize/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/glsl/chains/xbr-lv2-deposterize/vs_blit.bin Binary files differindex c25635af5a8..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_horizontal/vs_saturation.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-deposterize/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-fast/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-fast/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-fast/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/glsl/chains/xbr-lv2-fast/vs_blit.bin Binary files differindex 3b5a651f2e7..af6c9349f41 100644 --- a/bgfx/shaders/glsl/chains/pillarbox_right_vertical/vs_saturation.bin +++ b/bgfx/shaders/glsl/chains/xbr-lv2-fast/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-multipass/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-multipass/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-multipass/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-multipass/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-noblend/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-noblend/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv2-noblend/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv2-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv2-noblend/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3-multipass/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3-multipass/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3-multipass/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3-multipass/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3-noblend/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3-noblend/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3-noblend/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3-noblend/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-lv3/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-lv3/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-lv3/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-mlv4-dilation/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/fs_blit.bin b/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..db0fe2b487b --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/fs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/vs_blit.bin b/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr-mlv4-multipass/vs_blit.bin diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv1-noblend.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..e4fa0a459fd --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..5e23d658855 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..a7b48e65fc8 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..b1e84120d4d --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..26a3506b7cb --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..c7894d1d0e8 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..8f61bc0c5e3 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..c8900a657ea --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..82be16250c1 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..bf6c4a886f6 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..e2254725353 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..c7894d1d0e8 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..1c1d4030496 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..d855fb47c25 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..66054016ff4 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..43fc6074d13 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..2652cdee73e --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..f2b5b97387a --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..a78563e0ceb --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..3d66ef7f690 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/fs_super-xbr-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..289f01ddd34 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..289f01ddd34 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..289f01ddd34 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass0.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..061a6627b32 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass0.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass1.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..af6c9349f41 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass1.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass2.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..289f01ddd34 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass2.bin diff --git a/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass3.bin b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass3.bin Binary files differnew file mode 100644 index 00000000000..289f01ddd34 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/super-xbr/vs_super-xbr-pass3.bin diff --git a/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv1-noblend.bin b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..93b681dd926 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..d0293824b94 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-fast.bin b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..c034943e250 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2.bin b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..d8d081a91d0 --- /dev/null +++ b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2.bin diff --git a/bgfx/shaders/metal/chains/hlsl/fs_blit.bin b/bgfx/shaders/metal/chains/misc/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/hlsl/fs_blit.bin +++ b/bgfx/shaders/metal/chains/misc/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/misc/fs_bob-and-ghost-deinterlace.bin b/bgfx/shaders/metal/chains/misc/fs_bob-and-ghost-deinterlace.bin Binary files differnew file mode 100644 index 00000000000..d8c81a9a23c --- /dev/null +++ b/bgfx/shaders/metal/chains/misc/fs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/metal/chains/misc/fs_deposterize-pass0.bin b/bgfx/shaders/metal/chains/misc/fs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..e33c9cc3f2d --- /dev/null +++ b/bgfx/shaders/metal/chains/misc/fs_deposterize-pass0.bin diff --git a/bgfx/shaders/metal/chains/misc/fs_deposterize-pass1.bin b/bgfx/shaders/metal/chains/misc/fs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..a724de4ed3e --- /dev/null +++ b/bgfx/shaders/metal/chains/misc/fs_deposterize-pass1.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_saturation.bin b/bgfx/shaders/metal/chains/misc/fs_saturation.bin Binary files differindex de6ec5972af..de6ec5972af 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_saturation.bin +++ b/bgfx/shaders/metal/chains/misc/fs_saturation.bin diff --git a/bgfx/shaders/metal/chains/hlsl/vs_blit.bin b/bgfx/shaders/metal/chains/misc/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/hlsl/vs_blit.bin +++ b/bgfx/shaders/metal/chains/misc/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/hq2x/vs_blit.bin b/bgfx/shaders/metal/chains/misc/vs_bob-and-ghost-deinterlace.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/hq2x/vs_blit.bin +++ b/bgfx/shaders/metal/chains/misc/vs_bob-and-ghost-deinterlace.bin diff --git a/bgfx/shaders/metal/chains/misc/vs_deposterize-pass0.bin b/bgfx/shaders/metal/chains/misc/vs_deposterize-pass0.bin Binary files differnew file mode 100644 index 00000000000..45cb2ff444d --- /dev/null +++ b/bgfx/shaders/metal/chains/misc/vs_deposterize-pass0.bin diff --git a/bgfx/shaders/metal/chains/misc/vs_deposterize-pass1.bin b/bgfx/shaders/metal/chains/misc/vs_deposterize-pass1.bin Binary files differnew file mode 100644 index 00000000000..abf0c3febb1 --- /dev/null +++ b/bgfx/shaders/metal/chains/misc/vs_deposterize-pass1.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_saturation.bin b/bgfx/shaders/metal/chains/misc/vs_saturation.bin Binary files differindex f9567cc2d50..f9567cc2d50 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_saturation.bin +++ b/bgfx/shaders/metal/chains/misc/vs_saturation.bin diff --git a/bgfx/shaders/metal/chains/hq2x/fs_blit.bin b/bgfx/shaders/metal/chains/super-4xbr-3d-4p/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/hq2x/fs_blit.bin +++ b/bgfx/shaders/metal/chains/super-4xbr-3d-4p/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/hq3x/vs_blit.bin b/bgfx/shaders/metal/chains/super-4xbr-3d-4p/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/hq3x/vs_blit.bin +++ b/bgfx/shaders/metal/chains/super-4xbr-3d-4p/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/hq3x/fs_blit.bin b/bgfx/shaders/metal/chains/super-4xbr-3d-6p-smoother/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/hq3x/fs_blit.bin +++ b/bgfx/shaders/metal/chains/super-4xbr-3d-6p-smoother/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/hq4x/vs_blit.bin b/bgfx/shaders/metal/chains/super-4xbr-3d-6p-smoother/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/hq4x/vs_blit.bin +++ b/bgfx/shaders/metal/chains/super-4xbr-3d-6p-smoother/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/hq4x/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-hybrid/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/hq4x/fs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-hybrid/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-hybrid/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-hybrid/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv1-noblend/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/fs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv1-noblend/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv1-noblend/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_vertical/vs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv1-noblend/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-3d/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-3d/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-3d/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-3d/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-multipass/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-multipass/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-multipass/vs_blit.bin Binary files differindex 122b7dee5c3..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-multipass/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin Binary files differindex 6a3da392480..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_blit.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-smart-blur/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin Binary files differindex 79234729f36..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_horizontal/vs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-accuracy-smart-blur/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-deposterize/fs_blit.bin Binary files differindex de6ec5972af..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_left_vertical/fs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-deposterize/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-deposterize/vs_blit.bin Binary files differindex efd3de32003..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/vs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-deposterize/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-fast/fs_blit.bin Binary files differindex de6ec5972af..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_horizontal/fs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-fast/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-fast/vs_blit.bin Binary files differindex 5fdb790c191..122b7dee5c3 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_vertical/vs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-fast/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_saturation.bin b/bgfx/shaders/metal/chains/xbr-lv2-multipass/fs_blit.bin Binary files differindex de6ec5972af..6a3da392480 100644 --- a/bgfx/shaders/metal/chains/pillarbox_right_vertical/fs_saturation.bin +++ b/bgfx/shaders/metal/chains/xbr-lv2-multipass/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv2-multipass/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv2-multipass/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv2-noblend/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv2-noblend/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv2-noblend/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv2-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv2-noblend/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3-multipass/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3-multipass/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3-multipass/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3-multipass/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3-noblend/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3-noblend/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3-noblend/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3-noblend/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3-noblend/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3-noblend/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-lv3/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-lv3/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-lv3/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-mlv4-dilation/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-mlv4-dilation/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-mlv4-dilation/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-mlv4-dilation/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-mlv4-dilation/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-mlv4-dilation/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-mlv4-multipass/fs_blit.bin b/bgfx/shaders/metal/chains/xbr-mlv4-multipass/fs_blit.bin Binary files differnew file mode 100644 index 00000000000..6a3da392480 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-mlv4-multipass/fs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr-mlv4-multipass/vs_blit.bin b/bgfx/shaders/metal/chains/xbr-mlv4-multipass/vs_blit.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr-mlv4-multipass/vs_blit.bin diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv1-noblend.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..e3478fe89b7 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..d75cfa36ae6 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..c773ee30579 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..17ed3b98257 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..999ab79ad37 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..0d231ef85fa --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..f2e63cf659f --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..5b35b08f29d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..f0929f4c7c0 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..89776463420 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..f896d5e76a4 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..0d231ef85fa --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..57c6d656e1d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..8085924f05a --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..bef91b392f0 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..057237ba0b6 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..3699abfcb15 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..27effe92acf --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..5a8c8ade818 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..f0233e0a125 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/fs_super-xbr-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_custom-jinc2-sharper.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..733645f988d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin Binary files differnew file mode 100644 index 00000000000..733645f988d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin Binary files differnew file mode 100644 index 00000000000..733645f988d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass0.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass0.bin Binary files differnew file mode 100644 index 00000000000..88af9111c90 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass0.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass1.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass1.bin Binary files differnew file mode 100644 index 00000000000..122b7dee5c3 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass1.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass2.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass2.bin Binary files differnew file mode 100644 index 00000000000..733645f988d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass2.bin diff --git a/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass3.bin b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass3.bin Binary files differnew file mode 100644 index 00000000000..733645f988d --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/super-xbr/vs_super-xbr-pass3.bin diff --git a/bgfx/shaders/metal/chains/xbr/vs_xbr-lv1-noblend.bin b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv1-noblend.bin Binary files differnew file mode 100644 index 00000000000..da9289ef365 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv1-noblend.bin diff --git a/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-3d.bin Binary files differnew file mode 100644 index 00000000000..ac61b8453f0 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-3d.bin diff --git a/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-fast.bin b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-fast.bin Binary files differnew file mode 100644 index 00000000000..4bd75b98140 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-fast.bin diff --git a/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2.bin b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2.bin Binary files differnew file mode 100644 index 00000000000..f39ca902371 --- /dev/null +++ b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2.bin diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp index 458a45d449c..80934ed073a 100644 --- a/src/osd/modules/render/bgfx/chainmanager.cpp +++ b/src/osd/modules/render/bgfx/chainmanager.cpp @@ -48,7 +48,7 @@ chain_manager::chain_manager(running_machine& machine, osd_options& options, tex , m_slider_notifier(slider_notifier) , m_screen_count(0) { - find_available_chains(options.bgfx_path()); + refresh_available_chains(); parse_chain_selections(options.bgfx_screen_chains()); } @@ -57,12 +57,41 @@ chain_manager::~chain_manager() destroy_chains(); } -void chain_manager::find_available_chains(std::string path) +void chain_manager::refresh_available_chains() { m_available_chains.clear(); m_available_chains.push_back("none"); - osd_directory *directory = osd_opendir((path + "/chains").c_str()); + find_available_chains(std::string(m_options.bgfx_path()) + "/chains"); + + destroy_unloaded_chains(); +} + +void chain_manager::destroy_unloaded_chains() +{ + // O(shaders*available_chains), but we don't care because asset reloading happens rarely + for (int i = 0; i < m_chain_names.size(); i++) + { + std::string name = m_chain_names[i]; + if (name.length() > 0) + { + for (std::string available_name : m_available_chains) + { + if (available_name == name) + { + delete m_screen_chains[i]; + m_chain_names[i] = ""; + m_current_chain[i] = CHAIN_NONE; + break; + } + } + } + } +} + +void chain_manager::find_available_chains(std::string path) +{ + osd_directory *directory = osd_opendir(path.c_str()); if (directory != nullptr) { for (const osd_directory_entry *entry = osd_readdir(directory); entry != nullptr; entry = osd_readdir(directory)) @@ -85,6 +114,14 @@ void chain_manager::find_available_chains(std::string path) } } } + else if (entry->type == ENTTYPE_DIR) + { + std::string name = entry->name; + if (!(name == "." || name == "..")) + { + find_available_chains(path + PATH_SEPARATOR + name); + } + } } osd_closedir(directory); @@ -144,6 +181,7 @@ void chain_manager::parse_chain_selections(std::string chain_str) while (m_current_chain.size() != chain_names.size()) { m_screen_chains.push_back(nullptr); + m_chain_names.push_back(""); m_current_chain.push_back(CHAIN_NONE); } @@ -161,10 +199,12 @@ void chain_manager::parse_chain_selections(std::string chain_str) if (chain_index < m_available_chains.size()) { m_current_chain[index] = chain_index; + m_chain_names[index] = m_available_chains[chain_index]; } else { m_current_chain[index] = CHAIN_NONE; + m_chain_names[index] = ""; } } } @@ -201,7 +241,8 @@ void chain_manager::load_chains() { if (m_current_chain[chain] != CHAIN_NONE) { - m_screen_chains[chain] = load_chain(m_available_chains[m_current_chain[chain]], uint32_t(chain)); + m_chain_names[chain] = m_available_chains[m_current_chain[chain]]; + m_screen_chains[chain] = load_chain(m_chain_names[chain], uint32_t(chain)); } } } @@ -245,7 +286,7 @@ void chain_manager::process_screen_quad(uint32_t view, uint32_t screen, render_p tex_width, tex_height, prim->texture.rowpixels, prim->texture.palette, prim->texture.base); std::string full_name = "screen" + std::to_string(screen); - bgfx_texture *texture = new bgfx_texture(full_name, bgfx::TextureFormat::RGBA8, tex_width, tex_height, mem, BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT); + bgfx_texture *texture = new bgfx_texture(full_name, bgfx::TextureFormat::RGBA8, tex_width, tex_height, mem, BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_MIN_POINT | BGFX_TEXTURE_MAG_POINT | BGFX_TEXTURE_MIP_POINT); m_textures.add_provider(full_name, texture); m_targets.update_target_sizes(screen, tex_width, tex_height, TARGET_STYLE_GUEST); @@ -293,6 +334,7 @@ void chain_manager::update_screen_count(uint32_t screen_count) while (m_screen_chains.size() < m_screen_count) { m_screen_chains.push_back(nullptr); + m_chain_names.push_back(""); m_current_chain.push_back(CHAIN_NONE); } diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h index 7d8d0c16eb3..022dbecfa14 100644 --- a/src/osd/modules/render/bgfx/chainmanager.h +++ b/src/osd/modules/render/bgfx/chainmanager.h @@ -15,6 +15,7 @@ #define __DRAWBGFX_CHAIN_MANAGER__ #include <vector> +#include <map> #include <string> #include "texturemanager.h" @@ -48,6 +49,8 @@ private: void destroy_chains(); void reload_chains(); + void refresh_available_chains(); + void destroy_unloaded_chains(); void find_available_chains(std::string path); void parse_chain_selections(std::string chain_str); std::vector<std::string> split_option_string(std::string chain_str) const; @@ -69,6 +72,7 @@ private: uint32_t m_screen_count; std::vector<std::string> m_available_chains; std::vector<bgfx_chain*> m_screen_chains; + std::vector<std::string> m_chain_names; std::vector<ui_menu_item> m_selection_sliders; std::vector<int32_t> m_current_chain; diff --git a/src/osd/modules/render/bgfx/shaders/chains/hlsl/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hlsl/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_bob-and-ghost-deinterlace.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_bob-and-ghost-deinterlace.sc new file mode 100644 index 00000000000..45d38a0e020 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_bob-and-ghost-deinterlace.sc @@ -0,0 +1,55 @@ +$input v_color0, v_texcoord0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +/* + Bob-and-ghost Deinterlacing + Author: hunterk + License: Public domain + + Note: This shader is designed to work with the typical interlaced output from an emulator, which displays both even and odd fields twice. + As such, it is inappropriate for general video use unless the video has already been similarly woven beforehand. +*/ + +#include "common.sh" + +// Samplers +SAMPLER2D(s0, 0); + +uniform vec4 u_tex_size0; + +#define one_pixel vec2(1.0 / u_tex_size0.xy) + +void main() +{ + vec4 exponent = vec4(2.2, 2.2, 2.2, 2.2); + vec4 inv_exponent = 1.0 / exponent; + vec4 res = vec4(pow(texture2D(s0, v_texcoord0), exponent)); + vec4 color; + float y; + + // assume anything with a vertical resolution greater than 400 lines is interlaced + if (u_tex_size0.y > 400.0) + { + y = u_tex_size0.y * v_texcoord0.y;// FIXME + IN.frame_count; + res = pow(vec4(texture2D(s0, v_texcoord0 + vec2(0.0, one_pixel.y))), exponent); + color = pow((vec4(texture2D(s0, v_texcoord0 - vec2(0.0, 0.5 * one_pixel.y))) + vec4(texture2D(s0, v_texcoord0 + vec2(0.0, 0.5 * one_pixel.y)))) / 2.0, exponent); + } + else + { + y = 2.0 * u_tex_size0.y * v_texcoord0.y; + color = res; + } + + if (mod(y, 2.0) > 0.99999) + { + res = res; + } + else + { + res = vec4(pow(texture2D(s0, v_texcoord0), exponent)); + } + + gl_FragColor = vec4(pow((res + color) / 2.0, inv_exponent)); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass0.sc new file mode 100644 index 00000000000..cbff9f450e8 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass0.sc @@ -0,0 +1,45 @@ +$input v_color0, v_texcoord0, v_texcoord1 + +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass0 + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com + +*/ + +#include "common.sh" + +// Samplers +SAMPLER2D(decal, 0); + +uniform vec4 EQ_THRESH1; +uniform vec4 DIFF_THRESH1; + +vec3 df3(vec3 c1, vec3 c2) +{ + return abs(c1 - c2); +} + +bvec3 le3(vec3 A, vec3 B, vec3 param) +{ + return lessThanEqual(df3(A, B), param); +} + +bvec3 gt3(vec3 A, vec3 B, vec3 param) +{ + return greaterThan(df3(A, B), param); +} + +void main() +{ + vec3 D = texture2D(decal, v_texcoord1.xw).rgb; + vec3 E = texture2D(decal, v_texcoord1.yw).rgb; + vec3 F = texture2D(decal, v_texcoord1.zw).rgb; + + vec3 res = (any(gt3(D, F, EQ_THRESH1.xxx)) && (any(le3(E, F, DIFF_THRESH1.xxx)) && any(le3(D, E, EQ_THRESH1.xxx)) || any(le3(D, E, DIFF_THRESH1.xxx)) && any(le3(E, F, EQ_THRESH1.xxx)))) ? 0.5 * (D + F) : E; + + gl_FragColor = vec4(res, 1.0); +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass1.sc new file mode 100644 index 00000000000..c6e0e87b018 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass1.sc @@ -0,0 +1,45 @@ +$input v_color0, v_texcoord0, v_texcoord1 + +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass1 + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com + +*/ + +#include "common.sh" + +// Samplers +SAMPLER2D(decal, 0); + +uniform vec4 EQ_THRESH2; +uniform vec4 DIFF_THRESH2; + +vec3 df3(vec3 c1, vec3 c2) +{ + return abs(c1 - c2); +} + +bvec3 le3(vec3 A, vec3 B, vec3 param) +{ + return lessThanEqual(df3(A, B), param); +} + +bvec3 gt3(vec3 A, vec3 B, vec3 param) +{ + return greaterThan(df3(A, B), param); +} + +void main() +{ + vec3 B = texture2D(decal, v_texcoord1.xy).rgb; + vec3 E = texture2D(decal, v_texcoord1.xz).rgb; + vec3 H = texture2D(decal, v_texcoord1.xw).rgb; + + vec3 res = (any(gt3(B, H, EQ_THRESH2.xxx)) && (any(le3(E, H, DIFF_THRESH2.xxx)) && any(le3(B, E, EQ_THRESH2.xxx)) || any(le3(B, E, DIFF_THRESH2.xxx)) && any(le3(E, H, EQ_THRESH2.xxx)))) ? 0.5 * (B + H) : E; + + gl_FragColor = vec4(res, 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/misc/fs_saturation.sc index c14f61601c8..c14f61601c8 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_saturation.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/fs_saturation.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/varying.def.sc new file mode 100644 index 00000000000..8404fc635e1 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/varying.def.sc @@ -0,0 +1,7 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 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/hlsl/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hlsl/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/hq2x/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_bob-and-ghost-deinterlace.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq2x/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_bob-and-ghost-deinterlace.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass0.sc new file mode 100644 index 00000000000..1c3b3ee592f --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass0.sc @@ -0,0 +1,30 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_color0 + +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass0 vertex shader + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + + vec2 ps = vec2(1.0 / u_tex_size0.xy); + float dx = ps.x; + float dy = ps.y; + + // This line fixes a bug in ATI cards. + v_texcoord0 = a_texcoord0 + vec2(0.0000001, 0.0000001); + v_texcoord1 = v_texcoord0.xxxy + vec4(-dx, 0, dx, 0); // D E F + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass1.sc new file mode 100644 index 00000000000..7af87394655 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass1.sc @@ -0,0 +1,30 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_color0 + +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's Deposterize Shader - Pass1 vertex shader + + Copyright (C) 2011/2016 Hyllian/Jararaca - sergiogdb@gmail.com + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + + vec2 ps = vec2(1.0 / u_tex_size0.xy); + float dx = ps.x; + float dy = ps.y; + + // This line fixes a bug in ATI cards. + v_texcoord0 = a_texcoord0 + vec2(0.0000001, 0.0000001); + v_texcoord1 = v_texcoord0.xyyy + vec4(0, -dy, 0, dy); // D E F + 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/misc/vs_saturation.sc index fc524496a1f..fc524496a1f 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_saturation.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/misc/vs_saturation.sc 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 deleted file mode 100644 index c14f61601c8..00000000000 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_saturation.sc +++ /dev/null @@ -1,25 +0,0 @@ -$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/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc deleted file mode 100644 index c14f61601c8..00000000000 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_saturation.sc +++ /dev/null @@ -1,25 +0,0 @@ -$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/fs_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc deleted file mode 100644 index c14f61601c8..00000000000 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_saturation.sc +++ /dev/null @@ -1,25 +0,0 @@ -$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/hq2x/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq2x/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/hq3x/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq3x/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-4p/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/hq3x/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq3x/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/hq4x/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq4x/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/super-4xbr-3d-6p-smoother/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/hq4x/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hq4x/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-hybrid/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-hybrid/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv1-noblend/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv1-noblend/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv2-3d/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-3d/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv2-accuracy-multipass/vs_blit.sc index 405ef8feb3b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-multipass/vs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/fs_blit.sc index 9af7bcf0ee6..9af7bcf0ee6 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_blit.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/fs_blit.sc diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/vs_blit.sc index 57be1439a8b..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_saturation.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-accuracy-smart-blur/vs_blit.sc @@ -9,6 +9,6 @@ $output v_texcoord0, v_color0 void main() { gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); - v_texcoord0 = a_texcoord0 * vec2(0.16666666 * 0.9, 1.0 * 0.8) + vec2(0.1, 0.1); + v_texcoord0 = a_texcoord0; v_color0 = a_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/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/xbr-lv2-deposterize/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/vs_blit.sc index ef86b6a0a43..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_saturation.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-deposterize/vs_blit.sc @@ -9,6 +9,6 @@ $output v_texcoord0, v_color0 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.685185 * 0.9) + vec2(0.1, 0.9 - 0.685185 * 0.9); + v_texcoord0 = a_texcoord0; v_color0 = a_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/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/xbr-lv2-fast/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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_saturation.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/vs_blit.sc index c0f9321abc1..405ef8feb3b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_saturation.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-fast/vs_blit.sc @@ -9,6 +9,6 @@ $output v_texcoord0, v_color0 void main() { gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); - v_texcoord0 = a_texcoord0 * vec2(0.16666666 * 0.9, 1.0 * 0.8) + vec2(0.9 - 0.16666666 * 0.9, 0.1); + v_texcoord0 = a_texcoord0; v_color0 = a_color0; } diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/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/xbr-lv2-multipass/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv2-multipass/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-multipass/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/xbr-lv2-noblend/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/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/xbr-lv2-noblend/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv2-noblend/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv2-noblend/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/xbr-lv3-multipass/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/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/xbr-lv3-multipass/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv3-multipass/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-multipass/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/xbr-lv3-noblend/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/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/xbr-lv3-noblend/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv3-noblend/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3-noblend/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/xbr-lv3/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/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/xbr-lv3/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-lv3/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-lv3/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/xbr-mlv4-dilation/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/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/xbr-mlv4-dilation/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-mlv4-dilation/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-dilation/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/xbr-mlv4-multipass/fs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/fs_blit.sc new file mode 100644 index 00000000000..9af7bcf0ee6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/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/xbr-mlv4-multipass/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr-mlv4-multipass/vs_blit.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/vs_blit.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr-mlv4-multipass/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/xbr/fs_xbr-lv1-noblend.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv1-noblend.sc new file mode 100644 index 00000000000..72212fa74a7 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv1-noblend.sc @@ -0,0 +1,132 @@ +$input v_texcoord0, v_texcoord1, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + Hyllian's xBR-lv1-noblend Shader + + Copyright (C) 2011-2014 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +uniform vec4 XBR_Y_WEIGHT; +uniform vec4 XBR_EQ_THRESHOLD; + +uniform vec4 u_tex_size0; + +SAMPLER2D(decal, 0); + +// Uncomment just one of the three params below to choose the corner detection +//#define CORNER_A +//#define CORNER_B +#define CORNER_C + +float RGBtoYUV(vec3 color) +{ + return dot(color, XBR_Y_WEIGHT.xxx * vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < XBR_EQ_THRESHOLD.x); +} + +float weighted_distance(float a, float b, float c, float d, float e, float f, float g, float h) +{ + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h)); +} + +/* + xBR LVL1 works over the pixels below: + + |B |C | + |D |E |F |F4| + |G |H |I |I4| + |H5|I5| + + Consider E as the central pixel. xBR LVL1 needs only to look at 12 texture pixels. +*/ + +void main() +{ + vec2 pos = fract(v_texcoord0 * u_tex_size0.xy) - vec2(0.5, 0.5); // pos = pixel position + vec2 dir = sign(pos); // dir = pixel direction + + vec2 g1 = dir * v_texcoord1.xy; + vec2 g2 = dir * v_texcoord1.zw; + + vec3 B = texture2D(decal, v_texcoord0 +g1 ).xyz; + vec3 C = texture2D(decal, v_texcoord0 +g1-g2).xyz; + vec3 D = texture2D(decal, v_texcoord0 +g2).xyz; + vec3 E = texture2D(decal, v_texcoord0 ).xyz; + vec3 F = texture2D(decal, v_texcoord0 -g2).xyz; + vec3 G = texture2D(decal, v_texcoord0 -g1+g2).xyz; + vec3 H = texture2D(decal, v_texcoord0 -g1 ).xyz; + vec3 I = texture2D(decal, v_texcoord0 -g1-g2).xyz; + + vec3 F4 = texture2D(decal,v_texcoord0 -2.0*g2 ).xyz; + vec3 I4 = texture2D(decal,v_texcoord0 -g1-2.0*g2 ).xyz; + vec3 H5 = texture2D(decal,v_texcoord0 -2.0*g1 ).xyz; + vec3 I5 = texture2D(decal,v_texcoord0 -2.0*g1-g2 ).xyz; + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); + float i5 = RGBtoYUV( I5 ); + float h5 = RGBtoYUV( H5 ); + float f4 = RGBtoYUV( F4 ); + + bool fx = (dot(dir,pos) > 0.5); // inequations of straight lines. + +// It uses CORNER_C if none of the others are defined. +#ifdef CORNER_A + bool interp_restriction_lv1 = ((e!=f) && (e!=h)); +#elif CORNER_B + bool interp_restriction_lv1 = ((e!=f) && (e!=h) && ( !eq(f,b) && !eq(h,d) || eq(e,i) && !eq(f,i4) && !eq(h,i5) || eq(e,g) || eq(e,c) ) ); +#else + bool interp_restriction_lv1 = ((e!=f) && (e!=h) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); +#endif + bool edr = (weighted_distance(e, c, g, i, h5, f4, h, f) < weighted_distance(h, d, i5, f, i4, b, e, i)) && interp_restriction_lv1; // edr = edge detection rule + + bool nc = (edr && fx); // new_color + + bool px = (df(e,f) <= df(e,h)); // px = pixel + + vec3 res = nc ? px ? F : H : E; + + // final sum and weight normalization + gl_FragColor = vec4(res, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc new file mode 100644 index 00000000000..1febb8f5ee3 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc @@ -0,0 +1,260 @@ +$input v_texcoord0, v_texcoord1, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + Hyllian's xBR-lv2-3d Shader + + Copyright (C) 2011-2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + Incorporates some of the ideas from SABR shader. Thanks to Joshua Street. +*/ + +#include "common.sh" + +uniform vec4 XBR_SCALE; +uniform vec4 XBR_Y_WEIGHT; +uniform vec4 XBR_EQ_THRESHOLD; +uniform vec4 XBR_LV2_COEFFICIENT; +uniform vec4 XBR_RES; + +uniform vec4 u_tex_size0; + +SAMPLER2D(decal, 0); + +// Uncomment just one of the three params below to choose the corner detection +//#define CORNER_A +//#define CORNER_B +#define CORNER_C +//#define CORNER_D + +#ifndef CORNER_A + #define SMOOTH_TIPS +#endif + +const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); +const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); +const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); +const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); +const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); +const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); +const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25); + +const vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); + +vec4 df(vec4 A, vec4 B) +{ + return abs(A - B); +} + +float c_df(vec3 c1, vec3 c2) +{ + vec3 df = abs(c1 - c2); + return df.r + df.g + df.b; +} + +vec4 ge(vec4 A, vec4 B) +{ + return vec4(greaterThanEqual(A, B)); +} + +vec4 le(vec4 A, vec4 B) +{ + return vec4(lessThanEqual(A, B)); +} + +vec4 lt(vec4 A, vec4 B) +{ + return vec4(lessThan(A, B)); +} + +vec4 eq(vec4 A, vec4 B) +{ + return vec4(equal(A, B)); +} + +vec4 ne(vec4 A, vec4 B) +{ + return vec4(notEqual(A, B)); +} + +vec4 abslt(vec4 A, vec4 B) +{ + return lt(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 absge(vec4 A, vec4 B) +{ + return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) +{ + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h)); +} + +void main() +{ + vec4 delta = 1.0 / XBR_SCALE.xxxx; + vec4 deltaL = vec4(0.5, 1.0, 0.5, 1.0) / XBR_SCALE.xxxx; + vec4 deltaU = deltaL.yxwz; + + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES.xx); + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES.xx) + vec2(0.5, 0.5)) * XBR_RES.xx / u_tex_size0.xy; + + vec2 dx = v_texcoord1.xy; + vec2 dy = v_texcoord1.zw; + + vec4 A = texture2D(decal, v_texcoord0 -dx -dy); + vec4 B = texture2D(decal, v_texcoord0 -dy); + vec4 C = texture2D(decal, v_texcoord0 +dx -dy); + vec4 D = texture2D(decal, v_texcoord0 -dx ); + vec4 E = texture2D(decal, v_texcoord0 ); + vec4 F = texture2D(decal, v_texcoord0 +dx ); + vec4 G = texture2D(decal, v_texcoord0 -dx +dy); + vec4 H = texture2D(decal, v_texcoord0 +dy); + vec4 I = texture2D(decal, v_texcoord0 +dx +dy); + + vec4 A1 = texture2D(decal, v_texcoord0 -dx -2.0*dy); + vec4 B1 = texture2D(decal, v_texcoord0 -2.0*dy); + vec4 C1 = texture2D(decal, v_texcoord0 +dx -2.0*dy); + vec4 G5 = texture2D(decal, v_texcoord0 -dx +2.0*dy); + vec4 H5 = texture2D(decal, v_texcoord0 +2.0*dy); + vec4 I5 = texture2D(decal, v_texcoord0 +dx +2.0*dy); + vec4 A0 = texture2D(decal, v_texcoord0 -2.0*dx -dy); + vec4 D0 = texture2D(decal, v_texcoord0 -2.0*dx ); + vec4 G0 = texture2D(decal, v_texcoord0 -2.0*dx +dy); + vec4 C4 = texture2D(decal, v_texcoord0 +2.0*dx -dy); + vec4 F4 = texture2D(decal, v_texcoord0 +2.0*dx ); + vec4 I4 = texture2D(decal, v_texcoord0 +2.0*dx +dy); + + vec4 F6 = texture2D(decal, tex +dx+0.25*dx+0.25*dy); + vec4 F7 = texture2D(decal, tex +dx+0.25*dx-0.25*dy); + vec4 F8 = texture2D(decal, tex +dx-0.25*dx-0.25*dy); + vec4 F9 = texture2D(decal, tex +dx-0.25*dx+0.25*dy); + + vec4 B6 = texture2D(decal, tex +0.25*dx+0.25*dy-dy); + vec4 B7 = texture2D(decal, tex +0.25*dx-0.25*dy-dy); + vec4 B8 = texture2D(decal, tex -0.25*dx-0.25*dy-dy); + vec4 B9 = texture2D(decal, tex -0.25*dx+0.25*dy-dy); + + vec4 D6 = texture2D(decal, tex -dx+0.25*dx+0.25*dy); + vec4 D7 = texture2D(decal, tex -dx+0.25*dx-0.25*dy); + vec4 D8 = texture2D(decal, tex -dx-0.25*dx-0.25*dy); + vec4 D9 = texture2D(decal, tex -dx-0.25*dx+0.25*dy); + + vec4 H6 = texture2D(decal, tex +0.25*dx+0.25*dy+dy); + vec4 H7 = texture2D(decal, tex +0.25*dx-0.25*dy+dy); + vec4 H8 = texture2D(decal, tex -0.25*dx-0.25*dy+dy); + vec4 H9 = texture2D(decal, tex -0.25*dx+0.25*dy+dy); + + vec4 b = mul(mat4(B, D, H, F), XBR_Y_WEIGHT.xxxx * Y); + vec4 c = mul(mat4(C, A, G, I), XBR_Y_WEIGHT.xxxx * Y); + vec4 e = mul(mat4(E, E, E, E), XBR_Y_WEIGHT.xxxx * Y); + vec4 d = b.yzwx; + vec4 f = b.wxyz; + vec4 g = c.zwxy; + vec4 h = b.zwxy; + vec4 i = c.wxyz; + + vec4 i4 = mul(mat4(I4, C1, A0, G5), XBR_Y_WEIGHT.xxxx * Y); + vec4 i5 = mul(mat4(I5, C4, A1, G0), XBR_Y_WEIGHT.xxxx * Y); + vec4 h5 = mul(mat4(H5, F4, B1, D0), XBR_Y_WEIGHT.xxxx * Y); + vec4 f4 = h5.yzwx; + + vec4 f0 = mul(mat4(F6, B6, D6, H6), XBR_Y_WEIGHT.xxxx * Y); + vec4 f1 = mul(mat4(F7, B7, D7, H7), XBR_Y_WEIGHT.xxxx * Y); + vec4 f2 = mul(mat4(F8, B8, D8, H8), XBR_Y_WEIGHT.xxxx * Y); + vec4 f3 = mul(mat4(F9, B9, D9, H9), XBR_Y_WEIGHT.xxxx * Y); + + vec4 h0 = f0.wxyz; + vec4 h1 = f1.wxyz; + vec4 h2 = f2.wxyz; + vec4 h3 = f3.wxyz; + + // These inequations define the line below which interpolation occurs. + vec4 fx = (Ao*fp.y+Bo*fp.x); + vec4 fx_left = (Ax*fp.y+Bx*fp.x); + vec4 fx_up = (Ay*fp.y+By*fp.x); + + vec4 block_3d = (eq(f0,f1) * eq(f1,f2) * eq(f2,f3) * eq(h0,h1) * eq(h1,h2) * eq(h2,h3)); + vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h) * block_3d); + vec4 interp_restriction_lv1 = interp_restriction_lv0; + +#ifdef CORNER_B + interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(h,d) + eq(e,i) * ge(f,i4) * ge(h,i5) + eq(e,g) + eq(e,c))); +#endif +#ifdef CORNER_D + vec4 c1 = i4.yzwx; + vec4 g0 = i5.wxyz; + interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(h,d) + eq(e,i) * ge(f,i4) * ge(h,i5) + eq(e,g) + eq(e,c) ) * (ne(f,f4) * ne(f,i) + ne(h,h5) * ne(h,i) + ne(h,g) + ne(f,c) + eq(b,c1) * eq(d,g0))); +#endif +#ifdef CORNER_C + interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + eq(e,i) * (ge(f,f4) * ge(f,i4) + ge(h,h5) * ge(h,i5)) + eq(e,g) + eq(e,c))); +#endif + + vec4 interp_restriction_lv2_left = (ne(e,g) * ne(d,g)); + vec4 interp_restriction_lv2_up = (ne(e,c) * ne(b,c)); + + vec4 fx45i = saturate((fx + delta -Co - Ci) / (2.0 * delta )); + vec4 fx45 = saturate((fx + delta -Co ) / (2.0 * delta )); + vec4 fx30 = saturate((fx_left + deltaL -Cx ) / (2.0 * deltaL)); + vec4 fx60 = saturate((fx_up + deltaU -Cy ) / (2.0 * deltaU)); + + vec4 wd1 = weighted_distance( e, c, g, i, h5, f4, h, f); + vec4 wd2 = weighted_distance( h, d, i5, f, i4, b, e, i); + + vec4 edri = le(wd1,wd2) * interp_restriction_lv0; + vec4 edr = lt(wd1,wd2) * interp_restriction_lv1; + vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr; + vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr; + + fx45 = edr * fx45; + fx30 = edr_left * fx30; + fx60 = edr_up * fx60; + fx45i = edri * fx45i; + + vec4 px = le(df(e,f3), df(e,h1)); + +#ifdef SMOOTH_TIPS + vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i)); +#else + vec4 maximos = max(max(fx30, fx60), fx45); +#endif + + vec3 res1 = E.xyz; + res1 = mix(res1, mix(H.xyz, F.xyz, px.x), maximos.x); + res1 = mix(res1, mix(B.xyz, D.xyz, px.z), maximos.z); + + vec3 res2 = E.xyz; + res2 = mix(res2, mix(F.xyz, B.xyz, px.y), maximos.y); + res2 = mix(res2, mix(D.xyz, H.xyz, px.w), maximos.w); + + vec3 E_mix = (c_df(E.xyz, res2) >= c_df(E.xyz, res1)) ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 res = mix(res1, res2, E_mix); + + gl_FragColor = vec4(res, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-fast.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-fast.sc new file mode 100644 index 00000000000..0525a1bd297 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-fast.sc @@ -0,0 +1,201 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + Hyllian's xBR-lv2-lq Shader + + Copyright (C) 2011/2015 Hyllian/Jararaca - sergiogdb@gmail.com + + Copyright (C) 2011-2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + Incorporates some of the ideas from SABR shader. Thanks to Joshua Street. +*/ + +#include "common.sh" + +uniform vec4 XBR_SCALE; +uniform vec4 XBR_Y_WEIGHT; +uniform vec4 XBR_EQ_THRESHOLD; +uniform vec4 XBR_LV2_COEFFICIENT; + +uniform vec4 u_tex_size0; + +SAMPLER2D(decal, 0); + +// Uncomment just one of the three params below to choose the corner detection +//#define CORNER_A +#define CORNER_C + +#ifdef CORNER_C + #define SMOOTH_TIPS +#endif + +const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); +const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); +const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); +const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); +const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); +const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); +const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25); + +const vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); + +vec4 df(vec4 A, vec4 B) +{ + return abs(A - B); +} + +float c_df(vec3 c1, vec3 c2) +{ + vec3 df = abs(c1 - c2); + return df.r + df.g + df.b; +} + +vec4 ge(vec4 A, vec4 B) +{ + return vec4(greaterThanEqual(A, B)); +} + +vec4 le(vec4 A, vec4 B) +{ + return vec4(lessThanEqual(A, B)); +} + +vec4 lt(vec4 A, vec4 B) +{ + return vec4(lessThan(A, B)); +} + +vec4 eq(vec4 A, vec4 B) +{ + return vec4(equal(A, B)); +} + +vec4 ne(vec4 A, vec4 B) +{ + return vec4(notEqual(A, B)); +} + +vec4 abslt(vec4 A, vec4 B) +{ + return lt(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 absge(vec4 A, vec4 B) +{ + return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) +{ + return (df(c,d) + df(e,f) + 3.0*df(g,h)); +// return (1.0*df(a,b) + 2.0*df(c,d) + 2.0*df(e,f) + 4.0*df(g,h)); +} + +void main() +{ + vec4 delta = 1.0 / XBR_SCALE.xxxx; + vec4 deltaL = vec4(0.5, 1.0, 0.5, 1.0) / XBR_SCALE.xxxx; + vec4 deltaU = deltaL.yxwz; + + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy); + + vec4 A = texture2D(decal, v_texcoord1.xw); + vec4 B = texture2D(decal, v_texcoord1.yw); + vec4 C = texture2D(decal, v_texcoord1.zw); + + vec4 D = texture2D(decal, v_texcoord2.xw); + vec4 E = texture2D(decal, v_texcoord2.yw); + vec4 F = texture2D(decal, v_texcoord2.zw); + + vec4 G = texture2D(decal, v_texcoord3.xw); + vec4 H = texture2D(decal, v_texcoord3.yw); + vec4 I = texture2D(decal, v_texcoord3.zw); + + vec4 b = mul(mat4(B, D, H, F), XBR_Y_WEIGHT.xxxx * Y); + vec4 c = mul(mat4(C, A, G, I), XBR_Y_WEIGHT.xxxx * Y); + vec4 e = mul(mat4(E, E, E, E), XBR_Y_WEIGHT.xxxx * Y); + vec4 a = c.yzwx; + vec4 d = b.yzwx; + vec4 f = b.wxyz; + vec4 g = c.zwxy; + vec4 h = b.zwxy; + vec4 i = c.wxyz; + + // These inequations define the line below which interpolation occurs. + vec4 fx = (Ao*fp.y+Bo*fp.x); + vec4 fx_left = (Ax*fp.y+Bx*fp.x); + vec4 fx_up = (Ay*fp.y+By*fp.x); + + vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h)); + vec4 interp_restriction_lv1 = interp_restriction_lv0; + +#ifndef CORNER_A + interp_restriction_lv1 = clamp(interp_restriction_lv0 * (ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + lt(e,g) + lt(e,c)), 0.0, 1.0); +#endif + + vec4 interp_restriction_lv2_left = (ne(e,g) * ne(d,g)); + vec4 interp_restriction_lv2_up = (ne(e,c) * ne(b,c)); + + vec4 fx45i = saturate((fx + delta -Co - Ci) / (2.0 * delta )); + vec4 fx45 = saturate((fx + delta -Co ) / (2.0 * delta )); + vec4 fx30 = saturate((fx_left + deltaL -Cx ) / (2.0 * deltaL)); + vec4 fx60 = saturate((fx_up + deltaU -Cy ) / (2.0 * deltaU)); + + vec4 wd1 = weighted_distance( d, b, g, e, e, c, h, f); + vec4 wd2 = weighted_distance( a, e, b, f, d, h, e, i); + + vec4 edri = le(wd1, wd2) * interp_restriction_lv0; + vec4 edr = lt(wd1, wd2) * interp_restriction_lv1; + vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr; + vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr; + + fx45 = edr * fx45; + fx30 = edr_left * fx30; + fx60 = edr_up * fx60; + fx45i = edri * fx45i; + + vec4 px = le(df(e,f), df(e,h)); + +#ifdef SMOOTH_TIPS + vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i)); +#else + vec4 maximos = max(max(fx30, fx60), fx45); +#endif + + vec3 res1 = E.xyz; + res1 = mix(res1, mix(H.xyz, F.xyz, px.x), maximos.x); + res1 = mix(res1, mix(B.xyz, D.xyz, px.z), maximos.z); + + vec3 res2 = E.xyz; + res2 = mix(res2, mix(F.xyz, B.xyz, px.y), maximos.y); + res2 = mix(res2, mix(D.xyz, H.xyz, px.w), maximos.w); + + vec3 E_mix = (c_df(E.xyz, res2) >= c_df(E.xyz, res1)) ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 res = mix(res1, res2, E_mix); + + gl_FragColor = vec4(res, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc new file mode 100644 index 00000000000..421cf1efb9d --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc @@ -0,0 +1,229 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_texcoord5, v_texcoord6, v_texcoord7, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + Hyllian's xBR-lv2 Shader + + Copyright (C) 2011-2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + Incorporates some of the ideas from SABR shader. Thanks to Joshua Street. +*/ + +#include "common.sh" + +uniform vec4 XBR_SCALE; +uniform vec4 XBR_Y_WEIGHT; +uniform vec4 XBR_EQ_THRESHOLD; +uniform vec4 XBR_LV2_COEFFICIENT; + +uniform vec4 u_tex_size0; + +SAMPLER2D(decal, 0); + +// Uncomment just one of the three params below to choose the corner detection +#define CORNER_A +//#define CORNER_B +//#define CORNER_C +//#define CORNER_D + +const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); +const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); +const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); +const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); +const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); +const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); +const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); +const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25); + +const vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); + +vec4 df(vec4 A, vec4 B) +{ + return abs(A - B); +} + +float c_df(vec3 c1, vec3 c2) +{ + vec3 df = abs(c1 - c2); + return df.r + df.g + df.b; +} + +vec4 ge(vec4 A, vec4 B) +{ + return vec4(greaterThanEqual(A, B)); +} + +vec4 le(vec4 A, vec4 B) +{ + return vec4(lessThanEqual(A, B)); +} + +vec4 lt(vec4 A, vec4 B) +{ + return vec4(lessThan(A, B)); +} + +vec4 eq(vec4 A, vec4 B) +{ + return vec4(equal(A, B)); +} + +vec4 ne(vec4 A, vec4 B) +{ + return vec4(notEqual(A, B)); +} + +vec4 abslt(vec4 A, vec4 B) +{ + return lt(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 absge(vec4 A, vec4 B) +{ + return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); +} + +vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) +{ + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h)); +} + +void main() +{ + vec4 delta = 1.0 / XBR_SCALE.xxxx; + vec4 deltaL = vec4(0.5, 1.0, 0.5, 1.0) / XBR_SCALE.xxxx; + vec4 deltaU = deltaL.yxwz; + + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy); + + vec4 A1 = texture2D(decal, v_texcoord1.xw); + vec4 B1 = texture2D(decal, v_texcoord1.yw); + vec4 C1 = texture2D(decal, v_texcoord1.zw); + + vec4 A = texture2D(decal, v_texcoord2.xw); + vec4 B = texture2D(decal, v_texcoord2.yw); + vec4 C = texture2D(decal, v_texcoord2.zw); + + vec4 D = texture2D(decal, v_texcoord3.xw); + vec4 E = texture2D(decal, v_texcoord3.yw); + vec4 F = texture2D(decal, v_texcoord3.zw); + + vec4 G = texture2D(decal, v_texcoord4.xw); + vec4 H = texture2D(decal, v_texcoord4.yw); + vec4 I = texture2D(decal, v_texcoord4.zw); + + vec4 G5 = texture2D(decal, v_texcoord5.xw); + vec4 H5 = texture2D(decal, v_texcoord5.yw); + vec4 I5 = texture2D(decal, v_texcoord5.zw); + + vec4 A0 = texture2D(decal, v_texcoord6.xy); + vec4 D0 = texture2D(decal, v_texcoord6.xz); + vec4 G0 = texture2D(decal, v_texcoord6.xw); + + vec4 C4 = texture2D(decal, v_texcoord7.xy); + vec4 F4 = texture2D(decal, v_texcoord7.xz); + vec4 I4 = texture2D(decal, v_texcoord7.xw); + + vec4 b = mul(mat4(B, D, H, F), XBR_Y_WEIGHT.xxxx * Y); + vec4 c = mul(mat4(C, A, G, I), XBR_Y_WEIGHT.xxxx * Y); + vec4 e = mul(mat4(E, E, E, E), XBR_Y_WEIGHT.xxxx * Y); + vec4 d = b.yzwx; + vec4 f = b.wxyz; + vec4 g = c.zwxy; + vec4 h = b.zwxy; + vec4 i = c.wxyz; + + vec4 i4 = mul(mat4(I4, C1, A0, G5), XBR_Y_WEIGHT.xxxx * Y); + vec4 i5 = mul(mat4(I5, C4, A1, G0), XBR_Y_WEIGHT.xxxx * Y); + vec4 h5 = mul(mat4(H5, F4, B1, D0), XBR_Y_WEIGHT.xxxx * Y); + vec4 f4 = h5.yzwx; + + // These inequations define the line below which interpolation occurs. + vec4 fx = (Ao*fp.y+Bo*fp.x); + vec4 fx_left = (Ax*fp.y+Bx*fp.x); + vec4 fx_up = (Ay*fp.y+By*fp.x); + + vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h)); + vec4 interp_restriction_lv1 = interp_restriction_lv0; + +#ifdef CORNER_B + interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) ); +#endif +#ifdef CORNER_D + vec4 c1 = i4.yzwx; + vec4 g0 = i5.wxyz; + interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) * (ne(f,f4) * ne(f,i) + ne(h,h5) * ne(h,i) + ne(h,g) + ne(f,c) + lt(b,c1) * lt(d,g0))); +#endif +#ifdef CORNER_C + interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + lt(e,i) * (ge(f,f4) * ge(f,i4) + ge(h,h5) * ge(h,i5)) + lt(e,g) + lt(e,c)) ); +#endif + + vec4 interp_restriction_lv2_left = (ne(e,g) * ne(d,g)); + vec4 interp_restriction_lv2_up = (ne(e,c) * ne(b,c)); + + vec4 fx45i = saturate((fx + delta -Co - Ci) / (2.0 * delta )); + vec4 fx45 = saturate((fx + delta -Co ) / (2.0 * delta )); + vec4 fx30 = saturate((fx_left + deltaL -Cx ) / (2.0 * deltaL)); + vec4 fx60 = saturate((fx_up + deltaU -Cy ) / (2.0 * deltaU)); + + vec4 wd1 = weighted_distance( e, c, g, i, h5, f4, h, f); + vec4 wd2 = weighted_distance( h, d, i5, f, i4, b, e, i); + + vec4 one = vec4(1.0, 1.0, 1.0, 1.0); + vec4 zero = vec4(0.0, 0.0, 0.0, 0.0); + vec4 edri = le(wd1,wd2) * interp_restriction_lv0; + vec4 edr = lt(wd1,wd2) * interp_restriction_lv1; +#ifdef CORNER_A + edr = clamp(edr * ((one - edri.yzwx) + (one - edri.wxyz)), 0.0, 1.0); + vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr * (one - edri.yzwx) * eq(e,c); + vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr * (one - edri.wxyz) * eq(e,g); +#endif +#ifndef CORNER_A + vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr; + vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr; +#endif + + fx45 = edr * fx45; + fx30 = edr_left * fx30; + fx60 = edr_up * fx60; + fx45i = edri * fx45i; + + vec4 px = le(df(e,f), df(e,h)); + + vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i)); + + vec3 res1 = E.xyz; + res1 = mix(res1, mix(H.xyz, F.xyz, px.x), maximos.x); + res1 = mix(res1, mix(B.xyz, D.xyz, px.z), maximos.z); + + vec3 res2 = E.xyz; + res2 = mix(res2, mix(F.xyz, B.xyz, px.y), maximos.y); + res2 = mix(res2, mix(D.xyz, H.xyz, px.w), maximos.w); + + vec3 E_mix = (c_df(E.xyz, res2) >= c_df(E.xyz, res1)) ? one.xyz : zero.xyz; + vec3 res = mix(res1, res2, E_mix); + + gl_FragColor = vec4(res, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_custom-jinc2-sharper.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_custom-jinc2-sharper.sc new file mode 100644 index 00000000000..0abd7ff41c9 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_custom-jinc2-sharper.sc @@ -0,0 +1,134 @@ +$input v_texcoord0, v_color0 + +// license:GPL-2.0+ +// copyright-holders:Hyllian + +/* + Hyllian's jinc windowed-jinc 2-lobe sharper with anti-ringing Shader + + Copyright (C) 2011-2014 Hyllian/Jararaca - sergiogdb@gmail.com +*/ + +#include "common.sh" + +uniform vec4 JINC2_WINDOW_SINC; +uniform vec4 JINC2_SINC; +uniform vec4 JINC2_AR_STRENGTH; +uniform vec4 u_tex_size0; + +SAMPLER2D(s_p, 0); + + /* + This is an approximation of Jinc(x)*Jinc(x*r1/r2) for x < 2.5, + where r1 and r2 are the first two zeros of jinc function. + For a jinc 2-lobe best approximation, use A=0.5 and B=0.825. + */ + +// A=0.5, B=0.825 is the best jinc approximation for x<2.5. if B=1.0, it's a lanczos filter. +// Increase A to get more blur. Decrease it to get a sharper picture. +// B = 0.825 to get rid of dithering. Increase B to get a fine sharpness, though dithering returns. + +#define halfpi 1.5707963267948966192313216916398 +#define pi 3.1415926535897932384626433832795 +#define wa (JINC2_WINDOW_SINC.x * pi) +#define wb (JINC2_SINC.x * pi) + +float df(float A, float B) +{ + return abs(A-B); +} + +// Calculates the distance between two points +float d(vec2 pt1, vec2 pt2) +{ + vec2 v = pt2 - pt1; + return sqrt(dot(v,v)); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +vec4 resampler(vec4 x) +{ + float wawb = wa*wb; + vec4 wawb4 = vec4(wawb, wawb, wawb, wawb); + return (x == vec4(0.0, 0.0, 0.0, 0.0)) ? wawb4 : sin(x*wa) * sin(x*wb) / (x*x); +} + +void main() +{ + vec3 color; + mat4 weights; + + vec2 dx = vec2(1.0, 0.0); + vec2 dy = vec2(0.0, 1.0); + + vec2 pc = v_texcoord0 * u_tex_size0.xy; + + vec2 tc = (floor(pc - vec2(0.5,0.5)) + vec2(0.5,0.5)); + + weights[0] = resampler(vec4(d(pc, tc -dx -dy), d(pc, tc -dy), d(pc, tc +dx -dy), d(pc, tc+2.0*dx -dy))); + weights[1] = resampler(vec4(d(pc, tc -dx ), d(pc, tc ), d(pc, tc +dx ), d(pc, tc+2.0*dx ))); + weights[2] = resampler(vec4(d(pc, tc -dx +dy), d(pc, tc +dy), d(pc, tc +dx +dy), d(pc, tc+2.0*dx +dy))); + weights[3] = resampler(vec4(d(pc, tc -dx+2.0*dy), d(pc, tc +2.0*dy), d(pc, tc +dx+2.0*dy), d(pc, tc+2.0*dx+2.0*dy))); + + //weights[0][0] = weights[0][3] = weights[3][0] = weights[3][3] = 0.0; + + dx = dx / u_tex_size0.xy; + dy = dy / u_tex_size0.xy; + tc = tc / u_tex_size0.xy; + + // reading the texels + + vec4 c00 = texture2D(s_p, tc -dx -dy); + vec4 c10 = texture2D(s_p, tc -dy); + vec4 c20 = texture2D(s_p, tc +dx -dy); + vec4 c30 = texture2D(s_p, tc+2.0*dx -dy); + vec4 c01 = texture2D(s_p, tc -dx ); + vec4 c11 = texture2D(s_p, tc ); + vec4 c21 = texture2D(s_p, tc +dx ); + vec4 c31 = texture2D(s_p, tc+2.0*dx ); + vec4 c02 = texture2D(s_p, tc -dx +dy); + vec4 c12 = texture2D(s_p, tc +dy); + vec4 c22 = texture2D(s_p, tc +dx +dy); + vec4 c32 = texture2D(s_p, tc+2.0*dx +dy); + vec4 c03 = texture2D(s_p, tc -dx+2.0*dy); + vec4 c13 = texture2D(s_p, tc +2.0*dy); + vec4 c23 = texture2D(s_p, tc +dx+2.0*dy); + vec4 c33 = texture2D(s_p, tc+2.0*dx+2.0*dy); + + color = mul(weights[0], mat4(c00, c10, c20, c30)).xyz; + color+= mul(weights[1], mat4(c01, c11, c21, c31)).xyz; + color+= mul(weights[2], mat4(c02, c12, c22, c32)).xyz; + color+= mul(weights[3], mat4(c03, c13, c23, c33)).xyz; + color = color / (dot(mul(weights, vec4(1.0, 1.0, 1.0, 1.0)), vec4(1.0, 1.0, 1.0, 1.0))); + + // Anti-ringing + // Get min/max samples + pc = v_texcoord0; + c00 = texture2D(s_p, pc ); + c11 = texture2D(s_p, pc +dx ); + c21 = texture2D(s_p, pc -dx ); + c12 = texture2D(s_p, pc +dy); + c22 = texture2D(s_p, pc -dy); + + vec4 min_sample = min4(c11, c21, c12, c22); + vec4 max_sample = max4(c11, c21, c12, c22); + min_sample = min(min_sample, c00); + max_sample = max(max_sample, c00); + + vec3 aux = color; + + color = clamp(color, min_sample.xyz, max_sample.xyz); + color = mix(aux, color, JINC2_AR_STRENGTH.xxx); + + // final sum and weight normalization + gl_FragColor = vec4(color, 1); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.sc new file mode 100644 index 00000000000..8fa47570af5 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.sc @@ -0,0 +1,227 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define XBR_RES 2.0 + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 2.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 fraction = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES); + if (fraction.x < 0.5 || fraction.y < 0.5) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -g1 -g2); + vec4 P1 = texture2D(s0, v_texcoord0 +2.0*g1 -g2); + vec4 P2 = texture2D(s0, v_texcoord0 -g1+2.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +2.0*g1+2.0*g2); + + vec4 B = texture2D(s0, v_texcoord0 -g2); + vec4 C = texture2D(s0, v_texcoord0 +g1-g2); + vec4 D = texture2D(s0, v_texcoord0 -g1 ); + vec4 E = texture2D(s0, v_texcoord0 ); + vec4 F = texture2D(s0, v_texcoord0 +g1 ); + vec4 G = texture2D(s0, v_texcoord0 -g1+g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1+g2); + + vec4 F4 = texture2D(s0, v_texcoord0 +2.0*g1 ); + vec4 I4 = texture2D(s0, v_texcoord0 +g2+2.0*g1 ); + vec4 H5 = texture2D(s0, v_texcoord0 +2.0*g2 ); + vec4 I5 = texture2D(s0, v_texcoord0 +2.0*g2+g1 ); + + vec4 F6 = texture2D(s0, tex + g1 + 0.25 * g1 + 0.25 * g2); + vec4 F7 = texture2D(s0, tex + g1 + 0.25 * g1 - 0.25 * g2); + vec4 F8 = texture2D(s0, tex + g1 - 0.25 * g1 - 0.25 * g2); + vec4 F9 = texture2D(s0, tex + g1 - 0.25 * g1 + 0.25 * g2); + + vec4 H6 = texture2D(s0, tex + 0.25 * g1 + 0.25 * g2 + g2); + vec4 H7 = texture2D(s0, tex + 0.25 * g1 - 0.25 * g2 + g2); + vec4 H8 = texture2D(s0, tex - 0.25 * g1 - 0.25 * g2 + g2); + vec4 H9 = texture2D(s0, tex - 0.25 * g1 + 0.25 * g2 + g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1)).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3)).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4( E, F, H, I ) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4( E, F, H, I ) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : E.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.sc new file mode 100644 index 00000000000..72009ad3335 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.sc @@ -0,0 +1,211 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define XBR_RES 2.0 + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 4.0 +#define wp5 0.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.75068 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.29633 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color, vec4(0.2126, 0.7152, 0.0722, 0.0)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + // Skip pixels on wrong grid + vec2 dir = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES) - vec2(0.5, 0.5); + if ((dir.x * dir.y) > 0.0) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2((XBR_RES / 2.0) / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, (XBR_RES / 2.0) / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -3.0*g1 ); + vec4 P1 = texture2D(s0, v_texcoord0 -3.0*g2); + vec4 P2 = texture2D(s0, v_texcoord0 +3.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +3.0*g1 ); + + vec4 B = texture2D(s0, v_texcoord0 -2.0*g1 -g2); + vec4 C = texture2D(s0, v_texcoord0 -g1 -2.0*g2); + vec4 D = texture2D(s0, v_texcoord0 -2.0*g1 +g2); + vec4 E = texture2D(s0, v_texcoord0 -g1 ); + vec4 F = texture2D(s0, v_texcoord0 -g2); + vec4 G = texture2D(s0, v_texcoord0 -g1 +2.0*g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1 ); + + vec4 F4 = texture2D(s0,v_texcoord0 +g1 -2.0*g2); + vec4 I4 = texture2D(s0,v_texcoord0 +2.0*g1 -g2); + vec4 H5 = texture2D(s0,v_texcoord0 +g1 +2.0*g2); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g1 +g2); + + vec3 A = texture2D(s0, v_texcoord0).xyz; + + g1 *= 2.0; + g2 *= 2.0; + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1)).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3)).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4( E, F, H, I ) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4( E, F, H, I ) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.sc new file mode 100644 index 00000000000..c2656424ed6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.sc @@ -0,0 +1,213 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader - pass2 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define XBR_RES 2.0 + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 0.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + + +float RGBtoYUV(vec4 color) +{ + return dot(color, vec4(0.2126, 0.7152, 0.0722, 0.0)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord1.xy); + vec4 P1 = texture2D(s0, v_texcoord1.zy); + vec4 P2 = texture2D(s0, v_texcoord1.xw); + vec4 P3 = texture2D(s0, v_texcoord1.zw); + + vec4 B = texture2D(s0, v_texcoord2.xy); + vec4 C = texture2D(s0, v_texcoord2.zy); + vec4 H5 = texture2D(s0, v_texcoord2.xw); + vec4 I5 = texture2D(s0, v_texcoord2.zw); + + vec4 D = texture2D(s0, v_texcoord3.xy); + vec4 F4 = texture2D(s0, v_texcoord3.zy); + vec4 G = texture2D(s0, v_texcoord3.xw); + vec4 I4 = texture2D(s0, v_texcoord3.zw); + + vec4 E = texture2D(s0, v_texcoord4.xy); + vec4 F = texture2D(s0, v_texcoord4.zy); + vec4 H = texture2D(s0, v_texcoord4.xw); + vec4 I = texture2D(s0, v_texcoord4.zw); + + vec4 A = texture2D(s0, v_texcoord0); + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV(B); + float c = RGBtoYUV(C); + float d = RGBtoYUV(D); + float e = RGBtoYUV(E); + float f = RGBtoYUV(F); + float g = RGBtoYUV(G); + float h = RGBtoYUV(H); + float i = RGBtoYUV(I); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1)).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3)).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4( E, F, H, I ) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4( E, F, H, I ) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.sc new file mode 100644 index 00000000000..8a56a3899a6 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.sc @@ -0,0 +1,217 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass0 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 2.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define XBR_RES 4.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 fraction = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES); + if (fraction.x < 0.5 || fraction.y < 0.5) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -g1 -g2); + vec4 P1 = texture2D(s0, v_texcoord0 +2.0*g1 -g2); + vec4 P2 = texture2D(s0, v_texcoord0 -g1+2.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +2.0*g1+2.0*g2); + + vec4 B = texture2D(s0, v_texcoord0 -g2); + vec4 C = texture2D(s0, v_texcoord0 +g1-g2); + vec4 D = texture2D(s0, v_texcoord0 -g1 ); + vec4 E = texture2D(s0, v_texcoord0 ); + vec4 F = texture2D(s0, v_texcoord0 +g1 ); + vec4 G = texture2D(s0, v_texcoord0 -g1+g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1+g2); + + vec4 F4 = texture2D(s0,v_texcoord0 +2.0*g1 ); + vec4 I4 = texture2D(s0,v_texcoord0 +g2+2.0*g1 ); + vec4 H5 = texture2D(s0,v_texcoord0 +2.0*g2 ); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g2+g1 ); + + vec4 F6 = texture2D(s0, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(s0, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(s0, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(s0, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(s0, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(s0, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(s0, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(s0, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : E.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.sc new file mode 100644 index 00000000000..10288b45f5a --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.sc @@ -0,0 +1,210 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass1 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 4.0 +#define wp5 0.0 +#define wp6 0.0 + +#define XBR_RES 4.0 + +#define weight1 (XBR_WEIGHT.x * 1.75068 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.29633 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 dir = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES) - vec2(0.5, 0.5); + if ((dir.x * dir.y) > 0.0) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0*u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2((XBR_RES/2.0)/u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, (XBR_RES/2.0)/u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -3.0*g1 ); + vec4 P1 = texture2D(s0, v_texcoord0 -3.0*g2); + vec4 P2 = texture2D(s0, v_texcoord0 +3.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +3.0*g1 ); + + vec4 B = texture2D(s0, v_texcoord0 -2.0*g1 -g2); + vec4 C = texture2D(s0, v_texcoord0 -g1 -2.0*g2); + vec4 D = texture2D(s0, v_texcoord0 -2.0*g1 +g2); + vec4 E = texture2D(s0, v_texcoord0 -g1 ); + vec4 F = texture2D(s0, v_texcoord0 -g2); + vec4 G = texture2D(s0, v_texcoord0 -g1 +2.0*g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1 ); + + vec4 F4 = texture2D(s0,v_texcoord0 +g1 -2.0*g2); + vec4 I4 = texture2D(s0,v_texcoord0 +2.0*g1 -g2); + vec4 H5 = texture2D(s0,v_texcoord0 +g1 +2.0*g2); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g1 +g2); + + vec4 A = texture2D(s0, v_texcoord0); + + g1 *= 2.0; + g2 *= 2.0; + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.sc new file mode 100644 index 00000000000..51f2c6ea887 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.sc @@ -0,0 +1,211 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass1 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define XBR_RES 4.0 + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 0.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord1.xy); + vec4 P1 = texture2D(s0, v_texcoord1.zy); + vec4 P2 = texture2D(s0, v_texcoord1.xw); + vec4 P3 = texture2D(s0, v_texcoord1.zw); + + vec4 B = texture2D(s0, v_texcoord2.xy); + vec4 C = texture2D(s0, v_texcoord2.zy); + vec4 H5 = texture2D(s0, v_texcoord2.xw); + vec4 I5 = texture2D(s0, v_texcoord2.zw); + + vec4 D = texture2D(s0, v_texcoord3.xy); + vec4 F4 = texture2D(s0, v_texcoord3.zy); + vec4 G = texture2D(s0, v_texcoord3.xw); + vec4 I4 = texture2D(s0, v_texcoord3.zw); + + vec4 E = texture2D(s0, v_texcoord4.xy); + vec4 F = texture2D(s0, v_texcoord4.zy); + vec4 H = texture2D(s0, v_texcoord4.xw); + vec4 I = texture2D(s0, v_texcoord4.zw); + + vec4 A = texture2D(s0, v_texcoord0); + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.sc new file mode 100644 index 00000000000..f1566381325 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.sc @@ -0,0 +1,226 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass2 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 2.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define XBR_RES2 2.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 fraction = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES2); + if (fraction.x < 0.5 || fraction.y < 0.5) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES2) + vec2(0.5, 0.5)) * XBR_RES2 / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES2 / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES2 / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -g1 -g2); + vec4 P1 = texture2D(s0, v_texcoord0 +2.0*g1 -g2); + vec4 P2 = texture2D(s0, v_texcoord0 -g1+2.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +2.0*g1+2.0*g2); + + vec4 B = texture2D(s0, v_texcoord0 -g2); + vec4 C = texture2D(s0, v_texcoord0 +g1-g2); + vec4 D = texture2D(s0, v_texcoord0 -g1 ); + vec4 E = texture2D(s0, v_texcoord0 ); + vec4 F = texture2D(s0, v_texcoord0 +g1 ); + vec4 G = texture2D(s0, v_texcoord0 -g1+g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1+g2); + + vec4 F4 = texture2D(s0,v_texcoord0 +2.0*g1 ); + vec4 I4 = texture2D(s0,v_texcoord0 +g2+2.0*g1 ); + vec4 H5 = texture2D(s0,v_texcoord0 +2.0*g2 ); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g2+g1 ); + + vec4 F6 = texture2D(s0, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(s0, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(s0, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(s0, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(s0, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(s0, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(s0, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(s0, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : E.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.sc new file mode 100644 index 00000000000..3aa921a0e37 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.sc @@ -0,0 +1,210 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass3 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 4.0 +#define wp5 0.0 +#define wp6 0.0 + +#define XBR_RES2 2.0 + +#define weight1 (XBR_WEIGHT.x * 1.75068 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.29633 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 dir = fract(v_texcoord0 * u_tex_size0.xy / XBR_RES2) - vec2(0.5, 0.5); + if ((dir.x * dir.y) > 0.0) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES2) + vec2(0.5, 0.5)) * XBR_RES2 / u_tex_size0.xy; + + vec2 g1 = vec2((XBR_RES2 / 2.0) / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, (XBR_RES2 / 2.0) / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -3.0*g1 ); + vec4 P1 = texture2D(s0, v_texcoord0 -3.0*g2); + vec4 P2 = texture2D(s0, v_texcoord0 +3.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +3.0*g1 ); + + vec4 B = texture2D(s0, v_texcoord0 -2.0*g1 -g2); + vec4 C = texture2D(s0, v_texcoord0 -g1 -2.0*g2); + vec4 D = texture2D(s0, v_texcoord0 -2.0*g1 +g2); + vec4 E = texture2D(s0, v_texcoord0 -g1 ); + vec4 F = texture2D(s0, v_texcoord0 -g2); + vec4 G = texture2D(s0, v_texcoord0 -g1 +2.0*g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1 ); + + vec4 F4 = texture2D(s0,v_texcoord0 +g1 -2.0*g2); + vec4 I4 = texture2D(s0,v_texcoord0 +2.0*g1 -g2); + vec4 H5 = texture2D(s0,v_texcoord0 +g1 +2.0*g2); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g1 +g2); + + vec4 A = texture2D(s0, v_texcoord0); + + g1 *= 2.0; + g2 *= 2.0; + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.sc new file mode 100644 index 00000000000..b417613a657 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.sc @@ -0,0 +1,211 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super 4XBR 3D Shader - pass3 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define XBR_RES 2.0 + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 0.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +vec4 reduce4(vec4 A, vec4 B, vec4 C, vec4 D) +{ + return mul(mat4(A, B, C, D), vec4(65536.0, 255.0, 1.0, 0.0)); +} + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +bool eq(float A, float B) +{ + return (df(A, B) < 15.0); +} + + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec2 tex = (floor(v_texcoord0 * u_tex_size0.xy / XBR_RES) + vec2(0.5, 0.5)) * XBR_RES / u_tex_size0.xy; + + vec2 g1 = vec2(XBR_RES / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, XBR_RES / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord1.xy); + vec4 P1 = texture2D(s0, v_texcoord1.zy); + vec4 P2 = texture2D(s0, v_texcoord1.xw); + vec4 P3 = texture2D(s0, v_texcoord1.zw); + + vec4 B = texture2D(s0, v_texcoord2.xy); + vec4 C = texture2D(s0, v_texcoord2.zy); + vec4 H5 = texture2D(s0, v_texcoord2.xw); + vec4 I5 = texture2D(s0, v_texcoord2.zw); + + vec4 D = texture2D(s0, v_texcoord3.xy); + vec4 F4 = texture2D(s0, v_texcoord3.zy); + vec4 G = texture2D(s0, v_texcoord3.xw); + vec4 I4 = texture2D(s0, v_texcoord3.zw); + + vec4 E = texture2D(s0, v_texcoord4.xy); + vec4 F = texture2D(s0, v_texcoord4.zy); + vec4 H = texture2D(s0, v_texcoord4.xw); + vec4 I = texture2D(s0, v_texcoord4.zw); + + vec4 A = texture2D(s0, v_texcoord0); + + vec4 F6 = texture2D(ORIG_texture, tex +g1+0.25*g1+0.25*g2); + vec4 F7 = texture2D(ORIG_texture, tex +g1+0.25*g1-0.25*g2); + vec4 F8 = texture2D(ORIG_texture, tex +g1-0.25*g1-0.25*g2); + vec4 F9 = texture2D(ORIG_texture, tex +g1-0.25*g1+0.25*g2); + + vec4 H6 = texture2D(ORIG_texture, tex +0.25*g1+0.25*g2+g2); + vec4 H7 = texture2D(ORIG_texture, tex +0.25*g1-0.25*g2+g2); + vec4 H8 = texture2D(ORIG_texture, tex -0.25*g1-0.25*g2+g2); + vec4 H9 = texture2D(ORIG_texture, tex -0.25*g1+0.25*g2+g2); + + vec4 f0 = reduce4(F6, F7, F8, F9); + vec4 h0 = reduce4(H6, H7, H8, H9); + + bool block_3d = (f0.x == f0.y && f0.y == f0.z && f0.z == f0.w && h0.x == h0.y && h0.y == h0.z && h0.z == h0.w); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + bool ir_lv1 = (((e!=f) && (e!=h)) && ( !eq(f,b) && !eq(f,c) || !eq(h,d) && !eq(h,g) || eq(e,i) && (!eq(f,f4) && !eq(f,i4) || !eq(h,h5) && !eq(h,i5)) || eq(e,g) || eq(e,c)) ); + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); + + color = block_3d ? color : A.xyz; + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.sc new file mode 100644 index 00000000000..84fc371a0a7 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.sc @@ -0,0 +1,169 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 2.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight (XBR_WEIGHT.x * 1.29633 / 10.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 pix_frac = fract(v_texcoord0 * u_tex_size0.xy); + if (pix_frac.x < 0.5 || pix_frac.y < 0.5) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 g1 = vec2(1.0 / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, 1.0 / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -g1 -g2); + vec4 P1 = texture2D(s0, v_texcoord0 +2.0*g1 -g2); + vec4 P2 = texture2D(s0, v_texcoord0 -g1+2.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +2.0*g1+2.0*g2); + + vec4 B = texture2D(s0, v_texcoord0 -g2); + vec4 C = texture2D(s0, v_texcoord0 +g1-g2); + vec4 D = texture2D(s0, v_texcoord0 -g1 ); + vec4 E = texture2D(s0, v_texcoord0 ); + vec4 F = texture2D(s0, v_texcoord0 +g1 ); + vec4 G = texture2D(s0, v_texcoord0 -g1+g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1+g2); + + vec4 F4 = texture2D(s0,v_texcoord0 +2.0*g1 ); + vec4 I4 = texture2D(s0,v_texcoord0 +g2+2.0*g1 ); + vec4 H5 = texture2D(s0,v_texcoord0 +2.0*g2 ); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g2+g1 ); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(-limits, limits, d_edge); + + /* Filter weights. Two taps only. */ + vec4 w = vec4(-weight, weight+0.5, weight+0.5, -weight); + + /* Filtering and normalization in two directions generating two colors. */ + vec3 c1 = mul(w, mat4(P2, H, F, P1)).xyz; + vec3 c2 = mul(w, mat4(P0, E, I, P3)).xyz; + + /* Smoothly blends the two directions according to edge strength. */ + vec3 color = mix(c1, c2, vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); +// color = mix(aux, color, 1-2.0*abs(edge_strength-0.5)); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.sc new file mode 100644 index 00000000000..d67c215de66 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.sc @@ -0,0 +1,159 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass1 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 4.0 +#define wp5 0.0 +#define wp6 0.0 + +#define weight (XBR_WEIGHT.x * 1.75068 / 10.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 dir = fract(v_texcoord0 * u_tex_size0.xy / 2.0) - vec2(0.5, 0.5); + if ((dir.x * dir.y) > 0.0) + { + gl_FragColor = texture2D(s0, v_texcoord0); + return; + } + + vec2 g1 = vec2(1.0 / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, 1.0 / u_tex_size0.y); + + vec4 P0 = texture2D(s0, v_texcoord0 -3.0*g1 ); + vec4 P1 = texture2D(s0, v_texcoord0 -3.0*g2); + vec4 P2 = texture2D(s0, v_texcoord0 +3.0*g2); + vec4 P3 = texture2D(s0, v_texcoord0 +3.0*g1 ); + + vec4 B = texture2D(s0, v_texcoord0 -2.0*g1 -g2); + vec4 C = texture2D(s0, v_texcoord0 -g1 -2.0*g2); + vec4 D = texture2D(s0, v_texcoord0 -2.0*g1 +g2); + vec4 E = texture2D(s0, v_texcoord0 -g1 ); + vec4 F = texture2D(s0, v_texcoord0 -g2); + vec4 G = texture2D(s0, v_texcoord0 -g1 +2.0*g2); + vec4 H = texture2D(s0, v_texcoord0 +g2); + vec4 I = texture2D(s0, v_texcoord0 +g1 ); + + vec4 F4 = texture2D(s0,v_texcoord0 +g1 -2.0*g2); + vec4 I4 = texture2D(s0,v_texcoord0 +2.0*g1 -g2); + vec4 H5 = texture2D(s0,v_texcoord0 +g1 +2.0*g2); + vec4 I5 = texture2D(s0,v_texcoord0 +2.0*g1 +g2); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(-limits, limits, d_edge); + + /* Filter weights. Two taps only. */ + vec4 w = vec4(-weight, weight+0.5, weight+0.5, -weight); + + /* Filtering and normalization in two directions generating two colors. */ + vec3 c1 = mul(w, mat4(P2, H, F, P1)).xyz; + vec3 c2 = mul(w, mat4(P0, E, I, P3)).xyz; + + /* Smoothly blends the two directions according to edge strength. */ + vec3 color = mix(c1, c2, vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec4 min_sample = min4( E, F, H, I ) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4( E, F, H, I ) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); +// color = mix(aux, color, 1-2.0*abs(edge_strength-0.5)); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.sc new file mode 100644 index 00000000000..89e82d00a31 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.sc @@ -0,0 +1,162 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass1 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 0.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight (XBR_WEIGHT.x * 1.29633 / 10.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec2 g1 = vec2(1.0 / u_tex_size0.x, 0.0); + vec2 g2 = vec2(0.0, 1.0 / u_tex_size0.y); + vec2 texcoord = v_texcoord0 - 1.0 / u_tex_size0.xy; + + vec4 P0 = texture2D(s0, texcoord -g1 -g2); + vec4 P1 = texture2D(s0, texcoord +2.0*g1 -g2); + vec4 P2 = texture2D(s0, texcoord -g1+2.0*g2); + vec4 P3 = texture2D(s0, texcoord +2.0*g1+2.0*g2); + + vec4 B = texture2D(s0, texcoord -g2); + vec4 C = texture2D(s0, texcoord +g1-g2); + vec4 D = texture2D(s0, texcoord -g1 ); + vec4 E = texture2D(s0, texcoord ); + vec4 F = texture2D(s0, texcoord +g1 ); + vec4 G = texture2D(s0, texcoord -g1+g2); + vec4 H = texture2D(s0, texcoord +g2); + vec4 I = texture2D(s0, texcoord +g1+g2); + + vec4 F4 = texture2D(s0,texcoord +2.0*g1 ); + vec4 I4 = texture2D(s0,texcoord +g2+2.0*g1 ); + vec4 H5 = texture2D(s0,texcoord +2.0*g2 ); + vec4 I5 = texture2D(s0,texcoord +2.0*g2+g1 ); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(-limits, limits, d_edge); + + /* Filter weights. Two taps only. */ + vec4 w = vec4(-weight, weight+0.5, weight+0.5, -weight); + + /* Filtering and normalization in two directions generating two colors. */ + vec3 c1 = mul(w, mat4(P2, H, F, P1)).xyz; + vec3 c2 = mul(w, mat4(P0, E, I, P3)).xyz; + + /* Smoothly blends the two directions according to edge strength. */ + vec3 color = mix(c1, c2, vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec4 min_sample = min4( E, F, H, I ) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4( E, F, H, I ) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + + color = clamp(color, min_sample.xyz, max_sample.xyz); +// color = mix(aux, color, 1-2.0*abs(edge_strength-0.5)); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass0.sc new file mode 100644 index 00000000000..a1158ebecca --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass0.sc @@ -0,0 +1,160 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 2.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec4 P0 = texture2D(s0, v_texcoord1.xy); + vec4 P1 = texture2D(s0, v_texcoord1.zy); + vec4 P2 = texture2D(s0, v_texcoord1.xw); + vec4 P3 = texture2D(s0, v_texcoord1.zw); + + vec4 B = texture2D(s0, v_texcoord2.xy); + vec4 C = texture2D(s0, v_texcoord2.zy); + vec4 H5 = texture2D(s0, v_texcoord2.xw); + vec4 I5 = texture2D(s0, v_texcoord2.zw); + + vec4 D = texture2D(s0, v_texcoord3.xy); + vec4 F4 = texture2D(s0, v_texcoord3.zy); + vec4 G = texture2D(s0, v_texcoord3.xw); + vec4 I4 = texture2D(s0, v_texcoord3.zw); + + vec4 E = texture2D(s0, v_texcoord4.xy); + vec4 F = texture2D(s0, v_texcoord4.zy); + vec4 H = texture2D(s0, v_texcoord4.xw); + vec4 I = texture2D(s0, v_texcoord4.zw); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + color = clamp(color, min_sample.xyz, max_sample.xyz); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass1.sc new file mode 100644 index 00000000000..421fc78b58c --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass1.sc @@ -0,0 +1,178 @@ +$input v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass1 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); +SAMPLER2D(ORIG_texture, 1); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 4.0 +#define wp5 0.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.75068 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.29633 / 10.0 / 2.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + //Skip pixels on wrong grid + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy); + vec2 dir = fp - vec2(0.5,0.5); + if ((dir.x * dir.y) > 0.0) + { + if (fp.x > 0.5) + { + gl_FragColor = texture2D(s0, v_texcoord0); + } + else + { + gl_FragColor = texture2D(ORIG_texture, v_texcoord0); + } + return; + } + + vec2 g1 = (fp.x > 0.5) ? vec2(0.5 / u_tex_size0.x, 0.0) : vec2(0.0, 0.5 / u_tex_size0.y); + vec2 g2 = (fp.x > 0.5) ? vec2(0.0, 0.5 / u_tex_size0.y) : vec2(0.5 / u_tex_size0.x, 0.0); + + vec4 P0 = texture2D(ORIG_texture, v_texcoord0 -3.0*g1 ); + vec4 P1 = texture2D( s0, v_texcoord0 -3.0*g2); + vec4 P2 = texture2D( s0, v_texcoord0 +3.0*g2); + vec4 P3 = texture2D(ORIG_texture, v_texcoord0 +3.0*g1 ); + + vec4 B = texture2D( s0, v_texcoord0 -2.0*g1 -g2); + vec4 C = texture2D(ORIG_texture, v_texcoord0 -g1 -2.0*g2); + vec4 D = texture2D( s0, v_texcoord0 -2.0*g1 +g2); + vec4 E = texture2D(ORIG_texture, v_texcoord0 -g1 ); + vec4 F = texture2D( s0, v_texcoord0 -g2); + vec4 G = texture2D(ORIG_texture, v_texcoord0 -g1 +2.0*g2); + vec4 H = texture2D( s0, v_texcoord0 +g2); + vec4 I = texture2D(ORIG_texture, v_texcoord0 +g1 ); + + vec4 F4 = texture2D(ORIG_texture, v_texcoord0 +g1 -2.0*g2); + vec4 I4 = texture2D( s0, v_texcoord0 +2.0*g1 -g2); + vec4 H5 = texture2D(ORIG_texture, v_texcoord0 +g1 +2.0*g2); + vec4 I5 = texture2D( s0, v_texcoord0 +2.0*g1 +g2); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + color = clamp(color, min_sample.xyz, max_sample.xyz); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass2.sc new file mode 100644 index 00000000000..c343dc155a2 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass2.sc @@ -0,0 +1,170 @@ +$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass1 ******* + + Copyright (c) 2015 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +SAMPLER2D(s0, 0); + +uniform vec4 XBR_EDGE_STR; +uniform vec4 XBR_WEIGHT; +uniform vec4 XBR_ANTI_RINGING; +uniform vec4 u_tex_size0; + +#define wp1 1.0 +#define wp2 0.0 +#define wp3 0.0 +#define wp4 0.0 +#define wp5 -1.0 +#define wp6 0.0 + +#define weight1 (XBR_WEIGHT.x * 1.29633 / 10.0) +#define weight2 (XBR_WEIGHT.x * 1.75068 / 10.0 / 2.0) + +float RGBtoYUV(vec4 color) +{ + return dot(color.xyz, vec3(0.2126, 0.7152, 0.0722)); +} + +float df(float A, float B) +{ + return abs(A-B); +} + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + +float d_wd(float b0, float b1, float c0, float c1, float c2, float d0, float d1, float d2, float d3, float e1, float e2, float e3, float f2, float f3) +{ + return (wp1*(df(c1,c2) + df(c1,c0) + df(e2,e1) + df(e2,e3)) + wp2*(df(d2,d3) + df(d0,d1)) + wp3*(df(d1,d3) + df(d0,d2)) + wp4*df(d1,d2) + wp5*(df(c0,c2) + df(e1,e3)) + wp6*(df(b0,b1) + df(f2,f3))); +} + +float hv_wd(float i1, float i2, float i3, float i4, float e1, float e2, float e3, float e4) +{ + return ( wp4*(df(i1,i2)+df(i3,i4)) + wp1*(df(i1,e1)+df(i2,e2)+df(i3,e3)+df(i4,e4)) + wp3*(df(i1,e2)+df(i3,e4)+df(e1,i2)+df(e3,i4))); +} + +vec4 min4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return min(a, min(b, min(c, d))); +} + +vec4 max4(vec4 a, vec4 b, vec4 c, vec4 d) +{ + return max(a, max(b, max(c, d))); +} + +void main() +{ + vec4 P0 = texture2D(s0, v_texcoord1.xy); + vec4 P1 = texture2D(s0, v_texcoord1.zy); + vec4 P2 = texture2D(s0, v_texcoord1.xw); + vec4 P3 = texture2D(s0, v_texcoord1.zw); + + vec4 B = texture2D(s0, v_texcoord2.xy); + vec4 C = texture2D(s0, v_texcoord2.zy); + vec4 H5 = texture2D(s0, v_texcoord2.xw); + vec4 I5 = texture2D(s0, v_texcoord2.zw); + + vec4 D = texture2D(s0, v_texcoord3.xy); + vec4 F4 = texture2D(s0, v_texcoord3.zy); + vec4 G = texture2D(s0, v_texcoord3.xw); + vec4 I4 = texture2D(s0, v_texcoord3.zw); + + vec4 E = texture2D(s0, v_texcoord4.xy); + vec4 F = texture2D(s0, v_texcoord4.zy); + vec4 H = texture2D(s0, v_texcoord4.xw); + vec4 I = texture2D(s0, v_texcoord4.zw); + + float b = RGBtoYUV( B ); + float c = RGBtoYUV( C ); + float d = RGBtoYUV( D ); + float e = RGBtoYUV( E ); + float f = RGBtoYUV( F ); + float g = RGBtoYUV( G ); + float h = RGBtoYUV( H ); + float i = RGBtoYUV( I ); + + float i4 = RGBtoYUV( I4 ); float p0 = RGBtoYUV( P0 ); + float i5 = RGBtoYUV( I5 ); float p1 = RGBtoYUV( P1 ); + float h5 = RGBtoYUV( H5 ); float p2 = RGBtoYUV( P2 ); + float f4 = RGBtoYUV( F4 ); float p3 = RGBtoYUV( P3 ); + +/* + P1 + |P0|B |C |P1| C F4 |a0|b1|c2|d3| + |D |E |F |F4| B F I4 |b0|c1|d2|e3| |e1|i1|i2|e2| + |G |H |I |I4| P0 E A I P3 |c0|d1|e2|f3| |e3|i3|i4|e4| + |P2|H5|I5|P3| D H I5 |d0|e1|f2|g3| + G H5 + P2 +*/ + + + /* Calc edgeness in diagonal directions. */ + float d_edge = (d_wd( d, b, g, e, c, p2, h, f, p1, h5, i, f4, i5, i4 ) - d_wd( c, f4, b, f, i4, p0, e, i, p3, d, h, i5, g, h5 )); + + /* Calc edgeness in horizontal/vertical directions. */ + float hv_edge = (hv_wd(f, i, e, h, c, i5, b, h5) - hv_wd(e, f, h, i, d, f4, g, i4)); + + float limits = XBR_EDGE_STR.x + 0.000001; + float edge_strength = smoothstep(0.0, limits, abs(d_edge)); + + /* Filter weights. Two taps only. */ + vec4 w1 = vec4(-weight1, weight1+0.5, weight1+0.5, -weight1); + vec4 w2 = vec4(-weight2, weight2+0.25, weight2+0.25, -weight2); + + /* Filtering and normalization in four direction generating four colors. */ + vec3 c1 = mul(w1, mat4( P2, H, F, P1 )).xyz; + vec3 c2 = mul(w1, mat4( P0, E, I, P3 )).xyz; + vec3 c3 = mul(w2, mat4(D+G, E+H, F+I, F4+I4)).xyz; + vec3 c4 = mul(w2, mat4(C+B, F+E, I+H, I5+H5)).xyz; + + /* Smoothly blends the two strongest directions (one in diagonal and the other in vert/horiz direction). */ + vec4 d_mix = d_edge >= 0.0 ? vec4(1.0, 1.0, 1.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); + vec3 hv_mix = hv_edge >= 0.0 ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); + vec3 color = mix(mix(c1, c2, d_mix.xyz), mix(c3, c4, hv_mix), vec3(1.0, 1.0, 1.0) - vec3(edge_strength, edge_strength, edge_strength)); + + /* Anti-ringing code. */ + float anti_ring = 1.0 - XBR_ANTI_RINGING.x; + vec4 min_sample = min4(E, F, H, I) + anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + vec4 max_sample = max4(E, F, H, I) - anti_ring * mix((P2-H)*(F-P1), (P0-E)*(I-P3), d_mix); + color = clamp(color, min_sample.xyz, max_sample.xyz); + + gl_FragColor = vec4(color, 1.0); +}
\ No newline at end of file diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/varying.def.sc new file mode 100644 index 00000000000..c65b5426733 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 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/xbr/super-xbr/vs_custom-jinc2-sharper.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_custom-jinc2-sharper.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_custom-jinc2-sharper.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/xbr/super-xbr/vs_super-2xbr-3d-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.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/xbr/super-xbr/vs_super-2xbr-3d-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.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/xbr/super-xbr/vs_super-2xbr-3d-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.sc new file mode 100644 index 00000000000..ae3b049b57a --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.sc @@ -0,0 +1,50 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR 3D Shader - pass2 ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-2.0*dx, -2.0*dy, dx, dy); + v_texcoord2 = v_texcoord0.xyxy + vec4( -dx, -2.0*dy, 0.0, dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-2.0*dx, -dy, dx, 0.0); + v_texcoord4 = v_texcoord0.xyxy + vec4( -dx, -dy, 0.0, 0.0); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.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/xbr/super-xbr/vs_super-4xbr-3d-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.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/xbr/super-xbr/vs_super-4xbr-3d-pass1f.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.sc new file mode 100644 index 00000000000..c5bd41ee120 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.sc @@ -0,0 +1,24 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-2.0*dx, -2.0*dy, dx, dy); + v_texcoord2 = v_texcoord0.xyxy + vec4( -dx, -2.0*dy, 0.0, dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-2.0*dx, -dy, dx, 0.0); + v_texcoord4 = v_texcoord0.xyxy + vec4( -dx, -dy, 0.0, 0.0); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.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/xbr/super-xbr/vs_super-4xbr-3d-pass3.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.sc new file mode 100644 index 00000000000..405ef8feb3b --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.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/xbr/super-xbr/vs_super-4xbr-3d-pass3f.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.sc new file mode 100644 index 00000000000..c5bd41ee120 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.sc @@ -0,0 +1,24 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-2.0*dx, -2.0*dy, dx, dy); + v_texcoord2 = v_texcoord0.xyxy + vec4( -dx, -2.0*dy, 0.0, dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-2.0*dx, -dy, dx, 0.0); + v_texcoord4 = v_texcoord0.xyxy + vec4( -dx, -dy, 0.0, 0.0); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.sc new file mode 100644 index 00000000000..67e2a4d6250 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.sc @@ -0,0 +1,40 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#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/xbr/super-xbr/vs_super-xbr-fast-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.sc new file mode 100644 index 00000000000..d76ec041199 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.sc @@ -0,0 +1,40 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass1 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#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/xbr/super-xbr/vs_super-xbr-fast-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.sc new file mode 100644 index 00000000000..579ee064622 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.sc @@ -0,0 +1,40 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass2 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#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/xbr/super-xbr/vs_super-xbr-pass0.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass0.sc new file mode 100644 index 00000000000..f03cc46e2b7 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass0.sc @@ -0,0 +1,50 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-dx, -dy, 2.0*dx, 2.0*dy); + v_texcoord2 = v_texcoord0.xyxy + vec4(0.0, -dy, dx, 2.0*dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-dx, 0.0, 2.0*dx, dy); + v_texcoord4 = v_texcoord0.xyxy + vec4(0.0, 0.0, dx, dy); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass1.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass1.sc new file mode 100644 index 00000000000..67e2a4d6250 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass1.sc @@ -0,0 +1,40 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#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/xbr/super-xbr/vs_super-xbr-pass2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass2.sc new file mode 100644 index 00000000000..51ffe87fcaa --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass2.sc @@ -0,0 +1,50 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-2.0*dx, -2.0*dy, dx, dy); + v_texcoord2 = v_texcoord0.xyxy + vec4( -dx, -2.0*dy, 0.0, dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-2.0*dx, -dy, dx, 0.0); + v_texcoord4 = v_texcoord0.xyxy + vec4( -dx, -dy, 0.0, 0.0); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass3.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass3.sc new file mode 100644 index 00000000000..51ffe87fcaa --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass3.sc @@ -0,0 +1,50 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_color0 + +// license:MIT +// copyright-holders:Hyllian + +/* + + ******* Super XBR Shader - pass0 vertex shader ******* + + Copyright (c) 2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xyxy + vec4(-2.0*dx, -2.0*dy, dx, dy); + v_texcoord2 = v_texcoord0.xyxy + vec4( -dx, -2.0*dy, 0.0, dy); + v_texcoord3 = v_texcoord0.xyxy + vec4(-2.0*dx, -dy, dx, 0.0); + v_texcoord4 = v_texcoord0.xyxy + vec4( -dx, -dy, 0.0, 0.0); + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/varying.def.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/varying.def.sc new file mode 100644 index 00000000000..92c3034f498 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/varying.def.sc @@ -0,0 +1,13 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord5 : TEXCOORD5 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord6 : TEXCOORD6 = vec4(0.0, 0.0, 0.0, 0.0); +vec4 v_texcoord7 : TEXCOORD7 = vec4(0.0, 0.0, 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/xbr/vs_xbr-lv1-noblend.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv1-noblend.sc new file mode 100644 index 00000000000..3e97446a880 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv1-noblend.sc @@ -0,0 +1,22 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1.xy = vec2(0.0,-dy); // B + v_texcoord1.zw = vec2(-dx,0.0); // D + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc new file mode 100644 index 00000000000..476e11da6ea --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc @@ -0,0 +1,23 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 XBR_RES; + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = XBR_RES.xx / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = vec4(dx, 0, 0, dy); // F H + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-fast.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-fast.sc new file mode 100644 index 00000000000..38e92865308 --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-fast.sc @@ -0,0 +1,29 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + // A1 B1 C1 + // A0 A B C C4 + // D0 D E F F4 + // G0 G H I I4 + // G5 H5 I5 + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, -dy); // A B C + v_texcoord2 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, 0.0); // D E F + v_texcoord3 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, dy); // G H I + v_color0 = a_color0; +} diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2.sc new file mode 100644 index 00000000000..ce6e411b75d --- /dev/null +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2.sc @@ -0,0 +1,27 @@ +$input a_position, a_texcoord0, a_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_texcoord5, v_texcoord6, v_texcoord7, v_color0 + +// license:BSD-3-Clause +// copyright-holders:Dario Manesku + +#include "common.sh" + +uniform vec4 u_tex_size0; + +void main() +{ + gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0)); + v_texcoord0 = a_texcoord0; + + vec2 ps = 1.0 / u_tex_size0.xy; + float dx = ps.x; + float dy = ps.y; + v_texcoord1 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, -2.0*dy); // A1 B1 C1 + v_texcoord2 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, -dy); // A B C + v_texcoord3 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, 0.0); // D E F + v_texcoord4 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, dy); // G H I + v_texcoord5 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, 2.0*dy); // G5 H5 I5 + v_texcoord6 = v_texcoord0.xyyy + vec4(-2.0*dx, -dy, 0.0, dy); // A0 D0 G0 + v_texcoord7 = v_texcoord0.xyyy + vec4( 2.0*dx, -dy, 0.0, dy); // C4 F4 I4 + v_color0 = a_color0; +} |